UNPKG

@knine-sdk/react

Version:

React helpers for Knine Finance projects. Part of Knine JS SDK

71 lines (68 loc) 6.09 kB
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 };