@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
|
@@ -9,33 +9,27 @@ import PlaceholderMonkey from '../../components/PlaceholderMonkey/index.js';
|
|
|
9
9
|
import useChainFilterOption from '../../state/chainFilterOption/useChainFilterOption.js';
|
|
10
10
|
import YourBondsMenu from './components/YourBondsMenu/YourBondsMenu.js';
|
|
11
11
|
import { useSDKConfig } from '../../state/useSDKConfig.js';
|
|
12
|
-
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
13
|
-
import ConnectToSolanaCard from '../../components/ConnectoToVmBanners/ConnectToSolanaBanner.js';
|
|
14
|
-
import ConnectToEVMBanner from '../../components/ConnectoToVmBanners/ConnectToEvmBanner.js';
|
|
15
|
-
import ConnectToAptosBanner from '../../components/ConnectoToVmBanners/ConnectToAptosBanner.js';
|
|
16
|
-
import ConnectToSuiBanner from '../../components/ConnectoToVmBanners/ConnectToSuiBanner.js';
|
|
17
|
-
import UserBondRow from './components/UserBondRow/UserBondRow.js';
|
|
18
|
-
import UserBondRowSolana from './components/UserBondRow/UserBondRowSolana.js';
|
|
19
|
-
import UserBondRowAptos from './components/UserBondRow/UserBondRowAptos.js';
|
|
20
|
-
import UserBondRowSui from './components/UserBondRow/UserBondRowSui.js';
|
|
21
|
-
import UserBondRowPreTGE from './components/UserBondRow/UserBondRowPreTGE.js';
|
|
22
12
|
import useUserBondsPreTGE from '../../state/bonds/useUserBondsPreTGE.js';
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import useAPTAccount from '../../hooks/accounts/useAPTAccount.js';
|
|
26
|
-
import useSUIAccount from '../../hooks/accounts/useSUIAccount.js';
|
|
13
|
+
import useChainAccount from '../../state/chainAccount/useChainAccount.js';
|
|
14
|
+
import { getAdapterForChain, getRegisteredAdapters } from '../../adapters/registry.js';
|
|
27
15
|
import useBondsData from '../../state/bonds/useBondsData.js';
|
|
28
|
-
import UserBondRowYield from './components/UserBondRow/UserBondRowYield.js';
|
|
29
16
|
|
|
17
|
+
/** The adapter's "connect your wallet" banner, while its family is configured but not connected. */
|
|
18
|
+
const AdapterConnectBanner = ({ adapter, chains }) => {
|
|
19
|
+
const { address } = useChainAccount(adapter.ecosystem);
|
|
20
|
+
if (address || !chains.some((chainId) => adapter.supportsChain(chainId)))
|
|
21
|
+
return null;
|
|
22
|
+
return (jsx(Flex, { className: "ape:w-full ape:mt-[5px]", children: jsx(adapter.ConnectBanner, {}) }));
|
|
23
|
+
};
|
|
30
24
|
const YourBonds = ({ showOnly }) => {
|
|
31
25
|
useTokenPrices();
|
|
32
26
|
useBondsData();
|
|
33
27
|
// Hooks
|
|
34
28
|
const SDKConfig = useSDKConfig();
|
|
35
|
-
const { address: account } =
|
|
36
|
-
const {
|
|
37
|
-
const { address: aptosAccount } =
|
|
38
|
-
const { address: suiAccount } =
|
|
29
|
+
const { address: account } = useChainAccount('evm');
|
|
30
|
+
const { address: solanaAccount } = useChainAccount('sol');
|
|
31
|
+
const { address: aptosAccount } = useChainAccount('aptos');
|
|
32
|
+
const { address: suiAccount } = useChainAccount('sui');
|
|
39
33
|
const { data: userBonds, isFetched: userBondsFetched } = useUserBonds();
|
|
40
34
|
const { data: chainFilterOption, setChainFilterOption } = useChainFilterOption();
|
|
41
35
|
const { data: preTGEUserBonds, isFetched: preTGEFetched } = useUserBondsPreTGE();
|
|
@@ -155,16 +149,19 @@ const YourBonds = ({ showOnly }) => {
|
|
|
155
149
|
return (bondsToRender && bondsToRender.length > 0) || !!preTGEBondsToRender?.length;
|
|
156
150
|
}, [bondsToRender, preTGEBondsToRender]);
|
|
157
151
|
return (jsxs(Flex, { className: "yourbonds table-container ape:w-full ape:flex ape:flex-col ape:px-[10px]", children: [!showOnly && (jsx(YourBondsMenu, { chainFilterOption: chainFilterOption, setChainFilterOption: setChainFilterOption, filterOptions: filterOptions, filterOption: filterOption, setFilterOption: handleFilterOption, setInputValue: setInputValue, inputValue: inputValue, handleSort: handleSort })), !account && !solanaAccount && !aptosAccount && !suiAccount ? (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(PlaceholderMonkey, { text: 'You are not connected.' }) })) : hasBonds && hasFetched ? (jsxs(Fragment, { children: [preTGEBondsToRender?.map((userBond, index) => {
|
|
158
|
-
|
|
152
|
+
// PreTGE / launch / Yield bonds come from the chain's adapter (EVM only today)
|
|
153
|
+
const preTGE = getAdapterForChain(userBond.chainId)?.preTGE;
|
|
154
|
+
if (!preTGE)
|
|
155
|
+
return null;
|
|
156
|
+
return userBond.yieldBond ? (jsx(preTGE.YieldRow, { userBond: userBond }, index)) : (jsx(preTGE.UserBondRow, { userBond: userBond }, index));
|
|
159
157
|
}), bondsToRender.map((bond) => {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
})] })) : inputValue !== '' || !chainFilterOption.includes('All Chains') ? (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(PlaceholderMonkey, { text: 'No results, change filters.' }) })) : hasFetched && !hasBonds ? (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(PlaceholderMonkey, { text: `You do not own any ${[account && 'EVM', solanaAccount && 'SOL', aptosAccount && 'Aptos', suiAccount && 'Sui'].filter(Boolean).join(' nor ') || 'EVM'} Bonds.` }) })) : (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(Spinner, { size: 100 }) })), jsxs(Flex, { className: "ape:w-full ape:flex-col ape:xl:flex-row ape:gap-[10px] ape:my-[10px]", children: [!account && (jsx(Flex, { className: "ape:w-full ape:mt-[5px]", children: jsx(ConnectToEVMBanner, {}) })), !solanaAccount && SDKConfig.chains?.includes(ChainId.SOL) && (jsx(Flex, { className: "ape:w-full ape:mt-[5px]", children: jsx(ConnectToSolanaCard, {}) })), !aptosAccount && SDKConfig.chains?.includes(ChainId.APTOS) && (jsx(Flex, { className: "ape:w-full ape:mt-[5px]", children: jsx(ConnectToAptosBanner, {}) })), !suiAccount && SDKConfig.chains?.includes(ChainId.SUI) && (jsx(Flex, { className: "ape:w-full ape:mt-[5px]", children: jsx(ConnectToSuiBanner, {}) }))] })] }));
|
|
158
|
+
const chainId = bond.bond?.chainId;
|
|
159
|
+
// Chains without a registered adapter are unsupported
|
|
160
|
+
const adapter = getAdapterForChain(chainId);
|
|
161
|
+
if (!adapter)
|
|
162
|
+
return null;
|
|
163
|
+
return jsx(adapter.UserBondRow, { bill: bond }, `${adapter.ecosystem}-${bond?.id}-${bond?.billNftAddress}`);
|
|
164
|
+
})] })) : inputValue !== '' || !chainFilterOption.includes('All Chains') ? (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(PlaceholderMonkey, { text: 'No results, change filters.' }) })) : hasFetched && !hasBonds ? (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(PlaceholderMonkey, { text: `You do not own any ${[account && 'EVM', solanaAccount && 'SOL', aptosAccount && 'Aptos', suiAccount && 'Sui'].filter(Boolean).join(' nor ') || 'EVM'} Bonds.` }) })) : (jsx(Flex, { className: "placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]", children: jsx(Spinner, { size: 100 }) })), jsx(Flex, { className: "ape:w-full ape:flex-col ape:xl:flex-row ape:gap-[10px] ape:my-[10px]", children: getRegisteredAdapters().map((adapter) => (jsx(AdapterConnectBanner, { adapter: adapter, chains: SDKConfig.chains ?? [] }, adapter.ecosystem))) })] }));
|
|
168
165
|
};
|
|
169
166
|
|
|
170
167
|
export { YourBonds as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YourBonds.js","sources":["../../../src/views/YourBonds/YourBonds.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react'\nimport Spinner from '../../components/uikit-sdk/Spinner'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport { UserBill } from '../../types/yourbonds'\nimport { claimableUSD, pendingUSD, getTimeLeftForFullyVested } from '../../utils/displayHelpers'\nimport useUserBonds from '../../state/bonds/useUserBonds'\nimport useTokenPrices from '../../state/tokenPrices/useTokenPrices'\nimport PlaceholderMonkey from '../../components/PlaceholderMonkey'\nimport useChainFilterOption from '../../state/chainFilterOption/useChainFilterOption'\nimport YourBondsMenu from './components/YourBondsMenu/YourBondsMenu'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport ConnectToSolanaBanner from '../../components/ConnectoToVmBanners/ConnectToSolanaBanner'\nimport ConnectToEVMBanner from '../../components/ConnectoToVmBanners/ConnectToEvmBanner'\nimport ConnectToAptosBanner from '../../components/ConnectoToVmBanners/ConnectToAptosBanner'\nimport ConnectToSuiBanner from '../../components/ConnectoToVmBanners/ConnectToSuiBanner'\nimport {\n UserBondRowPreTGE,\n UserBondRowSolana,\n UserBondRowAptos,\n UserBondRowSui,\n UserBondRow,\n} from './components/UserBondRow'\nimport useUserBondsPreTGE from '../../state/bonds/useUserBondsPreTGE'\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 useBondsData from '../../state/bonds/useBondsData'\nimport UserBondRowYield from './components/UserBondRow/UserBondRowYield'\n\ntype SortDirection = 'asc' | 'desc'\nexport type SortableKeys = 'claimable' | 'pending' | 'terms'\n\nconst YourBonds = ({ showOnly }: { showOnly?: string }) => {\n useTokenPrices()\n useBondsData()\n // Hooks\n const SDKConfig = useSDKConfig()\n const { address: account } = useEVMAccount()\n const { publicKey: solanaAccount } = useSOLAccount()\n const { address: aptosAccount } = useAPTAccount()\n const { address: suiAccount } = useSUIAccount()\n const { data: userBonds, isFetched: userBondsFetched } = useUserBonds()\n const { data: chainFilterOption, setChainFilterOption } = useChainFilterOption()\n const { data: preTGEUserBonds, isFetched: preTGEFetched } = useUserBondsPreTGE()\n const hasFetched = userBondsFetched && (preTGEFetched || !account)\n\n // State\n const [sortConfig, setSortConfig] = useState<{ key: SortableKeys; direction: SortDirection } | null>({\n key: 'claimable',\n direction: 'desc',\n })\n\n const [inputValue, setInputValue] = useState('')\n const filterOptions = ['CLAIMABLE', 'ALL']\n const [filterOption, setFilterOption] = useState(filterOptions[0])\n\n const preTGEBondsToRender = preTGEUserBonds\n ?.filter((userBond) => {\n if (!userBond?.accountInfo?.hasRedeemed) {\n return parseFloat(userBond?.accountInfo?.depositAmount ?? '0') > 0\n } else if (userBond.yieldBond && parseFloat(userBond?.accountInfo?.depositAmount ?? '0') > 0) {\n return (userBond?.yieldData?.depositedAssets ?? 0) > 0\n } else {\n return userBond?.userOwnedBillsData?.payout !== '0'\n }\n })\n .filter(\n (userBond) =>\n chainFilterOption.includes(userBond.chainId?.toString() ?? '') || chainFilterOption.includes('All Chains'),\n )\n .filter((userBond) => userBond.earnToken.symbol?.toLowerCase().includes(inputValue.toLowerCase()))\n\n const handleSort = (key: SortableKeys) => {\n let direction: SortDirection = 'desc'\n if (sortConfig?.key === key && sortConfig?.direction === 'desc') {\n direction = 'asc'\n }\n setSortConfig({ key, direction })\n }\n\n const bondsToRender = useMemo((): UserBill[] => {\n if (!userBonds) return []\n let bondsToReturn = userBonds\n\n // Handle Filtering //\n\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return bond.bond?.onlyPartner ? bond.bond.bondPartner === SDKConfig.bondPartner : true\n })\n\n if (SDKConfig.bondPartner) {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return bond.bond?.bondPartner === SDKConfig.bondPartner\n })\n }\n\n // Filter Single Token View\n if (showOnly) {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return bond?.bond?.earnToken?.symbol?.toLowerCase() === showOnly.toLowerCase()\n })\n }\n\n // Filter by search query\n if (inputValue !== '') {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return [\n bond?.bond?.showcaseTokenName?.toLowerCase(),\n bond?.bond?.earnToken?.symbol?.toLowerCase(),\n bond?.bond?.lpToken?.symbol?.toLowerCase(),\n ].some((property) => property?.includes(inputValue.toLowerCase()))\n })\n }\n\n // Filter by chain selector\n if (!chainFilterOption.includes('All Chains')) {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return chainFilterOption.includes(bond?.bond?.chainId?.toString() ?? '')\n })\n }\n\n // Filter by filter option (claimable or all buttons)\n if (filterOption === 'CLAIMABLE') {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n if (bond?.bond?.vestingCliff) {\n return bond.payout !== '0'\n }\n return bond.pendingRewards !== '0'\n })\n }\n\n // Handle sorting //\n if (sortConfig !== null) {\n bondsToReturn = bondsToReturn?.sort((a, b) => {\n let aValue: number, bValue: number\n\n if (sortConfig.key === 'claimable') {\n aValue = claimableUSD(a)\n bValue = claimableUSD(b)\n } else if (sortConfig.key === 'pending') {\n aValue = pendingUSD(a)\n bValue = pendingUSD(b)\n } else if (sortConfig.key === 'terms') {\n // little nasty trick to have the lowest time (closest to being fully vested) show up first when sorting ascending\n const aRemainingTime = getTimeLeftForFullyVested(b)\n const bRemainingTime = getTimeLeftForFullyVested(a)\n\n aValue = aRemainingTime\n bValue = bRemainingTime\n } else {\n aValue = a[sortConfig.key]\n bValue = b[sortConfig.key]\n }\n\n if (aValue < bValue) {\n return sortConfig.direction === 'asc' ? -1 : 1\n }\n if (aValue > bValue) {\n return sortConfig.direction === 'asc' ? 1 : -1\n }\n return 0\n })\n }\n return bondsToReturn\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [userBonds, sortConfig, inputValue, chainFilterOption, filterOption, userBondsFetched])\n\n const handleFilterOption = useCallback((newOption: string) => {\n setFilterOption(newOption)\n }, [])\n\n const hasBonds = useMemo(() => {\n return (bondsToRender && bondsToRender.length > 0) || !!preTGEBondsToRender?.length\n }, [bondsToRender, preTGEBondsToRender])\n\n return (\n <Flex className=\"yourbonds table-container ape:w-full ape:flex ape:flex-col ape:px-[10px]\">\n {!showOnly && (\n <YourBondsMenu\n chainFilterOption={chainFilterOption}\n setChainFilterOption={setChainFilterOption}\n filterOptions={filterOptions}\n filterOption={filterOption}\n setFilterOption={handleFilterOption}\n setInputValue={setInputValue}\n inputValue={inputValue}\n handleSort={handleSort}\n />\n )}\n {!account && !solanaAccount && !aptosAccount && !suiAccount ? (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <PlaceholderMonkey text={'You are not connected.'} />\n </Flex>\n ) : hasBonds && hasFetched ? (\n <>\n {preTGEBondsToRender?.map((userBond, index) => {\n return userBond.yieldBond ? (\n <UserBondRowYield userBond={userBond} key={index} />\n ) : (\n <UserBondRowPreTGE userBond={userBond} key={index} />\n )\n })}\n {bondsToRender.map((bond) => {\n if (bond.bond?.chainId === ChainId.SOL)\n return <UserBondRowSolana bill={bond} key={`${bond?.billNftAddress}-${bond.id}`} />\n if (bond.bond?.chainId === ChainId.APTOS) return <UserBondRowAptos bill={bond} key={`aptos-${bond?.id}`} />\n if (bond.bond?.chainId === ChainId.SUI) return <UserBondRowSui bill={bond} key={`sui-${bond?.id}`} />\n return <UserBondRow bill={bond} key={`${bond?.id}-${bond?.billNftAddress}`} />\n })}\n </>\n ) : inputValue !== '' || !chainFilterOption.includes('All Chains') ? (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <PlaceholderMonkey text={'No results, change filters.'} />\n </Flex>\n ) : hasFetched && !hasBonds ? (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <PlaceholderMonkey\n text={`You do not own any ${[account && 'EVM', solanaAccount && 'SOL', aptosAccount && 'Aptos', suiAccount && 'Sui'].filter(Boolean).join(' nor ') || 'EVM'} Bonds.`}\n />\n </Flex>\n ) : (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <Spinner size={100} />\n </Flex>\n )}\n <Flex className=\"ape:w-full ape:flex-col ape:xl:flex-row ape:gap-[10px] ape:my-[10px]\">\n {!account && (\n <Flex className=\"ape:w-full ape:mt-[5px]\">\n <ConnectToEVMBanner />\n </Flex>\n )}\n {!solanaAccount && SDKConfig.chains?.includes(ChainId.SOL) && (\n <Flex className=\"ape:w-full ape:mt-[5px]\">\n <ConnectToSolanaBanner />\n </Flex>\n )}\n {!aptosAccount && SDKConfig.chains?.includes(ChainId.APTOS) && (\n <Flex className=\"ape:w-full ape:mt-[5px]\">\n <ConnectToAptosBanner />\n </Flex>\n )}\n {!suiAccount && SDKConfig.chains?.includes(ChainId.SUI) && (\n <Flex className=\"ape:w-full ape:mt-[5px]\">\n <ConnectToSuiBanner />\n </Flex>\n )}\n </Flex>\n </Flex>\n )\n}\n\nexport default YourBonds\n"],"names":["_jsxs","_jsx","_Fragment","ConnectToSolanaBanner"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YourBonds.js","sources":["../../../src/views/YourBonds/YourBonds.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react'\nimport Spinner from '../../components/uikit-sdk/Spinner'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport { UserBill } from '../../types/yourbonds'\nimport { claimableUSD, pendingUSD, getTimeLeftForFullyVested } from '../../utils/displayHelpers'\nimport useUserBonds from '../../state/bonds/useUserBonds'\nimport useTokenPrices from '../../state/tokenPrices/useTokenPrices'\nimport PlaceholderMonkey from '../../components/PlaceholderMonkey'\nimport useChainFilterOption from '../../state/chainFilterOption/useChainFilterOption'\nimport YourBondsMenu from './components/YourBondsMenu/YourBondsMenu'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport useUserBondsPreTGE from '../../state/bonds/useUserBondsPreTGE'\nimport useChainAccount from '../../state/chainAccount/useChainAccount'\nimport { getAdapterForChain, getRegisteredAdapters } from '../../adapters/registry'\nimport type { ChainAdapter } from '../../adapters/types'\nimport useBondsData from '../../state/bonds/useBondsData'\n\ntype SortDirection = 'asc' | 'desc'\n\n/** The adapter's \"connect your wallet\" banner, while its family is configured but not connected. */\nconst AdapterConnectBanner = ({ adapter, chains }: { adapter: ChainAdapter; chains: number[] }) => {\n const { address } = useChainAccount(adapter.ecosystem)\n if (address || !chains.some((chainId) => adapter.supportsChain(chainId))) return null\n return (\n <Flex className=\"ape:w-full ape:mt-[5px]\">\n <adapter.ConnectBanner />\n </Flex>\n )\n}\nexport type SortableKeys = 'claimable' | 'pending' | 'terms'\n\nconst YourBonds = ({ showOnly }: { showOnly?: string }) => {\n useTokenPrices()\n useBondsData()\n // Hooks\n const SDKConfig = useSDKConfig()\n const { address: account } = useChainAccount('evm')\n const { address: solanaAccount } = useChainAccount('sol')\n const { address: aptosAccount } = useChainAccount('aptos')\n const { address: suiAccount } = useChainAccount('sui')\n const { data: userBonds, isFetched: userBondsFetched } = useUserBonds()\n const { data: chainFilterOption, setChainFilterOption } = useChainFilterOption()\n const { data: preTGEUserBonds, isFetched: preTGEFetched } = useUserBondsPreTGE()\n const hasFetched = userBondsFetched && (preTGEFetched || !account)\n\n // State\n const [sortConfig, setSortConfig] = useState<{ key: SortableKeys; direction: SortDirection } | null>({\n key: 'claimable',\n direction: 'desc',\n })\n\n const [inputValue, setInputValue] = useState('')\n const filterOptions = ['CLAIMABLE', 'ALL']\n const [filterOption, setFilterOption] = useState(filterOptions[0])\n\n const preTGEBondsToRender = preTGEUserBonds\n ?.filter((userBond) => {\n if (!userBond?.accountInfo?.hasRedeemed) {\n return parseFloat(userBond?.accountInfo?.depositAmount ?? '0') > 0\n } else if (userBond.yieldBond && parseFloat(userBond?.accountInfo?.depositAmount ?? '0') > 0) {\n return (userBond?.yieldData?.depositedAssets ?? 0) > 0\n } else {\n return userBond?.userOwnedBillsData?.payout !== '0'\n }\n })\n .filter(\n (userBond) =>\n chainFilterOption.includes(userBond.chainId?.toString() ?? '') || chainFilterOption.includes('All Chains'),\n )\n .filter((userBond) => userBond.earnToken.symbol?.toLowerCase().includes(inputValue.toLowerCase()))\n\n const handleSort = (key: SortableKeys) => {\n let direction: SortDirection = 'desc'\n if (sortConfig?.key === key && sortConfig?.direction === 'desc') {\n direction = 'asc'\n }\n setSortConfig({ key, direction })\n }\n\n const bondsToRender = useMemo((): UserBill[] => {\n if (!userBonds) return []\n let bondsToReturn = userBonds\n\n // Handle Filtering //\n\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return bond.bond?.onlyPartner ? bond.bond.bondPartner === SDKConfig.bondPartner : true\n })\n\n if (SDKConfig.bondPartner) {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return bond.bond?.bondPartner === SDKConfig.bondPartner\n })\n }\n\n // Filter Single Token View\n if (showOnly) {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return bond?.bond?.earnToken?.symbol?.toLowerCase() === showOnly.toLowerCase()\n })\n }\n\n // Filter by search query\n if (inputValue !== '') {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return [\n bond?.bond?.showcaseTokenName?.toLowerCase(),\n bond?.bond?.earnToken?.symbol?.toLowerCase(),\n bond?.bond?.lpToken?.symbol?.toLowerCase(),\n ].some((property) => property?.includes(inputValue.toLowerCase()))\n })\n }\n\n // Filter by chain selector\n if (!chainFilterOption.includes('All Chains')) {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n return chainFilterOption.includes(bond?.bond?.chainId?.toString() ?? '')\n })\n }\n\n // Filter by filter option (claimable or all buttons)\n if (filterOption === 'CLAIMABLE') {\n bondsToReturn = bondsToReturn?.filter((bond) => {\n if (bond?.bond?.vestingCliff) {\n return bond.payout !== '0'\n }\n return bond.pendingRewards !== '0'\n })\n }\n\n // Handle sorting //\n if (sortConfig !== null) {\n bondsToReturn = bondsToReturn?.sort((a, b) => {\n let aValue: number, bValue: number\n\n if (sortConfig.key === 'claimable') {\n aValue = claimableUSD(a)\n bValue = claimableUSD(b)\n } else if (sortConfig.key === 'pending') {\n aValue = pendingUSD(a)\n bValue = pendingUSD(b)\n } else if (sortConfig.key === 'terms') {\n // little nasty trick to have the lowest time (closest to being fully vested) show up first when sorting ascending\n const aRemainingTime = getTimeLeftForFullyVested(b)\n const bRemainingTime = getTimeLeftForFullyVested(a)\n\n aValue = aRemainingTime\n bValue = bRemainingTime\n } else {\n aValue = a[sortConfig.key]\n bValue = b[sortConfig.key]\n }\n\n if (aValue < bValue) {\n return sortConfig.direction === 'asc' ? -1 : 1\n }\n if (aValue > bValue) {\n return sortConfig.direction === 'asc' ? 1 : -1\n }\n return 0\n })\n }\n return bondsToReturn\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [userBonds, sortConfig, inputValue, chainFilterOption, filterOption, userBondsFetched])\n\n const handleFilterOption = useCallback((newOption: string) => {\n setFilterOption(newOption)\n }, [])\n\n const hasBonds = useMemo(() => {\n return (bondsToRender && bondsToRender.length > 0) || !!preTGEBondsToRender?.length\n }, [bondsToRender, preTGEBondsToRender])\n\n return (\n <Flex className=\"yourbonds table-container ape:w-full ape:flex ape:flex-col ape:px-[10px]\">\n {!showOnly && (\n <YourBondsMenu\n chainFilterOption={chainFilterOption}\n setChainFilterOption={setChainFilterOption}\n filterOptions={filterOptions}\n filterOption={filterOption}\n setFilterOption={handleFilterOption}\n setInputValue={setInputValue}\n inputValue={inputValue}\n handleSort={handleSort}\n />\n )}\n {!account && !solanaAccount && !aptosAccount && !suiAccount ? (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <PlaceholderMonkey text={'You are not connected.'} />\n </Flex>\n ) : hasBonds && hasFetched ? (\n <>\n {preTGEBondsToRender?.map((userBond, index) => {\n // PreTGE / launch / Yield bonds come from the chain's adapter (EVM only today)\n const preTGE = getAdapterForChain(userBond.chainId)?.preTGE\n if (!preTGE) return null\n return userBond.yieldBond ? (\n <preTGE.YieldRow userBond={userBond} key={index} />\n ) : (\n <preTGE.UserBondRow userBond={userBond} key={index} />\n )\n })}\n {bondsToRender.map((bond) => {\n const chainId = bond.bond?.chainId as ChainId\n // Chains without a registered adapter are unsupported\n const adapter = getAdapterForChain(chainId)\n if (!adapter) return null\n return <adapter.UserBondRow bill={bond} key={`${adapter.ecosystem}-${bond?.id}-${bond?.billNftAddress}`} />\n })}\n </>\n ) : inputValue !== '' || !chainFilterOption.includes('All Chains') ? (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <PlaceholderMonkey text={'No results, change filters.'} />\n </Flex>\n ) : hasFetched && !hasBonds ? (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <PlaceholderMonkey\n text={`You do not own any ${[account && 'EVM', solanaAccount && 'SOL', aptosAccount && 'Aptos', suiAccount && 'Sui'].filter(Boolean).join(' nor ') || 'EVM'} Bonds.`}\n />\n </Flex>\n ) : (\n <Flex className=\"placeholder-monkey-wrapper ape:w-full ape:flex-col ape:pt-[100px] ape:pb-[100px] ape:bg-white2 ape:items-center ape:rounded-[10px] ape:mt-[15px] ape:justify-center ape:h-[400px]\">\n <Spinner size={100} />\n </Flex>\n )}\n <Flex className=\"ape:w-full ape:flex-col ape:xl:flex-row ape:gap-[10px] ape:my-[10px]\">\n {getRegisteredAdapters().map((adapter) => (\n <AdapterConnectBanner key={adapter.ecosystem} adapter={adapter} chains={SDKConfig.chains ?? []} />\n ))}\n </Flex>\n </Flex>\n )\n}\n\nexport default YourBonds\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -1,36 +1,22 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
|
-
import { useSwitchChain, useWriteContract } from 'wagmi';
|
|
4
3
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
5
4
|
import useUserBonds from '../../../../state/bonds/useUserBonds.js';
|
|
6
|
-
import Button from '../../../../components/uikit-sdk/Button/Button.js';
|
|
7
5
|
import Flex from '../../../../components/uikit-sdk/Flex/index.js';
|
|
8
6
|
import Modal from '../../../../components/uikit-sdk/Modal/index.js';
|
|
9
7
|
import Text from '../../../../components/uikit-sdk/Text/index.js';
|
|
10
8
|
import TokenImage from '../../../../components/uikit-sdk/TokenImage/index.js';
|
|
11
|
-
import { NETWORK_LABEL } from '../../../../config/constants/chains.js';
|
|
12
9
|
import ChainOptionsList from '../../../../components/ChainOptionList/ChainOptionsList.js';
|
|
13
10
|
import { useSDKConfig } from '../../../../state/useSDKConfig.js';
|
|
14
11
|
import ChainOptionsButtons from '../../../../components/ChainOptionList/ChainOptionsButtons.js';
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import { usePopups } from '../../../../state/popups/usePopups.js';
|
|
18
|
-
import { reportError } from '../../../../utils/reportError.js';
|
|
19
|
-
import useEVMAccount from '../../../../hooks/accounts/useEVMAccount.js';
|
|
20
|
-
import useAPTAccount from '../../../../hooks/accounts/useAPTAccount.js';
|
|
21
|
-
import useSUIAccount from '../../../../hooks/accounts/useSUIAccount.js';
|
|
22
|
-
import { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants.js';
|
|
23
|
-
import { SUI_CLAIM_FUNCTION } from '../../../../constants/suiConstants.js';
|
|
24
|
-
import { getAptosClient } from '../../../../utils/aptosHelpers.js';
|
|
25
|
-
import { Transaction } from '@mysten/sui/transactions';
|
|
26
|
-
import { verifySuiTxSuccess } from '../../../../utils/suiHelpers.js';
|
|
12
|
+
import useChainAccount from '../../../../state/chainAccount/useChainAccount.js';
|
|
13
|
+
import { getAdapterForChain } from '../../../../adapters/registry.js';
|
|
27
14
|
import Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow.js';
|
|
28
15
|
|
|
29
16
|
const ClaimAllModal = () => {
|
|
30
|
-
const { chainId
|
|
31
|
-
const { address: aptosAccount
|
|
32
|
-
const { address: suiAccount
|
|
33
|
-
const { switchChain } = useSwitchChain();
|
|
17
|
+
const { chainId } = useChainAccount('evm');
|
|
18
|
+
const { address: aptosAccount } = useChainAccount('aptos');
|
|
19
|
+
const { address: suiAccount } = useChainAccount('sui');
|
|
34
20
|
const SDKConfig = useSDKConfig();
|
|
35
21
|
const chains = SDKConfig?.chains;
|
|
36
22
|
const [selectedChain, setSelectedChain] = useState(chainId ?? (aptosAccount ? ChainId.APTOS : suiAccount ? ChainId.SUI : 56));
|
|
@@ -55,159 +41,8 @@ const ClaimAllModal = () => {
|
|
|
55
41
|
return acc;
|
|
56
42
|
}, []);
|
|
57
43
|
const bondsOfSelectedChain = groupedBills?.filter((group) => group.bond.chainId === selectedChain);
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
const { writeContractAsync } = useWriteContract();
|
|
61
|
-
const { refetch } = useUserBonds();
|
|
62
|
-
const [loadingTx, setLoadingTx] = useState(false);
|
|
63
|
-
const isAptosChain = selectedChain === ChainId.APTOS;
|
|
64
|
-
const isSuiChain = selectedChain === ChainId.SUI;
|
|
65
|
-
const handleClaimEVM = async () => {
|
|
66
|
-
try {
|
|
67
|
-
bondsOfSelectedChain?.map(async (purchasedBond) => {
|
|
68
|
-
const address = purchasedBond.bond.contractAddress[purchasedBond.bond.chainId];
|
|
69
|
-
track({
|
|
70
|
-
event: 'bond',
|
|
71
|
-
chain: purchasedBond.bond.chainId,
|
|
72
|
-
data: {
|
|
73
|
-
cat: 'claimAll',
|
|
74
|
-
address,
|
|
75
|
-
earnToken: purchasedBond?.bond.earnToken.symbol,
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
return writeContractAsync({
|
|
79
|
-
address,
|
|
80
|
-
abi: BOND_ABI,
|
|
81
|
-
functionName: 'batchRedeem',
|
|
82
|
-
args: [purchasedBond.userOwnedBills.map((b) => b.id)],
|
|
83
|
-
chain: chainId,
|
|
84
|
-
account,
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
console.error('Claim All failed:', error);
|
|
90
|
-
addToastError(error.message);
|
|
91
|
-
reportError({
|
|
92
|
-
apiUrl: SDKConfig?.urls?.apiV2,
|
|
93
|
-
error,
|
|
94
|
-
extraInfo: { type: 'claimAll', bondsOfSelectedChain, error },
|
|
95
|
-
chainId,
|
|
96
|
-
account,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
const handleClaimAptos = async () => {
|
|
101
|
-
if (!aptosAccount || !bondsOfSelectedChain?.length)
|
|
102
|
-
return;
|
|
103
|
-
setLoadingTx(true);
|
|
104
|
-
try {
|
|
105
|
-
// Aptos has no batchRedeem — claim each bill individually
|
|
106
|
-
const allBills = bondsOfSelectedChain.flatMap((group) => group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })));
|
|
107
|
-
let lastTxHash = '';
|
|
108
|
-
for (const { bill, market } of allBills) {
|
|
109
|
-
if (!market || !bill.id)
|
|
110
|
-
continue;
|
|
111
|
-
track({
|
|
112
|
-
event: 'bond',
|
|
113
|
-
chain: ChainId.APTOS,
|
|
114
|
-
data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },
|
|
115
|
-
});
|
|
116
|
-
const response = await signAndSubmitTransaction?.({
|
|
117
|
-
data: {
|
|
118
|
-
function: APTOS_CLAIM_FUNCTION,
|
|
119
|
-
typeArguments: [],
|
|
120
|
-
functionArguments: [market, bill.id],
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
if (!response?.hash)
|
|
124
|
-
throw new Error('No tx hash returned by wallet');
|
|
125
|
-
lastTxHash = response.hash;
|
|
126
|
-
const aptos = getAptosClient();
|
|
127
|
-
await aptos.waitForTransaction({ transactionHash: response.hash });
|
|
128
|
-
}
|
|
129
|
-
refetch();
|
|
130
|
-
addToastSuccess(lastTxHash, ChainId.APTOS);
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
console.error('Aptos Claim All failed:', error);
|
|
134
|
-
addToastError(error?.message ?? 'Unknown error');
|
|
135
|
-
reportError({
|
|
136
|
-
apiUrl: SDKConfig?.urls?.apiV2,
|
|
137
|
-
error,
|
|
138
|
-
extraInfo: { type: 'aptosClaimAll', bondsOfSelectedChain, error },
|
|
139
|
-
chainId: ChainId.APTOS,
|
|
140
|
-
account: aptosAccount ?? '',
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
finally {
|
|
144
|
-
setLoadingTx(false);
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
const handleClaimSui = async () => {
|
|
148
|
-
if (!suiAccount || !bondsOfSelectedChain?.length || !signAndExecuteTransaction)
|
|
149
|
-
return;
|
|
150
|
-
setLoadingTx(true);
|
|
151
|
-
try {
|
|
152
|
-
const allBills = bondsOfSelectedChain
|
|
153
|
-
.flatMap((group) => group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })))
|
|
154
|
-
.filter(({ bill }) => bill.pendingRewards !== '0');
|
|
155
|
-
// Build a single PTB that claims all bills in one transaction
|
|
156
|
-
const tx = new Transaction();
|
|
157
|
-
for (const { bill, market } of allBills) {
|
|
158
|
-
if (!market || !bill.address)
|
|
159
|
-
continue;
|
|
160
|
-
const payoutCoinType = bill.bond?.earnToken?.address?.[bill.bond?.chainId ?? 0];
|
|
161
|
-
const principalCoinType = bill.bond?.lpToken?.address?.[bill.bond?.chainId ?? 0];
|
|
162
|
-
if (!payoutCoinType || !principalCoinType)
|
|
163
|
-
continue;
|
|
164
|
-
track({
|
|
165
|
-
event: 'bond',
|
|
166
|
-
chain: ChainId.SUI,
|
|
167
|
-
data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },
|
|
168
|
-
});
|
|
169
|
-
const [claimedCoin] = tx.moveCall({
|
|
170
|
-
target: SUI_CLAIM_FUNCTION,
|
|
171
|
-
typeArguments: [payoutCoinType, principalCoinType],
|
|
172
|
-
arguments: [
|
|
173
|
-
tx.object(market),
|
|
174
|
-
tx.object(bill.address), // BondNFT object ID
|
|
175
|
-
tx.object('0x6'), // clock
|
|
176
|
-
],
|
|
177
|
-
});
|
|
178
|
-
tx.transferObjects([claimedCoin], tx.pure.address(suiAccount));
|
|
179
|
-
}
|
|
180
|
-
// Pre-build so the wallet receives fully-resolved bytes
|
|
181
|
-
tx.setSender(suiAccount);
|
|
182
|
-
tx.setGasBudget(50000000);
|
|
183
|
-
const { getSuiClient } = await import('../../../../utils/suiHelpers.js');
|
|
184
|
-
const suiClient = getSuiClient();
|
|
185
|
-
const builtBytes = await tx.build({ client: suiClient });
|
|
186
|
-
const prebuiltTx = Transaction.from(builtBytes);
|
|
187
|
-
const claimResponse = await signAndExecuteTransaction({ transaction: prebuiltTx });
|
|
188
|
-
const claimDigest = claimResponse?.digest;
|
|
189
|
-
if (claimDigest) {
|
|
190
|
-
await verifySuiTxSuccess(claimDigest);
|
|
191
|
-
}
|
|
192
|
-
refetch();
|
|
193
|
-
addToastSuccess(claimDigest, ChainId.SUI);
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
console.error('Sui Claim All failed:', error);
|
|
197
|
-
addToastError(error?.message ?? 'Unknown error');
|
|
198
|
-
reportError({
|
|
199
|
-
apiUrl: SDKConfig?.urls?.apiV2,
|
|
200
|
-
error,
|
|
201
|
-
extraInfo: { type: 'suiClaimAll', bondsOfSelectedChain, error },
|
|
202
|
-
chainId: ChainId.SUI,
|
|
203
|
-
account: suiAccount ?? '',
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
finally {
|
|
207
|
-
setLoadingTx(false);
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
const handleClaim = isSuiChain ? handleClaimSui : isAptosChain ? handleClaimAptos : handleClaimEVM;
|
|
44
|
+
// Each family's adapter renders its own claim action (summary + button) for the selected chain
|
|
45
|
+
const claimAllAdapter = getAdapterForChain(selectedChain);
|
|
211
46
|
const purchasedBillsChains = groupedBills
|
|
212
47
|
?.reduce((acc, bill) => {
|
|
213
48
|
if (acc.includes(bill.bond.chainId)) {
|
|
@@ -228,9 +63,7 @@ const ClaimAllModal = () => {
|
|
|
228
63
|
?.filter((userBill) => userBill.bond.chainId === selectedChain)
|
|
229
64
|
.map((ownedBill, index) => {
|
|
230
65
|
return (jsxs(Flex, { className: "ape:w-full ape:items-center ape:p-[5px]", children: [jsx(TokenImage, { symbol: ownedBill.bond.earnToken.symbol, size: 30 }), jsxs(Text, { className: "ape:ml-[10px]", children: [ownedBill.bond.earnToken.symbol, jsxs(Text, { as: "span", size: "14px", weight: 400, className: "ape:ml-[10px]", style: { color: 'var(--ape-color-text-disabled-button)' }, children: ["(", ownedBill?.userOwnedBills?.length, " Bond", ownedBill?.userOwnedBills && ownedBill?.userOwnedBills?.length > 1 ? 's' : '', ")"] })] })] }, `${ownedBill.bond.earnToken.symbol}-${index}`));
|
|
231
|
-
})) : (jsx(Flex, { className: "ape:text-[14px] ape:font-normal ape:justify-center ape:mt-[10px]", style: { color: 'var(--ape-color-text-disabled-button)' }, children: "No bonds to claim for this chain" })) }),
|
|
232
|
-
? 's'
|
|
233
|
-
: '', "."] }), isSuiChain ? (jsx(Button, { className: "ape:mt-[15px] ape:w-full", onClick: handleClaim, disabled: !suiAccount || loadingTx || !ownedBillsAmount, load: loadingTx, children: !suiAccount ? 'Connect Sui Wallet' : 'Claim' })) : isAptosChain ? (jsx(Button, { className: "ape:mt-[15px] ape:w-full", onClick: handleClaim, disabled: !aptosAccount || loadingTx || !ownedBillsAmount, load: loadingTx, children: !aptosAccount ? 'Connect Aptos Wallet' : 'Claim' })) : chainId === selectedChain ? (jsx(Button, { className: "ape:mt-[15px] ape:w-full", onClick: handleClaim, children: "Claim" })) : (jsxs(Button, { className: "ape:mt-[15px] ape:w-full", onClick: () => switchChain({ chainId: selectedChain }), children: ["Switch to ", NETWORK_LABEL[selectedChain ?? 0]] }))] })) }));
|
|
66
|
+
})) : (jsx(Flex, { className: "ape:text-[14px] ape:font-normal ape:justify-center ape:mt-[10px]", style: { color: 'var(--ape-color-text-disabled-button)' }, children: "No bonds to claim for this chain" })) }), claimAllAdapter?.ClaimAllAction ? (jsx(claimAllAdapter.ClaimAllAction, { chainId: selectedChain, bondsToClaim: bondsOfSelectedChain ?? [] })) : (jsx(Text, { size: "14px", weight: 400, className: "ape:mt-[15px]", children: `Claim All isn't available for this chain; claim these bonds one by one from Your Bonds.` }))] })) }));
|
|
234
67
|
};
|
|
235
68
|
|
|
236
69
|
export { ClaimAllModal as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaimAllModal.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/ClaimAllModal.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { useSwitchChain, useWriteContract } from 'wagmi'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport { NETWORK_LABEL } from '../../../../config/constants/chains'\nimport ChainOptionsList from '../../../../components/ChainOptionList/ChainOptionsList'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport ChainOptionsButtons from '../../../../components/ChainOptionList/ChainOptionsButtons'\nimport { UserBill } from '../../../../types/yourbonds'\nimport BOND_ABI from '../../../../config/abi/BOND_2_4_0.json'\nimport track from '../../../../utils/track'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { BillsConfig } from '@ape.swap/apeswap-lists'\nimport { reportError } from '../../../../utils/reportError'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\nimport useAPTAccount from '../../../../hooks/accounts/useAPTAccount'\nimport useSUIAccount from '../../../../hooks/accounts/useSUIAccount'\nimport { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants'\nimport { SUI_CLAIM_FUNCTION } from '../../../../constants/suiConstants'\nimport { getAptosClient } from '../../../../utils/aptosHelpers'\nimport { Transaction } from '@mysten/sui/transactions'\nimport { verifySuiTxSuccess } from '../../../../utils/suiHelpers'\nimport Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow'\n\nconst ClaimAllModal = () => {\n const { chainId, address: account } = useEVMAccount()\n const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount()\n const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount()\n const { switchChain } = useSwitchChain()\n const SDKConfig = useSDKConfig()\n const chains = SDKConfig?.chains as number[]\n\n const [selectedChain, setSelectedChain] = useState(\n chainId ?? (aptosAccount ? ChainId.APTOS : suiAccount ? ChainId.SUI : 56),\n )\n const [viewAllChains, setViewAllChains] = useState<boolean>(false)\n const { data: userOwnedBills } = useUserBonds()\n const ownedBills = userOwnedBills?.filter((bill) => parseFloat(bill?.payout) > 0)\n\n const groupedBills = ownedBills?.reduce((acc: { bond: BillsConfig; userOwnedBills: UserBill[] }[], bill) => {\n const bondIndex = bill?.bond?.index\n\n // Check if this bond index already exists in the accumulator\n const existingGroup = acc.find((group) => group.bond.index === bondIndex)\n\n if (existingGroup) {\n // If the group already exists, add this bill to the userOwnedBills array\n existingGroup.userOwnedBills.push(bill)\n } else {\n // If it doesn't exist, create a new group\n acc.push({\n bond: bill.bond as any,\n userOwnedBills: [bill],\n })\n }\n\n return acc\n }, [])\n\n const bondsOfSelectedChain = groupedBills?.filter((group) => group.bond.chainId === selectedChain)\n const ownedBillsAmount = bondsOfSelectedChain?.reduce(\n (total, ownerBills) => total + (ownerBills.userOwnedBills?.length || 0),\n 0,\n )\n const { addToastError, addToastSuccess } = usePopups()\n\n const { writeContractAsync } = useWriteContract()\n const { refetch } = useUserBonds()\n const [loadingTx, setLoadingTx] = useState(false)\n\n const isAptosChain = selectedChain === ChainId.APTOS\n const isSuiChain = selectedChain === ChainId.SUI\n\n const handleClaimEVM = async () => {\n try {\n bondsOfSelectedChain?.map(async (purchasedBond) => {\n const address: `0x${string}` = purchasedBond.bond.contractAddress[purchasedBond.bond.chainId] as `0x${string}`\n track({\n event: 'bond',\n chain: purchasedBond.bond.chainId,\n data: {\n cat: 'claimAll',\n address,\n earnToken: purchasedBond?.bond.earnToken.symbol,\n },\n })\n return writeContractAsync({\n address,\n abi: BOND_ABI,\n functionName: 'batchRedeem',\n args: [purchasedBond.userOwnedBills.map((b) => b.id)],\n chain: chainId as any,\n account,\n })\n })\n } catch (error: any) {\n console.error('Claim All failed:', error)\n addToastError(error.message)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'claimAll', bondsOfSelectedChain, error },\n chainId,\n account,\n })\n }\n }\n\n const handleClaimAptos = async () => {\n if (!aptosAccount || !bondsOfSelectedChain?.length) return\n\n setLoadingTx(true)\n try {\n // Aptos has no batchRedeem — claim each bill individually\n const allBills = bondsOfSelectedChain.flatMap((group) =>\n group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })),\n )\n\n let lastTxHash = ''\n for (const { bill, market } of allBills) {\n if (!market || !bill.id) continue\n\n track({\n event: 'bond',\n chain: ChainId.APTOS,\n data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },\n })\n\n const response = await signAndSubmitTransaction?.({\n data: {\n function: APTOS_CLAIM_FUNCTION,\n typeArguments: [],\n functionArguments: [market, bill.id],\n },\n })\n if (!response?.hash) throw new Error('No tx hash returned by wallet')\n lastTxHash = response.hash\n\n const aptos = getAptosClient()\n await aptos.waitForTransaction({ transactionHash: response.hash })\n }\n\n refetch()\n addToastSuccess(lastTxHash, ChainId.APTOS)\n } catch (error: any) {\n console.error('Aptos Claim All failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'aptosClaimAll', bondsOfSelectedChain, error },\n chainId: ChainId.APTOS,\n account: aptosAccount ?? '',\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleClaimSui = async () => {\n if (!suiAccount || !bondsOfSelectedChain?.length || !signAndExecuteTransaction) return\n\n setLoadingTx(true)\n try {\n const allBills = bondsOfSelectedChain\n .flatMap((group) =>\n group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })),\n )\n .filter(({ bill }) => bill.pendingRewards !== '0')\n\n // Build a single PTB that claims all bills in one transaction\n const tx = new Transaction()\n for (const { bill, market } of allBills) {\n if (!market || !bill.address) continue\n\n const payoutCoinType = bill.bond?.earnToken?.address?.[bill.bond?.chainId ?? 0]\n const principalCoinType = bill.bond?.lpToken?.address?.[bill.bond?.chainId ?? 0]\n if (!payoutCoinType || !principalCoinType) continue\n\n track({\n event: 'bond',\n chain: ChainId.SUI,\n data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },\n })\n\n const [claimedCoin] = tx.moveCall({\n target: SUI_CLAIM_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(bill.address), // BondNFT object ID\n tx.object('0x6'), // clock\n ],\n })\n tx.transferObjects([claimedCoin], tx.pure.address(suiAccount!))\n }\n\n // Pre-build so the wallet receives fully-resolved bytes\n tx.setSender(suiAccount!)\n tx.setGasBudget(50_000_000)\n const { getSuiClient } = await import('../../../../utils/suiHelpers')\n const suiClient = getSuiClient()\n const builtBytes = await tx.build({ client: suiClient })\n const prebuiltTx = Transaction.from(builtBytes)\n\n const claimResponse = await signAndExecuteTransaction({ transaction: prebuiltTx })\n const claimDigest = claimResponse?.digest\n if (claimDigest) {\n await verifySuiTxSuccess(claimDigest)\n }\n\n refetch()\n addToastSuccess(claimDigest, ChainId.SUI)\n } catch (error: any) {\n console.error('Sui Claim All failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'suiClaimAll', bondsOfSelectedChain, error },\n chainId: ChainId.SUI,\n account: suiAccount ?? '',\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleClaim = isSuiChain ? handleClaimSui : isAptosChain ? handleClaimAptos : handleClaimEVM\n\n const purchasedBillsChains = groupedBills\n ?.reduce((acc: number[], bill) => {\n if (acc.includes(bill.bond.chainId)) {\n return acc\n } else return [...acc, bill.bond.chainId]\n }, [])\n ?.sort((a, b) => a - b)\n\n // Auto-select the first chain that has bonds when the current selection has none\n useEffect(() => {\n if (purchasedBillsChains?.length && !purchasedBillsChains.includes(selectedChain)) {\n setSelectedChain(purchasedBillsChains[0])\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [purchasedBillsChains?.length])\n\n return (\n <Modal title=\"Claim All\" className=\"ape:w-[420px]\">\n {viewAllChains ? (\n <>\n <Flex className=\"ape:justify-between ape:mb-[20px]\">\n <Flex onClick={() => setViewAllChains(false)} className=\"ape:hover:cursor-pointer\">\n <Arrow width=\"10px\" direction=\"left\" />\n </Flex>\n <Text size=\"16px\" weight={300}>All Chain Options</Text>\n </Flex>\n <ChainOptionsList\n setSelectedChain={setSelectedChain}\n setViewAllChains={setViewAllChains}\n chainList={chains}\n />\n </>\n ) : (\n <Flex className=\"ape:flex-col ape:w-full\">\n <Text size=\"14px\" weight={400} className=\"ape:my-[10px]\">\n Select the chain from which you want to claim your Bonds.\n </Text>\n <ChainOptionsButtons\n setSelectedChain={setSelectedChain}\n selectedChain={selectedChain}\n setViewAllChains={setViewAllChains}\n chainList={purchasedBillsChains ?? []}\n />\n <Flex className=\"ape:w-full ape:mt-[10px] ape:bg-white3 ape:rounded-normal ape:p-[10px] ape:flex-col ape:h-[30vh] ape:overflow-y-auto\">\n {bondsOfSelectedChain && bondsOfSelectedChain?.length > 0 ? (\n bondsOfSelectedChain\n ?.filter((userBill) => userBill.bond.chainId === selectedChain)\n .map((ownedBill, index) => {\n return (\n <Flex\n key={`${ownedBill.bond.earnToken.symbol}-${index}`}\n className=\"ape:w-full ape:items-center ape:p-[5px]\"\n >\n <TokenImage symbol={ownedBill.bond.earnToken.symbol} size={30} />\n <Text className=\"ape:ml-[10px]\">\n {ownedBill.bond.earnToken.symbol}\n <Text\n as=\"span\"\n size=\"14px\"\n weight={400}\n className=\"ape:ml-[10px]\"\n style={{ color: 'var(--ape-color-text-disabled-button)' }}\n >\n ({ownedBill?.userOwnedBills?.length} Bond\n {ownedBill?.userOwnedBills && ownedBill?.userOwnedBills?.length > 1 ? 's' : ''})\n </Text>\n </Text>\n </Flex>\n )\n })\n ) : (\n <Flex\n className=\"ape:text-[14px] ape:font-normal ape:justify-center ape:mt-[10px]\"\n style={{ color: 'var(--ape-color-text-disabled-button)' }}\n >\n No bonds to claim for this chain\n </Flex>\n )}\n </Flex>\n <Text size=\"14px\" weight={400} className=\"ape:mt-[15px]\">\n {`You'll claim`} {ownedBillsAmount} Bonds in{' '}\n {isAptosChain ? ownedBillsAmount : isSuiChain ? 1 : bondsOfSelectedChain?.length} transaction\n {(isAptosChain ? (ownedBillsAmount ?? 0) : isSuiChain ? 0 : (bondsOfSelectedChain?.length ?? 0)) > 1\n ? 's'\n : ''}\n .\n </Text>\n {isSuiChain ? (\n <Button\n className=\"ape:mt-[15px] ape:w-full\"\n onClick={handleClaim}\n disabled={!suiAccount || loadingTx || !ownedBillsAmount}\n load={loadingTx}\n >\n {!suiAccount ? 'Connect Sui Wallet' : 'Claim'}\n </Button>\n ) : isAptosChain ? (\n <Button\n className=\"ape:mt-[15px] ape:w-full\"\n onClick={handleClaim}\n disabled={!aptosAccount || loadingTx || !ownedBillsAmount}\n load={loadingTx}\n >\n {!aptosAccount ? 'Connect Aptos Wallet' : 'Claim'}\n </Button>\n ) : chainId === selectedChain ? (\n <Button className=\"ape:mt-[15px] ape:w-full\" onClick={handleClaim}>\n Claim\n </Button>\n ) : (\n <Button className=\"ape:mt-[15px] ape:w-full\" onClick={() => switchChain({ chainId: selectedChain })}>\n Switch to {NETWORK_LABEL[selectedChain ?? 0]}\n </Button>\n )}\n </Flex>\n )}\n </Modal>\n )\n}\n\nexport default ClaimAllModal\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ClaimAllModal.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/ClaimAllModal.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport ChainOptionsList from '../../../../components/ChainOptionList/ChainOptionsList'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport ChainOptionsButtons from '../../../../components/ChainOptionList/ChainOptionsButtons'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { BillsConfig } from '@ape.swap/apeswap-lists'\nimport useChainAccount from '../../../../state/chainAccount/useChainAccount'\nimport { getAdapterForChain } from '../../../../adapters/registry'\nimport Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow'\n\nconst ClaimAllModal = () => {\n const { chainId } = useChainAccount('evm')\n const { address: aptosAccount } = useChainAccount('aptos')\n const { address: suiAccount } = useChainAccount('sui')\n const SDKConfig = useSDKConfig()\n const chains = SDKConfig?.chains as number[]\n\n const [selectedChain, setSelectedChain] = useState(\n chainId ?? (aptosAccount ? ChainId.APTOS : suiAccount ? ChainId.SUI : 56),\n )\n const [viewAllChains, setViewAllChains] = useState<boolean>(false)\n const { data: userOwnedBills } = useUserBonds()\n const ownedBills = userOwnedBills?.filter((bill) => parseFloat(bill?.payout) > 0)\n\n const groupedBills = ownedBills?.reduce((acc: { bond: BillsConfig; userOwnedBills: UserBill[] }[], bill) => {\n const bondIndex = bill?.bond?.index\n\n // Check if this bond index already exists in the accumulator\n const existingGroup = acc.find((group) => group.bond.index === bondIndex)\n\n if (existingGroup) {\n // If the group already exists, add this bill to the userOwnedBills array\n existingGroup.userOwnedBills.push(bill)\n } else {\n // If it doesn't exist, create a new group\n acc.push({\n bond: bill.bond as any,\n userOwnedBills: [bill],\n })\n }\n\n return acc\n }, [])\n\n const bondsOfSelectedChain = groupedBills?.filter((group) => group.bond.chainId === selectedChain)\n // Each family's adapter renders its own claim action (summary + button) for the selected chain\n const claimAllAdapter = getAdapterForChain(selectedChain)\n\n const purchasedBillsChains = groupedBills\n ?.reduce((acc: number[], bill) => {\n if (acc.includes(bill.bond.chainId)) {\n return acc\n } else return [...acc, bill.bond.chainId]\n }, [])\n ?.sort((a, b) => a - b)\n\n // Auto-select the first chain that has bonds when the current selection has none\n useEffect(() => {\n if (purchasedBillsChains?.length && !purchasedBillsChains.includes(selectedChain)) {\n setSelectedChain(purchasedBillsChains[0])\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [purchasedBillsChains?.length])\n\n return (\n <Modal title=\"Claim All\" className=\"ape:w-[420px]\">\n {viewAllChains ? (\n <>\n <Flex className=\"ape:justify-between ape:mb-[20px]\">\n <Flex onClick={() => setViewAllChains(false)} className=\"ape:hover:cursor-pointer\">\n <Arrow width=\"10px\" direction=\"left\" />\n </Flex>\n <Text size=\"16px\" weight={300}>\n All Chain Options\n </Text>\n </Flex>\n <ChainOptionsList\n setSelectedChain={setSelectedChain}\n setViewAllChains={setViewAllChains}\n chainList={chains}\n />\n </>\n ) : (\n <Flex className=\"ape:flex-col ape:w-full\">\n <Text size=\"14px\" weight={400} className=\"ape:my-[10px]\">\n Select the chain from which you want to claim your Bonds.\n </Text>\n <ChainOptionsButtons\n setSelectedChain={setSelectedChain}\n selectedChain={selectedChain}\n setViewAllChains={setViewAllChains}\n chainList={purchasedBillsChains ?? []}\n />\n <Flex className=\"ape:w-full ape:mt-[10px] ape:bg-white3 ape:rounded-normal ape:p-[10px] ape:flex-col ape:h-[30vh] ape:overflow-y-auto\">\n {bondsOfSelectedChain && bondsOfSelectedChain?.length > 0 ? (\n bondsOfSelectedChain\n ?.filter((userBill) => userBill.bond.chainId === selectedChain)\n .map((ownedBill, index) => {\n return (\n <Flex\n key={`${ownedBill.bond.earnToken.symbol}-${index}`}\n className=\"ape:w-full ape:items-center ape:p-[5px]\"\n >\n <TokenImage symbol={ownedBill.bond.earnToken.symbol} size={30} />\n <Text className=\"ape:ml-[10px]\">\n {ownedBill.bond.earnToken.symbol}\n <Text\n as=\"span\"\n size=\"14px\"\n weight={400}\n className=\"ape:ml-[10px]\"\n style={{ color: 'var(--ape-color-text-disabled-button)' }}\n >\n ({ownedBill?.userOwnedBills?.length} Bond\n {ownedBill?.userOwnedBills && ownedBill?.userOwnedBills?.length > 1 ? 's' : ''})\n </Text>\n </Text>\n </Flex>\n )\n })\n ) : (\n <Flex\n className=\"ape:text-[14px] ape:font-normal ape:justify-center ape:mt-[10px]\"\n style={{ color: 'var(--ape-color-text-disabled-button)' }}\n >\n No bonds to claim for this chain\n </Flex>\n )}\n </Flex>\n {claimAllAdapter?.ClaimAllAction ? (\n <claimAllAdapter.ClaimAllAction chainId={selectedChain} bondsToClaim={bondsOfSelectedChain ?? []} />\n ) : (\n <Text size=\"14px\" weight={400} className=\"ape:mt-[15px]\">\n {`Claim All isn't available for this chain; claim these bonds one by one from Your Bonds.`}\n </Text>\n )}\n </Flex>\n )}\n </Modal>\n )\n}\n\nexport default ClaimAllModal\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -2,14 +2,12 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import ClaimAllModal from './ClaimAllModal.js';
|
|
3
3
|
import Button from '../../../../components/uikit-sdk/Button/Button.js';
|
|
4
4
|
import useModal from '../../../../hooks/useModal.js';
|
|
5
|
-
import
|
|
6
|
-
import useAPTAccount from '../../../../hooks/accounts/useAPTAccount.js';
|
|
7
|
-
import useSUIAccount from '../../../../hooks/accounts/useSUIAccount.js';
|
|
5
|
+
import useChainAccount from '../../../../state/chainAccount/useChainAccount.js';
|
|
8
6
|
|
|
9
7
|
const ClaimAll = () => {
|
|
10
|
-
const { address: evmAccount } =
|
|
11
|
-
const { address: aptosAccount } =
|
|
12
|
-
const { address: suiAccount } =
|
|
8
|
+
const { address: evmAccount } = useChainAccount('evm');
|
|
9
|
+
const { address: aptosAccount } = useChainAccount('aptos');
|
|
10
|
+
const { address: suiAccount } = useChainAccount('sui');
|
|
13
11
|
const [onOpenModal] = useModal(jsx(ClaimAllModal, {}));
|
|
14
12
|
return (jsx(Button, { onClick: onOpenModal, disabled: !evmAccount && !aptosAccount && !suiAccount, className: "ape:w-full ape:h-[30px] ape:text-[14px]! ape:font-semibold ape:lg-ml-[10px] ape:lg:ml-0", children: "Claim All" }));
|
|
15
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/index.tsx"],"sourcesContent":["import React from 'react'\nimport ClaimAllModal from './ClaimAllModal'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport useModal from '../../../../hooks/useModal'\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/index.tsx"],"sourcesContent":["import React from 'react'\nimport ClaimAllModal from './ClaimAllModal'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport useModal from '../../../../hooks/useModal'\nimport useChainAccount from '../../../../state/chainAccount/useChainAccount'\n\nconst ClaimAll = () => {\n const { address: evmAccount } = useChainAccount('evm')\n const { address: aptosAccount } = useChainAccount('aptos')\n const { address: suiAccount } = useChainAccount('sui')\n const [onOpenModal] = useModal(<ClaimAllModal />)\n\n return (\n <Button\n onClick={onOpenModal}\n disabled={!evmAccount && !aptosAccount && !suiAccount}\n className=\"ape:w-full ape:h-[30px] ape:text-[14px]! ape:font-semibold ape:lg-ml-[10px] ape:lg:ml-0\"\n >\n Claim All\n </Button>\n )\n}\n\nexport default ClaimAll\n"],"names":["_jsx"],"mappings":";;;;;;AAMA,MAAM,QAAQ,GAAG,MAAK;IACpB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;IAC1D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC;IACtD,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAACA,GAAA,CAAC,aAAa,EAAA,EAAA,CAAG,CAAC;IAEjD,QACEA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EACrD,SAAS,EAAC,yFAAyF,EAAA,QAAA,EAAA,WAAA,EAAA,CAG5F;AAEb;;;;"}
|
|
@@ -12,11 +12,8 @@ import ProgressBar from '../../components/ProgressBar/ProgressBar.js';
|
|
|
12
12
|
import ProgressBarWrapper from '../../components/ProgressBar/ProgressBarWrapper.js';
|
|
13
13
|
import NftImage from './components/NFTImage/NFTImage.js';
|
|
14
14
|
import YourBondModalHeader from './components/YourBondModalHeader/YourBondModalHeader.js';
|
|
15
|
-
import Actions from './components/Actions/Actions.js';
|
|
16
15
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
17
|
-
import
|
|
18
|
-
import ActionsAptos from './components/Actions/ActionsAptos.js';
|
|
19
|
-
import ActionsSui from './components/Actions/ActionsSui.js';
|
|
16
|
+
import { getAdapterForChain } from '../../adapters/registry.js';
|
|
20
17
|
import Modal from '../../components/uikit-sdk/Modal/index.js';
|
|
21
18
|
import Flex from '../../components/uikit-sdk/Flex/index.js';
|
|
22
19
|
import Button from '../../components/uikit-sdk/Button/Button.js';
|
|
@@ -38,6 +35,7 @@ const YourBondsModal = ({ userBill, lostProfit, onDismiss, }) => {
|
|
|
38
35
|
const payoutUSD = payout && payoutTokenPrice ? payout * payoutTokenPrice : 0;
|
|
39
36
|
const payoutSymbol = userBill?.bond?.showcaseTokenName ?? userBill?.bond?.earnToken.symbol;
|
|
40
37
|
const payoutTokenSymbol = payoutSymbol === 'AIX' && userBill?.bond?.chainId === ChainId.SOL ? 'SOLAIX' : payoutSymbol;
|
|
38
|
+
const bondAdapter = userBill?.bond?.chainId ? getAdapterForChain(userBill.bond.chainId) : undefined;
|
|
41
39
|
// Cliff display info:
|
|
42
40
|
const vestingCliff = Number(userBill?.bond?.vestingCliff);
|
|
43
41
|
const currentTime = Math.round(new Date().getTime() / 1000);
|
|
@@ -51,7 +49,7 @@ const YourBondsModal = ({ userBill, lostProfit, onDismiss, }) => {
|
|
|
51
49
|
justifyContent: 'center',
|
|
52
50
|
}, showTooltip: true, toolTip: getTimeLeftForFullyVested(userBill) > 0
|
|
53
51
|
? `Fully vested in ${getPendingVestingString(userBill)}.`
|
|
54
|
-
: `Fully Vested.` })) })] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Pending" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.Pending }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsxs(Flex, { className: "ape:items-center", children: [jsx(TokenImage, { symbol: payoutTokenSymbol, size: 18 }), jsx(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: formatNumberSI(pending(userBill), 4) }), jsxs(Text, { weight: 400, className: "ape:ml-[10px] ape:opacity-60 ape:text-[10px]! ape:md:text-[12px]!", children: ["($", formatNumberSI(pendingUSD(userBill)), ")"] })] })] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:h-[26px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Claimable" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.Claimable }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsxs(Flex, { className: "ape:items-center", children: [jsx(TokenImage, { symbol: payoutTokenSymbol, size: 18 }), jsx(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: formatNumberSI(claimable(userBill), 4) }), jsxs(Text, { weight: 400, className: "ape:ml-[10px] ape:opacity-60 ape:text-[10px]! ape:md:text-[12px]!", children: ["($", formatNumberSI(claimableUSD(userBill)), ")"] })] })] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px] ape:rounded-[0px_0px_10px_10px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Claimed" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.Claimed }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsxs(Flex, { className: "ape:items-center", children: [jsx(TokenImage, { symbol: payoutTokenSymbol, size: 18 }), jsx(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: formatNumberSI(claimed(userBill), 4) }), jsxs(Text, { weight: 400, className: "ape:ml-[10px] ape:opacity-60 ape:text-[10px]! ape:md:text-[12px]!", children: ["($", formatNumberSI(claimedUSD(userBill)), ")"] })] })] })] }), userBill?.bond?.warningCard && (jsx(Flex, { className: "ape:w-full ape:justify-center ape:rounded-normal ape:bg-[#DE62F366]", children: jsx(Text, { as: "div", weight: 400, size: "12px", className: "ape:p-[4px_10px]", style: { lineHeight: '16px' }, children: jsx(SafeHTMLComponent, { html: userBill?.bond?.warningCard }) }) })), jsx(Flex, { className: "ape:w-full ape:justify-between ape:gap-[10px] ape:md:gap-[15px] ape:h-[40px]", children:
|
|
52
|
+
: `Fully Vested.` })) })] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Pending" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.Pending }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsxs(Flex, { className: "ape:items-center", children: [jsx(TokenImage, { symbol: payoutTokenSymbol, size: 18 }), jsx(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: formatNumberSI(pending(userBill), 4) }), jsxs(Text, { weight: 400, className: "ape:ml-[10px] ape:opacity-60 ape:text-[10px]! ape:md:text-[12px]!", children: ["($", formatNumberSI(pendingUSD(userBill)), ")"] })] })] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white3 ape:h-[26px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Claimable" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.Claimable }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsxs(Flex, { className: "ape:items-center", children: [jsx(TokenImage, { symbol: payoutTokenSymbol, size: 18 }), jsx(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: formatNumberSI(claimable(userBill), 4) }), jsxs(Text, { weight: 400, className: "ape:ml-[10px] ape:opacity-60 ape:text-[10px]! ape:md:text-[12px]!", children: ["($", formatNumberSI(claimableUSD(userBill)), ")"] })] })] }), jsxs(Flex, { className: "ape:w-full ape:justify-between ape:items-center ape:p-[4px_10px] ape:bg-white4 ape:h-[26px] ape:rounded-[0px_0px_10px_10px]", children: [jsxs(Flex, { className: "ape:items-center ape:gap-[5px]", children: [jsx(Flex, { className: "ape:opacity-60", children: "Claimed" }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: UserBillTooltipText.Claimed }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "block-header icon ape:text-white ape:font-normal ape:text-[12px]", children: jsx(QuestionCircle, { width: "12px" }) }) })] }), jsxs(Flex, { className: "ape:items-center", children: [jsx(TokenImage, { symbol: payoutTokenSymbol, size: 18 }), jsx(Text, { weight: 700, className: "ape:ml-[10px]", size: "12px", children: formatNumberSI(claimed(userBill), 4) }), jsxs(Text, { weight: 400, className: "ape:ml-[10px] ape:opacity-60 ape:text-[10px]! ape:md:text-[12px]!", children: ["($", formatNumberSI(claimedUSD(userBill)), ")"] })] })] })] }), userBill?.bond?.warningCard && (jsx(Flex, { className: "ape:w-full ape:justify-center ape:rounded-normal ape:bg-[#DE62F366]", children: jsx(Text, { as: "div", weight: 400, size: "12px", className: "ape:p-[4px_10px]", style: { lineHeight: '16px' }, children: jsx(SafeHTMLComponent, { html: userBill?.bond?.warningCard }) }) })), jsx(Flex, { className: "ape:w-full ape:justify-between ape:gap-[10px] ape:md:gap-[15px] ape:h-[40px]", children: bondAdapter && jsx(bondAdapter.BondActions, { userBill: userBill }) }), !lostProfit && !SDKConfig.chains.includes(ChainId.BITTENSOR_TESTNET) && (jsx(Recommendations, { billAddress: userBill?.address }))] })] }))] }) }));
|
|
55
53
|
};
|
|
56
54
|
|
|
57
55
|
export { YourBondsModal as default };
|