@knine-sdk/react
Version:
React helpers for Knine Finance projects. Part of Knine JS SDK
79 lines (76 loc) • 5.14 kB
JavaScript
import { getTokenAddress, TOKENS, reflectMainChainToSubChain } from '@knine-sdk/constants';
import { useSDK } from '../hooks/useSDK.js';
import { useTokenBalance } from '../hooks/useTokenBalance.js';
import { useTotalSupply } from '../hooks/useTotalSupply.js';
import { useDecimals } from '../hooks/useDecimals.js';
import { useAllowance } from '../hooks/useAllowance.js';
import { useApprove } from '../hooks/useApprove.js';
const hooksFactory = (getTokenAddress) => {
return {
useTokenBalance: (config, opts) => {
var _a, _b;
const { chainId: currentChainId, findProviderByChainId } = useSDK();
const chosenChainId = (_a = opts === null || opts === void 0 ? void 0 : opts.chainId) !== null && _a !== void 0 ? _a : currentChainId;
const forcedProvider = ((_b = findProviderByChainId(chosenChainId)) === null || _b === void 0 ? void 0 : _b.provider) || undefined;
const tokenAddress = getTokenAddress(chosenChainId);
return useTokenBalance(tokenAddress, undefined, config, forcedProvider);
},
useTotalSupply: (config, opts) => {
var _a, _b;
const { chainId: currentChainId, findProviderByChainId } = useSDK();
const chosenChainId = (_a = opts === null || opts === void 0 ? void 0 : opts.chainId) !== null && _a !== void 0 ? _a : currentChainId;
const forcedProvider = ((_b = findProviderByChainId(chosenChainId)) === null || _b === void 0 ? void 0 : _b.provider) || undefined;
const tokenAddress = getTokenAddress(chosenChainId);
return useTotalSupply(tokenAddress, config, forcedProvider);
},
useDecimals: (config, opts) => {
var _a, _b;
const { chainId: currentChainId, findProviderByChainId } = useSDK();
const chosenChainId = (_a = opts === null || opts === void 0 ? void 0 : opts.chainId) !== null && _a !== void 0 ? _a : currentChainId;
const forcedProvider = ((_b = findProviderByChainId(chosenChainId)) === null || _b === void 0 ? void 0 : _b.provider) || undefined;
const tokenAddress = getTokenAddress(chosenChainId);
return useDecimals(tokenAddress, config, forcedProvider);
},
useAllowance: (spender, config, opts) => {
var _a, _b;
const { chainId: currentChainId, findProviderByChainId } = useSDK();
const chosenChainId = (_a = opts === null || opts === void 0 ? void 0 : opts.chainId) !== null && _a !== void 0 ? _a : currentChainId;
const forcedProvider = ((_b = findProviderByChainId(chosenChainId)) === null || _b === void 0 ? void 0 : _b.provider) || undefined;
const tokenAddress = getTokenAddress(chosenChainId);
return useAllowance(tokenAddress, spender, undefined, config, forcedProvider);
},
useApprove: (amount, spender, wrapper, opts) => {
var _a;
const { chainId: currentChainId, account } = useSDK();
const tokenAddress = getTokenAddress((_a = opts === null || opts === void 0 ? void 0 : opts.chainId) !== null && _a !== void 0 ? _a : currentChainId);
return useApprove(amount, tokenAddress, spender, account, wrapper);
},
};
};
const knBone = hooksFactory((chainId) => getTokenAddress(chainId, TOKENS.KNBONE));
const useKnBoneBalance = knBone.useTokenBalance;
// TODO: useKnBoneotalSupply > useKnBoneTotalSupply
const useKnBoneotalSupply = knBone.useTotalSupply;
const useKnBoneDecimals = knBone.useDecimals;
const useKnBoneAllowance = knBone.useAllowance;
const useKnBoneApprove = knBone.useApprove;
const bone = hooksFactory((chainId) => getTokenAddress(reflectMainChainToSubChain(chainId), TOKENS.BONE));
const useBoneBalance = bone.useTokenBalance;
// TODO: useBoneotalSupply > useBoneTotalSupply
const useBoneotalSupply = bone.useTotalSupply;
const useBoneDecimals = bone.useDecimals;
const useBoneAllowance = bone.useAllowance;
const useBoneApprove = bone.useApprove;
const knine = hooksFactory((chainId) => getTokenAddress(chainId, TOKENS.KNINE));
const useKnineBalance = knine.useTokenBalance;
const useKnineTotalSupply = knine.useTotalSupply;
const useKnineDecimals = knine.useDecimals;
const useKnineAllowance = knine.useAllowance;
const useKnineApprove = knine.useApprove;
const esKnine = hooksFactory((chainId) => getTokenAddress(chainId, TOKENS.esKNINE));
const useEsKnineBalance = esKnine.useTokenBalance;
const useEsKnineTotalSupply = esKnine.useTotalSupply;
const useEsKnineDecimals = esKnine.useDecimals;
const useEsKnineAllowance = esKnine.useAllowance;
const useEsKnineApprove = esKnine.useApprove;
export { hooksFactory, useBoneAllowance, useBoneApprove, useBoneBalance, useBoneDecimals, useBoneotalSupply, useEsKnineAllowance, useEsKnineApprove, useEsKnineBalance, useEsKnineDecimals, useEsKnineTotalSupply, useKnBoneAllowance, useKnBoneApprove, useKnBoneBalance, useKnBoneDecimals, useKnBoneotalSupply, useKnineAllowance, useKnineApprove, useKnineBalance, useKnineDecimals, useKnineTotalSupply };