# Manifests

You don't need CaviarNine to interact with any smart contract. All you need is the manifest and to submit it the Radix network. An easy way to submit is already supplied by Radix via their dashboard: <https://console.radixdlt.com/transaction-manifest>

## LSU Pool Component Address:

Being the LSU Pool is just one component here is it's address which has been added in the below manifests.

```
component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp
```

## LSULP Resource Address:

This resource address below is the address for the liquidity token of the LSU Pool

```
resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf
```

## LSU Credit Receipt Resource Address:

This resource address below is the address for the credit receipt NFT token of the LSU Pool

```
resource_rdx1nt3frmqu4v57dy55e90n0k3uy352zyy89vszzamvjld6vqvr98rls9
```

## Add Liquidity - No Credit Receipt

When adding liquidity using this method you will get back two buckets:

* LSULP - The liquidity token
* Credit Receipt NFT - A new soulbound credit receipt NFT that tracks your credits

```
CALL_METHOD 
    Address("{ACCOUNT}") 
    "withdraw" 
    Address("{LSU_TOKEN}")
    Decimal("{AMOUNT}")
;
TAKE_ALL_FROM_WORKTOP
    Address("{LSU_TOKEN}") 
    Bucket("lsu_tokens")
;

CALL_METHOD 
    Address("component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp") 
    "add_liquidity" 
    Bucket("lsu_tokens")
    Enum<0u8>()
;

CALL_METHOD 
    Address("{ACCOUNT}") 
    "deposit_batch" 
    Expression("ENTIRE_WORKTOP")
;
```

## Add Liquidity - Using Credit Receipt

When adding liquidity using this method you will get back 1 bucket of LSULP tokens and update your soulbound Credit receipt token with the additional LSU credit. LSU -> LSULP\
\
The following manifest requires your Credit Receipt NFT ID from your wallet. If you don't have one use the method above.

```
LSU_POOL_CREDIT_RECEIPT_ID - Get this from your wallet
```

Manifest:

```
CALL_METHOD 
    Address("{ACCOUNT}") 
    "withdraw" 
    Address("{LSU_TOKEN}")
    Decimal("{AMOUNT}")
;
TAKE_ALL_FROM_WORKTOP
    Address("{LSU_TOKEN}") 
    Bucket("lsu_tokens")
;
CALL_METHOD
    Address("{ACCOUNT}") 
    "create_proof_of_non_fungibles"
    Address("resource_rdx1nt3frmqu4v57dy55e90n0k3uy352zyy89vszzamvjld6vqvr98rls9")
    Array<NonFungibleLocalId>(
        NonFungibleLocalId("{LSU_POOL_CREDIT_RECEIPT_ID}")
    )
;
CREATE_PROOF_FROM_AUTH_ZONE_OF_NON_FUNGIBLES
    Address("resource_rdx1nt3frmqu4v57dy55e90n0k3uy352zyy89vszzamvjld6vqvr98rls9")
    Array<NonFungibleLocalId>(
        NonFungibleLocalId("{LSU_POOL_CREDIT_RECEIPT_ID}")
    )
    Proof("credit_proof")
;

CALL_METHOD 
    Address("component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp") 
    "add_liquidity" 
    Bucket("lsu_tokens")
    Enum<1u8>(
        Proof("credit_proof")
    )
;

CALL_METHOD 
    Address("{ACCOUNT}") 
    "deposit_batch" 
    Expression("ENTIRE_WORKTOP")
;
```

## Remove Liquidity - No Credit Receipt:

Using this method will remove liquidity from the pool. Find more about the credit receipt [here](/products-floop/lsu-pool/credit-receipt.md) LSULP -> LSU

```
CALL_METHOD 
    Address("{ACCOUNT}")  
    "withdraw" 
    Address("resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf")
    Decimal("{AMOUNT}")
;
TAKE_ALL_FROM_WORKTOP
    Address("resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf") 
    Bucket("lp_tokens")
;

CALL_METHOD 
    Address("component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp") 
    "remove_liquidity" 
    Bucket("lp_tokens")
    Address("{LSU_TOKEN}")
    Enum<0u8>()
;

CALL_METHOD 
    Address("{ACCOUNT}")  
    "deposit_batch" 
    Expression("ENTIRE_WORKTOP")
;
```

## Remove Liquidity - Using Credit Receipt

Using this method will remove liquidity from the pool. By presenting your credit receipt, if you have credits you will not get charged up to the credit amount for that LSU you have requested. Find more about the credit receipt [here](/products-floop/lsu-pool/credit-receipt.md) LSULP -> LSU

```
CALL_METHOD 
    Address("{ACCOUNT}")  
    "withdraw" 
    Address("resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf")
    Decimal("{AMOUNT}")
;
TAKE_ALL_FROM_WORKTOP
    Address("resource_rdx1thksg5ng70g9mmy9ne7wz0sc7auzrrwy7fmgcxzel2gvp8pj0xxfmf") 
    Bucket("lp_tokens")
;
CALL_METHOD
    Address("{ACCOUNT}")
    "create_proof_of_non_fungibles"
    Address("resource_rdx1nt3frmqu4v57dy55e90n0k3uy352zyy89vszzamvjld6vqvr98rls9")
    Array<NonFungibleLocalId>(
        NonFungibleLocalId("{LSU_POOL_CREDIT_RECEIPT_ID}")
    )
;
CREATE_PROOF_FROM_AUTH_ZONE_OF_NON_FUNGIBLES
    Address("resource_rdx1nt3frmqu4v57dy55e90n0k3uy352zyy89vszzamvjld6vqvr98rls9")
    Array<NonFungibleLocalId>(
        NonFungibleLocalId("{LSU_POOL_CREDIT_RECEIPT_ID}")
    )
    Proof("credit_proof")
;

CALL_METHOD 
    Address("component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp") 
    "remove_liquidity" 
    Bucket("lp_tokens")
    Address("{LSU_TOKEN}")
    Enum<1u8>(
        Proof("credit_proof")
    )
;

CALL_METHOD 
    Address("{ACCOUNT}")  
    "deposit_batch" 
    Expression("ENTIRE_WORKTOP")
;
```

## Swap

How to swap on the LSU Pool

```
CALL_METHOD 
    Address("{ACCOUNT}") 
    "withdraw" 
    Address("{LSU_TOKEN}")
    Decimal("{AMOUNT}")
;
TAKE_ALL_FROM_WORKTOP
    Address("{LSU_TOKEN}") 
    Bucket("lsu_tokens")
;

CALL_METHOD 
    Address("component_rdx1cppy08xgra5tv5melsjtj79c0ngvrlmzl8hhs7vwtzknp9xxs63mfp") 
    "swap" 
    Bucket("lsu_tokens")
    Address("{LSU_PAYING}")
;

CALL_METHOD 
    Address("{ACCOUNT}") 
    "deposit_batch" 
    Expression("ENTIRE_WORKTOP")
;
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.caviarnine.com/products-floop/lsu-pool/manifests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
