User Balances
userReserveX = totalReserveX * userLBTokenBalance / totalSupply
userReserveY = totalReserveY * userLBTokenBalance / totalSupplyLiquidity helper contract
helper_contract = w3.eth.contract(address=liq_helper, abi=helper_abi)
result_tuple = helper_contract.functions.getBinsReserveOf(
pool_address, user_address, 0, 200, 200
).call()
user_data = result_tuple[1]
user_tokenX = 0
user_tokenY = 0
for bin_id, reserveX, reserveY, shares, total_shares in user_data:
tokenX_reserves = reserveX * shares / total_shares
tokenY_reserves = reserveY * shares / total_shares
user_tokenX += tokenX_reserves
user_tokenY += tokenY_reserves
print(
f"User has {tokenX_reserves} of tokenX and {tokenY_reserves} of tokenY in bin {bin_id}"
)
print(f"User has {user_tokenX} of tokenX and {user_tokenY} of tokenY in total")const client = createPublicClient({
chain: avalanche,
transport: http(),
});
const helperContract = {
address: liqHelperAddress,
abi: helperAbi,
};
async function getUserTokens() {
try {
const resultTuple = await client.readContract({
address: helperContract.address,
abi: helperContract.abi,
functionName: 'getBinsReserveOf',
args: [poolAddress, userAddress, 0, 200, 200],
});
const userData = resultTuple[1];
let userTokenX = 0n;
let userTokenY = 0n;
for (const { id, reserveX, reserveY, shares, totalShares } of userData) {
const tokenXReserves = (reserveX * shares) / totalShares;
const tokenYReserves = (reserveY * shares) / totalShares;
userTokenX += tokenXReserves;
userTokenY += tokenYReserves;
console.log(`User has ${tokenXReserves} of tokenX and ${tokenYReserves} of tokenY in bin ${id}`);
}
console.log(`User has ${userTokenX} of tokenX and ${userTokenY} of tokenY in total`);
} catch (error) {
console.error('Error fetching user tokens:', error);
}
}
getUserTokens();Using public API
Last updated