@knine-sdk/react
Version:
React helpers for Knine Finance projects. Part of Knine JS SDK
71 lines (68 loc) • 6.09 kB
JavaScript
import { getWithdrawalQueueAddress, getWithdrawalBoneAddress, getTokenAddress, TOKENS, getStakeManagerAddress, getRealYieldStakingAddress, getNodeOperatorRegistryAddress, getInstantPoolAddress, getVestingAddress, getFarmingFactoryAddress, getKnineMintableAddress } from '@knine-sdk/constants';
import { createContractGetter, WithdrawalQueueAbiFactory, UnstBoneAbiFactory, KnBoneFactory, ShibariumKnBoneFactory, StakeManagerFactory, RealYieldStakingFactory, NodeOperatorRegistryAbiFactory, InstantPoolAbiFactory, VestingAbiFactory, FarmingFactory, KnineMintableFactory, FarmingPoolAbiFactory, LpTokenAbiFactory } from '@knine-sdk/contracts';
import { useMemo } from 'react';
import { useSDK } from '../hooks/useSDK.js';
const contractHooksFactory = (factory, getTokenAddress) => {
const getContract = createContractGetter(factory);
return {
useContractRPC: (chainId) => {
var _a;
const { chainId: currentChainId, providerRpc: currentProvider, findProviderByChainId, } = useSDK();
const chosenChainId = chainId !== null && chainId !== void 0 ? chainId : currentChainId;
const chosenProvider = ((_a = findProviderByChainId(chosenChainId)) === null || _a === void 0 ? void 0 : _a.provider) || currentProvider;
const tokenAddress = getTokenAddress(chosenChainId);
return getContract(tokenAddress, chosenProvider);
},
useContractWeb3: (chainId) => {
const { chainId: currentChainId, providerWeb3 } = useSDK();
const tokenAddress = getTokenAddress(chainId !== null && chainId !== void 0 ? chainId : currentChainId);
const signer = useMemo(() => {
return providerWeb3 === null || providerWeb3 === void 0 ? void 0 : providerWeb3.getSigner();
}, [providerWeb3]);
if (!signer)
return null;
return getContract(tokenAddress, signer);
},
};
};
const withdrawalQueue = contractHooksFactory(WithdrawalQueueAbiFactory, (chainId) => getWithdrawalQueueAddress(chainId));
const useWithdrawalQueueContractRPC = withdrawalQueue.useContractRPC;
const useWithdrawalQueueContractWeb3 = withdrawalQueue.useContractWeb3;
// knine
const unstBone = contractHooksFactory(UnstBoneAbiFactory, (chainId) => getWithdrawalBoneAddress(chainId));
const useUnstBoneContractRPC = unstBone.useContractRPC;
const useUnstBoneContractWeb3 = unstBone.useContractWeb3;
const knBone = contractHooksFactory(KnBoneFactory, (chainId) => getTokenAddress(chainId, TOKENS.KNBONE));
const useKnBoneContractRPC = knBone.useContractRPC;
const useKnBoneContractWeb3 = knBone.useContractWeb3;
const shibariumKnBone = contractHooksFactory(ShibariumKnBoneFactory, (chainId) => getTokenAddress(chainId, TOKENS.KNBONE));
const useShibariumKnBoneContractRPC = shibariumKnBone.useContractRPC;
const useShibariumKnBoneContractWeb3 = shibariumKnBone.useContractWeb3;
const stakeManager = contractHooksFactory(StakeManagerFactory, (chainId) => getStakeManagerAddress(chainId));
const useStakeManagerContractRPC = stakeManager.useContractRPC;
const useStakeManagerContractWeb3 = stakeManager.useContractWeb3;
const realYieldStaking = contractHooksFactory(RealYieldStakingFactory, (chainId) => getRealYieldStakingAddress(chainId));
const useRealYieldStakingContractRPC = realYieldStaking.useContractRPC;
const useRealYieldStakingContractWeb3 = realYieldStaking.useContractWeb3;
const nodeOperatorRegistry = contractHooksFactory(NodeOperatorRegistryAbiFactory, (chainId) => getNodeOperatorRegistryAddress(chainId));
const useNodeOperatorRegistryContractRPC = nodeOperatorRegistry.useContractRPC;
const useNodeOperatorRegistryContractWeb3 = nodeOperatorRegistry.useContractWeb3;
const instantPool = contractHooksFactory(InstantPoolAbiFactory, (chainId) => getInstantPoolAddress(chainId));
const useInstantPoolContractRPC = instantPool.useContractRPC;
const useInstantPoolContractWeb3 = instantPool.useContractWeb3;
const vesting = contractHooksFactory(VestingAbiFactory, (chainId) => getVestingAddress(chainId));
const useVestingContractRPC = vesting.useContractRPC;
const useVestingContractWeb3 = vesting.useContractWeb3;
const farmingPool = (address) => contractHooksFactory(FarmingPoolAbiFactory, () => address);
const useFarmingPoolContractRPC = (address, chainId) => farmingPool(address).useContractRPC(chainId);
const useFarmingPoolContractWeb3 = (address, chainId) => farmingPool(address).useContractWeb3(chainId);
const lpToken = (address) => contractHooksFactory(LpTokenAbiFactory, () => address);
const useLpTokenContractWeb3 = (address, chainId) => lpToken(address).useContractWeb3(chainId);
const useLpTokenContractRPC = (address, chainId) => lpToken(address).useContractRPC(chainId);
const farmingFactory = contractHooksFactory(FarmingFactory, (chainId) => getFarmingFactoryAddress(chainId));
const useFarmingFactoryContractRPC = farmingFactory.useContractRPC;
const useFarmingFactoryContractWeb3 = farmingFactory.useContractWeb3;
const knineMintable = contractHooksFactory(KnineMintableFactory, (chainId) => getKnineMintableAddress(chainId));
const useKnineMintableContractRPC = knineMintable.useContractRPC;
const useKnineMintableContractWeb3 = knineMintable.useContractWeb3;
export { contractHooksFactory, farmingFactory, useFarmingFactoryContractRPC, useFarmingFactoryContractWeb3, useFarmingPoolContractRPC, useFarmingPoolContractWeb3, useInstantPoolContractRPC, useInstantPoolContractWeb3, useKnBoneContractRPC, useKnBoneContractWeb3, useKnineMintableContractRPC, useKnineMintableContractWeb3, useLpTokenContractRPC, useLpTokenContractWeb3, useNodeOperatorRegistryContractRPC, useNodeOperatorRegistryContractWeb3, useRealYieldStakingContractRPC, useRealYieldStakingContractWeb3, useShibariumKnBoneContractRPC, useShibariumKnBoneContractWeb3, useStakeManagerContractRPC, useStakeManagerContractWeb3, useUnstBoneContractRPC, useUnstBoneContractWeb3, useVestingContractRPC, useVestingContractWeb3, useWithdrawalQueueContractRPC, useWithdrawalQueueContractWeb3 };