> For the complete documentation index, see [llms.txt](https://docs.usemeta.fi/react-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.usemeta.fi/react-sdk/sdk-reference/callgenericreadfunction.md).

# CallGenericReadFunction

{% hint style="info" %}
This function does not trigger a UI modal
{% endhint %}

## Description

This allows you to call any read-only smart contract function that does not require the user signature. It can be invoked even before the user is logged in.

## Details

### Signature

`async CallGenericReadFunction(args)`

### Arguments

<table><thead><tr><th width="258">Parameter</th><th width="114">Type</th><th>Definition</th></tr></thead><tbody><tr><td><code>args.contractAddress</code></td><td>String</td><td>Contract address of the smart contract to be called</td></tr><tr><td><code>args.functionABI</code></td><td>JSON</td><td>The JSON object for the <a href="https://ethereum.org/en/developers/docs/smart-contracts/compiling/#web-applications">smart contract ABI</a></td></tr><tr><td><code>args.functionName</code></td><td>String</td><td>Name of the function to be called</td></tr><tr><td><code>args.chain</code></td><td>chain (class)</td><td>Which chain to broadcast the transaction on. Pick a chain from the <a href="/react-sdk/constants/chain.md#supported-chains">supported chains list</a></td></tr><tr><td><code>args.params</code></td><td>array</td><td>Array of objects that will be sent as the arguments to the smart contract function. Please ensure that the order of params matches the contract ABI.<br><br>For large numerical inputs, please refer to the <a href="#handling-numerical-values">section below</a>.</td></tr></tbody></table>

### Return Value

Object returned from smart contract.

```json
{
    "statusCode": 1/0,
    "data": {
        ...
    }
}
```

### Handling Large Numerical Values

{% hint style="warning" %}
Applicable to EVM Chains only
{% endhint %}

While passing in large numerical values (values above **9007199254740991**) in `args.params`, a conversion to BigNumber format needs to be made. You can use the following methods that convert the number to and from the appropriate format:

`ConvertNumberToBigNumber(number, decimal)` - Use this method while passing in numbers as params to a smart function that requires uint256 numbers

`ConvertBigNumberToNumber(bigNumber, decimal)` - Use this method while converting response values from a smart contract function call (which are in bigNumber format) to a JS Number

## Example

{% code lineNumbers="true" %}

```jsx
import { useMetafi, chains } from '@metafi/react-sdk';
import stakeContractAbi from '../contracts/abi/stakeContract.json'

function StakeUSDC(user_uuid) {
    const { CallGenericReadFunction } = useMetafi();

    stakeContractAddress = "0xF5C9F957705bea56a7e806943f98F7877B995826"
    
    const stakedBalance = () => {
        let stakedValue = await CallGenericReadFunction({
            chain: chains.eth,             
            contractAddress: stakeContractAddress,   
            functionABI: stakeContractAbi.abi,   
            functionName: "getStakedAmount",
            params: ["0x40562Cf2E90f23b3969d782B5d8f134A77069b49"],               
        });
        console.log('staked value is', stakedValue)
    }
    
    return (
        <>
           <button onClick={stakedBalance}>Get User Staked Balance</button>
        </>
    );
};
```

{% endcode %}
