> For the complete documentation index, see [llms.txt](https://docs.shieldex.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shieldex.io/tutorials/trading-api-references/interfaces/3.-check-funds.md).

# 3. Check Funds

## Description

Check detailed funds information of an account, including total amount and available amount of  deposited funds.

**TBD: Narratives**

## User Interface

![Funds Stats Panel](/files/-Mew-rwZJfKHR8W9roQB)

## Function Description

|          Item          |                              Description                              |
| :--------------------: | :-------------------------------------------------------------------: |
|  **Contract Address**  |    Trading contract (referenced by Smart Contract Overview section)   |
|    **Contract Name**   |                           SLDDAIContract.sol                          |
|      **Constant**      |           mapping(address=>AccountInfo) public userAccount;           |
|       **Struct**       | struct AccountInfo{ uint256 depositAmount; uint256 availableAmount; } |
|  **Function Selector** |                               0xea5eda32                              |
|   **Invocation Type**  |                             Ethereum Call                             |
| **Passing Parameters** |                              User address                             |
|    **Return Value**    |     The amount of deposited funds; The available amount of funds.     |

## ABI Description

```
[{
	"inputs": [{
		"internalType": "address",
		"name": "",
		"type": "address"
	}],
	"name": "userAccount",
	"outputs": [{
		"internalType": "uint256",
		"name": "depositAmount",
		"type": "uint256"
	}, {
		"internalType": "uint256",
		"name": "availableAmount",
		"type": "uint256"
	}],
	"stateMutability": "view",
	"type": "function"
}]
```

## Examples

### Calling Examples

{% tabs %}
{% tab title="JavaScript" %}

```javascript
// This example is written by using Web3.js
// More details on Web3.js could be found here - https://web3js.readthedocs.io/

var Web3 = require('web3');
const BigNumber = require('bignumber.js');

// BSC Mainnet: https://bsc-dataseed.binance.org
// BSC Testnet: https://data-seed-prebsc-1-s1.binance.org:8545
const  web3 = new Web3("https://data-seed-prebsc-1-s1.binance.org:8545");

const CONTRACT_ADDRESS = "Replace with trading contract address";
const ABI = [{
	"inputs": [{
		"internalType": "address",
		"name": "",
		"type": "address"
	}],
	"name": "userAccount",
	"outputs": [{
		"internalType": "uint256",
		"name": "depositAmount",
		"type": "uint256"
	}, {
		"internalType": "uint256",
		"name": "availableAmount",
		"type": "uint256"
	}],
	"stateMutability": "view",
	"type": "function"
}];

var contract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS);

contract.methods.userAccount("Replace with User Address").call({
}, function(error, result){
    if(!error) {
      console.log('Response:', result);
    } else {
      console.log(error);
    }
});
```

{% endtab %}

{% tab title="Python" %}

```
# This example is written by using Web3.py
# More details on Web3.py could be found here - https://web3py.readthedocs.io/


```

{% endtab %}
{% endtabs %}

### HTTP Request Example

## Send a Withdrawal Transaction

<mark style="color:green;">`POST`</mark> `(BSC Mainnet) https://bsc-dataseed.binance.org/`

\
Make a contract call to get deposited funds details of Shield Protocol V1.\
More details on how to make a contract call request via BSC RPC could be found here, <https://ethereum.org/en/developers/docs/apis/json-rpc/#eth\\_sendrawtransaction><br>

#### Request Body

| Name    | Type   | Description                                                          |
| ------- | ------ | -------------------------------------------------------------------- |
| jsonrpc | string | "2.0"                                                                |
| method  | string | "eth\_call"                                                          |
| params  | array  | the signed transaction data coerced into string array, for instance, |
| id      | number | request sequence id, you could use timestamp as id                   |

{% tabs %}
{% tab title="200 The result responded could be decoded into two uint256 numbers which represents the total amount and the available amount of deposited funds." %}

```
{
    "jsonrpc": "2.0",
    "id": 1234,
    "result": "0x00000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000006c6b935b8bbd400000"
}
```

{% endtab %}
{% endtabs %}

**Request Body Example:**

```
{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [
        {
            "from": "0x0000000000000000000000000000000000000000",
            "to": "0x32c10ce5f9f47ab82141d73a136823d3e20408e0",
            "data": "0xea5eda32000000000000000000000000834c673130c085057531f227dcbd375d803d9a98"
        },
        "latest"
    ],
    "id": 1234
}
```

**CURL Example:**

```bash
curl --location --request POST 'https://data-seed-prebsc-1-s1.binance.org:8545' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [
        {
            "from": "0x0000000000000000000000000000000000000000",
            "to": "0x32c10ce5f9f47ab82141d73a136823d3e20408e0",
            "data": "0xea5eda32000000000000000000000000834c673130c085057531f227dcbd375d803d9a98"
        },
        "latest"
    ],
    "id": 1234
}'
```
