@ape.swap/bonds-sdk 6.2.28 → 7.0.0-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +205 -114
- package/dist/adapters/all/index.d.ts +13 -0
- package/dist/adapters/all/index.js +15 -0
- package/dist/adapters/all/index.js.map +1 -0
- package/dist/{views/YourBondsModal/components/Actions → adapters/aptos}/ActionsAptos.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/Actions → adapters/aptos}/ActionsAptos.js +11 -11
- package/dist/adapters/aptos/ActionsAptos.js.map +1 -0
- package/dist/adapters/aptos/AptosAccountBridge.d.ts +3 -0
- package/dist/adapters/aptos/AptosAccountBridge.js +12 -0
- package/dist/adapters/aptos/AptosAccountBridge.js.map +1 -0
- package/dist/{views/BuyBond → adapters/aptos}/BuyComponentAptos.js +8 -8
- package/dist/adapters/aptos/BuyComponentAptos.js.map +1 -0
- package/dist/adapters/aptos/ClaimAllActionAptos.d.ts +5 -0
- package/dist/adapters/aptos/ClaimAllActionAptos.js +73 -0
- package/dist/adapters/aptos/ClaimAllActionAptos.js.map +1 -0
- package/dist/{components/ConnectAptosWalletButton → adapters/aptos}/ConnectAptosWalletButton.js +2 -2
- package/dist/adapters/aptos/ConnectAptosWalletButton.js.map +1 -0
- package/dist/{components/ConnectoToVmBanners → adapters/aptos}/ConnectToAptosBanner.js +4 -4
- package/dist/adapters/aptos/ConnectToAptosBanner.js.map +1 -0
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/aptos}/TransferActionAptos.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/aptos}/TransferActionAptos.js +1 -1
- package/dist/adapters/aptos/TransferActionAptos.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/aptos}/UserBondRowAptos.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/aptos}/UserBondRowAptos.js +22 -22
- package/dist/adapters/aptos/UserBondRowAptos.js.map +1 -0
- package/dist/{utils → adapters/aptos}/aptosHelpers.d.ts +1 -1
- package/dist/{utils → adapters/aptos}/aptosHelpers.js +1 -1
- package/dist/adapters/aptos/aptosHelpers.js.map +1 -0
- package/dist/{state/bonds/fetchBondsData → adapters/aptos}/fetchBondsDataAptos.d.ts +2 -2
- package/dist/{state/bonds/fetchBondsData → adapters/aptos}/fetchBondsDataAptos.js +3 -3
- package/dist/adapters/aptos/fetchBondsDataAptos.js.map +1 -0
- package/dist/{state/bonds/fetchUsersBonds → adapters/aptos}/fetchUsersBondsAptos.d.ts +2 -2
- package/dist/{state/bonds/fetchUsersBonds → adapters/aptos}/fetchUsersBondsAptos.js +4 -4
- package/dist/adapters/aptos/fetchUsersBondsAptos.js.map +1 -0
- package/dist/adapters/aptos/index.d.ts +6 -0
- package/dist/adapters/aptos/index.js +37 -0
- package/dist/adapters/aptos/index.js.map +1 -0
- package/dist/{hooks/accounts → adapters/aptos}/useAPTAccount.js +1 -1
- package/dist/{hooks/accounts → adapters/aptos}/useAPTAccount.js.map +1 -1
- package/dist/adapters/aptos/useAptosZapQuote.js.map +1 -0
- package/dist/{state/balance → adapters/aptos}/useCurrencyBalanceAptos.js +1 -1
- package/dist/adapters/aptos/useCurrencyBalanceAptos.js.map +1 -0
- package/dist/{views/YourBondsModal/components/Actions → adapters/evm}/Actions.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/Actions → adapters/evm}/Actions.js +18 -18
- package/dist/adapters/evm/Actions.js.map +1 -0
- package/dist/adapters/evm/BuyComponent.d.ts +5 -0
- package/dist/{views/BuyBond → adapters/evm}/BuyComponent.js +44 -27
- package/dist/adapters/evm/BuyComponent.js.map +1 -0
- package/dist/adapters/evm/ClaimAllActionEVM.d.ts +5 -0
- package/dist/adapters/evm/ClaimAllActionEVM.js +60 -0
- package/dist/adapters/evm/ClaimAllActionEVM.js.map +1 -0
- package/dist/{components/ConnectoToVmBanners → adapters/evm}/ConnectToEvmBanner.js +3 -3
- package/dist/adapters/evm/ConnectToEvmBanner.js.map +1 -0
- package/dist/adapters/evm/EvmAccountBridge.d.ts +6 -0
- package/dist/adapters/evm/EvmAccountBridge.js +15 -0
- package/dist/adapters/evm/EvmAccountBridge.js.map +1 -0
- package/dist/{views/TransactionModal → adapters/evm}/TransactionModal.d.ts +1 -1
- package/dist/{views/TransactionModal → adapters/evm}/TransactionModal.js +5 -4
- package/dist/adapters/evm/TransactionModal.js.map +1 -0
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/evm}/TransferAction.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/evm}/TransferAction.js +8 -8
- package/dist/adapters/evm/TransferAction.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm}/UserBondRow.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm}/UserBondRow.js +27 -27
- package/dist/adapters/evm/UserBondRow.js.map +1 -0
- package/dist/adapters/evm/balances.d.ts +6 -0
- package/dist/adapters/evm/balances.js +61 -0
- package/dist/adapters/evm/balances.js.map +1 -0
- package/dist/{state/bonds/fetchBondsData → adapters/evm}/fetchBondsDataEVM.d.ts +2 -2
- package/dist/{state/bonds/fetchBondsData → adapters/evm}/fetchBondsDataEVM.js +8 -8
- package/dist/adapters/evm/fetchBondsDataEVM.js.map +1 -0
- package/dist/{state/bonds/fetchUsersBonds → adapters/evm}/fetchUsersBondsEVM.d.ts +2 -2
- package/dist/{state/bonds/fetchUsersBonds → adapters/evm}/fetchUsersBondsEVM.js +4 -4
- package/dist/adapters/evm/fetchUsersBondsEVM.js.map +1 -0
- package/dist/adapters/evm/getTierPoints.d.ts +3 -0
- package/dist/adapters/evm/getTierPoints.js +48 -0
- package/dist/adapters/evm/getTierPoints.js.map +1 -0
- package/dist/adapters/evm/index.d.ts +6 -0
- package/dist/adapters/evm/index.js +53 -0
- package/dist/adapters/evm/index.js.map +1 -0
- package/dist/{utils → adapters/evm}/multicall.js +3 -3
- package/dist/adapters/evm/multicall.js.map +1 -0
- package/dist/{views/BuyBond → adapters/evm/preTGE}/BuyComponentPreTGE.js +27 -27
- package/dist/adapters/evm/preTGE/BuyComponentPreTGE.js.map +1 -0
- package/dist/{views/Bonds/components/BondRows → adapters/evm/preTGE}/ModalHandlerPreTGE.js +4 -4
- package/dist/adapters/evm/preTGE/ModalHandlerPreTGE.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm/preTGE}/PreTGEActions.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm/preTGE}/PreTGEActions.js +9 -9
- package/dist/adapters/evm/preTGE/PreTGEActions.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm/preTGE}/UserBondRowPreTGE.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm/preTGE}/UserBondRowPreTGE.js +9 -9
- package/dist/adapters/evm/preTGE/UserBondRowPreTGE.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm/preTGE}/UserBondRowYield.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/evm/preTGE}/UserBondRowYield.js +11 -11
- package/dist/adapters/evm/preTGE/UserBondRowYield.js.map +1 -0
- package/dist/{views → adapters/evm/preTGE}/YourBondsModalYield/YourBondsModalYield.d.ts +1 -1
- package/dist/{views → adapters/evm/preTGE}/YourBondsModalYield/YourBondsModalYield.js +22 -22
- package/dist/adapters/evm/preTGE/YourBondsModalYield/YourBondsModalYield.js.map +1 -0
- package/dist/{views → adapters/evm/preTGE}/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.d.ts +1 -1
- package/dist/{views → adapters/evm/preTGE}/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js +10 -10
- package/dist/adapters/evm/preTGE/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js.map +1 -0
- package/dist/{views → adapters/evm/preTGE}/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.d.ts +1 -1
- package/dist/{views → adapters/evm/preTGE}/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js +5 -5
- package/dist/adapters/evm/preTGE/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js.map +1 -0
- package/dist/{state/bonds/fetchBondsData → adapters/evm/preTGE}/fetchBondsDataPreTGE.d.ts +1 -1
- package/dist/{state/bonds/fetchBondsData → adapters/evm/preTGE}/fetchBondsDataPreTGE.js +1 -1
- package/dist/adapters/evm/preTGE/fetchBondsDataPreTGE.js.map +1 -0
- package/dist/adapters/evm/preTGE/fetchUserBondsPreTGE.d.ts +5 -0
- package/dist/adapters/evm/preTGE/fetchUserBondsPreTGE.js +204 -0
- package/dist/adapters/evm/preTGE/fetchUserBondsPreTGE.js.map +1 -0
- package/dist/{state/allowance → adapters/evm}/useAllowance.js +4 -4
- package/dist/adapters/evm/useAllowance.js.map +1 -0
- package/dist/adapters/evm/useEVMAccount.js.map +1 -0
- package/dist/{hooks → adapters/evm}/useMonitorTx.js +1 -1
- package/dist/adapters/evm/useMonitorTx.js.map +1 -0
- package/dist/{state/zap → adapters/evm}/useSoulZapBondQuote.js +5 -14
- package/dist/adapters/evm/useSoulZapBondQuote.js.map +1 -0
- package/dist/{state/bonds → adapters/evm}/useTierProofSignature.js +2 -2
- package/dist/adapters/evm/useTierProofSignature.js.map +1 -0
- package/dist/adapters/lifi/LifiModal.d.ts +4 -0
- package/dist/{views/LifiModal → adapters/lifi}/LifiModal.js +9 -5
- package/dist/adapters/lifi/LifiModal.js.map +1 -0
- package/dist/adapters/lifi/index.d.ts +6 -0
- package/dist/adapters/lifi/index.js +34 -0
- package/dist/adapters/lifi/index.js.map +1 -0
- package/dist/adapters/registry.d.ts +8 -0
- package/dist/adapters/registry.js +24 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/{views/YourBondsModal/components/Actions → adapters/solana}/ActionsSolana.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/Actions → adapters/solana}/ActionsSolana.js +13 -13
- package/dist/adapters/solana/ActionsSolana.js.map +1 -0
- package/dist/{views/BuyBond → adapters/solana}/BuyComponentSolana.js +18 -15
- package/dist/adapters/solana/BuyComponentSolana.js.map +1 -0
- package/dist/{components/ConnectSolanaWalletButton → adapters/solana}/ConnectSolanaWalletButton.js +2 -2
- package/dist/adapters/solana/ConnectSolanaWalletButton.js.map +1 -0
- package/dist/{components/ConnectoToVmBanners → adapters/solana}/ConnectToSolanaBanner.js +3 -3
- package/dist/adapters/solana/ConnectToSolanaBanner.js.map +1 -0
- package/dist/adapters/solana/SolanaAccountBridge.d.ts +3 -0
- package/dist/adapters/solana/SolanaAccountBridge.js +13 -0
- package/dist/adapters/solana/SolanaAccountBridge.js.map +1 -0
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/solana}/TransferActionSolana.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/solana}/TransferActionSolana.js +6 -6
- package/dist/adapters/solana/TransferActionSolana.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/solana}/UserBondRowSolana.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/solana}/UserBondRowSolana.js +23 -23
- package/dist/adapters/solana/UserBondRowSolana.js.map +1 -0
- package/dist/{utils → adapters/solana}/calculateSolanaTrueBillPrice.js +1 -1
- package/dist/adapters/solana/calculateSolanaTrueBillPrice.js.map +1 -0
- package/dist/{types → adapters/solana/codecs}/bondCodec.d.ts +2 -2
- package/dist/{types → adapters/solana/codecs}/bondCodec.js +2 -3
- package/dist/adapters/solana/codecs/bondCodec.js.map +1 -0
- package/dist/{types → adapters/solana/codecs}/bondIssuanceCodec.d.ts +2 -2
- package/dist/{types → adapters/solana/codecs}/bondIssuanceCodec.js +2 -3
- package/dist/adapters/solana/codecs/bondIssuanceCodec.js.map +1 -0
- package/dist/{types → adapters/solana/codecs}/bondPricingCodec.d.ts +1 -1
- package/dist/{types → adapters/solana/codecs}/bondPricingCodec.js +2 -2
- package/dist/adapters/solana/codecs/bondPricingCodec.js.map +1 -0
- package/dist/{types → adapters/solana/codecs}/bondTermCodec.d.ts +1 -1
- package/dist/{types → adapters/solana/codecs}/bondTermCodec.js +2 -2
- package/dist/adapters/solana/codecs/bondTermCodec.js.map +1 -0
- package/dist/adapters/solana/derivePda.js.map +1 -0
- package/dist/{state/bonds/fetchBondsData → adapters/solana}/fetchBondsDataSOL.d.ts +2 -2
- package/dist/{state/bonds/fetchBondsData → adapters/solana}/fetchBondsDataSOL.js +8 -8
- package/dist/adapters/solana/fetchBondsDataSOL.js.map +1 -0
- package/dist/{state/bonds/fetchUsersBonds → adapters/solana}/fetchUsersBondsSOL.d.ts +2 -2
- package/dist/{state/bonds/fetchUsersBonds → adapters/solana}/fetchUsersBondsSOL.js +5 -5
- package/dist/{state/bonds/fetchUsersBonds → adapters/solana}/fetchUsersBondsSOL.js.map +1 -1
- package/dist/{utils → adapters/solana}/getSolanaAccount.d.ts +1 -1
- package/dist/{utils → adapters/solana}/getSolanaAccount.js +4 -4
- package/dist/adapters/solana/getSolanaAccount.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +8 -0
- package/dist/adapters/solana/index.js +40 -0
- package/dist/adapters/solana/index.js.map +1 -0
- package/dist/adapters/solana/polyfills.d.ts +1 -0
- package/dist/adapters/solana/polyfills.js +7 -0
- package/dist/adapters/solana/polyfills.js.map +1 -0
- package/dist/adapters/solana/solanaAtaHelper.js.map +1 -0
- package/dist/{constants → adapters/solana}/solanaConstants.js +1 -1
- package/dist/adapters/solana/solanaConstants.js.map +1 -0
- package/dist/adapters/solana/solanaMulticall.js.map +1 -0
- package/dist/{utils → adapters/solana}/solanaRpc.js +2 -2
- package/dist/adapters/solana/solanaRpc.js.map +1 -0
- package/dist/{state/balance → adapters/solana}/useCurrencyBalanceSolana.d.ts +4 -0
- package/dist/{state/balance → adapters/solana}/useCurrencyBalanceSolana.js +9 -2
- package/dist/adapters/solana/useCurrencyBalanceSolana.js.map +1 -0
- package/dist/adapters/solana/useJupiterSolanaQuote.js.map +1 -0
- package/dist/adapters/solana/useSOLAccount.js.map +1 -0
- package/dist/{views/YourBondsModal/components/Actions → adapters/sui}/ActionsSui.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/Actions → adapters/sui}/ActionsSui.js +11 -11
- package/dist/adapters/sui/ActionsSui.js.map +1 -0
- package/dist/{views/BuyBond → adapters/sui}/BuyComponentSui.js +9 -9
- package/dist/adapters/sui/BuyComponentSui.js.map +1 -0
- package/dist/adapters/sui/ClaimAllActionSui.d.ts +5 -0
- package/dist/adapters/sui/ClaimAllActionSui.js +89 -0
- package/dist/adapters/sui/ClaimAllActionSui.js.map +1 -0
- package/dist/{components/ConnectoToVmBanners → adapters/sui}/ConnectToSuiBanner.js +4 -4
- package/dist/adapters/sui/ConnectToSuiBanner.js.map +1 -0
- package/dist/adapters/sui/SuiAccountBridge.d.ts +3 -0
- package/dist/adapters/sui/SuiAccountBridge.js +12 -0
- package/dist/adapters/sui/SuiAccountBridge.js.map +1 -0
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/sui}/TransferActionSui.d.ts +1 -1
- package/dist/{views/YourBondsModal/components/TransferBondModal → adapters/sui}/TransferActionSui.js +7 -7
- package/dist/adapters/sui/TransferActionSui.js.map +1 -0
- package/dist/{views/YourBonds/components/UserBondRow → adapters/sui}/UserBondRowSui.d.ts +1 -1
- package/dist/{views/YourBonds/components/UserBondRow → adapters/sui}/UserBondRowSui.js +22 -22
- package/dist/adapters/sui/UserBondRowSui.js.map +1 -0
- package/dist/{state/bonds/fetchBondsData → adapters/sui}/fetchBondsDataSui.d.ts +2 -2
- package/dist/{state/bonds/fetchBondsData → adapters/sui}/fetchBondsDataSui.js +3 -3
- package/dist/adapters/sui/fetchBondsDataSui.js.map +1 -0
- package/dist/{state/bonds/fetchUsersBonds → adapters/sui}/fetchUsersBondsSUI.d.ts +2 -2
- package/dist/{state/bonds/fetchUsersBonds → adapters/sui}/fetchUsersBondsSUI.js +4 -4
- package/dist/adapters/sui/fetchUsersBondsSUI.js.map +1 -0
- package/dist/adapters/sui/index.d.ts +6 -0
- package/dist/adapters/sui/index.js +37 -0
- package/dist/adapters/sui/index.js.map +1 -0
- package/dist/adapters/sui/suiConstants.js.map +1 -0
- package/dist/{utils → adapters/sui}/suiHelpers.js +1 -1
- package/dist/adapters/sui/suiHelpers.js.map +1 -0
- package/dist/adapters/sui/suiZapTokens.js.map +1 -0
- package/dist/{state/balance → adapters/sui}/useCurrencyBalanceSui.js +1 -1
- package/dist/adapters/sui/useCurrencyBalanceSui.js.map +1 -0
- package/dist/adapters/sui/useSUIAccount.js.map +1 -0
- package/dist/{state/zap → adapters/sui}/useSuiZapQuote.js +1 -1
- package/dist/adapters/sui/useSuiZapQuote.js.map +1 -0
- package/dist/adapters/types.d.ts +110 -0
- package/dist/components/TokenSelectorPanel/index.js +6 -16
- package/dist/components/TokenSelectorPanel/index.js.map +1 -1
- package/dist/config/constants/chains.d.ts +0 -2
- package/dist/config/constants/chains.js +0 -2
- package/dist/config/constants/chains.js.map +1 -1
- package/dist/config/constants/queryKeys.d.ts +1 -0
- package/dist/config/constants/queryKeys.js +1 -0
- package/dist/config/constants/queryKeys.js.map +1 -1
- package/dist/config/constants/variables.d.ts +0 -1
- package/dist/config/constants/variables.js +1 -19
- package/dist/config/constants/variables.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/providers/index.js +3 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/state/balance/useCurrencyBalance.js +3 -23
- package/dist/state/balance/useCurrencyBalance.js.map +1 -1
- package/dist/state/balance/useUserTokensBalance.js +8 -78
- package/dist/state/balance/useUserTokensBalance.js.map +1 -1
- package/dist/state/bonds/fetchBondsData/{cleanBillsData.js → bondPricing.js} +1 -1
- package/dist/state/bonds/fetchBondsData/bondPricing.js.map +1 -0
- package/dist/state/bonds/useBondsData.js +23 -35
- package/dist/state/bonds/useBondsData.js.map +1 -1
- package/dist/state/bonds/useUserBonds.d.ts +3 -1
- package/dist/state/bonds/useUserBonds.js +21 -33
- package/dist/state/bonds/useUserBonds.js.map +1 -1
- package/dist/state/bonds/useUserBondsPreTGE.d.ts +1 -2
- package/dist/state/bonds/useUserBondsPreTGE.js +7 -203
- package/dist/state/bonds/useUserBondsPreTGE.js.map +1 -1
- package/dist/state/chainAccount/useChainAccount.d.ts +13 -0
- package/dist/state/chainAccount/useChainAccount.js +30 -0
- package/dist/state/chainAccount/useChainAccount.js.map +1 -0
- package/dist/state/hotBonds/useHotBonds.js +1 -1
- package/dist/state/hotBonds/useHotBonds.js.map +1 -1
- package/dist/state/tiers/tiers.d.ts +66 -0
- package/dist/state/tiers/tiers.js +97 -0
- package/dist/state/tiers/tiers.js.map +1 -0
- package/dist/state/tiers/useTierPoints.d.ts +2 -66
- package/dist/state/tiers/useTierPoints.js +13 -145
- package/dist/state/tiers/useTierPoints.js.map +1 -1
- package/dist/state/useSDKConfig.d.ts +3 -0
- package/dist/state/useSDKConfig.js +53 -6
- package/dist/state/useSDKConfig.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/displayHelpers.js +1 -1
- package/dist/utils/displayHelpers.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/BondRow.js +6 -2
- package/dist/views/Bonds/components/BondRows/BondRow.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/ModalHandler.js +8 -35
- package/dist/views/Bonds/components/BondRows/ModalHandler.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js +2 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
- package/dist/views/Bonds/components/CheckURL/index.js +8 -4
- package/dist/views/Bonds/components/CheckURL/index.js.map +1 -1
- package/dist/views/Bonds/components/RecommendationCards/index.js +3 -3
- package/dist/views/Bonds/components/RecommendationCards/index.js.map +1 -1
- package/dist/views/Bonds/utils.js +1 -1
- package/dist/views/Bonds/utils.js.map +1 -1
- package/dist/views/BuyBond/BuyBondModal.js +2 -7
- package/dist/views/BuyBond/BuyBondModal.js.map +1 -1
- package/dist/views/BuyBond/ChainBuyComponent.d.ts +5 -0
- package/dist/views/BuyBond/ChainBuyComponent.js +11 -0
- package/dist/views/BuyBond/ChainBuyComponent.js.map +1 -0
- package/dist/views/BuyBond/components/BondModalHeader.js +2 -1
- package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalMinTierHeader.js +1 -1
- package/dist/views/BuyBond/components/BondModalMinTierHeader.js.map +1 -1
- package/dist/views/BuyBond/components/Estimations.js +2 -1
- package/dist/views/BuyBond/components/Estimations.js.map +1 -1
- package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +2 -1
- package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
- package/dist/views/BuyBond/index.d.ts +2 -2
- package/dist/views/BuyBond/index.js.map +1 -1
- package/dist/views/BuyBond/utils.js +1 -1
- package/dist/views/BuyBond/utils.js.map +1 -1
- package/dist/views/ProjectView/ProjectView.js +2 -2
- package/dist/views/ProjectView/ProjectView.js.map +1 -1
- package/dist/views/ProjectView/components/BondLeaderboard/components/SalesTable.js +2 -2
- package/dist/views/ProjectView/components/BondLeaderboard/components/SalesTable.js.map +1 -1
- package/dist/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.js +2 -2
- package/dist/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.js.map +1 -1
- package/dist/views/ProjectView/components/PriceChart/index.js +1 -1
- package/dist/views/ProjectView/components/PriceChart/index.js.map +1 -1
- package/dist/views/ProjectView/components/RecommendationCards/index.js +4 -4
- package/dist/views/ProjectView/components/RecommendationCards/index.js.map +1 -1
- package/dist/views/SingleBond/SingleBond.js +2 -2
- package/dist/views/SingleBond/SingleBond.js.map +1 -1
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js +4 -3
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
- package/dist/views/YourBonds/YourBonds.js +25 -28
- package/dist/views/YourBonds/YourBonds.js.map +1 -1
- package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js +8 -175
- package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js.map +1 -1
- package/dist/views/YourBonds/components/ClaimAll/index.js +4 -6
- package/dist/views/YourBonds/components/ClaimAll/index.js.map +1 -1
- package/dist/views/YourBondsModal/YourBondsModal.js +3 -5
- package/dist/views/YourBondsModal/YourBondsModal.js.map +1 -1
- package/dist/views/YourBondsModal/components/Recommendations/Recommendations.js +3 -3
- package/dist/views/YourBondsModal/components/Recommendations/Recommendations.js.map +1 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/index.js +3 -6
- package/dist/views/YourBondsModal/components/TransferBondModal/index.js.map +1 -1
- package/package.json +88 -5
- package/dist/components/ConnectAptosWalletButton/ConnectAptosWalletButton.js.map +0 -1
- package/dist/components/ConnectSolanaWalletButton/ConnectSolanaWalletButton.js.map +0 -1
- package/dist/components/ConnectoToVmBanners/ConnectToAptosBanner.js.map +0 -1
- package/dist/components/ConnectoToVmBanners/ConnectToEvmBanner.js.map +0 -1
- package/dist/components/ConnectoToVmBanners/ConnectToSolanaBanner.js.map +0 -1
- package/dist/components/ConnectoToVmBanners/ConnectToSuiBanner.js.map +0 -1
- package/dist/config/constants/suiZapTokens.js.map +0 -1
- package/dist/constants/solanaConstants.js.map +0 -1
- package/dist/constants/suiConstants.js.map +0 -1
- package/dist/hooks/accounts/useEVMAccount.js.map +0 -1
- package/dist/hooks/accounts/useSOLAccount.js.map +0 -1
- package/dist/hooks/accounts/useSUIAccount.js.map +0 -1
- package/dist/hooks/useMonitorTx.js.map +0 -1
- package/dist/providers/AptosWalletProvider.d.ts +0 -5
- package/dist/providers/SolanaWalletProvider.d.ts +0 -5
- package/dist/providers/SuiWalletProvider.d.ts +0 -5
- package/dist/state/allowance/useAllowance.js.map +0 -1
- package/dist/state/balance/useCurrencyBalanceAptos.js.map +0 -1
- package/dist/state/balance/useCurrencyBalanceSolana.js.map +0 -1
- package/dist/state/balance/useCurrencyBalanceSui.js.map +0 -1
- package/dist/state/bonds/fetchBondsData/cleanBillsData.js.map +0 -1
- package/dist/state/bonds/fetchBondsData/fetchBondsDataAptos.js.map +0 -1
- package/dist/state/bonds/fetchBondsData/fetchBondsDataEVM.js.map +0 -1
- package/dist/state/bonds/fetchBondsData/fetchBondsDataPreTGE.js.map +0 -1
- package/dist/state/bonds/fetchBondsData/fetchBondsDataSOL.js.map +0 -1
- package/dist/state/bonds/fetchBondsData/fetchBondsDataSui.js.map +0 -1
- package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsAptos.js.map +0 -1
- package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsEVM.js.map +0 -1
- package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsSUI.js.map +0 -1
- package/dist/state/bonds/useTierProofSignature.js.map +0 -1
- package/dist/state/zap/useAptosZapQuote.js.map +0 -1
- package/dist/state/zap/useJupiterSolanaQuote.js.map +0 -1
- package/dist/state/zap/useSoulZapBondQuote.js.map +0 -1
- package/dist/state/zap/useSuiZapQuote.js.map +0 -1
- package/dist/types/bondCodec.js.map +0 -1
- package/dist/types/bondIssuanceCodec.js.map +0 -1
- package/dist/types/bondPricingCodec.js.map +0 -1
- package/dist/types/bondTermCodec.js.map +0 -1
- package/dist/utils/aptosHelpers.js.map +0 -1
- package/dist/utils/calculateSolanaTrueBillPrice.js.map +0 -1
- package/dist/utils/derivePda.js.map +0 -1
- package/dist/utils/getSolanaAccount.js.map +0 -1
- package/dist/utils/multicall.js.map +0 -1
- package/dist/utils/solanaAtaHelper.js.map +0 -1
- package/dist/utils/solanaMulticall.js.map +0 -1
- package/dist/utils/solanaRpc.js.map +0 -1
- package/dist/utils/suiHelpers.js.map +0 -1
- package/dist/views/Bonds/components/BondRows/ModalHandlerPreTGE.js.map +0 -1
- package/dist/views/BuyBond/BuyComponent.d.ts +0 -11
- package/dist/views/BuyBond/BuyComponent.js.map +0 -1
- package/dist/views/BuyBond/BuyComponentAptos.js.map +0 -1
- package/dist/views/BuyBond/BuyComponentPreTGE.js.map +0 -1
- package/dist/views/BuyBond/BuyComponentSolana.js.map +0 -1
- package/dist/views/BuyBond/BuyComponentSui.js.map +0 -1
- package/dist/views/LifiModal/LifiModal.d.ts +0 -6
- package/dist/views/LifiModal/LifiModal.js.map +0 -1
- package/dist/views/TransactionModal/TransactionModal.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/PreTGEActions.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRow.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowAptos.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowPreTGE.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowSolana.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowSui.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowYield.js.map +0 -1
- package/dist/views/YourBonds/components/UserBondRow/index.d.ts +0 -5
- package/dist/views/YourBondsModal/components/Actions/Actions.js.map +0 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsAptos.js.map +0 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsSolana.js.map +0 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsSui.js.map +0 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js.map +0 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionAptos.js.map +0 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionSolana.js.map +0 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionSui.js.map +0 -1
- package/dist/views/YourBondsModalYield/YourBondsModalYield.js.map +0 -1
- package/dist/views/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js.map +0 -1
- package/dist/views/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js.map +0 -1
- /package/dist/{views/BuyBond → adapters/aptos}/BuyComponentAptos.d.ts +0 -0
- /package/dist/{components/ConnectAptosWalletButton → adapters/aptos}/ConnectAptosWalletButton.d.ts +0 -0
- /package/dist/{components/ConnectoToVmBanners → adapters/aptos}/ConnectToAptosBanner.d.ts +0 -0
- /package/dist/{types → adapters/aptos}/aptosBonds.d.ts +0 -0
- /package/dist/{hooks/accounts → adapters/aptos}/useAPTAccount.d.ts +0 -0
- /package/dist/{state/zap → adapters/aptos}/useAptosZapQuote.d.ts +0 -0
- /package/dist/{state/zap → adapters/aptos}/useAptosZapQuote.js +0 -0
- /package/dist/{state/balance → adapters/aptos}/useCurrencyBalanceAptos.d.ts +0 -0
- /package/dist/{components/ConnectoToVmBanners → adapters/evm}/ConnectToEvmBanner.d.ts +0 -0
- /package/dist/{utils → adapters/evm}/multicall.d.ts +0 -0
- /package/dist/{views/BuyBond → adapters/evm/preTGE}/BuyComponentPreTGE.d.ts +0 -0
- /package/dist/{views/Bonds/components/BondRows → adapters/evm/preTGE}/ModalHandlerPreTGE.d.ts +0 -0
- /package/dist/{state/allowance → adapters/evm}/useAllowance.d.ts +0 -0
- /package/dist/{hooks/accounts → adapters/evm}/useEVMAccount.d.ts +0 -0
- /package/dist/{hooks/accounts → adapters/evm}/useEVMAccount.js +0 -0
- /package/dist/{hooks → adapters/evm}/useMonitorTx.d.ts +0 -0
- /package/dist/{state/zap → adapters/evm}/useSoulZapBondQuote.d.ts +0 -0
- /package/dist/{state/bonds → adapters/evm}/useTierProofSignature.d.ts +0 -0
- /package/dist/{views/BuyBond → adapters/solana}/BuyComponentSolana.d.ts +0 -0
- /package/dist/{components/ConnectSolanaWalletButton → adapters/solana}/ConnectSolanaWalletButton.d.ts +0 -0
- /package/dist/{components/ConnectoToVmBanners → adapters/solana}/ConnectToSolanaBanner.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/calculateSolanaTrueBillPrice.d.ts +0 -0
- /package/dist/{types → adapters/solana/codecs}/index.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/derivePda.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/derivePda.js +0 -0
- /package/dist/{types → adapters/solana}/helius.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/solanaAtaHelper.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/solanaAtaHelper.js +0 -0
- /package/dist/{types → adapters/solana}/solanaBonds.d.ts +0 -0
- /package/dist/{constants → adapters/solana}/solanaConstants.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/solanaMulticall.d.ts +0 -0
- /package/dist/{utils → adapters/solana}/solanaMulticall.js +0 -0
- /package/dist/{utils → adapters/solana}/solanaRpc.d.ts +0 -0
- /package/dist/{state/zap → adapters/solana}/useJupiterSolanaQuote.d.ts +0 -0
- /package/dist/{state/zap → adapters/solana}/useJupiterSolanaQuote.js +0 -0
- /package/dist/{hooks/accounts → adapters/solana}/useSOLAccount.d.ts +0 -0
- /package/dist/{hooks/accounts → adapters/solana}/useSOLAccount.js +0 -0
- /package/dist/{views/BuyBond → adapters/sui}/BuyComponentSui.d.ts +0 -0
- /package/dist/{components/ConnectoToVmBanners → adapters/sui}/ConnectToSuiBanner.d.ts +0 -0
- /package/dist/{constants → adapters/sui}/suiConstants.d.ts +0 -0
- /package/dist/{constants → adapters/sui}/suiConstants.js +0 -0
- /package/dist/{utils → adapters/sui}/suiHelpers.d.ts +0 -0
- /package/dist/{config/constants → adapters/sui}/suiZapTokens.d.ts +0 -0
- /package/dist/{config/constants → adapters/sui}/suiZapTokens.js +0 -0
- /package/dist/{state/balance → adapters/sui}/useCurrencyBalanceSui.d.ts +0 -0
- /package/dist/{hooks/accounts → adapters/sui}/useSUIAccount.d.ts +0 -0
- /package/dist/{hooks/accounts → adapters/sui}/useSUIAccount.js +0 -0
- /package/dist/{state/zap → adapters/sui}/useSuiZapQuote.d.ts +0 -0
- /package/dist/state/bonds/fetchBondsData/{cleanBillsData.d.ts → bondPricing.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBondsData.js","sources":["../../../src/state/bonds/useBondsData.ts"],"sourcesContent":["import { QueryClient, useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { BondsData } from '../../types/bonds'\nimport { apiGet } from '../../utils/httpClient'\nimport { SDKProps } from '../useSDKConfig'\nimport useTokenPrices, { TokenPrices } from '../tokenPrices/useTokenPrices'\nimport useBondsList from './useBondsList'\nimport { BillsConfig, ChainId, PreTGEConfig } from '@ape.swap/apeswap-lists'\nimport useBondsListPreTGE from '../bonds/useBondsListPreTGE'\nimport {
|
|
1
|
+
{"version":3,"file":"useBondsData.js","sources":["../../../src/state/bonds/useBondsData.ts"],"sourcesContent":["import { QueryClient, useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { BondsData } from '../../types/bonds'\nimport { apiGet } from '../../utils/httpClient'\nimport { SDKProps } from '../useSDKConfig'\nimport useTokenPrices, { TokenPrices } from '../tokenPrices/useTokenPrices'\nimport useBondsList from './useBondsList'\nimport { BillsConfig, ChainId, PreTGEConfig } from '@ape.swap/apeswap-lists'\nimport useBondsListPreTGE from '../bonds/useBondsListPreTGE'\nimport { getAdapterForChain } from '../../adapters/registry'\n\nexport default function useBondsData(): UseQueryResult<BondsData[]> {\n const { data: bondList } = useBondsList()\n const { data: preTGEList } = useBondsListPreTGE()\n const { data: tokenPrices } = useTokenPrices()\n const tokenPricesKey = Object.keys(tokenPrices ?? {})?.length\n\n return useQuery({\n queryKey: [QUERY_KEYS.BONDS_DATA],\n queryFn: ({ client }) => calculateBondsData(client),\n refetchInterval: 25000, // i.e. 25 sec\n enabled: !!bondList && !!preTGEList && !!tokenPricesKey,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: 0,\n staleTime: 25000, // i.e. 25 sec\n })\n}\n\nexport const calculateBondsData = async (queryClient: QueryClient): Promise<BondsData[]> => {\n // ----------------------- Step 1 -----------------------\n // Fetch necessary data from the queryClient\n const { chains, urls } = queryClient?.getQueryData([QUERY_KEYS.SDK_CONFIG]) as SDKProps\n const realTimeApiUrl = urls['realTimeApi']\n const apiUrl = urls['apiV2']\n\n // Adapters that don't use the realtime API are read on-chain in step 3. Chains without a registered adapter are\n // unsupported.\n const usesRealtimeApi = (chainId: ChainId) => getAdapterForChain(chainId)?.usesRealtimeApi ?? false\n\n // ----------------------- Step 2 -----------------------\n // Fetch the realtime-API adapters' bonds (EVM incl. PreTGE, Solana)\n let evmSolBondsData: BondsData[] = []\n\n try {\n // We first try to fetch from realtime; if it fails we fall back to each adapter's on-chain reads.\n const realTimeApiResponse = await apiGet<{ bonds: BondsData[] }>(`${realTimeApiUrl}/bonds`)\n evmSolBondsData = realTimeApiResponse.bonds.filter(\n (bond: BondsData) => chains.includes(bond.chainId) && usesRealtimeApi(bond.chainId),\n )\n } catch {\n // Fallback strategy\n console.time('Fallback BondsData')\n const bondList = queryClient?.getQueryData([QUERY_KEYS.BONDS_LIST]) as Record<ChainId, BillsConfig[]>\n const preTGEList = queryClient?.getQueryData([QUERY_KEYS.BONDS_LIST_PRE_TGE]) as PreTGEConfig[]\n const tokenPrices = queryClient?.getQueryData([QUERY_KEYS.TOKEN_PRICES]) as Partial<Record<ChainId, TokenPrices[]>>\n const billData = await Promise.all([\n ...chains\n .filter((c) => usesRealtimeApi(c))\n .map(async (chainId: ChainId) => {\n if (!bondList[chainId]) return []\n return await getAdapterForChain(chainId)!.fetchBondsData(\n chainId,\n bondList[chainId],\n tokenPrices[chainId],\n apiUrl,\n )\n }),\n ...chains.map(async (chainId: ChainId) => {\n const preTGE = getAdapterForChain(chainId)?.preTGE\n if (!preTGE) return []\n const filteredBonds = preTGEList?.filter((bond) => bond.chainId === chainId) ?? []\n return await preTGE.fetchBondsData(chainId, tokenPrices, filteredBonds, apiUrl)\n }),\n ])\n console.timeEnd('Fallback BondsData')\n evmSolBondsData = billData.flat()\n }\n\n // ----------------------- Step 3 -----------------------\n // Fetch on-chain-only bonds: adapters that don't use the realtime API (e.g. Aptos, Sui)\n let onChainBonds: BondsData[] = []\n const onChainAdapterChains = (chains as ChainId[]).filter((chainId) => {\n const adapter = getAdapterForChain(chainId)\n return !!adapter && !adapter.usesRealtimeApi\n })\n\n if (onChainAdapterChains.length > 0) {\n try {\n const bondList = queryClient?.getQueryData([QUERY_KEYS.BONDS_LIST]) as Record<ChainId, BillsConfig[]>\n const tokenPrices = queryClient?.getQueryData([QUERY_KEYS.TOKEN_PRICES]) as Partial<\n Record<ChainId, TokenPrices[]>\n >\n const results = await Promise.all(\n onChainAdapterChains.map((chainId) =>\n getAdapterForChain(chainId)!.fetchBondsData(chainId, bondList[chainId] ?? [], tokenPrices[chainId], apiUrl),\n ),\n )\n onChainBonds = results.flat()\n } catch (e) {\n console.error(e)\n }\n }\n\n return [...evmSolBondsData, ...onChainBonds]\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { QueryClient, UseQueryResult } from '@tanstack/react-query';
|
|
2
2
|
import { BillsConfig, ChainId } from '@ape.swap/apeswap-lists';
|
|
3
3
|
import { UserBill } from '../../types/yourbonds';
|
|
4
|
+
import type { Ecosystem } from '../../adapters/types';
|
|
4
5
|
export default function useUserBonds(): UseQueryResult<UserBill[]>;
|
|
5
|
-
|
|
6
|
+
/** @param accounts the connected account of each family, by ecosystem (see useChainAccount) */
|
|
7
|
+
export declare const getUserBonds: (accounts: Partial<Record<Ecosystem, string | null>>, bondList: Record<ChainId, BillsConfig[]>, queryClient: QueryClient) => Promise<UserBill[]>;
|
|
@@ -4,24 +4,17 @@ import { ChainId } from '@ape.swap/apeswap-lists';
|
|
|
4
4
|
import useBondsList from './useBondsList.js';
|
|
5
5
|
import useTokenPrices from '../tokenPrices/useTokenPrices.js';
|
|
6
6
|
import { reportError } from '../../utils/reportError.js';
|
|
7
|
-
import
|
|
8
|
-
import useSOLAccount from '../../hooks/accounts/useSOLAccount.js';
|
|
9
|
-
import useAPTAccount from '../../hooks/accounts/useAPTAccount.js';
|
|
10
|
-
import useSUIAccount from '../../hooks/accounts/useSUIAccount.js';
|
|
7
|
+
import useChainAccount from '../chainAccount/useChainAccount.js';
|
|
11
8
|
import { apiPost } from '../../utils/httpClient.js';
|
|
12
|
-
import {
|
|
13
|
-
import { fetchUsersBondsAptos } from './fetchUsersBonds/fetchUsersBondsAptos.js';
|
|
14
|
-
import { fetchUsersBondsSUI } from './fetchUsersBonds/fetchUsersBondsSUI.js';
|
|
15
|
-
import { fetchUsersBondsEVM } from './fetchUsersBonds/fetchUsersBondsEVM.js';
|
|
9
|
+
import { getAdapterForChain } from '../../adapters/registry.js';
|
|
16
10
|
|
|
17
11
|
function useUserBonds() {
|
|
18
12
|
// First fetch the full list of bonds
|
|
19
13
|
const { data: bondList } = useBondsList();
|
|
20
|
-
const { address: addressEVM } =
|
|
21
|
-
const {
|
|
22
|
-
const
|
|
23
|
-
const { address:
|
|
24
|
-
const { address: addressSUI } = useSUIAccount();
|
|
14
|
+
const { address: addressEVM } = useChainAccount('evm');
|
|
15
|
+
const { address: addressSOL } = useChainAccount('sol');
|
|
16
|
+
const { address: addressAptos } = useChainAccount('aptos');
|
|
17
|
+
const { address: addressSUI } = useChainAccount('sui');
|
|
25
18
|
const { data: tokenPrices } = useTokenPrices();
|
|
26
19
|
return useQuery({
|
|
27
20
|
queryKey: [
|
|
@@ -32,7 +25,7 @@ function useUserBonds() {
|
|
|
32
25
|
addressSUI,
|
|
33
26
|
Object.keys(tokenPrices ?? {})?.length ?? null,
|
|
34
27
|
],
|
|
35
|
-
queryFn: ({ client }) => getUserBonds(addressEVM, addressSOL, addressAptos, addressSUI, bondList, client),
|
|
28
|
+
queryFn: ({ client }) => getUserBonds({ evm: addressEVM, sol: addressSOL, aptos: addressAptos, sui: addressSUI }, bondList, client),
|
|
36
29
|
enabled: !!bondList && !!(addressEVM || addressSOL || addressAptos || addressSUI) && !!tokenPrices,
|
|
37
30
|
refetchInterval: 120000,
|
|
38
31
|
refetchOnWindowFocus: false,
|
|
@@ -41,7 +34,8 @@ function useUserBonds() {
|
|
|
41
34
|
retry: 1,
|
|
42
35
|
});
|
|
43
36
|
}
|
|
44
|
-
|
|
37
|
+
/** @param accounts the connected account of each family, by ecosystem (see useChainAccount) */
|
|
38
|
+
const getUserBonds = async (accounts, bondList, queryClient) => {
|
|
45
39
|
const { chains, urls } = queryClient?.getQueryData([QUERY_KEYS.SDK_CONFIG]);
|
|
46
40
|
const apiUrl = urls['apiV2'];
|
|
47
41
|
const tokenPrices = queryClient?.getQueryData([QUERY_KEYS.TOKEN_PRICES]);
|
|
@@ -49,17 +43,10 @@ const getUserBonds = async (account, solanaAccount, aptosAccount, suiAccount, bo
|
|
|
49
43
|
const results = await Promise.allSettled(chains
|
|
50
44
|
.filter((chain) => bondList[chain])
|
|
51
45
|
.map((chain) => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return fetchUsersBondsAptos(aptosAccount, bondList[chain], tokenPrices);
|
|
57
|
-
}
|
|
58
|
-
else if (chain === ChainId.SUI) {
|
|
59
|
-
return fetchUsersBondsSUI(suiAccount, bondList[chain], tokenPrices);
|
|
60
|
-
}
|
|
61
|
-
else
|
|
62
|
-
return fetchUsersBondsEVM(chain, account, bondList[chain], tokenPrices);
|
|
46
|
+
// Chains without a registered adapter are unsupported
|
|
47
|
+
const adapter = getAdapterForChain(chain);
|
|
48
|
+
const account = adapter && accounts[adapter.ecosystem];
|
|
49
|
+
return adapter && account ? adapter.fetchUserBonds(chain, account, bondList[chain], tokenPrices) : [];
|
|
63
50
|
}));
|
|
64
51
|
// Filter out only fulfilled promises
|
|
65
52
|
const fulfilledResults = results
|
|
@@ -67,10 +54,11 @@ const getUserBonds = async (account, solanaAccount, aptosAccount, suiAccount, bo
|
|
|
67
54
|
.map((result) => result.value);
|
|
68
55
|
const onChainData = fulfilledResults.flat().flatMap((result) => result.userOwnedBills);
|
|
69
56
|
// Prepare body for batch API call
|
|
70
|
-
// api-v2
|
|
71
|
-
//
|
|
57
|
+
// api-v2 doesn't support adapters with enrichUserBondsViaApi: false (e.g. Aptos, Sui). Their bills are read
|
|
58
|
+
// on-chain, with no /bills/multi-batch enrichment, and use the placeholder image from their constants.
|
|
59
|
+
const enrichViaApi = (chainId) => getAdapterForChain(chainId)?.enrichUserBondsViaApi ?? true;
|
|
72
60
|
const body = Object.values(onChainData
|
|
73
|
-
.filter((data) => data?.bond?.chainId
|
|
61
|
+
.filter((data) => enrichViaApi(data?.bond?.chainId))
|
|
74
62
|
.reduce((acc, data) => {
|
|
75
63
|
const contract = data?.bond?.chainId === ChainId.SOL ? data.bond.contractAddress[data.bond.chainId] : data.billNftAddress;
|
|
76
64
|
const key = `${data?.bond?.chainId}-${contract}`;
|
|
@@ -93,10 +81,10 @@ const getUserBonds = async (account, solanaAccount, aptosAccount, suiAccount, bo
|
|
|
93
81
|
return onChainData;
|
|
94
82
|
}
|
|
95
83
|
// Enrich on-chain data with API data.
|
|
96
|
-
//
|
|
97
|
-
//
|
|
84
|
+
// Bills that weren't sent to api-v2 keep the nftData their fetcher populated instead of being overwritten with
|
|
85
|
+
// undefined.
|
|
98
86
|
const enrichedData = onChainData.map((userBond) => {
|
|
99
|
-
if (userBond.bond?.chainId
|
|
87
|
+
if (!enrichViaApi(userBond.bond?.chainId))
|
|
100
88
|
return userBond;
|
|
101
89
|
const nftDataResponse = responseData?.find((nft) => {
|
|
102
90
|
const contract = nft.contract.toLowerCase();
|
|
@@ -119,7 +107,7 @@ const getUserBonds = async (account, solanaAccount, aptosAccount, suiAccount, bo
|
|
|
119
107
|
apiUrl,
|
|
120
108
|
error: e,
|
|
121
109
|
extraInfo: { type: 'getUserBonds', bondList, chains, e },
|
|
122
|
-
account,
|
|
110
|
+
account: accounts.evm ?? undefined,
|
|
123
111
|
});
|
|
124
112
|
throw new Error('Failed to fetch user bonds');
|
|
125
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserBonds.js","sources":["../../../src/state/bonds/useUserBonds.ts"],"sourcesContent":["import { QueryClient, useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { BillsConfig, ChainId } from '@ape.swap/apeswap-lists'\nimport useBondsList from './useBondsList'\nimport { UserBill, UserBillNftData } from '../../types/yourbonds'\nimport { SDKProps } from '../useSDKConfig'\nimport useTokenPrices, { TokenPrices } from '../tokenPrices/useTokenPrices'\nimport { reportError } from '../../utils/reportError'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\nimport useSOLAccount from '../../hooks/accounts/useSOLAccount'\nimport useAPTAccount from '../../hooks/accounts/useAPTAccount'\nimport useSUIAccount from '../../hooks/accounts/useSUIAccount'\nimport { apiPost } from '../../utils/httpClient'\nimport { fetchUsersBondsSOL } from './fetchUsersBonds/fetchUsersBondsSOL'\nimport { fetchUsersBondsAptos } from './fetchUsersBonds/fetchUsersBondsAptos'\nimport { fetchUsersBondsSUI } from './fetchUsersBonds/fetchUsersBondsSUI'\nimport { fetchUsersBondsEVM } from './fetchUsersBonds/fetchUsersBondsEVM'\n\nexport default function useUserBonds(): UseQueryResult<UserBill[]> {\n // First fetch the full list of bonds\n const { data: bondList } = useBondsList()\n const { address: addressEVM } = useEVMAccount()\n const { publicKey } = useSOLAccount()\n const addressSOL = publicKey?.toBase58()\n const { address: addressAptos } = useAPTAccount()\n const { address: addressSUI } = useSUIAccount()\n const { data: tokenPrices } = useTokenPrices()\n return useQuery({\n queryKey: [\n QUERY_KEYS.USER_BONDS,\n addressEVM,\n addressSOL,\n addressAptos,\n addressSUI,\n Object.keys(tokenPrices ?? {})?.length ?? null,\n ],\n queryFn: ({ client }) => getUserBonds(addressEVM!, addressSOL!, addressAptos!, addressSUI!, bondList!, client),\n enabled: !!bondList && !!(addressEVM || addressSOL || addressAptos || addressSUI) && !!tokenPrices,\n refetchInterval: 120000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: 1,\n })\n}\n\nexport const getUserBonds = async (\n account: string,\n solanaAccount: string,\n aptosAccount: string,\n suiAccount: string,\n bondList: Record<ChainId, BillsConfig[]>,\n queryClient: QueryClient,\n): Promise<UserBill[]> => {\n const { chains, urls } = queryClient?.getQueryData([QUERY_KEYS.SDK_CONFIG]) as SDKProps\n const apiUrl = urls['apiV2']\n const tokenPrices: Partial<Record<ChainId, TokenPrices[]>> = queryClient?.getQueryData([QUERY_KEYS.TOKEN_PRICES])!\n\n try {\n const results = await Promise.allSettled(\n chains\n .filter((chain: ChainId) => bondList[chain])\n .map((chain: ChainId) => {\n if (chain === ChainId.SOL) {\n return fetchUsersBondsSOL(solanaAccount, bondList[chain], tokenPrices)\n } else if (chain === ChainId.APTOS) {\n return fetchUsersBondsAptos(aptosAccount, bondList[chain], tokenPrices)\n } else if (chain === ChainId.SUI) {\n return fetchUsersBondsSUI(suiAccount, bondList[chain], tokenPrices)\n } else return fetchUsersBondsEVM(chain, account, bondList[chain], tokenPrices)\n }),\n )\n\n // Filter out only fulfilled promises\n const fulfilledResults = results\n .filter((result): result is PromiseFulfilledResult<any> => result.status === 'fulfilled')\n .map((result) => result.value)\n\n const onChainData: UserBill[] = fulfilledResults.flat().flatMap((result) => result.userOwnedBills)\n\n // Prepare body for batch API call\n // api-v2 won't support Aptos/Sui. Bills are read on-chain, no /bills/multi-batch\n // enrichment. Aptos/Sui bills use the placeholder image from their constants.\n const body = Object.values(\n onChainData\n .filter((data) => data?.bond?.chainId !== ChainId.APTOS && data?.bond?.chainId !== ChainId.SUI)\n .reduce(\n (acc, data) => {\n const contract =\n data?.bond?.chainId === ChainId.SOL ? data.bond.contractAddress[data.bond.chainId] : data.billNftAddress\n const key = `${data?.bond?.chainId}-${contract}`\n\n if (!acc[key]) {\n acc[key] = {\n chainId: data?.bond?.chainId as number,\n contract: contract as string,\n billIds: [],\n }\n }\n\n acc[key].billIds.push(parseInt(data.id))\n return acc\n },\n {} as Record<string, { chainId: number; contract: string; billIds: number[] }>,\n ),\n )\n let responseData\n\n try {\n responseData = await apiPost<any[]>(`${apiUrl}/bills/multi-batch`, body, { timeoutMs: 40000 })\n } catch (e) {\n console.error(e)\n return onChainData\n }\n // Enrich on-chain data with API data.\n // Aptos/Sui bills are not sent to api-v2 (no support), so keep their existing\n // nftData populated by fetchBillsUser{Aptos,Sui} instead of overwriting with undefined.\n const enrichedData: UserBill[] = onChainData.map((userBond) => {\n if (userBond.bond?.chainId === ChainId.APTOS || userBond.bond?.chainId === ChainId.SUI) return userBond\n\n const nftDataResponse = responseData?.find((nft: any) => {\n const contract = nft.contract.toLowerCase()\n const chain = nft.chainId\n\n // API uses contractAddress for Solana bonds instead of NFT Address\n const contractToCompare =\n chain === ChainId.SOL ? userBond.bond?.contractAddress[ChainId.SOL] : userBond.billNftAddress\n return contractToCompare?.toLowerCase() === contract && userBond.bond?.chainId === chain\n })\n const nftData: UserBillNftData | undefined = nftDataResponse?.bills?.find(\n (billApiData: UserBillNftData) => billApiData.tokenId === parseInt(userBond.id),\n )\n return {\n ...userBond,\n nftData,\n }\n })\n\n return enrichedData\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'getUserBonds', bondList, chains, e },\n account,\n })\n throw new Error('Failed to fetch user bonds')\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useUserBonds.js","sources":["../../../src/state/bonds/useUserBonds.ts"],"sourcesContent":["import { QueryClient, useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { BillsConfig, ChainId } from '@ape.swap/apeswap-lists'\nimport useBondsList from './useBondsList'\nimport { UserBill, UserBillNftData } from '../../types/yourbonds'\nimport { SDKProps } from '../useSDKConfig'\nimport useTokenPrices, { TokenPrices } from '../tokenPrices/useTokenPrices'\nimport { reportError } from '../../utils/reportError'\nimport useChainAccount from '../chainAccount/useChainAccount'\nimport { apiPost } from '../../utils/httpClient'\nimport { getAdapterForChain } from '../../adapters/registry'\nimport type { Ecosystem } from '../../adapters/types'\n\nexport default function useUserBonds(): UseQueryResult<UserBill[]> {\n // First fetch the full list of bonds\n const { data: bondList } = useBondsList()\n const { address: addressEVM } = useChainAccount('evm')\n const { address: addressSOL } = useChainAccount('sol')\n const { address: addressAptos } = useChainAccount('aptos')\n const { address: addressSUI } = useChainAccount('sui')\n const { data: tokenPrices } = useTokenPrices()\n return useQuery({\n queryKey: [\n QUERY_KEYS.USER_BONDS,\n addressEVM,\n addressSOL,\n addressAptos,\n addressSUI,\n Object.keys(tokenPrices ?? {})?.length ?? null,\n ],\n queryFn: ({ client }) =>\n getUserBonds({ evm: addressEVM, sol: addressSOL, aptos: addressAptos, sui: addressSUI }, bondList!, client),\n enabled: !!bondList && !!(addressEVM || addressSOL || addressAptos || addressSUI) && !!tokenPrices,\n refetchInterval: 120000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: 1,\n })\n}\n\n/** @param accounts the connected account of each family, by ecosystem (see useChainAccount) */\nexport const getUserBonds = async (\n accounts: Partial<Record<Ecosystem, string | null>>,\n bondList: Record<ChainId, BillsConfig[]>,\n queryClient: QueryClient,\n): Promise<UserBill[]> => {\n const { chains, urls } = queryClient?.getQueryData([QUERY_KEYS.SDK_CONFIG]) as SDKProps\n const apiUrl = urls['apiV2']\n const tokenPrices: Partial<Record<ChainId, TokenPrices[]>> = queryClient?.getQueryData([QUERY_KEYS.TOKEN_PRICES])!\n\n try {\n const results = await Promise.allSettled(\n chains\n .filter((chain: ChainId) => bondList[chain])\n .map((chain: ChainId) => {\n // Chains without a registered adapter are unsupported\n const adapter = getAdapterForChain(chain)\n const account = adapter && accounts[adapter.ecosystem]\n return adapter && account ? adapter.fetchUserBonds(chain, account, bondList[chain], tokenPrices) : []\n }),\n )\n\n // Filter out only fulfilled promises\n const fulfilledResults = results\n .filter((result): result is PromiseFulfilledResult<any> => result.status === 'fulfilled')\n .map((result) => result.value)\n\n const onChainData: UserBill[] = fulfilledResults.flat().flatMap((result) => result.userOwnedBills)\n\n // Prepare body for batch API call\n // api-v2 doesn't support adapters with enrichUserBondsViaApi: false (e.g. Aptos, Sui). Their bills are read\n // on-chain, with no /bills/multi-batch enrichment, and use the placeholder image from their constants.\n const enrichViaApi = (chainId?: ChainId) => getAdapterForChain(chainId as ChainId)?.enrichUserBondsViaApi ?? true\n const body = Object.values(\n onChainData\n .filter((data) => enrichViaApi(data?.bond?.chainId))\n .reduce(\n (acc, data) => {\n const contract =\n data?.bond?.chainId === ChainId.SOL ? data.bond.contractAddress[data.bond.chainId] : data.billNftAddress\n const key = `${data?.bond?.chainId}-${contract}`\n\n if (!acc[key]) {\n acc[key] = {\n chainId: data?.bond?.chainId as number,\n contract: contract as string,\n billIds: [],\n }\n }\n\n acc[key].billIds.push(parseInt(data.id))\n return acc\n },\n {} as Record<string, { chainId: number; contract: string; billIds: number[] }>,\n ),\n )\n let responseData\n\n try {\n responseData = await apiPost<any[]>(`${apiUrl}/bills/multi-batch`, body, { timeoutMs: 40000 })\n } catch (e) {\n console.error(e)\n return onChainData\n }\n // Enrich on-chain data with API data.\n // Bills that weren't sent to api-v2 keep the nftData their fetcher populated instead of being overwritten with\n // undefined.\n const enrichedData: UserBill[] = onChainData.map((userBond) => {\n if (!enrichViaApi(userBond.bond?.chainId)) return userBond\n\n const nftDataResponse = responseData?.find((nft: any) => {\n const contract = nft.contract.toLowerCase()\n const chain = nft.chainId\n\n // API uses contractAddress for Solana bonds instead of NFT Address\n const contractToCompare =\n chain === ChainId.SOL ? userBond.bond?.contractAddress[ChainId.SOL] : userBond.billNftAddress\n return contractToCompare?.toLowerCase() === contract && userBond.bond?.chainId === chain\n })\n const nftData: UserBillNftData | undefined = nftDataResponse?.bills?.find(\n (billApiData: UserBillNftData) => billApiData.tokenId === parseInt(userBond.id),\n )\n return {\n ...userBond,\n nftData,\n }\n })\n\n return enrichedData\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'getUserBonds', bondList, chains, e },\n account: accounts.evm ?? undefined,\n })\n throw new Error('Failed to fetch user bonds')\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { UseQueryResult } from '@tanstack/react-query';
|
|
|
2
2
|
import { PreTGEConfig } from '@ape.swap/apeswap-lists';
|
|
3
3
|
import { UserBill } from '../../types/yourbonds';
|
|
4
4
|
import { YieldData } from '../../types/bonds';
|
|
5
|
-
interface AccountInfo {
|
|
5
|
+
export interface AccountInfo {
|
|
6
6
|
hasRedeemed: boolean;
|
|
7
7
|
hasRefunded?: boolean;
|
|
8
8
|
payout: string;
|
|
@@ -25,4 +25,3 @@ export interface PreTGEUserBonds extends PreTGEConfig {
|
|
|
25
25
|
endTime?: number;
|
|
26
26
|
}
|
|
27
27
|
export default function useUserBondsPreTGE(): UseQueryResult<PreTGEUserBonds[]>;
|
|
28
|
-
export {};
|
|
@@ -1,223 +1,27 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import { QUERY_KEYS } from '../../config/constants/queryKeys.js';
|
|
3
|
-
import multicall from '../../utils/multicall.js';
|
|
4
|
-
import LaunchBondABI_V_2_4_1 from '../../config/abi/launchBond_v2_4_1.json.js';
|
|
5
|
-
import Vault_Shares_ABI from '../../config/abi/Vault_Shares.json.js';
|
|
6
|
-
import { reportError } from '../../utils/reportError.js';
|
|
7
3
|
import { useURLByEnvironment, useSDKConfig } from '../useSDKConfig.js';
|
|
8
4
|
import useBondsListPreTGE from './useBondsListPreTGE.js';
|
|
9
|
-
import { getBalanceNumber } from '../../utils/getBalanceNumber.js';
|
|
10
5
|
import useTokenPrices from '../tokenPrices/useTokenPrices.js';
|
|
11
|
-
import
|
|
6
|
+
import { getAdapterByEcosystem } from '../../adapters/registry.js';
|
|
7
|
+
import useChainAccount from '../chainAccount/useChainAccount.js';
|
|
12
8
|
|
|
13
9
|
function useUserBondsPreTGE() {
|
|
14
10
|
const { data: preTGEList } = useBondsListPreTGE();
|
|
15
11
|
const { data: tokenPrices } = useTokenPrices();
|
|
16
|
-
const { address } =
|
|
12
|
+
const { address } = useChainAccount('evm');
|
|
17
13
|
const apiUrl = useURLByEnvironment('apiV2');
|
|
18
14
|
const { chains } = useSDKConfig();
|
|
15
|
+
// PreTGE / launch bonds live on EVM contracts, so they're read by the EVM adapter
|
|
16
|
+
const preTGE = getAdapterByEcosystem('evm')?.preTGE;
|
|
19
17
|
return useQuery({
|
|
20
18
|
queryKey: [QUERY_KEYS.PRE_TGE_USER_BONDS, preTGEList?.length ?? '', address, Object.keys(tokenPrices ?? {})],
|
|
21
|
-
queryFn: () =>
|
|
19
|
+
queryFn: () => preTGE.fetchUserBonds(chains, tokenPrices, preTGEList, address, apiUrl),
|
|
22
20
|
refetchInterval: 30000,
|
|
23
21
|
refetchOnWindowFocus: false,
|
|
24
|
-
enabled: !!preTGEList && preTGEList.length > 0 && !!address && !!tokenPrices,
|
|
22
|
+
enabled: !!preTGE && !!preTGEList && preTGEList.length > 0 && !!address && !!tokenPrices,
|
|
25
23
|
});
|
|
26
24
|
}
|
|
27
|
-
const fetchPreTGEUserBonds = async (chains, tokenPrices, preTGEList, account, apiUrl) => {
|
|
28
|
-
try {
|
|
29
|
-
const preTGEBonds = preTGEList.filter((bond) => chains.includes(bond.chainId));
|
|
30
|
-
const results = await Promise.all(preTGEBonds.map(async (bond) => {
|
|
31
|
-
try {
|
|
32
|
-
const calls = [
|
|
33
|
-
{
|
|
34
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
35
|
-
name: 'getBillIds',
|
|
36
|
-
params: [account],
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
40
|
-
name: 'accountInfo',
|
|
41
|
-
params: [account],
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
45
|
-
name: 'hasRedeemed',
|
|
46
|
-
params: [account],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
50
|
-
name: 'finalized',
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
54
|
-
name: 'terms',
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
58
|
-
name: 'trueBillPrice',
|
|
59
|
-
},
|
|
60
|
-
];
|
|
61
|
-
const res = await multicall(bond.chainId, LaunchBondABI_V_2_4_1, calls);
|
|
62
|
-
const billId = res?.[0]?.[0]?.[0]?.toString();
|
|
63
|
-
let userOwnedBillsData;
|
|
64
|
-
if (billId) {
|
|
65
|
-
const billDataCalls = [
|
|
66
|
-
{
|
|
67
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
68
|
-
name: 'getBillInfo',
|
|
69
|
-
params: [billId],
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
73
|
-
name: 'billNft',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
77
|
-
name: 'claimablePayout',
|
|
78
|
-
params: [billId],
|
|
79
|
-
},
|
|
80
|
-
];
|
|
81
|
-
const billData = await multicall(bond.chainId, LaunchBondABI_V_2_4_1, billDataCalls);
|
|
82
|
-
userOwnedBillsData = {
|
|
83
|
-
address: bond.contractAddress[bond.chainId] ?? '',
|
|
84
|
-
id: billId,
|
|
85
|
-
payout: (BigInt(billData[0][0]?.payout.toString()) - BigInt(billData[0][0]?.payoutClaimed.toString())).toString(),
|
|
86
|
-
payoutClaimed: billData[0][0]?.payoutClaimed.toString(),
|
|
87
|
-
billNftAddress: billData[1][0]?.toString(),
|
|
88
|
-
// vesting: billData[0][0]?.vesting?.toString(),
|
|
89
|
-
vestingTerm: billData[0][0]?.vestingTerm?.toString(),
|
|
90
|
-
lastBlockTimestamp: billData[0][0]?.lastClaimTimestamp?.toString(),
|
|
91
|
-
vestingStartTimestamp: billData[0][0]?.vestingStartTimestamp?.toString(),
|
|
92
|
-
truePricePaid: billData[0][0]?.truePricePaid?.toString(),
|
|
93
|
-
pendingRewards: billData[2][0]?.toString(),
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
const accountInfo = {
|
|
97
|
-
hasRedeemed: res[2][0],
|
|
98
|
-
payout: res[1][0].toString(),
|
|
99
|
-
depositAmount: res[1][1].toString(),
|
|
100
|
-
payoutClaimed: res[1][2].toString(),
|
|
101
|
-
vesting: res[1][3].toString(),
|
|
102
|
-
vestingTerm: res[1][4].toString(),
|
|
103
|
-
vestingStartTimestamp: res[1][5].toString(),
|
|
104
|
-
lastClaimTimestamp: res[1][6].toString(),
|
|
105
|
-
truePricePaid: res[1][7].toString(),
|
|
106
|
-
};
|
|
107
|
-
const finalized = res[3][0];
|
|
108
|
-
const terms = res[4];
|
|
109
|
-
const endTime = parseInt(terms[0]);
|
|
110
|
-
const startTime = parseInt(terms[1]);
|
|
111
|
-
const vestingTerm = parseInt(res[4][2]);
|
|
112
|
-
const trueBillPrice = res[5]?.[0]?.toString();
|
|
113
|
-
const initPrice = getBalanceNumber(trueBillPrice, bond?.lpToken?.decimals?.[bond?.chainId]);
|
|
114
|
-
const initialRelease = terms?.[5];
|
|
115
|
-
const earnTokenAddress = bond.yieldBond
|
|
116
|
-
? bond.underlyingEarnToken?.address[bond.chainId]?.toLowerCase()
|
|
117
|
-
: bond.earnToken.address[bond.chainId]?.toLowerCase();
|
|
118
|
-
const earnTokenPrice = tokenPrices?.[bond?.chainId]?.find((tokenPrice) => tokenPrice.tokenAddress?.toLowerCase() === earnTokenAddress)?.price;
|
|
119
|
-
const now = Math.floor(Date.now() / 1000);
|
|
120
|
-
const progress = Math.min(1, Math.max(0, (now - startTime) / (endTime - startTime)));
|
|
121
|
-
const currentAPR = bond.startAPR != null && bond.endAPR != null && endTime > startTime
|
|
122
|
-
? bond.startAPR + (bond.endAPR - bond.startAPR) * progress
|
|
123
|
-
: 0;
|
|
124
|
-
const apr = bond.finalAPR || currentAPR;
|
|
125
|
-
let depositedAssets = 0;
|
|
126
|
-
let claimableRewards = '0';
|
|
127
|
-
let futureRewards = 0;
|
|
128
|
-
let rewardDistributionEnd = 0;
|
|
129
|
-
let claimed = 0;
|
|
130
|
-
let vaultTokenBalance = '0';
|
|
131
|
-
if (bond.yieldBond) {
|
|
132
|
-
const calls = [
|
|
133
|
-
{
|
|
134
|
-
address: bond.earnToken.address[bond.chainId] ?? '',
|
|
135
|
-
name: 'maxWithdraw',
|
|
136
|
-
params: [account],
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
address: bond.earnToken.address[bond.chainId] ?? '',
|
|
140
|
-
name: 'pendingRewards',
|
|
141
|
-
params: [account],
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
address: bond.earnToken.address[bond.chainId] ?? '',
|
|
145
|
-
name: 'claimedAssets',
|
|
146
|
-
params: [account],
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
address: bond.earnToken.address[bond.chainId] ?? '',
|
|
150
|
-
name: 'vestingEnd',
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
address: bond.earnToken.address[bond.chainId] ?? '',
|
|
154
|
-
name: 'balanceOf',
|
|
155
|
-
params: [account],
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
address: bond.earnToken.address[bond.chainId] ?? '',
|
|
159
|
-
name: 'earned',
|
|
160
|
-
params: [account],
|
|
161
|
-
},
|
|
162
|
-
];
|
|
163
|
-
const res = await multicall(bond.chainId, Vault_Shares_ABI, calls);
|
|
164
|
-
depositedAssets = getBalanceNumber(res[0][0].toString());
|
|
165
|
-
futureRewards = getBalanceNumber(res[1][0].toString());
|
|
166
|
-
claimed = getBalanceNumber(res[2][0].toString());
|
|
167
|
-
rewardDistributionEnd = parseInt(res[3][0]);
|
|
168
|
-
vaultTokenBalance = res[4][0].toString();
|
|
169
|
-
claimableRewards = res[5][0].toString();
|
|
170
|
-
}
|
|
171
|
-
return {
|
|
172
|
-
...bond,
|
|
173
|
-
accountInfo,
|
|
174
|
-
userOwnedBillsData,
|
|
175
|
-
endTime,
|
|
176
|
-
finalized,
|
|
177
|
-
vestingTerm,
|
|
178
|
-
initPrice,
|
|
179
|
-
initialRelease: initialRelease / 10000,
|
|
180
|
-
earnTokenPrice: bond.yieldBond
|
|
181
|
-
? earnTokenPrice
|
|
182
|
-
: !earnTokenPrice || earnTokenPrice === 0
|
|
183
|
-
? initPrice
|
|
184
|
-
: earnTokenPrice,
|
|
185
|
-
yieldData: {
|
|
186
|
-
apr,
|
|
187
|
-
claimableRewards: accountInfo.hasRedeemed ? claimableRewards : '0',
|
|
188
|
-
rewardDistributionEnd,
|
|
189
|
-
claimed,
|
|
190
|
-
depositedAssets,
|
|
191
|
-
vaultTokenBalance,
|
|
192
|
-
futureRewards,
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
catch (e) {
|
|
197
|
-
console.error(e);
|
|
198
|
-
reportError({
|
|
199
|
-
apiUrl,
|
|
200
|
-
error: e,
|
|
201
|
-
extraInfo: { type: 'fetchPreTGEUserBonds', bond, e },
|
|
202
|
-
account,
|
|
203
|
-
chainId: bond.chainId,
|
|
204
|
-
});
|
|
205
|
-
return undefined;
|
|
206
|
-
}
|
|
207
|
-
}));
|
|
208
|
-
return results.filter((bond) => bond !== undefined);
|
|
209
|
-
}
|
|
210
|
-
catch (e) {
|
|
211
|
-
console.log(e);
|
|
212
|
-
reportError({
|
|
213
|
-
apiUrl,
|
|
214
|
-
error: e,
|
|
215
|
-
extraInfo: { type: 'fetchPreTGEUserBonds', e },
|
|
216
|
-
account,
|
|
217
|
-
});
|
|
218
|
-
return [];
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
25
|
|
|
222
26
|
export { useUserBondsPreTGE as default };
|
|
223
27
|
//# sourceMappingURL=useUserBondsPreTGE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserBondsPreTGE.js","sources":["../../../src/state/bonds/useUserBondsPreTGE.ts"],"sourcesContent":["import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { ChainId, PreTGEConfig } from '@ape.swap/apeswap-lists'\nimport multicall from '../../utils/multicall'\nimport launchBondsABI_V2_4_1 from '../../config/abi/launchBond_v2_4_1.json'\nimport Vault_Shares_ABI from '../../config/abi/Vault_Shares.json'\nimport { UserBill } from '../../types/yourbonds'\nimport { reportError } from '../../utils/reportError'\nimport { useSDKConfig, useURLByEnvironment } from '../useSDKConfig'\nimport useBondsListPreTGE from './useBondsListPreTGE'\nimport { getBalanceNumber } from '../../utils/getBalanceNumber'\nimport useTokenPrices, { TokenPrices } from '../tokenPrices/useTokenPrices'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\nimport { YieldData } from '../../types/bonds'\n\ninterface AccountInfo {\n hasRedeemed: boolean\n hasRefunded?: boolean\n payout: string\n depositAmount: string\n payoutClaimed: string\n vesting: string\n vestingTerm: string\n vestingStartTimestamp: string\n lastClaimTimestamp: string\n truePricePaid: string\n}\n\nexport interface PreTGEUserBonds extends PreTGEConfig {\n accountInfo?: AccountInfo\n userOwnedBillsData?: UserBill\n finalized?: boolean\n initPrice?: number\n initialRelease?: number\n earnTokenPrice?: number\n yieldData?: YieldData\n endTime?: number\n}\n\nexport default function useUserBondsPreTGE(): UseQueryResult<PreTGEUserBonds[]> {\n const { data: preTGEList } = useBondsListPreTGE()\n const { data: tokenPrices } = useTokenPrices()\n const { address } = useEVMAccount()\n const apiUrl = useURLByEnvironment('apiV2')\n const { chains } = useSDKConfig()\n\n return useQuery({\n queryKey: [QUERY_KEYS.PRE_TGE_USER_BONDS, preTGEList?.length ?? '', address, Object.keys(tokenPrices ?? {})],\n queryFn: () => fetchPreTGEUserBonds(chains!, tokenPrices!, preTGEList!, address as string, apiUrl),\n refetchInterval: 30000,\n refetchOnWindowFocus: false,\n enabled: !!preTGEList && preTGEList.length > 0 && !!address && !!tokenPrices,\n })\n}\n\nconst fetchPreTGEUserBonds = async (\n chains: number[],\n tokenPrices: Partial<Record<ChainId, TokenPrices[]>>,\n preTGEList: PreTGEConfig[],\n account: string,\n apiUrl: string,\n): Promise<PreTGEUserBonds[]> => {\n try {\n const preTGEBonds = preTGEList.filter((bond) => chains.includes(bond.chainId))\n const results: (PreTGEUserBonds | undefined)[] = await Promise.all(\n preTGEBonds.map(async (bond): Promise<PreTGEUserBonds | undefined> => {\n try {\n const calls = [\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'getBillIds',\n params: [account],\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'accountInfo',\n params: [account],\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'hasRedeemed',\n params: [account],\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'finalized',\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'terms',\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'trueBillPrice',\n },\n ]\n\n const res = await multicall(bond.chainId, launchBondsABI_V2_4_1, calls)\n const billId = res?.[0]?.[0]?.[0]?.toString()\n\n let userOwnedBillsData\n if (billId) {\n const billDataCalls: any = [\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'getBillInfo',\n params: [billId],\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'billNft',\n },\n {\n address: bond.contractAddress[bond.chainId] ?? '',\n name: 'claimablePayout',\n params: [billId],\n },\n ]\n const billData = await multicall(bond.chainId, launchBondsABI_V2_4_1, billDataCalls)\n userOwnedBillsData = {\n address: bond.contractAddress[bond.chainId] ?? '',\n id: billId,\n payout: (\n BigInt(billData[0][0]?.payout.toString()) - BigInt(billData[0][0]?.payoutClaimed.toString())\n ).toString(),\n payoutClaimed: billData[0][0]?.payoutClaimed.toString(),\n billNftAddress: billData[1][0]?.toString(),\n // vesting: billData[0][0]?.vesting?.toString(),\n vestingTerm: billData[0][0]?.vestingTerm?.toString(),\n lastBlockTimestamp: billData[0][0]?.lastClaimTimestamp?.toString(),\n vestingStartTimestamp: billData[0][0]?.vestingStartTimestamp?.toString(),\n truePricePaid: billData[0][0]?.truePricePaid?.toString(),\n pendingRewards: billData[2][0]?.toString(),\n }\n }\n const accountInfo: AccountInfo = {\n hasRedeemed: res[2][0],\n payout: res[1][0].toString(),\n depositAmount: res[1][1].toString(),\n payoutClaimed: res[1][2].toString(),\n vesting: res[1][3].toString(),\n vestingTerm: res[1][4].toString(),\n vestingStartTimestamp: res[1][5].toString(),\n lastClaimTimestamp: res[1][6].toString(),\n truePricePaid: res[1][7].toString(),\n }\n\n const finalized: boolean = res[3][0]\n const terms = res[4]\n const endTime = parseInt(terms[0])\n const startTime = parseInt(terms[1])\n const vestingTerm = parseInt(res[4][2])\n const trueBillPrice = res[5]?.[0]?.toString()\n const initPrice = getBalanceNumber(trueBillPrice, bond?.lpToken?.decimals?.[bond?.chainId] as number)\n const initialRelease = terms?.[5]\n const earnTokenAddress = bond.yieldBond\n ? bond.underlyingEarnToken?.address[bond.chainId]?.toLowerCase()\n : bond.earnToken.address[bond.chainId]?.toLowerCase()\n const earnTokenPrice = tokenPrices?.[bond?.chainId]?.find(\n (tokenPrice) => tokenPrice.tokenAddress?.toLowerCase() === earnTokenAddress,\n )?.price\n\n const now = Math.floor(Date.now() / 1000)\n const progress = Math.min(1, Math.max(0, (now - startTime) / (endTime - startTime)))\n const currentAPR =\n bond.startAPR != null && bond.endAPR != null && endTime > startTime\n ? bond.startAPR + (bond.endAPR - bond.startAPR) * progress\n : 0\n const apr = bond.finalAPR || currentAPR\n\n let depositedAssets = 0\n let claimableRewards = '0'\n let futureRewards = 0\n let rewardDistributionEnd = 0\n let claimed = 0\n let vaultTokenBalance = '0'\n if (bond.yieldBond) {\n const calls = [\n {\n address: bond.earnToken.address[bond.chainId] ?? '',\n name: 'maxWithdraw',\n params: [account],\n },\n {\n address: bond.earnToken.address[bond.chainId] ?? '',\n name: 'pendingRewards',\n params: [account],\n },\n {\n address: bond.earnToken.address[bond.chainId] ?? '',\n name: 'claimedAssets',\n params: [account],\n },\n {\n address: bond.earnToken.address[bond.chainId] ?? '',\n name: 'vestingEnd',\n },\n {\n address: bond.earnToken.address[bond.chainId] ?? '',\n name: 'balanceOf',\n params: [account],\n },\n {\n address: bond.earnToken.address[bond.chainId] ?? '',\n name: 'earned',\n params: [account],\n },\n ]\n const res = await multicall(bond.chainId, Vault_Shares_ABI, calls)\n depositedAssets = getBalanceNumber(res[0][0].toString())\n futureRewards = getBalanceNumber(res[1][0].toString())\n claimed = getBalanceNumber(res[2][0].toString())\n rewardDistributionEnd = parseInt(res[3][0])\n vaultTokenBalance = res[4][0].toString()\n claimableRewards = res[5][0].toString()\n }\n\n return {\n ...bond,\n accountInfo,\n userOwnedBillsData,\n endTime,\n finalized,\n vestingTerm,\n initPrice,\n initialRelease: initialRelease / 10000,\n earnTokenPrice: bond.yieldBond\n ? earnTokenPrice\n : !earnTokenPrice || earnTokenPrice === 0\n ? initPrice\n : earnTokenPrice,\n yieldData: {\n apr,\n claimableRewards: accountInfo.hasRedeemed ? claimableRewards : '0',\n rewardDistributionEnd,\n claimed,\n depositedAssets,\n vaultTokenBalance,\n futureRewards,\n },\n }\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'fetchPreTGEUserBonds', bond, e },\n account,\n chainId: bond.chainId,\n })\n return undefined\n }\n }),\n )\n\n return results.filter((bond) => bond !== undefined)\n } catch (e) {\n console.log(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'fetchPreTGEUserBonds', e },\n account,\n })\n return []\n }\n}\n"],"names":["launchBondsABI_V2_4_1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useUserBondsPreTGE.js","sources":["../../../src/state/bonds/useUserBondsPreTGE.ts"],"sourcesContent":["import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { PreTGEConfig } from '@ape.swap/apeswap-lists'\nimport { UserBill } from '../../types/yourbonds'\nimport { useSDKConfig, useURLByEnvironment } from '../useSDKConfig'\nimport useBondsListPreTGE from './useBondsListPreTGE'\nimport useTokenPrices from '../tokenPrices/useTokenPrices'\nimport { getAdapterByEcosystem } from '../../adapters/registry'\nimport useChainAccount from '../chainAccount/useChainAccount'\nimport { YieldData } from '../../types/bonds'\n\nexport interface AccountInfo {\n hasRedeemed: boolean\n hasRefunded?: boolean\n payout: string\n depositAmount: string\n payoutClaimed: string\n vesting: string\n vestingTerm: string\n vestingStartTimestamp: string\n lastClaimTimestamp: string\n truePricePaid: string\n}\n\nexport interface PreTGEUserBonds extends PreTGEConfig {\n accountInfo?: AccountInfo\n userOwnedBillsData?: UserBill\n finalized?: boolean\n initPrice?: number\n initialRelease?: number\n earnTokenPrice?: number\n yieldData?: YieldData\n endTime?: number\n}\n\nexport default function useUserBondsPreTGE(): UseQueryResult<PreTGEUserBonds[]> {\n const { data: preTGEList } = useBondsListPreTGE()\n const { data: tokenPrices } = useTokenPrices()\n const { address } = useChainAccount('evm')\n const apiUrl = useURLByEnvironment('apiV2')\n const { chains } = useSDKConfig()\n // PreTGE / launch bonds live on EVM contracts, so they're read by the EVM adapter\n const preTGE = getAdapterByEcosystem('evm')?.preTGE\n\n return useQuery({\n queryKey: [QUERY_KEYS.PRE_TGE_USER_BONDS, preTGEList?.length ?? '', address, Object.keys(tokenPrices ?? {})],\n queryFn: () => preTGE!.fetchUserBonds(chains!, tokenPrices!, preTGEList!, address as string, apiUrl),\n refetchInterval: 30000,\n refetchOnWindowFocus: false,\n enabled: !!preTGE && !!preTGEList && preTGEList.length > 0 && !!address && !!tokenPrices,\n })\n}\n"],"names":[],"mappings":";;;;;;;;AAmCc,SAAU,kBAAkB,GAAA;IACxC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE;IACjD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;AAC1C,IAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC3C,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;;IAEjC,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM;AAEnD,IAAA,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AAC5G,QAAA,OAAO,EAAE,MAAM,MAAO,CAAC,cAAc,CAAC,MAAO,EAAE,WAAY,EAAE,UAAW,EAAE,OAAiB,EAAE,MAAM,CAAC;AACpG,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,oBAAoB,EAAE,KAAK;QAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW;AACzF,KAAA,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Ecosystem } from '../../adapters/types';
|
|
2
|
+
export interface ChainAccount {
|
|
3
|
+
address: string | null;
|
|
4
|
+
connected: boolean;
|
|
5
|
+
chainId?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The connected account of a chain family, as published by that family's adapter `AccountBridge`. Returns a
|
|
9
|
+
* disconnected account when the family's adapter isn't registered. Chain-agnostic: safe to call from core code.
|
|
10
|
+
*/
|
|
11
|
+
export default function useChainAccount(ecosystem: Ecosystem): ChainAccount;
|
|
12
|
+
/** For adapter `AccountBridge`s: keeps the family's account in the query cache in sync with its wallet library. */
|
|
13
|
+
export declare const usePublishChainAccount: (ecosystem: Ecosystem, { address, connected, chainId }: ChainAccount) => void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
import { QUERY_KEYS } from '../../config/constants/queryKeys.js';
|
|
4
|
+
|
|
5
|
+
const DISCONNECTED = { address: null, connected: false };
|
|
6
|
+
const chainAccountQueryKey = (ecosystem) => [QUERY_KEYS.CHAIN_ACCOUNT, ecosystem];
|
|
7
|
+
/**
|
|
8
|
+
* The connected account of a chain family, as published by that family's adapter `AccountBridge`. Returns a
|
|
9
|
+
* disconnected account when the family's adapter isn't registered. Chain-agnostic: safe to call from core code.
|
|
10
|
+
*/
|
|
11
|
+
function useChainAccount(ecosystem) {
|
|
12
|
+
const { data } = useQuery({
|
|
13
|
+
queryKey: chainAccountQueryKey(ecosystem),
|
|
14
|
+
// Written by usePublishChainAccount; the query is only used as a store.
|
|
15
|
+
queryFn: ({ client }) => client.getQueryData(chainAccountQueryKey(ecosystem)) ?? DISCONNECTED,
|
|
16
|
+
initialData: DISCONNECTED,
|
|
17
|
+
staleTime: Infinity,
|
|
18
|
+
});
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
/** For adapter `AccountBridge`s: keeps the family's account in the query cache in sync with its wallet library. */
|
|
22
|
+
const usePublishChainAccount = (ecosystem, { address, connected, chainId }) => {
|
|
23
|
+
const queryClient = useQueryClient();
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
queryClient.setQueryData(chainAccountQueryKey(ecosystem), { address, connected, chainId });
|
|
26
|
+
}, [queryClient, ecosystem, address, connected, chainId]);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export { useChainAccount as default, usePublishChainAccount };
|
|
30
|
+
//# sourceMappingURL=useChainAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChainAccount.js","sources":["../../../src/state/chainAccount/useChainAccount.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport type { Ecosystem } from '../../adapters/types'\n\nexport interface ChainAccount {\n address: string | null\n connected: boolean\n chainId?: number\n}\n\nconst DISCONNECTED: ChainAccount = { address: null, connected: false }\n\nconst chainAccountQueryKey = (ecosystem: Ecosystem) => [QUERY_KEYS.CHAIN_ACCOUNT, ecosystem]\n\n/**\n * The connected account of a chain family, as published by that family's adapter `AccountBridge`. Returns a\n * disconnected account when the family's adapter isn't registered. Chain-agnostic: safe to call from core code.\n */\nexport default function useChainAccount(ecosystem: Ecosystem): ChainAccount {\n const { data } = useQuery({\n queryKey: chainAccountQueryKey(ecosystem),\n // Written by usePublishChainAccount; the query is only used as a store.\n queryFn: ({ client }) => client.getQueryData<ChainAccount>(chainAccountQueryKey(ecosystem)) ?? DISCONNECTED,\n initialData: DISCONNECTED,\n staleTime: Infinity,\n })\n return data\n}\n\n/** For adapter `AccountBridge`s: keeps the family's account in the query cache in sync with its wallet library. */\nexport const usePublishChainAccount = (ecosystem: Ecosystem, { address, connected, chainId }: ChainAccount) => {\n const queryClient = useQueryClient()\n\n useEffect(() => {\n queryClient.setQueryData<ChainAccount>(chainAccountQueryKey(ecosystem), { address, connected, chainId })\n }, [queryClient, ecosystem, address, connected, chainId])\n}\n"],"names":[],"mappings":";;;;AAWA,MAAM,YAAY,GAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;AAEtE,MAAM,oBAAoB,GAAG,CAAC,SAAoB,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC;AAE5F;;;AAGG;AACW,SAAU,eAAe,CAAC,SAAoB,EAAA;AAC1D,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,oBAAoB,CAAC,SAAS,CAAC;;AAEzC,QAAA,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,YAAY,CAAe,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,YAAY;AAC3G,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,SAAS,EAAE,QAAQ;AACpB,KAAA,CAAC;AACF,IAAA,OAAO,IAAI;AACb;AAEA;AACO,MAAM,sBAAsB,GAAG,CAAC,SAAoB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAgB,KAAI;AAC5G,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;IAEpC,SAAS,CAAC,MAAK;AACb,QAAA,WAAW,CAAC,YAAY,CAAe,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAC1G,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3D;;;;"}
|
|
@@ -6,7 +6,7 @@ import { reportError } from '../../utils/reportError.js';
|
|
|
6
6
|
import { useSDKConfig, useURLByEnvironment } from '../useSDKConfig.js';
|
|
7
7
|
import useBondsData from '../bonds/useBondsData.js';
|
|
8
8
|
import { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers.js';
|
|
9
|
-
import { TIERS_WEIGHT } from '../tiers/
|
|
9
|
+
import { TIERS_WEIGHT } from '../tiers/tiers.js';
|
|
10
10
|
import { LaunchBondTiers } from '@ape.swap/apeswap-lists';
|
|
11
11
|
import { isBondSoldOut } from '../../views/Bonds/utils.js';
|
|
12
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHotBonds.js","sources":["../../../src/state/hotBonds/useHotBonds.ts"],"sourcesContent":["import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { apiGet } from '../../utils/httpClient'\nimport { BondsData } from '../../types/bonds'\nimport { STRAPI_URL } from '../../config/constants/variables'\nimport { reportError } from '../../utils/reportError'\nimport { useSDKConfig, useURLByEnvironment } from '../useSDKConfig'\nimport useBondsData from '../bonds/useBondsData'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { TIERS_WEIGHT } from '../tiers/
|
|
1
|
+
{"version":3,"file":"useHotBonds.js","sources":["../../../src/state/hotBonds/useHotBonds.ts"],"sourcesContent":["import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { apiGet } from '../../utils/httpClient'\nimport { BondsData } from '../../types/bonds'\nimport { STRAPI_URL } from '../../config/constants/variables'\nimport { reportError } from '../../utils/reportError'\nimport { useSDKConfig, useURLByEnvironment } from '../useSDKConfig'\nimport useBondsData from '../bonds/useBondsData'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { TIERS_WEIGHT } from '../tiers/tiers'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { isBondSoldOut } from '../../views/Bonds/utils'\n\nexport function useHotBondContracts() {\n const apiUrl = useURLByEnvironment('apiV2')\n return useQuery({\n queryKey: [QUERY_KEYS.HOT_BONDS_CONTRACTS],\n queryFn: () => getHotBondsContracts(apiUrl),\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n retry: 1,\n })\n}\n\nexport default function useHotBonds(): UseQueryResult<BondsData[]> {\n const { showLowValueBonds } = useSDKConfig()\n const { data: bondsData } = useBondsData()\n const { data: hotBondContracts } = useHotBondContracts()\n return useQuery({\n queryKey: [QUERY_KEYS.HOT_BONDS, bondsData?.length, hotBondContracts?.length, showLowValueBonds],\n queryFn: () => getHotBonds(bondsData!, hotBondContracts!, showLowValueBonds),\n refetchOnWindowFocus: false,\n refetchInterval: 30000,\n enabled: !!bondsData && bondsData.length > 0 && !!hotBondContracts && hotBondContracts.length > 0,\n retry: 0,\n })\n}\n\nconst getHotBondsContracts = async (apiUrl: string): Promise<string[]> => {\n try {\n const response = await apiGet<{ BondAddress: string }[]>(`${STRAPI_URL}/hot-bonds`)\n return response.map((bond) => bond.BondAddress.toLowerCase())\n } catch (e) {\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'getHotBondsContracts', e },\n })\n return []\n }\n}\n\nconst getHotBonds = async (\n bondsData: BondsData[],\n hotBondContracts: string[],\n showLowValueBonds: boolean,\n): Promise<BondsData[]> => {\n const sortAndFilterBonds = (bonds: BondsData[]) =>\n bonds\n ?.sort(\n (a, b) =>\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], b?.trueBondPrices)?.bonus ?? 0) -\n (findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], a?.trueBondPrices)?.bonus ?? 0),\n )\n ?.filter((bond) => {\n const bonus = findHighestTrueBondPrice(TIERS_WEIGHT[LaunchBondTiers.Legend], bond?.trueBondPrices)?.bonus\n return bonus && bonus > 0 && bonus < 50\n })\n\n const hotBonds = bondsData.filter(\n (bond) =>\n hotBondContracts.includes(bond?.contractAddress?.[bond?.chainId]?.toLowerCase() ?? '') &&\n !isBondSoldOut(bond, showLowValueBonds),\n )\n\n const filteredHotBonds = sortAndFilterBonds(hotBonds) ?? []\n const filteredBondsData =\n sortAndFilterBonds(bondsData.filter((bond) => !isBondSoldOut(bond, showLowValueBonds))) ?? []\n\n return [...filteredHotBonds, ...filteredBondsData].slice(0, 3)\n}\n"],"names":[],"mappings":"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"}
|