# 11. Full Exit

* In order to ensure the security of users' assets, users are given the right to take out their assets at any time. They can return the assets to their accounts by sending a transaction to L1.<br>

### Initialize SDK

* You need to initialize the SDK in order to use it.

### NFT Full Exit

* Parameters needed:

  | Parameter   | Parameter usage and meaning                                                                                | Requirement |
  | ----------- | ---------------------------------------------------------------------------------------------------------- | ----------- |
  | accountName | The account name used to initialize the client                                                             | ✅           |
  | seed        | The user's L2 seed used to initialize the client                                                           | ✅           |
  | privateKey  | Since this transaction involves L1, the private key of user's L1 account is needed to sign the transaction | ✅           |
  | nftIndex    | The unique ID of NFT in L1                                                                                 | ✅           |

{% hint style="success" %}

#### 📚SDK REFERENCE

* [FullExitNft](https://pkg.go.dev/github.com/Zecrey-Labs/zecrey-marketplace-go-sdk@v1.0.6/sdk#Client.FullExitNft)
  {% endhint %}

{% tabs %}
{% tab title="Golang" %}
&#x20;**Example**

* FullExit the NFT with `nftIndex` = 130
  * Initialize client
  * FullExit the NFT with `nftIndex` = 130

{% code overflow="wrap" %}

```go
package main

import (
   "fmt"
   "github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)


func main() {
    accountName := "alice"
    privateKey := "0xe94a8b4ddd33b2865a89bb764d70a0c3e3276007ece8f114a47a4e9581ec3567"
    nftIndex := uint32(130)
    seed := "13243b9a9fdec6dc90c7cc1eb1c939134dfb659d2f0asdfas5413213213213213"
    c, err := NewClient(accountName, seed)
    fullExitNftTransaction, err := c.FullExitNft(accountName, privateKey, nftIndex)
    if err != nil {
       t.Fatal(err)
    }
    fmt.Println("tx hash:", fullExitNftTransaction.Hash())
}
```

{% endcode %}

&#x20; **Example Result**

{% code overflow="wrap" %}

```json
tx hash: 0x3e78bf427bbe8bc6be629b6bcd3a88cb65234b7da209134787a8f39c8ace1d4a
```

{% endcode %}
{% endtab %}

{% tab title="Javascript" %}
**Example**

* FullExit the NFT with `nftIndex` = 130

{% code overflow="wrap" %}

```javascript
import { SDK } from "@zecrey/zecrey-legend-js-sdk";

const sdk = new SDK();
await sdk.initial();

const privateKey = "1bcb0ae8c17945acfaf9ea546c0b754a599fddf27425bac7e532590324137a7d";
const account = "alice"; 
const nft_index = 130;

const res = await sdk.fullExitNft(privateKey, account, nft_index);
```

{% endcode %}
{% endtab %}
{% endtabs %}

### FT Full Exit

* Parameters needed

  * BNB、LEG、REY's token addresses are needed and the details can be obtained through GetAssetsList

  | Parameter   | Parameter usage and meaning                                                                                | Required or not |
  | ----------- | ---------------------------------------------------------------------------------------------------------- | --------------- |
  | accountName | The account name used to initialize the client                                                             | ✅               |
  | seed        | The user's L2 seed used to initialize the client                                                           | ✅               |
  | privateKey  | Since this transaction involves L1, the private key of user's L1 account is needed to sign the transaction | <p>✅<br></p>    |
  | asset       | asset Token address                                                                                        | ✅               |

{% hint style="success" %}

#### 📚SDK REFERENCE

* [FullExit](https://pkg.go.dev/github.com/Zecrey-Labs/zecrey-marketplace-go-sdk@v1.0.6/sdk#Client.FullExit)
  {% endhint %}

{% tabs %}
{% tab title="Golang" %}
**Example**

* Deposit 10000 BNB to L2
  * Initialize client
  * FullExit 100000 BNB

{% code overflow="wrap" %}

```go
package main

import (
   "fmt"
   "github.com/Zecrey-Labs/zecrey-marketplace-go-sdk/sdk"
)


func main() {
    accountName := "alice"
    privateKey := "0xe94a8b4ddd33b2865a89bb764d70a0c3e3276007ece8f114a47a4e9581ec3567"
    assetAddress := common.HexToAddress("")//_asset Token address, 0 address for BNB
    seed := "13243b9a9fdec6dc90c7cc1eb1c939134dfb659d2f0asdfas5413213213213213"
    c, err := NewClient(accountName, seed)
    var amount int64 = 100000
    if err != nil {
       t.Fatal(err)
    }
    fullExitTransaction, err := c.FullExit(accountName, privateKey, assetAddress)
    if err != nil {
       t.Fatal(err)
    }
    fmt.Println("tx hash:",fullExitTransaction)
}
```

{% endcode %}

**Example Result**

{% code overflow="wrap" %}

```json
tx hash: 0x72aac80edfcb5c2f5c34e4b7acccc4831ef8ad61b1ef0396407b9fb31ed151fd
```

{% endcode %}

{% endtab %}

{% tab title="Javascript" %}
**Example**

1. BNB

{% code overflow="wrap" %}

```javascript
import { SDK } from "@zecrey/zecrey-legend-js-sdk";

const sdk = new SDK();
await sdk.initial();

const privateKey = "1bcb0ae8c17945acfaf9ea546c0b754a599fddf27425bac7e532590324137a7d";
const account = "alice"; 
const asset_contract = "0x00"; // this address represents BNB

const res = await sdk.fullExit(privateKey, account, asset_contract );
```

{% endcode %}

2. LEG and REY and other BEP20 assets

{% code overflow="wrap" %}

```json
import { SDK } from "@zecrey/zecrey-legend-js-sdk";

const sdk = new SDK();
await sdk.initial();

const privateKey = "1bcb0ae8c17945acfaf9ea546c0b754a599fddf27425bac7e532590324137a7d";
const account = "alice"; 
const asset_contract = "0x364Ed72f329f1BD56AE84b941D1c6E4E260cE152"; // contract address of LEG

const res = await sdk.fullExit(privateKey, account, asset_contract);
```

{% endcode %}
{% endtab %}
{% endtabs %}


---

# 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.zecrey.com/go-and-js-sdk-basic-guides/11.-full-exit.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.
