@reservoir0x/relay-kit-ui
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
48 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const react_query_1 = require("@tanstack/react-query");
const useRelayClient_js_1 = tslib_1.__importDefault(require("./useRelayClient.js"));
exports.default = (address, coinType = '0x2::sui::SUI', queryOptions) => {
const client = (0, useRelayClient_js_1.default)();
const rpcUrl = client?.baseApiUrl?.includes('testnet')
? 'https://fullnode.testnet.sui.io:443'
: 'https://fullnode.mainnet.sui.io:443';
const queryKey = ['useSuiBalance', address, coinType, rpcUrl];
const response = react_query_1.useQuery({
queryKey,
queryFn: async () => {
const payload = {
jsonrpc: '2.0',
id: 1,
method: 'suix_getBalance',
params: [address, coinType]
};
const response = await fetch(rpcUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
const data = await response.json();
if (data.error) {
throw new Error(data.error.message);
}
const result = data.result;
return {
balance: BigInt(result.totalBalance),
lockedBalance: BigInt(Object.values(result.lockedBalance)[0] || 0)
};
},
enabled: address !== undefined,
...queryOptions
});
return {
...response,
balance: response.data?.balance,
lockedBalance: response.data?.lockedBalance,
queryKey
};
};
//# sourceMappingURL=useSuiBalance.js.map