@ape.swap/bonds-sdk 7.0.0-test.3 → 7.0.0-test.4
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 +18 -27
- package/dist/adapters/aptos/index.js +10 -10
- package/dist/adapters/aptos/index.js.map +1 -1
- package/dist/adapters/aptos/{AptosAccountBridge.js → state/AptosAccountBridge.js} +1 -1
- package/dist/adapters/aptos/state/AptosAccountBridge.js.map +1 -0
- package/dist/adapters/aptos/{fetchBondsDataAptos.d.ts → state/fetchBondsDataAptos.d.ts} +2 -2
- package/dist/adapters/aptos/{fetchBondsDataAptos.js → state/fetchBondsDataAptos.js} +3 -3
- package/dist/adapters/aptos/state/fetchBondsDataAptos.js.map +1 -0
- package/dist/adapters/aptos/{fetchUsersBondsAptos.d.ts → state/fetchUsersBondsAptos.d.ts} +2 -2
- package/dist/adapters/aptos/{fetchUsersBondsAptos.js → state/fetchUsersBondsAptos.js} +4 -4
- package/dist/adapters/aptos/state/fetchUsersBondsAptos.js.map +1 -0
- package/dist/adapters/aptos/{useAPTAccount.js → state/useAPTAccount.js} +2 -2
- package/dist/adapters/aptos/state/useAPTAccount.js.map +1 -0
- package/dist/adapters/aptos/{useAptosZapQuote.d.ts → state/useAptosZapQuote.d.ts} +2 -2
- package/dist/adapters/aptos/{useAptosZapQuote.js → state/useAptosZapQuote.js} +4 -4
- package/dist/adapters/aptos/state/useAptosZapQuote.js.map +1 -0
- package/dist/adapters/aptos/{useCurrencyBalanceAptos.js → state/useCurrencyBalanceAptos.js} +2 -2
- package/dist/adapters/aptos/state/useCurrencyBalanceAptos.js.map +1 -0
- package/dist/adapters/aptos/{aptosHelpers.d.ts → utils/aptosHelpers.d.ts} +1 -1
- package/dist/adapters/aptos/{aptosHelpers.js → utils/aptosHelpers.js} +1 -1
- package/dist/adapters/aptos/utils/aptosHelpers.js.map +1 -0
- package/dist/adapters/aptos/{ActionsAptos.d.ts → views/ActionsAptos.d.ts} +1 -1
- package/dist/adapters/aptos/{ActionsAptos.js → views/ActionsAptos.js} +11 -11
- package/dist/adapters/aptos/views/ActionsAptos.js.map +1 -0
- package/dist/adapters/aptos/{BuyComponentAptos.js → views/BuyComponentAptos.js} +29 -29
- package/dist/adapters/aptos/views/BuyComponentAptos.js.map +1 -0
- package/dist/adapters/aptos/{ClaimAllActionAptos.d.ts → views/ClaimAllActionAptos.d.ts} +1 -1
- package/dist/adapters/aptos/{ClaimAllActionAptos.js → views/ClaimAllActionAptos.js} +10 -10
- package/dist/adapters/aptos/views/ClaimAllActionAptos.js.map +1 -0
- package/dist/adapters/aptos/{ConnectAptosWalletButton.js → views/ConnectAptosWalletButton.js} +4 -4
- package/dist/adapters/aptos/views/ConnectAptosWalletButton.js.map +1 -0
- package/dist/adapters/aptos/{ConnectToAptosBanner.js → views/ConnectToAptosBanner.js} +6 -6
- package/dist/adapters/aptos/views/ConnectToAptosBanner.js.map +1 -0
- package/dist/adapters/aptos/{TransferActionAptos.d.ts → views/TransferActionAptos.d.ts} +1 -1
- package/dist/adapters/aptos/{TransferActionAptos.js → views/TransferActionAptos.js} +1 -1
- package/dist/adapters/aptos/views/TransferActionAptos.js.map +1 -0
- package/dist/adapters/aptos/{UserBondRowAptos.d.ts → views/UserBondRowAptos.d.ts} +1 -1
- package/dist/adapters/aptos/{UserBondRowAptos.js → views/UserBondRowAptos.js} +22 -22
- package/dist/adapters/aptos/views/UserBondRowAptos.js.map +1 -0
- package/dist/adapters/evm/index.js +16 -16
- package/dist/adapters/evm/index.js.map +1 -1
- package/dist/adapters/evm/{EvmAccountBridge.js → state/EvmAccountBridge.js} +1 -1
- package/dist/adapters/evm/state/EvmAccountBridge.js.map +1 -0
- package/dist/adapters/evm/{balances.d.ts → state/balances.d.ts} +1 -1
- package/dist/adapters/evm/{balances.js → state/balances.js} +5 -5
- package/dist/adapters/evm/state/balances.js.map +1 -0
- package/dist/adapters/evm/{fetchBondsDataEVM.d.ts → state/fetchBondsDataEVM.d.ts} +2 -2
- package/dist/adapters/evm/{fetchBondsDataEVM.js → state/fetchBondsDataEVM.js} +8 -8
- package/dist/adapters/evm/state/fetchBondsDataEVM.js.map +1 -0
- package/dist/adapters/evm/{fetchUsersBondsEVM.d.ts → state/fetchUsersBondsEVM.d.ts} +2 -2
- package/dist/adapters/evm/{fetchUsersBondsEVM.js → state/fetchUsersBondsEVM.js} +4 -4
- package/dist/adapters/evm/state/fetchUsersBondsEVM.js.map +1 -0
- package/dist/adapters/evm/{getTierPoints.d.ts → state/getTierPoints.d.ts} +1 -1
- package/dist/adapters/evm/{getTierPoints.js → state/getTierPoints.js} +5 -5
- package/dist/adapters/evm/state/getTierPoints.js.map +1 -0
- package/dist/adapters/evm/{preTGE → state/preTGE}/fetchBondsDataPreTGE.d.ts +2 -2
- package/dist/adapters/evm/{preTGE → state/preTGE}/fetchBondsDataPreTGE.js +5 -5
- package/dist/adapters/evm/state/preTGE/fetchBondsDataPreTGE.js.map +1 -0
- package/dist/adapters/evm/{preTGE → state/preTGE}/fetchUserBondsPreTGE.d.ts +2 -2
- package/dist/adapters/evm/{preTGE → state/preTGE}/fetchUserBondsPreTGE.js +5 -5
- package/dist/adapters/evm/state/preTGE/fetchUserBondsPreTGE.js.map +1 -0
- package/dist/adapters/evm/{useAllowance.js → state/useAllowance.js} +9 -9
- package/dist/adapters/evm/state/useAllowance.js.map +1 -0
- package/dist/adapters/evm/{useEVMAccount.js → state/useEVMAccount.js} +1 -1
- package/dist/adapters/evm/state/useEVMAccount.js.map +1 -0
- package/dist/adapters/evm/{useMonitorTx.js → state/useMonitorTx.js} +1 -1
- package/dist/adapters/evm/state/useMonitorTx.js.map +1 -0
- package/dist/adapters/evm/{useSoulZapBondQuote.d.ts → state/useSoulZapBondQuote.d.ts} +1 -1
- package/dist/adapters/evm/{useSoulZapBondQuote.js → state/useSoulZapBondQuote.js} +9 -9
- package/dist/adapters/evm/state/useSoulZapBondQuote.js.map +1 -0
- package/dist/adapters/evm/{useTierProofSignature.js → state/useTierProofSignature.js} +4 -4
- package/dist/adapters/evm/state/useTierProofSignature.js.map +1 -0
- package/dist/adapters/evm/{multicall.js → utils/multicall.js} +3 -3
- package/dist/adapters/evm/utils/multicall.js.map +1 -0
- package/dist/adapters/evm/{Actions.d.ts → views/Actions.d.ts} +1 -1
- package/dist/adapters/evm/{Actions.js → views/Actions.js} +18 -18
- package/dist/adapters/evm/views/Actions.js.map +1 -0
- package/dist/adapters/evm/{BuyComponent.d.ts → views/BuyComponent.d.ts} +1 -1
- package/dist/adapters/evm/{BuyComponent.js → views/BuyComponent.js} +44 -44
- package/dist/adapters/evm/views/BuyComponent.js.map +1 -0
- package/dist/adapters/evm/{ClaimAllActionEVM.d.ts → views/ClaimAllActionEVM.d.ts} +1 -1
- package/dist/adapters/evm/{ClaimAllActionEVM.js → views/ClaimAllActionEVM.js} +9 -9
- package/dist/adapters/evm/views/ClaimAllActionEVM.js.map +1 -0
- package/dist/adapters/evm/{ConnectToEvmBanner.js → views/ConnectToEvmBanner.js} +4 -4
- package/dist/adapters/evm/views/ConnectToEvmBanner.js.map +1 -0
- package/dist/adapters/evm/{TransactionModal.d.ts → views/TransactionModal.d.ts} +2 -2
- package/dist/adapters/evm/{TransactionModal.js → views/TransactionModal.js} +21 -21
- package/dist/adapters/evm/views/TransactionModal.js.map +1 -0
- package/dist/adapters/evm/{TransferAction.d.ts → views/TransferAction.d.ts} +1 -1
- package/dist/adapters/evm/{TransferAction.js → views/TransferAction.js} +8 -8
- package/dist/adapters/evm/views/TransferAction.js.map +1 -0
- package/dist/adapters/evm/{UserBondRow.d.ts → views/UserBondRow.d.ts} +1 -1
- package/dist/adapters/evm/{UserBondRow.js → views/UserBondRow.js} +27 -27
- package/dist/adapters/evm/views/UserBondRow.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/BuyComponentPreTGE.js +26 -26
- package/dist/adapters/evm/views/preTGE/BuyComponentPreTGE.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/ModalHandlerPreTGE.js +3 -3
- package/dist/adapters/evm/views/preTGE/ModalHandlerPreTGE.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/PreTGEActions.d.ts +1 -1
- package/dist/adapters/evm/{preTGE → views/preTGE}/PreTGEActions.js +9 -9
- package/dist/adapters/evm/views/preTGE/PreTGEActions.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowPreTGE.d.ts +1 -1
- package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowPreTGE.js +9 -9
- package/dist/adapters/evm/views/preTGE/UserBondRowPreTGE.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowYield.d.ts +1 -1
- package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowYield.js +10 -10
- package/dist/adapters/evm/views/preTGE/UserBondRowYield.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/YourBondsModalYield.d.ts +1 -1
- package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/YourBondsModalYield.js +22 -22
- package/dist/adapters/evm/views/preTGE/YourBondsModalYield/YourBondsModalYield.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.d.ts +1 -1
- package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js +10 -10
- package/dist/adapters/evm/views/preTGE/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js.map +1 -0
- package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.d.ts +1 -1
- package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js +5 -5
- package/dist/adapters/evm/views/preTGE/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js.map +1 -0
- package/dist/adapters/lifi/index.js +1 -1
- package/dist/adapters/lifi/index.js.map +1 -1
- package/dist/adapters/lifi/{LifiModal.d.ts → views/LifiModal.d.ts} +1 -1
- package/dist/adapters/lifi/{LifiModal.js → views/LifiModal.js} +5 -5
- package/dist/adapters/lifi/views/LifiModal.js.map +1 -0
- package/dist/adapters/lifi/views/LifiWidgetContent.js.map +1 -0
- package/dist/adapters/solana/{solanaConstants.js → constants/solanaConstants.js} +1 -1
- package/dist/adapters/solana/constants/solanaConstants.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +1 -1
- package/dist/adapters/solana/index.js +10 -10
- package/dist/adapters/solana/index.js.map +1 -1
- package/dist/adapters/solana/{SolanaAccountBridge.js → state/SolanaAccountBridge.js} +1 -1
- package/dist/adapters/solana/state/SolanaAccountBridge.js.map +1 -0
- package/dist/adapters/solana/{fetchBondsDataSOL.d.ts → state/fetchBondsDataSOL.d.ts} +2 -2
- package/dist/adapters/solana/{fetchBondsDataSOL.js → state/fetchBondsDataSOL.js} +8 -8
- package/dist/adapters/solana/state/fetchBondsDataSOL.js.map +1 -0
- package/dist/adapters/solana/{fetchUsersBondsSOL.d.ts → state/fetchUsersBondsSOL.d.ts} +2 -2
- package/dist/adapters/solana/{fetchUsersBondsSOL.js → state/fetchUsersBondsSOL.js} +5 -5
- package/dist/adapters/solana/state/fetchUsersBondsSOL.js.map +1 -0
- package/dist/adapters/solana/{useCurrencyBalanceSolana.js → state/useCurrencyBalanceSolana.js} +3 -3
- package/dist/adapters/solana/state/useCurrencyBalanceSolana.js.map +1 -0
- package/dist/adapters/solana/{useJupiterSolanaQuote.d.ts → state/useJupiterSolanaQuote.d.ts} +1 -1
- package/dist/adapters/solana/{useJupiterSolanaQuote.js → state/useJupiterSolanaQuote.js} +3 -3
- package/dist/adapters/solana/state/useJupiterSolanaQuote.js.map +1 -0
- package/dist/adapters/solana/{useSOLAccount.js → state/useSOLAccount.js} +1 -1
- package/dist/adapters/solana/state/useSOLAccount.js.map +1 -0
- package/dist/adapters/solana/{calculateSolanaTrueBillPrice.js → utils/calculateSolanaTrueBillPrice.js} +1 -1
- package/dist/adapters/solana/utils/calculateSolanaTrueBillPrice.js.map +1 -0
- package/dist/adapters/solana/{codecs → utils/codecs}/bondCodec.js +1 -1
- package/dist/adapters/solana/utils/codecs/bondCodec.js.map +1 -0
- package/dist/adapters/solana/{codecs → utils/codecs}/bondIssuanceCodec.js +1 -1
- package/dist/adapters/solana/utils/codecs/bondIssuanceCodec.js.map +1 -0
- package/dist/adapters/solana/{codecs → utils/codecs}/bondPricingCodec.js +1 -1
- package/dist/adapters/solana/utils/codecs/bondPricingCodec.js.map +1 -0
- package/dist/adapters/solana/{codecs → utils/codecs}/bondTermCodec.js +1 -1
- package/dist/adapters/solana/utils/codecs/bondTermCodec.js.map +1 -0
- package/dist/adapters/solana/utils/derivePda.js.map +1 -0
- package/dist/adapters/solana/utils/getSolanaAccount.js.map +1 -0
- package/dist/adapters/solana/utils/polyfills.js.map +1 -0
- package/dist/adapters/solana/utils/solanaAtaHelper.js.map +1 -0
- package/dist/adapters/solana/utils/solanaMulticall.js.map +1 -0
- package/dist/adapters/solana/{solanaRpc.js → utils/solanaRpc.js} +1 -1
- package/dist/adapters/solana/utils/solanaRpc.js.map +1 -0
- package/dist/adapters/solana/{ActionsSolana.d.ts → views/ActionsSolana.d.ts} +1 -1
- package/dist/adapters/solana/{ActionsSolana.js → views/ActionsSolana.js} +13 -13
- package/dist/adapters/solana/views/ActionsSolana.js.map +1 -0
- package/dist/adapters/solana/{BuyComponentSolana.js → views/BuyComponentSolana.js} +37 -37
- package/dist/adapters/solana/views/BuyComponentSolana.js.map +1 -0
- package/dist/adapters/solana/{ConnectSolanaWalletButton.js → views/ConnectSolanaWalletButton.js} +4 -4
- package/dist/adapters/solana/views/ConnectSolanaWalletButton.js.map +1 -0
- package/dist/adapters/solana/{ConnectToSolanaBanner.js → views/ConnectToSolanaBanner.js} +5 -5
- package/dist/adapters/solana/views/ConnectToSolanaBanner.js.map +1 -0
- package/dist/adapters/solana/{TransferActionSolana.d.ts → views/TransferActionSolana.d.ts} +1 -1
- package/dist/adapters/solana/{TransferActionSolana.js → views/TransferActionSolana.js} +6 -6
- package/dist/adapters/solana/views/TransferActionSolana.js.map +1 -0
- package/dist/adapters/solana/{UserBondRowSolana.d.ts → views/UserBondRowSolana.d.ts} +1 -1
- package/dist/adapters/solana/{UserBondRowSolana.js → views/UserBondRowSolana.js} +23 -23
- package/dist/adapters/solana/views/UserBondRowSolana.js.map +1 -0
- package/dist/adapters/sui/constants/suiConstants.js.map +1 -0
- package/dist/adapters/sui/constants/suiZapTokens.js.map +1 -0
- package/dist/adapters/sui/index.js +10 -10
- package/dist/adapters/sui/index.js.map +1 -1
- package/dist/adapters/sui/{SuiAccountBridge.js → state/SuiAccountBridge.js} +1 -1
- package/dist/adapters/sui/state/SuiAccountBridge.js.map +1 -0
- package/dist/adapters/sui/{fetchBondsDataSui.d.ts → state/fetchBondsDataSui.d.ts} +2 -2
- package/dist/adapters/sui/{fetchBondsDataSui.js → state/fetchBondsDataSui.js} +3 -3
- package/dist/adapters/sui/state/fetchBondsDataSui.js.map +1 -0
- package/dist/adapters/sui/{fetchUsersBondsSUI.d.ts → state/fetchUsersBondsSUI.d.ts} +2 -2
- package/dist/adapters/sui/{fetchUsersBondsSUI.js → state/fetchUsersBondsSUI.js} +4 -4
- package/dist/adapters/sui/state/fetchUsersBondsSUI.js.map +1 -0
- package/dist/adapters/sui/{useCurrencyBalanceSui.js → state/useCurrencyBalanceSui.js} +2 -2
- package/dist/adapters/sui/state/useCurrencyBalanceSui.js.map +1 -0
- package/dist/adapters/sui/{useSUIAccount.js → state/useSUIAccount.js} +1 -1
- package/dist/adapters/sui/state/useSUIAccount.js.map +1 -0
- package/dist/adapters/sui/{useSuiZapQuote.d.ts → state/useSuiZapQuote.d.ts} +1 -1
- package/dist/adapters/sui/{useSuiZapQuote.js → state/useSuiZapQuote.js} +5 -5
- package/dist/adapters/sui/state/useSuiZapQuote.js.map +1 -0
- package/dist/adapters/sui/{suiHelpers.js → utils/suiHelpers.js} +1 -1
- package/dist/adapters/sui/utils/suiHelpers.js.map +1 -0
- package/dist/adapters/sui/{ActionsSui.d.ts → views/ActionsSui.d.ts} +1 -1
- package/dist/adapters/sui/{ActionsSui.js → views/ActionsSui.js} +11 -11
- package/dist/adapters/sui/views/ActionsSui.js.map +1 -0
- package/dist/adapters/sui/{BuyComponentSui.js → views/BuyComponentSui.js} +32 -32
- package/dist/adapters/sui/views/BuyComponentSui.js.map +1 -0
- package/dist/adapters/sui/{ClaimAllActionSui.d.ts → views/ClaimAllActionSui.d.ts} +1 -1
- package/dist/adapters/sui/{ClaimAllActionSui.js → views/ClaimAllActionSui.js} +10 -10
- package/dist/adapters/sui/views/ClaimAllActionSui.js.map +1 -0
- package/dist/adapters/sui/{ConnectToSuiBanner.js → views/ConnectToSuiBanner.js} +6 -6
- package/dist/adapters/sui/views/ConnectToSuiBanner.js.map +1 -0
- package/dist/adapters/sui/{TransferActionSui.d.ts → views/TransferActionSui.d.ts} +1 -1
- package/dist/adapters/sui/{TransferActionSui.js → views/TransferActionSui.js} +7 -7
- package/dist/adapters/sui/views/TransferActionSui.js.map +1 -0
- package/dist/adapters/sui/{UserBondRowSui.d.ts → views/UserBondRowSui.d.ts} +1 -1
- package/dist/adapters/sui/{UserBondRowSui.js → views/UserBondRowSui.js} +22 -22
- package/dist/adapters/sui/views/UserBondRowSui.js.map +1 -0
- package/dist/components/NetworkFilter/index.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/state/bonds/useBondsData.js.map +1 -1
- package/package.json +3 -7
- package/dist/adapters/all/index.d.ts +0 -13
- package/dist/adapters/all/index.js +0 -15
- package/dist/adapters/all/index.js.map +0 -1
- package/dist/adapters/aptos/ActionsAptos.js.map +0 -1
- package/dist/adapters/aptos/AptosAccountBridge.js.map +0 -1
- package/dist/adapters/aptos/BuyComponentAptos.js.map +0 -1
- package/dist/adapters/aptos/ClaimAllActionAptos.js.map +0 -1
- package/dist/adapters/aptos/ConnectAptosWalletButton.js.map +0 -1
- package/dist/adapters/aptos/ConnectToAptosBanner.js.map +0 -1
- package/dist/adapters/aptos/TransferActionAptos.js.map +0 -1
- package/dist/adapters/aptos/UserBondRowAptos.js.map +0 -1
- package/dist/adapters/aptos/aptosHelpers.js.map +0 -1
- package/dist/adapters/aptos/fetchBondsDataAptos.js.map +0 -1
- package/dist/adapters/aptos/fetchUsersBondsAptos.js.map +0 -1
- package/dist/adapters/aptos/useAPTAccount.js.map +0 -1
- package/dist/adapters/aptos/useAptosZapQuote.js.map +0 -1
- package/dist/adapters/aptos/useCurrencyBalanceAptos.js.map +0 -1
- package/dist/adapters/evm/Actions.js.map +0 -1
- package/dist/adapters/evm/BuyComponent.js.map +0 -1
- package/dist/adapters/evm/ClaimAllActionEVM.js.map +0 -1
- package/dist/adapters/evm/ConnectToEvmBanner.js.map +0 -1
- package/dist/adapters/evm/EvmAccountBridge.js.map +0 -1
- package/dist/adapters/evm/TransactionModal.js.map +0 -1
- package/dist/adapters/evm/TransferAction.js.map +0 -1
- package/dist/adapters/evm/UserBondRow.js.map +0 -1
- package/dist/adapters/evm/balances.js.map +0 -1
- package/dist/adapters/evm/fetchBondsDataEVM.js.map +0 -1
- package/dist/adapters/evm/fetchUsersBondsEVM.js.map +0 -1
- package/dist/adapters/evm/getTierPoints.js.map +0 -1
- package/dist/adapters/evm/multicall.js.map +0 -1
- package/dist/adapters/evm/preTGE/BuyComponentPreTGE.js.map +0 -1
- package/dist/adapters/evm/preTGE/ModalHandlerPreTGE.js.map +0 -1
- package/dist/adapters/evm/preTGE/PreTGEActions.js.map +0 -1
- package/dist/adapters/evm/preTGE/UserBondRowPreTGE.js.map +0 -1
- package/dist/adapters/evm/preTGE/UserBondRowYield.js.map +0 -1
- package/dist/adapters/evm/preTGE/YourBondsModalYield/YourBondsModalYield.js.map +0 -1
- package/dist/adapters/evm/preTGE/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js.map +0 -1
- package/dist/adapters/evm/preTGE/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js.map +0 -1
- package/dist/adapters/evm/preTGE/fetchBondsDataPreTGE.js.map +0 -1
- package/dist/adapters/evm/preTGE/fetchUserBondsPreTGE.js.map +0 -1
- package/dist/adapters/evm/useAllowance.js.map +0 -1
- package/dist/adapters/evm/useEVMAccount.js.map +0 -1
- package/dist/adapters/evm/useMonitorTx.js.map +0 -1
- package/dist/adapters/evm/useSoulZapBondQuote.js.map +0 -1
- package/dist/adapters/evm/useTierProofSignature.js.map +0 -1
- package/dist/adapters/lifi/LifiModal.js.map +0 -1
- package/dist/adapters/lifi/LifiWidgetContent.js.map +0 -1
- package/dist/adapters/solana/ActionsSolana.js.map +0 -1
- package/dist/adapters/solana/BuyComponentSolana.js.map +0 -1
- package/dist/adapters/solana/ConnectSolanaWalletButton.js.map +0 -1
- package/dist/adapters/solana/ConnectToSolanaBanner.js.map +0 -1
- package/dist/adapters/solana/SolanaAccountBridge.js.map +0 -1
- package/dist/adapters/solana/TransferActionSolana.js.map +0 -1
- package/dist/adapters/solana/UserBondRowSolana.js.map +0 -1
- package/dist/adapters/solana/calculateSolanaTrueBillPrice.js.map +0 -1
- package/dist/adapters/solana/codecs/bondCodec.js.map +0 -1
- package/dist/adapters/solana/codecs/bondIssuanceCodec.js.map +0 -1
- package/dist/adapters/solana/codecs/bondPricingCodec.js.map +0 -1
- package/dist/adapters/solana/codecs/bondTermCodec.js.map +0 -1
- package/dist/adapters/solana/derivePda.js.map +0 -1
- package/dist/adapters/solana/fetchBondsDataSOL.js.map +0 -1
- package/dist/adapters/solana/fetchUsersBondsSOL.js.map +0 -1
- package/dist/adapters/solana/getSolanaAccount.js.map +0 -1
- package/dist/adapters/solana/polyfills.js.map +0 -1
- package/dist/adapters/solana/solanaAtaHelper.js.map +0 -1
- package/dist/adapters/solana/solanaConstants.js.map +0 -1
- package/dist/adapters/solana/solanaMulticall.js.map +0 -1
- package/dist/adapters/solana/solanaRpc.js.map +0 -1
- package/dist/adapters/solana/useCurrencyBalanceSolana.js.map +0 -1
- package/dist/adapters/solana/useJupiterSolanaQuote.js.map +0 -1
- package/dist/adapters/solana/useSOLAccount.js.map +0 -1
- package/dist/adapters/sui/ActionsSui.js.map +0 -1
- package/dist/adapters/sui/BuyComponentSui.js.map +0 -1
- package/dist/adapters/sui/ClaimAllActionSui.js.map +0 -1
- package/dist/adapters/sui/ConnectToSuiBanner.js.map +0 -1
- package/dist/adapters/sui/SuiAccountBridge.js.map +0 -1
- package/dist/adapters/sui/TransferActionSui.js.map +0 -1
- package/dist/adapters/sui/UserBondRowSui.js.map +0 -1
- package/dist/adapters/sui/fetchBondsDataSui.js.map +0 -1
- package/dist/adapters/sui/fetchUsersBondsSUI.js.map +0 -1
- package/dist/adapters/sui/suiConstants.js.map +0 -1
- package/dist/adapters/sui/suiHelpers.js.map +0 -1
- package/dist/adapters/sui/suiZapTokens.js.map +0 -1
- package/dist/adapters/sui/useCurrencyBalanceSui.js.map +0 -1
- package/dist/adapters/sui/useSUIAccount.js.map +0 -1
- package/dist/adapters/sui/useSuiZapQuote.js.map +0 -1
- /package/dist/adapters/aptos/{AptosAccountBridge.d.ts → state/AptosAccountBridge.d.ts} +0 -0
- /package/dist/adapters/aptos/{useAPTAccount.d.ts → state/useAPTAccount.d.ts} +0 -0
- /package/dist/adapters/aptos/{useCurrencyBalanceAptos.d.ts → state/useCurrencyBalanceAptos.d.ts} +0 -0
- /package/dist/adapters/aptos/{aptosBonds.d.ts → types/aptosBonds.d.ts} +0 -0
- /package/dist/adapters/aptos/{BuyComponentAptos.d.ts → views/BuyComponentAptos.d.ts} +0 -0
- /package/dist/adapters/aptos/{ConnectAptosWalletButton.d.ts → views/ConnectAptosWalletButton.d.ts} +0 -0
- /package/dist/adapters/aptos/{ConnectToAptosBanner.d.ts → views/ConnectToAptosBanner.d.ts} +0 -0
- /package/dist/adapters/evm/{EvmAccountBridge.d.ts → state/EvmAccountBridge.d.ts} +0 -0
- /package/dist/adapters/evm/{useAllowance.d.ts → state/useAllowance.d.ts} +0 -0
- /package/dist/adapters/evm/{useEVMAccount.d.ts → state/useEVMAccount.d.ts} +0 -0
- /package/dist/adapters/evm/{useMonitorTx.d.ts → state/useMonitorTx.d.ts} +0 -0
- /package/dist/adapters/evm/{useTierProofSignature.d.ts → state/useTierProofSignature.d.ts} +0 -0
- /package/dist/adapters/evm/{multicall.d.ts → utils/multicall.d.ts} +0 -0
- /package/dist/adapters/evm/{ConnectToEvmBanner.d.ts → views/ConnectToEvmBanner.d.ts} +0 -0
- /package/dist/adapters/evm/{preTGE → views/preTGE}/BuyComponentPreTGE.d.ts +0 -0
- /package/dist/adapters/evm/{preTGE → views/preTGE}/ModalHandlerPreTGE.d.ts +0 -0
- /package/dist/adapters/lifi/{LifiWidgetContent.d.ts → views/LifiWidgetContent.d.ts} +0 -0
- /package/dist/adapters/lifi/{LifiWidgetContent.js → views/LifiWidgetContent.js} +0 -0
- /package/dist/adapters/solana/{solanaConstants.d.ts → constants/solanaConstants.d.ts} +0 -0
- /package/dist/adapters/solana/{SolanaAccountBridge.d.ts → state/SolanaAccountBridge.d.ts} +0 -0
- /package/dist/adapters/solana/{useCurrencyBalanceSolana.d.ts → state/useCurrencyBalanceSolana.d.ts} +0 -0
- /package/dist/adapters/solana/{useSOLAccount.d.ts → state/useSOLAccount.d.ts} +0 -0
- /package/dist/adapters/solana/{helius.d.ts → types/helius.d.ts} +0 -0
- /package/dist/adapters/solana/{solanaBonds.d.ts → types/solanaBonds.d.ts} +0 -0
- /package/dist/adapters/solana/{calculateSolanaTrueBillPrice.d.ts → utils/calculateSolanaTrueBillPrice.d.ts} +0 -0
- /package/dist/adapters/solana/{codecs → utils/codecs}/bondCodec.d.ts +0 -0
- /package/dist/adapters/solana/{codecs → utils/codecs}/bondIssuanceCodec.d.ts +0 -0
- /package/dist/adapters/solana/{codecs → utils/codecs}/bondPricingCodec.d.ts +0 -0
- /package/dist/adapters/solana/{codecs → utils/codecs}/bondTermCodec.d.ts +0 -0
- /package/dist/adapters/solana/{codecs → utils/codecs}/index.d.ts +0 -0
- /package/dist/adapters/solana/{derivePda.d.ts → utils/derivePda.d.ts} +0 -0
- /package/dist/adapters/solana/{derivePda.js → utils/derivePda.js} +0 -0
- /package/dist/adapters/solana/{getSolanaAccount.d.ts → utils/getSolanaAccount.d.ts} +0 -0
- /package/dist/adapters/solana/{getSolanaAccount.js → utils/getSolanaAccount.js} +0 -0
- /package/dist/adapters/solana/{polyfills.d.ts → utils/polyfills.d.ts} +0 -0
- /package/dist/adapters/solana/{polyfills.js → utils/polyfills.js} +0 -0
- /package/dist/adapters/solana/{solanaAtaHelper.d.ts → utils/solanaAtaHelper.d.ts} +0 -0
- /package/dist/adapters/solana/{solanaAtaHelper.js → utils/solanaAtaHelper.js} +0 -0
- /package/dist/adapters/solana/{solanaMulticall.d.ts → utils/solanaMulticall.d.ts} +0 -0
- /package/dist/adapters/solana/{solanaMulticall.js → utils/solanaMulticall.js} +0 -0
- /package/dist/adapters/solana/{solanaRpc.d.ts → utils/solanaRpc.d.ts} +0 -0
- /package/dist/adapters/solana/{BuyComponentSolana.d.ts → views/BuyComponentSolana.d.ts} +0 -0
- /package/dist/adapters/solana/{ConnectSolanaWalletButton.d.ts → views/ConnectSolanaWalletButton.d.ts} +0 -0
- /package/dist/adapters/solana/{ConnectToSolanaBanner.d.ts → views/ConnectToSolanaBanner.d.ts} +0 -0
- /package/dist/adapters/sui/{suiConstants.d.ts → constants/suiConstants.d.ts} +0 -0
- /package/dist/adapters/sui/{suiConstants.js → constants/suiConstants.js} +0 -0
- /package/dist/adapters/sui/{suiZapTokens.d.ts → constants/suiZapTokens.d.ts} +0 -0
- /package/dist/adapters/sui/{suiZapTokens.js → constants/suiZapTokens.js} +0 -0
- /package/dist/adapters/sui/{SuiAccountBridge.d.ts → state/SuiAccountBridge.d.ts} +0 -0
- /package/dist/adapters/sui/{useCurrencyBalanceSui.d.ts → state/useCurrencyBalanceSui.d.ts} +0 -0
- /package/dist/adapters/sui/{useSUIAccount.d.ts → state/useSUIAccount.d.ts} +0 -0
- /package/dist/adapters/sui/{suiHelpers.d.ts → utils/suiHelpers.d.ts} +0 -0
- /package/dist/adapters/sui/{BuyComponentSui.d.ts → views/BuyComponentSui.d.ts} +0 -0
- /package/dist/adapters/sui/{ConnectToSuiBanner.d.ts → views/ConnectToSuiBanner.d.ts} +0 -0
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useCallback, useEffect } from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
|
-
import useModal from '
|
|
4
|
+
import useModal from '../../../hooks/useModal.js';
|
|
5
5
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
6
|
-
import TokenSelectorPanel from '
|
|
7
|
-
import useBondsData from '
|
|
8
|
-
import useTokenFromZapList from '
|
|
9
|
-
import { usePopups } from '
|
|
10
|
-
import { formatUSDNumber, getMaxBuy, getPayoutAmount, getPrincipalAmount } from '
|
|
11
|
-
import { useSDKConfig } from '
|
|
12
|
-
import { useSlippage } from '
|
|
13
|
-
import { getSymbol } from '
|
|
14
|
-
import BondModalHeader from '
|
|
15
|
-
import BondCards from '
|
|
16
|
-
import Estimations from '
|
|
17
|
-
import ProjectDescription from '
|
|
18
|
-
import NoBonusModal from '
|
|
19
|
-
import useJupiterSolanaQuote from '
|
|
20
|
-
import useSortedZapList from '
|
|
6
|
+
import TokenSelectorPanel from '../../../components/TokenSelectorPanel/index.js';
|
|
7
|
+
import useBondsData from '../../../state/bonds/useBondsData.js';
|
|
8
|
+
import useTokenFromZapList from '../../../hooks/useTokenFromZapList.js';
|
|
9
|
+
import { usePopups } from '../../../state/popups/usePopups.js';
|
|
10
|
+
import { formatUSDNumber, getMaxBuy, getPayoutAmount, getPrincipalAmount } from '../../../utils/displayHelpers.js';
|
|
11
|
+
import { useSDKConfig } from '../../../state/useSDKConfig.js';
|
|
12
|
+
import { useSlippage } from '../../../state/slippage/useSlippage.js';
|
|
13
|
+
import { getSymbol } from '../../../utils/getNativeTicker.js';
|
|
14
|
+
import BondModalHeader from '../../../views/BuyBond/components/BondModalHeader.js';
|
|
15
|
+
import BondCards from '../../../views/BuyBond/components/BondCards/BondCards.js';
|
|
16
|
+
import Estimations from '../../../views/BuyBond/components/Estimations.js';
|
|
17
|
+
import ProjectDescription from '../../../views/BuyBond/components/ProjectDescription.js';
|
|
18
|
+
import NoBonusModal from '../../../views/BuyBond/components/NoBonusModal/NoBonusModal.js';
|
|
19
|
+
import useJupiterSolanaQuote from '../state/useJupiterSolanaQuote.js';
|
|
20
|
+
import useSortedZapList from '../../../hooks/useSortedZapList.js';
|
|
21
21
|
import ConnectSolanaWallet from './ConnectSolanaWalletButton.js';
|
|
22
22
|
import { Connection, PublicKey, Keypair, SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY, Transaction, TransactionInstruction } from '@solana/web3.js';
|
|
23
23
|
import { createJupiterApiClient } from '@jup-ag/api';
|
|
24
|
-
import { derivePda } from '
|
|
24
|
+
import { derivePda } from '../utils/derivePda.js';
|
|
25
25
|
import { getAssociatedTokenAddress, ASSOCIATED_TOKEN_PROGRAM_ID, getAccount, createAssociatedTokenAccountInstruction } from '@solana/spl-token';
|
|
26
|
-
import { getBondIssuanceAccountSolana } from '
|
|
26
|
+
import { getBondIssuanceAccountSolana } from '../utils/getSolanaAccount.js';
|
|
27
27
|
import { getU64Codec } from '@solana/kit';
|
|
28
|
-
import { PROGRAM_ID, MPL_CORE_PROGRAM_ID, DEPOSIT_DISCRIMINATOR } from '
|
|
28
|
+
import { PROGRAM_ID, MPL_CORE_PROGRAM_ID, DEPOSIT_DISCRIMINATOR } from '../constants/solanaConstants.js';
|
|
29
29
|
import { Buffer } from 'buffer';
|
|
30
|
-
import { getRPC } from '
|
|
31
|
-
import { reportError } from '
|
|
32
|
-
import SafeHTMLComponent from '
|
|
33
|
-
import { findHighestTrueBondPrice } from '
|
|
34
|
-
import track from '
|
|
35
|
-
import { remove0xPrefix } from '
|
|
36
|
-
import { MCBuyComponentStyles } from '
|
|
37
|
-
import useSOLAccount from '
|
|
38
|
-
import { useSendReferenceId } from '
|
|
39
|
-
import { getBridgeAdapter } from '
|
|
40
|
-
import { getTokenProgramForMint, getAtaWithCreateInstruction } from '
|
|
41
|
-
import Flex from '
|
|
42
|
-
import Text from '
|
|
43
|
-
import TooltipBubble from '
|
|
44
|
-
import Button from '
|
|
45
|
-
import { formatNumberSI } from '
|
|
46
|
-
import QuestionCircle from '
|
|
47
|
-
import { toFixedString, parseUnits, mulDivRound } from '
|
|
30
|
+
import { getRPC } from '../../../config/constants/networks.js';
|
|
31
|
+
import { reportError } from '../../../utils/reportError.js';
|
|
32
|
+
import SafeHTMLComponent from '../../../components/SafeHTMLComponent/index.js';
|
|
33
|
+
import { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers.js';
|
|
34
|
+
import track from '../../../utils/track.js';
|
|
35
|
+
import { remove0xPrefix } from '../../../utils/remove0xPrefix.js';
|
|
36
|
+
import { MCBuyComponentStyles } from '../../../utils/campaignStyles.js';
|
|
37
|
+
import useSOLAccount from '../state/useSOLAccount.js';
|
|
38
|
+
import { useSendReferenceId } from '../../../hooks/useSendReferenceId.js';
|
|
39
|
+
import { getBridgeAdapter } from '../../registry.js';
|
|
40
|
+
import { getTokenProgramForMint, getAtaWithCreateInstruction } from '../utils/solanaAtaHelper.js';
|
|
41
|
+
import Flex from '../../../components/uikit-sdk/Flex/index.js';
|
|
42
|
+
import Text from '../../../components/uikit-sdk/Text/index.js';
|
|
43
|
+
import TooltipBubble from '../../../components/uikit-sdk/TooltipBubble/index.js';
|
|
44
|
+
import Button from '../../../components/uikit-sdk/Button/Button.js';
|
|
45
|
+
import { formatNumberSI } from '../../../utils/formatNumber.js';
|
|
46
|
+
import QuestionCircle from '../../../components/uikit-sdk/Svg/Icons/QuestionCircle.js';
|
|
47
|
+
import { toFixedString, parseUnits, mulDivRound } from '../../../utils/fixedPoint.js';
|
|
48
48
|
|
|
49
49
|
// price * (100 + slippage) / (100 * 1e6), scaled by 1e6 to preserve fractional slippage
|
|
50
50
|
// percentages without a float precompute (matches this bond program's price scale).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuyComponentSolana.js","sources":["../../../../src/adapters/solana/views/BuyComponentSolana.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport useModal from '../../../hooks/useModal'\nimport { ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../../components/TokenSelectorPanel'\nimport useBondsData from '../../../state/bonds/useBondsData'\nimport useTokenFromZapList from '../../../hooks/useTokenFromZapList'\nimport { usePopups } from '../../../state/popups/usePopups'\nimport { formatUSDNumber, getMaxBuy, getPayoutAmount, getPrincipalAmount } from '../../../utils/displayHelpers'\nimport { useSDKConfig } from '../../../state/useSDKConfig'\nimport { useSlippage } from '../../../state/slippage/useSlippage'\nimport { getSymbol } from '../../../utils/getNativeTicker'\nimport BondModalHeader from '../../../views/BuyBond/components/BondModalHeader'\nimport BondCards from '../../../views/BuyBond/components/BondCards/BondCards'\nimport Estimations from '../../../views/BuyBond/components/Estimations'\nimport ProjectDescription from '../../../views/BuyBond/components/ProjectDescription'\nimport NoBonusModal from '../../../views/BuyBond/components/NoBonusModal/NoBonusModal'\nimport useJupiterSolanaQuote from '../state/useJupiterSolanaQuote'\nimport useSortedZapList from '../../../hooks/useSortedZapList'\n\n// Solana\nimport ConnectSolanaWalletButton from './ConnectSolanaWalletButton'\nimport {\n PublicKey,\n SystemProgram,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n Keypair,\n Transaction,\n Connection,\n TransactionInstruction,\n} from '@solana/web3.js'\nimport { createJupiterApiClient } from '@jup-ag/api'\nimport { derivePda } from '../utils/derivePda'\nimport {\n getAssociatedTokenAddress,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountInstruction,\n getAccount,\n} from '@solana/spl-token'\nimport { getBondIssuanceAccountSolana } from '../utils/getSolanaAccount'\nimport { getU64Codec } from '@solana/kit'\nimport { DEPOSIT_DISCRIMINATOR, MPL_CORE_PROGRAM_ID, PROGRAM_ID } from '../constants/solanaConstants'\nimport { Buffer } from 'buffer'\nimport { BondsData } from '../../../types/bonds'\nimport { BondIssuanceAccount } from '../utils/codecs'\nimport { getRPC } from '../../../config/constants/networks'\nimport { reportError } from '../../../utils/reportError'\nimport SafeHTMLComponent from '../../../components/SafeHTMLComponent'\nimport { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers'\nimport track from '../../../utils/track'\nimport { remove0xPrefix } from '../../../utils/remove0xPrefix'\nimport { MCBuyComponentStyles } from '../../../utils/campaignStyles'\nimport useSOLAccount from '../state/useSOLAccount'\nimport { useSendReferenceId } from '../../../hooks/useSendReferenceId'\nimport { getBridgeAdapter } from '../../registry'\nimport { getAtaWithCreateInstruction, getTokenProgramForMint } from '../utils/solanaAtaHelper'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport Text from '../../../components/uikit-sdk/Text'\nimport TooltipBubble from '../../../components/uikit-sdk/TooltipBubble'\nimport Button from '../../../components/uikit-sdk/Button/Button'\nimport { formatNumberSI } from '../../../utils/formatNumber'\nimport QuestionCircle from '../../../components/uikit-sdk/Svg/Icons/QuestionCircle'\nimport { mulDivRound, parseUnits, toFixedString } from '../../../utils/fixedPoint'\n\n// price * (100 + slippage) / (100 * 1e6), scaled by 1e6 to preserve fractional slippage\n// percentages without a float precompute (matches this bond program's price scale).\nconst slippageMaxPriceSolana = (priceBig: bigint, slippage: number): bigint =>\n mulDivRound(priceBig, parseUnits(String(100 + slippage), 6), parseUnits('100', 6) * 1_000_000n, 'halfUp')\n\ninterface BuyComponentSolanaProps {\n onDismiss?: () => void // this is only the modal\n bondAddress?: string\n bondChain?: number\n setBillId?: (id: string) => void\n isProjectView?: boolean\n}\n\nconst BuyComponentSolana: React.FC<BuyComponentSolanaProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n isProjectView,\n setBillId,\n}) => {\n const SDKConfig = useSDKConfig()\n\n // Hooks\n const { publicKey: accountSolana, signTransaction } = useSOLAccount()\n const { data: bonds } = useBondsData()\n const { addToastError, addToastSuccess } = usePopups()\n const { solSlippage: slippage } = useSlippage()\n const sendReferenceId = useSendReferenceId()\n\n const bondData: BondsData | undefined = bonds?.find(\n (bond) => bond?.contractAddress?.[bond?.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )\n\n // Tier Gating\n const trueBondPriceData = findHighestTrueBondPrice('0', bondData?.trueBondPrices)\n\n // State\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // On-chain Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZap = inputTokenString?.toLowerCase() !== bondData?.lpToken?.address?.[bondData?.chainId]?.toLowerCase()\n\n const [\n fetchingZapQuote,\n jupiterQuote,\n zapDepositAmount,\n zapError,\n isDirectRoute,\n minimumDepositAmount,\n wrapAndUnwrapSol,\n ] = useJupiterSolanaQuote(inputValue, inputToken, bondData, accountSolana?.toBase58(), true, slippage)\n\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n\n // Estimations - use zapDepositAmount if swapping\n const depositAmount = isZap ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = \n $${formatUSDNumber((parseFloat(inputValue) * (inputTokenPrice ?? 0)).toString())}`\n\n const exceedsRealMaxBuy = getMaxBuy(bondData, true) <= getPayoutAmount(bondData, depositAmount, '0')\n const exceedsSafeMaxBuy =\n getMaxBuy(bondData, false) * (isZap ? 0.995 : 0.9995) <= getPayoutAmount(bondData, depositAmount, '0')\n const exceedsBalance = Number(inputCurrencyBalance ?? '0') < Number(inputValue)\n\n // Loading State - include zap loading\n const [loadingTx, setLoadingTx] = useState(false)\n const load = loadingTx || (fetchingZapQuote && !!inputValue)\n\n // State Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = () => {\n const balance = Number(inputCurrencyBalance ?? '0')\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 18\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n if (!isZap) {\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), '0')\n if (maxPossibleUserPurchase > maxBuyAmount) {\n console.log('user balance exceeds max buy limit, setting to max buy')\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n setInputValue(toFixedString(principalForMaxBuy, principalDecimals, 'trunc'))\n } else {\n console.log('balance is ok, can be used')\n setInputValue(toFixedString(inputCurrencyBalance ?? '0', principalDecimals, 'trunc'))\n }\n } else {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n const principalForMaxBuyUSD = principalForMaxBuy * Number(bondData?.principalTokenPrice ?? 0)\n const maxBuyAmountInSelectedToken = principalForMaxBuyUSD / (inputTokenPrice ?? 0)\n const decimals =\n enrichedTokenData?.token === 'NATIVE' ? 18 : (enrichedTokenData?.token.decimals[bondData?.chainId!] ?? 18)\n\n if (balance >= maxBuyAmountInSelectedToken) {\n setInputValue(toFixedString(maxBuyAmountInSelectedToken, decimals, 'trunc'))\n } else {\n setInputValue(toFixedString(inputCurrencyBalance ?? '0', decimals, 'trunc'))\n }\n }\n }\n\n const handleBuyCallback = async () => {\n if (!accountSolana || !bondData || !inputValue || !inputToken || !bondData) return\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n setLoadingTx(true)\n\n const connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\n\n // Convert input value\n const amountBigInt = parseUnits(inputValue, bondData.lpToken.decimals[ChainId.SOL]!)\n\n const user = accountSolana\n\n const trueBondPriceWithoutFee = bondData?.trueBondPrices?.[0]?.trueBondPrice\n\n const maxPrice = slippageMaxPriceSolana(BigInt(trueBondPriceWithoutFee ?? '0'), slippage).toString()\n\n // Static addresses\n const bondIssuancePda = new PublicKey(bondData.contractAddress[bondData.chainId]!)\n const principalMint = new PublicKey(bondData.lpToken.address[bondData.chainId]!)\n const payoutMint = new PublicKey(bondData.earnToken.address[bondData.chainId]!)\n const collection = new PublicKey(bondData.billNnftAddress[bondData.chainId]!)\n\n // Detect token programs for both mints (supports Token-2022)\n const [principalTokenProgram, payoutTokenProgram] = await Promise.all([\n getTokenProgramForMint(connection, principalMint),\n getTokenProgramForMint(connection, payoutMint),\n ])\n\n // Fetch Bond Issuance Account\n const bondIssuanceAccounts = (await getBondIssuanceAccountSolana([\n bondIssuancePda.toBase58(),\n ])) as BondIssuanceAccount[]\n if (!bondIssuanceAccounts) return\n const bondIssuanceAccount = bondIssuanceAccounts[0]\n const feeRecipient = new PublicKey(bondIssuanceAccount.feePrincipalRecipient)\n const partnerRecipient = new PublicKey(bondIssuanceAccount.partnerPrincipalRecipient)\n const feePayoutRecipient = new PublicKey(bondIssuanceAccount.feePayoutRecipient) // ADDED\n\n // Derive PDAs\n const bondTermPda = derivePda('bond_term', bondIssuancePda, PROGRAM_ID)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n\n // Create NFT mint\n const nftMint = Keypair.generate()\n\n const [bondPda] = PublicKey.findProgramAddressSync(\n [Buffer.from('bond'), bondIssuancePda.toBuffer(), nftMint.publicKey.toBuffer()],\n PROGRAM_ID,\n )\n\n // ATAs - use correct token program for each mint\n const userPrincipalAta = await getAssociatedTokenAddress(principalMint, user, true, principalTokenProgram)\n const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram)\n const feePrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n feeRecipient,\n true,\n principalTokenProgram,\n )\n const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n partnerRecipient,\n true,\n principalTokenProgram,\n )\n\n const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } =\n await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, user)\n\n // Encode args\n const u64Codec = getU64Codec()\n const amountEncoded = Buffer.from(u64Codec.encode(amountBigInt))\n const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)))\n const instructionData = Buffer.concat([DEPOSIT_DISCRIMINATOR, amountEncoded, maxPriceEncoded])\n\n // Instruction\n const keys = [\n { pubkey: bondPda, isSigner: false, isWritable: true },\n { pubkey: nftMint.publicKey, isSigner: true, isWritable: true },\n { pubkey: user, isSigner: true, isWritable: true },\n { pubkey: bondPricingPda, isSigner: false, isWritable: true },\n { pubkey: bondTermPda, isSigner: false, isWritable: true },\n { pubkey: bondIssuancePda, isSigner: false, isWritable: true },\n { pubkey: collection, isSigner: false, isWritable: true },\n { pubkey: userPrincipalAta, isSigner: false, isWritable: true },\n { pubkey: feePrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: partnerPrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: feePayoutRecipientAta, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: principalMint, isSigner: false, isWritable: false },\n { pubkey: payoutMint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: principalTokenProgram, isSigner: false, isWritable: false }, // principal_token_program (dynamic)\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // payout_token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },\n ]\n\n const instruction = new TransactionInstruction({\n keys,\n programId: PROGRAM_ID,\n data: instructionData,\n })\n\n // Create tx (prepend payout fee recipient ATA creation if needed)\n const transaction = new Transaction()\n if (createPayoutFeeRecipientAtaIx) transaction.add(createPayoutFeeRecipientAtaIx)\n transaction.add(instruction)\n transaction.feePayer = user\n\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n transaction.recentBlockhash = blockhash\n // Sign tx\n transaction.partialSign(nftMint)\n const signedTx = await signTransaction?.(transaction)!\n\n // Sends tx, generates hash\n const txId = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n // awaits hash confirmation on chain - commitment \"confirmed\"\n await connection.confirmTransaction(\n {\n signature: txId,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, txId)\n\n // waits 3 seconds before triggering after-purchase flow\n await new Promise((resolve) => setTimeout(resolve, 3000))\n\n addToastSuccess(txId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n } catch (error: any) {\n console.error('Error during bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error.message,\n extraInfo: { type: 'solanaBuyBond', error: error.message },\n chainId: bondChain,\n account: accountSolana.toString(),\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n // Helper: Build Jupiter swap instructions from API response\n const buildSwapInstructions = (swapResult: any) => {\n const swapInstruction = new TransactionInstruction({\n programId: new PublicKey(swapResult.swapInstruction.programId),\n keys: swapResult.swapInstruction.accounts.map((key: any) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n data: Buffer.from(swapResult.swapInstruction.data, 'base64'),\n })\n\n const setupInstructions = (swapResult.setupInstructions || []).map(\n (ix: any) =>\n new TransactionInstruction({\n programId: new PublicKey(ix.programId),\n keys: ix.accounts.map((key: any) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n data: Buffer.from(ix.data, 'base64'),\n }),\n )\n\n return { setupInstructions, swapInstruction }\n }\n\n // Helper: Build bond instruction with specified amount\n const buildBondInstruction = (amount: bigint, maxPriceEncoded: Buffer, bondKeys: any[]) => {\n const u64Codec = getU64Codec()\n const amountEncoded = Buffer.from(u64Codec.encode(amount))\n const instructionData = Buffer.concat([DEPOSIT_DISCRIMINATOR, amountEncoded, maxPriceEncoded])\n\n return new TransactionInstruction({\n keys: bondKeys,\n programId: PROGRAM_ID,\n data: instructionData,\n })\n }\n\n // Helper: Ensure user's principal token account exists\n const ensureUserPrincipalAtaExists = async (\n connection: Connection,\n payer: PublicKey,\n principalMint: PublicKey,\n user: PublicKey,\n tokenProgram: PublicKey,\n ): Promise<{ ataAddress: PublicKey; createInstruction: TransactionInstruction | null }> => {\n const userPrincipalAta = await getAssociatedTokenAddress(principalMint, user, true, tokenProgram)\n\n try {\n // Check if account exists\n await getAccount(connection, userPrincipalAta, undefined, tokenProgram)\n return { ataAddress: userPrincipalAta, createInstruction: null }\n } catch {\n // Account doesn't exist, return instruction to create it\n const createAtaIx = createAssociatedTokenAccountInstruction(\n payer, // fee payer\n userPrincipalAta, // ATA to create\n user, // owner of ATA\n principalMint, // mint\n tokenProgram, // token program\n )\n return { ataAddress: userPrincipalAta, createInstruction: createAtaIx }\n }\n }\n\n // Helper: Track zap events\n const trackZapEvents = (txType: 'single-tx' | 'two-tx') => {\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bond',\n token1: getSymbol(inputToken),\n token2: bondData?.lpToken.symbol ?? '',\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: `zap-buy-${txType}`,\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n\n const handleZapCallback = async () => {\n if (loadingTx || !accountSolana || !bondData || !jupiterQuote || !signTransaction) return\n\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n try {\n setLoadingTx(true)\n const connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\n const jupiterApi = createJupiterApiClient()\n\n // STEP 1: Calculate bond parameters and prepare accounts\n const trueBondPriceWithoutFee = bondData?.trueBondPrices?.[0]?.trueBondPrice\n const maxPrice = slippageMaxPriceSolana(BigInt(trueBondPriceWithoutFee ?? '0'), slippage).toString()\n console.log(isDirectRoute ? 'Using direct route' : 'Using multi-hop route')\n const depositAmountForBond = isDirectRoute ? minimumDepositAmount : zapDepositAmount\n\n const amountBigInt = parseUnits(depositAmountForBond, bondData.lpToken.decimals[ChainId.SOL]!)\n\n const bondIssuancePda = new PublicKey(bondData.contractAddress[bondData.chainId]!)\n const principalMint = new PublicKey(bondData.lpToken.address[bondData.chainId]!)\n const payoutMint = new PublicKey(bondData.earnToken.address[bondData.chainId]!)\n const collection = new PublicKey(bondData.billNnftAddress[bondData.chainId]!)\n\n // Detect token programs for both mints (supports Token-2022)\n const [principalTokenProgram, payoutTokenProgram] = await Promise.all([\n getTokenProgramForMint(connection, principalMint),\n getTokenProgramForMint(connection, payoutMint),\n ])\n\n const bondIssuanceAccounts = (await getBondIssuanceAccountSolana([\n bondIssuancePda.toBase58(),\n ])) as BondIssuanceAccount[]\n if (!bondIssuanceAccounts) throw new Error('Failed to fetch bond issuance account')\n\n const bondIssuanceAccount = bondIssuanceAccounts[0]\n const feeRecipient = new PublicKey(bondIssuanceAccount.feePrincipalRecipient)\n const partnerRecipient = new PublicKey(bondIssuanceAccount.partnerPrincipalRecipient)\n const feePayoutRecipient = new PublicKey(bondIssuanceAccount.feePayoutRecipient)\n\n const bondTermPda = derivePda('bond_term', bondIssuancePda, PROGRAM_ID)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n\n const nftMint = Keypair.generate()\n const [bondPda] = PublicKey.findProgramAddressSync(\n [Buffer.from('bond'), bondIssuancePda.toBuffer(), nftMint.publicKey.toBuffer()],\n PROGRAM_ID,\n )\n\n // Ensure user's USDC account exists, get creation instruction if needed\n const { ataAddress: userPrincipalAta, createInstruction: createPrincipalAtaIx } =\n await ensureUserPrincipalAtaExists(\n connection,\n accountSolana,\n principalMint,\n accountSolana,\n principalTokenProgram,\n )\n const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram)\n const feePrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n feeRecipient,\n true,\n principalTokenProgram,\n )\n const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n partnerRecipient,\n true,\n principalTokenProgram,\n )\n const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } =\n await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, accountSolana)\n\n const u64Codec = getU64Codec()\n const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)))\n\n const bondKeys = [\n { pubkey: bondPda, isSigner: false, isWritable: true },\n { pubkey: nftMint.publicKey, isSigner: true, isWritable: true },\n { pubkey: accountSolana, isSigner: true, isWritable: true },\n { pubkey: bondPricingPda, isSigner: false, isWritable: true },\n { pubkey: bondTermPda, isSigner: false, isWritable: true },\n { pubkey: bondIssuancePda, isSigner: false, isWritable: true },\n { pubkey: collection, isSigner: false, isWritable: true },\n { pubkey: userPrincipalAta, isSigner: false, isWritable: true },\n { pubkey: feePrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: partnerPrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: feePayoutRecipientAta, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: principalMint, isSigner: false, isWritable: false },\n { pubkey: payoutMint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: principalTokenProgram, isSigner: false, isWritable: false }, // principal_token_program (dynamic)\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // payout_token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },\n ]\n\n // Build initial bond instruction (for single-tx attempt)\n const bondInstruction = buildBondInstruction(amountBigInt, maxPriceEncoded, bondKeys)\n\n // STEP 2: Get Jupiter swap instructions\n const swapResult = await jupiterApi.swapInstructionsPost({\n swapRequest: {\n quoteResponse: jupiterQuote,\n userPublicKey: accountSolana.toBase58(),\n wrapAndUnwrapSol: wrapAndUnwrapSol,\n dynamicComputeUnitLimit: true,\n prioritizationFeeLamports: {\n priorityLevelWithMaxLamports: {\n maxLamports: 4000000,\n priorityLevel: 'veryHigh',\n },\n },\n },\n })\n\n console.log('=== TRANSACTION SIZE ANALYSIS ===')\n console.log('Route used:', jupiterQuote.routePlan?.map((r) => r.swapInfo.label).join(' -> '))\n console.log('Swap accounts:', swapResult.swapInstruction.accounts.length)\n console.log('Setup instructions count:', swapResult.setupInstructions?.length || 0)\n\n let totalAccounts = swapResult.swapInstruction.accounts.length\n swapResult.setupInstructions?.forEach((ix, i) => {\n console.log(` Setup ${i}: ${ix.accounts.length} accounts`)\n totalAccounts += ix.accounts.length\n })\n\n console.log('Bond instruction accounts:', 20)\n console.log('Total accounts:', totalAccounts + 20)\n console.log('=== END ANALYSIS ===')\n\n // STEP 3: TRY SINGLE TRANSACTION (if direct route)\n if (isDirectRoute) {\n try {\n // Build swap instructions\n const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult)\n const setupIxs = [\n ...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []),\n ...(createPayoutFeeRecipientAtaIx ? [createPayoutFeeRecipientAtaIx] : []),\n ...setupInstructions,\n ]\n const allInstructions = [...setupIxs, swapInstruction, bondInstruction]\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n\n const combinedTx = new Transaction()\n combinedTx.add(...allInstructions)\n combinedTx.recentBlockhash = blockhash\n combinedTx.feePayer = accountSolana\n combinedTx.partialSign(nftMint)\n\n // Check size - account for signatures\n const messageSize = combinedTx.serializeMessage().length\n const numSignatures = combinedTx.signatures.length // Should be 2: nftMint + accountSolana\n const signatureOverhead = 1 + numSignatures * 64 // 1 byte for count + 64 bytes per signature\n const estimatedTxSize = messageSize + signatureOverhead\n\n console.log(`Combined transaction size: ${estimatedTxSize} bytes (limit: 1232 bytes)`)\n\n if (estimatedTxSize > 1232) {\n console.log('Transaction too large, falling back to two transactions')\n throw new Error('TRANSACTION_TOO_LARGE')\n }\n\n // Execute single transaction!\n console.log('Transaction fits. Executing combined swap + bond')\n const signedTx = await signTransaction(combinedTx)\n const txId = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction({ signature: txId, blockhash, lastValidBlockHeight }, 'confirmed')\n\n console.log('SINGLE transaction confirmed:', txId)\n\n // Track success\n trackZapEvents('single-tx')\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, txId)\n\n await new Promise((resolve) => setTimeout(resolve, 3000))\n addToastSuccess(txId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n return\n } catch (singleTxError: any) {\n if (singleTxError.message !== 'TRANSACTION_TOO_LARGE') {\n throw singleTxError\n }\n console.log('Falling back to two separate transactions...')\n }\n }\n\n // STEP 4: FALLBACK - TWO SEPARATE TRANSACTIONS\n console.log('Executing TWO separate transactions...')\n\n // Execute swap first\n const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult)\n const swapSetupIxs = [...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []), ...setupInstructions]\n const swapTx = new Transaction().add(...swapSetupIxs, swapInstruction)\n swapTx.feePayer = accountSolana\n const { blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid } =\n await connection.getLatestBlockhash('confirmed')\n swapTx.recentBlockhash = swapBlockhash\n\n const signedSwapTx = await signTransaction(swapTx)\n const swapTxId = await connection.sendRawTransaction(signedSwapTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction(\n { signature: swapTxId, blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid },\n 'confirmed',\n )\n console.log('Swap transaction confirmed:', swapTxId)\n\n // QUERY ACTUAL BALANCE RECEIVED FROM SWAP\n const principalTokenBalance = await connection.getTokenAccountBalance(userPrincipalAta)\n const actualAmount = BigInt(principalTokenBalance.value.amount)\n\n // REBUILD BOND INSTRUCTION WITH ACTUAL AMOUNT\n const actualBondInstruction = buildBondInstruction(actualAmount, maxPriceEncoded, bondKeys)\n\n const bondTx = new Transaction()\n if (createPayoutFeeRecipientAtaIx) bondTx.add(createPayoutFeeRecipientAtaIx)\n bondTx.add(actualBondInstruction)\n bondTx.feePayer = accountSolana\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n bondTx.recentBlockhash = blockhash\n bondTx.partialSign(nftMint)\n\n const signedBondTx = await signTransaction(bondTx)\n const bondTxId = await connection.sendRawTransaction(signedBondTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction({ signature: bondTxId, blockhash, lastValidBlockHeight }, 'confirmed')\n console.log('Bond transaction confirmed:', bondTxId)\n\n // Track both transactions\n trackZapEvents('two-tx')\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, bondTxId)\n\n await new Promise((resolve) => setTimeout(resolve, 3000))\n addToastSuccess(bondTxId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n } catch (error: any) {\n console.error('Error during zap + bond purchase:', error)\n addToastError(error?.message || 'Unknown error during swap and bond')\n\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error.message,\n extraInfo: {\n type: 'solanaJupiterZapBuyBond',\n error: error.message,\n isDirectRoute,\n quote: jupiterQuote,\n },\n chainId: bondChain,\n account: accountSolana.toString(),\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleBothPurchases = () => {\n if (loadingTx) return // Prevent duplicate calls\n setLoadingTx(true)\n if (isZap) {\n handleZapCallback().finally(() => setLoadingTx(false))\n } else {\n handleBuyCallback().finally(() => setLoadingTx(false))\n }\n }\n\n const handleOpenModal = () => {\n const bonus = trueBondPriceData?.bonusWithFee ?? 0\n if (bonus <= 0) {\n openNoBonusModal()\n } else {\n handleBothPurchases()\n }\n }\n\n // Modals\n // Optional bridge (LiFi adapter); without it the \"bridge to sol\" button is hidden.\n const bridge = getBridgeAdapter()\n const canBridge = !!bridge && bridge.supportsChain(ChainId.SOL)\n const [onOpenBridgeModal] = useModal(\n canBridge ? (\n <bridge.BridgeModal bondChain={ChainId.SOL} principalToken={bondData?.lpToken?.address?.[bondData?.chainId]} />\n ) : null,\n true,\n false,\n 'BridgeModal',\n )\n\n const [openNoBonusModal] = useModal(\n <NoBonusModal onAcknowledge={handleBothPurchases} showcaseTokenName={bondData?.showcaseTokenName} />,\n true,\n true,\n 'NoBonusModal',\n )\n // Effects\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0].token === 'NATIVE' ? 'NATIVE' : sortedZapList[0].token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n return bondData ? (\n <Flex\n className=\"modal-content ape:flex ape:flex-col ape:rounded-[10px] ape:bg-white2 ape:w-full ape:p-3.75 ape:md:p-5\"\n style={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}\n >\n <Flex className=\"modaltable-container ape:w-full ape:flex ape:flex-col ape:relative ape:gap-2.5\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} hidePromotionUi />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex className={clsx('ape:w-full', isProjectView ? 'ape:hidden ape:lg:flex' : 'ape:flex')}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZap}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n hidePromotionUi\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={bondData?.chainId}\n enableZap={true}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={inputTokenPrice}\n isConnected={!!accountSolana}\n />\n {bondData?.warningCard && (\n <Flex\n className=\"ape:w-full ape:justify-center ape:mt-[10px] ape:rounded-normal ape:p-[2px_10px]\"\n style={{ background: '#DE62F366' }}\n >\n <Text as=\"div\" size=\"12px\" className=\"ape:font-normal ape:flex ape:items-center ape:gap-[10px]\">\n <SafeHTMLComponent html={bondData?.warningCard} />\n {bondData?.chainId === ChainId.SONIC && bondData?.earnToken.symbol.toLowerCase() === 'moon' && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Text className=\"ape:normal-case\">\n Open the 'cog' icon menu in the top right and set the Slippage Tolerance to 5% or more.\n </Text>\n }\n width=\"315px\"\n placement=\"topRight\"\n transformTip=\"translate(9%, -10%)\"\n >\n <QuestionCircle width={14} color=\"textDisabledButton\" />\n </TooltipBubble>\n )}\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container ape:w-full ape:flex ape:relative ape:flex-row ape:justify-between\">\n <Flex className=\"button-container buy ape:justify-center ape:items-center ape:cursor-pointer ape:w-full\">\n {!accountSolana ? (\n <ConnectSolanaWalletButton />\n ) : (\n <Flex className=\"ape:w-full ape:gap-[10px] ape:flex-col ape:lg:flex-row\">\n {canBridge && (\n <Button\n variant=\"secondary\"\n onClick={() => onOpenBridgeModal()}\n onMouseEnter={bridge.preload}\n onFocus={bridge.preload}\n className=\"ape:w-full ape:lg:w-[35%] ape:text-[14px]! ape:lg:text-[16px]!\"\n >\n bridge to sol\n </Button>\n )}\n <Button\n className={clsx(\n 'action-button ape:w-full ape:text-[14px]! ape:lg:text-[16px]!',\n canBridge && 'ape:lg:w-[65%]',\n )}\n load={load}\n disabled={\n load ||\n bondData?.soldOut ||\n !accountSolana ||\n !inputValue ||\n parseFloat(inputValue) === 0 ||\n fetchingZapQuote ||\n zapError ||\n exceedsRealMaxBuy ||\n exceedsBalance ||\n (isZap && !jupiterQuote) ||\n SDKConfig.blockSales\n }\n onClick={handleOpenModal}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Insufficient balance'\n : zapError\n ? 'Swap quote failed'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : 'buy'}\n </Button>\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\n\nexport default BuyComponentSolana\n"],"names":["_jsx","_jsxs","ConnectSolanaWalletButton","_Fragment"],"mappings":"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"}
|
package/dist/adapters/solana/{ConnectSolanaWalletButton.js → views/ConnectSolanaWalletButton.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useSDKConfig } from '
|
|
3
|
-
import { openSolWalletConnector } from '
|
|
4
|
-
import Flex from '
|
|
5
|
-
import Button from '
|
|
2
|
+
import { useSDKConfig } from '../../../state/useSDKConfig.js';
|
|
3
|
+
import { openSolWalletConnector } from '../../../config/constants/walletConnectors.js';
|
|
4
|
+
import Flex from '../../../components/uikit-sdk/Flex/index.js';
|
|
5
|
+
import Button from '../../../components/uikit-sdk/Button/Button.js';
|
|
6
6
|
|
|
7
7
|
const ConnectSolanaWallet = ({ navBarFlag }) => {
|
|
8
8
|
const config = useSDKConfig();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectSolanaWalletButton.js","sources":["../../../../src/adapters/solana/views/ConnectSolanaWalletButton.tsx"],"sourcesContent":["import { useSDKConfig } from '../../../state/useSDKConfig'\nimport { openSolWalletConnector } from '../../../config/constants/walletConnectors'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport Button from '../../../components/uikit-sdk/Button/Button'\n\nconst ConnectSolanaWallet = ({ navBarFlag }: { navBarFlag?: boolean }) => {\n const config = useSDKConfig()\n const handleConnect = config?.openWalletConnectors?.sol ? openSolWalletConnector : undefined\n\n return (\n <Flex className=\"ape:h-full ape:items-center\" style={{ width: navBarFlag ? 'auto' : '100%' }}>\n <Button\n fullWidth\n onClick={handleConnect}\n className=\"ape:p-[10px]\"\n style={{ height: navBarFlag ? '32.5px' : '45px', backgroundColor: navBarFlag ? '#00c59a' : undefined }}\n disabled={!handleConnect}\n >\n Connect to Solana\n </Button>\n </Flex>\n )\n}\n\nexport default ConnectSolanaWallet\n"],"names":["_jsx"],"mappings":";;;;;;AAKA,MAAM,mBAAmB,GAAG,CAAC,EAAE,UAAU,EAA4B,KAAI;AACvE,IAAA,MAAM,MAAM,GAAG,YAAY,EAAE;AAC7B,IAAA,MAAM,aAAa,GAAG,MAAM,EAAE,oBAAoB,EAAE,GAAG,GAAG,sBAAsB,GAAG,SAAS;AAE5F,IAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,YAC1FA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,QACT,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,eAAe,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,EAAE,EACtG,QAAQ,EAAE,CAAC,aAAa,EAAA,QAAA,EAAA,mBAAA,EAAA,CAGjB,EAAA,CACJ;AAEX;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useSDKConfig } from '
|
|
3
|
-
import { openSolWalletConnector } from '
|
|
4
|
-
import Flex from '
|
|
5
|
-
import Button from '
|
|
6
|
-
import Text from '
|
|
2
|
+
import { useSDKConfig } from '../../../state/useSDKConfig.js';
|
|
3
|
+
import { openSolWalletConnector } from '../../../config/constants/walletConnectors.js';
|
|
4
|
+
import Flex from '../../../components/uikit-sdk/Flex/index.js';
|
|
5
|
+
import Button from '../../../components/uikit-sdk/Button/Button.js';
|
|
6
|
+
import Text from '../../../components/uikit-sdk/Text/index.js';
|
|
7
7
|
|
|
8
8
|
function ConnectToSolanaCard() {
|
|
9
9
|
const config = useSDKConfig();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectToSolanaBanner.js","sources":["../../../../src/adapters/solana/views/ConnectToSolanaBanner.tsx"],"sourcesContent":["import { useSDKConfig } from '../../../state/useSDKConfig'\nimport { openSolWalletConnector } from '../../../config/constants/walletConnectors'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport Button from '../../../components/uikit-sdk/Button/Button'\nimport Text from '../../../components/uikit-sdk/Text'\n\nexport default function ConnectToSolanaCard() {\n const config = useSDKConfig()\n const handleConnect = config?.openWalletConnectors?.sol ? openSolWalletConnector : undefined\n return (\n <Flex\n className=\"ape:w-full ape:h-[75px] ape:bg-cover ape:p-[10px] ape:rounded-[10px] ape:justify-between ape:items-center ape:border-none ape:cursor-pointer ape:hover:opacity-90\"\n style={{\n background: `url('https://ape.bond/images/connect-to-vm/solana-card-background.png') no-repeat center center`,\n backgroundSize: 'cover',\n }}\n onClick={handleConnect}\n >\n <Flex className=\"ape:w-full ape:max-w-[300px] ape:gap-[10px] ape:items-center\">\n <img\n src=\"https://ape.bond/images/connect-to-vm/solana-icon.png\"\n alt=\"solana icon\"\n width={30}\n height={30}\n style={{ borderRadius: '50px' }}\n />\n <Flex className=\"ape:flex-col\">\n <Text\n size=\"15px\"\n className=\"ape:font-bold ape:flex ape:items-center ape:gap-[5px]\"\n style={{ lineHeight: '18.5px' }}\n >\n Solana\n <img\n src=\"https://ape.bond/images/connect-to-vm/svm-compatible-wallets.png\"\n alt=\"solana compatible wallets\"\n width={43}\n height={17}\n />\n </Text>\n <div className=\"ape:font-normal ape:text-[10px] ape:text-gray-300\">\n Connect your wallet to view your Solana Bonds!\n </div>\n </Flex>\n </Flex>\n <Flex className=\"ape:min-w-[100px]\">\n <Button className=\"ape:border-none ape:h-[31px] ape:w-[210px] ape:xl:w-[100px] ape:text-[14px]! ape:font-bold ape:bg-text ape:border-text ape:enabled:hover:text-text ape:enabled:hover:bg-primary-button ape:text-primary-button\">\n Connect\n </Button>\n </Flex>\n </Flex>\n )\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMc,SAAU,mBAAmB,GAAA;AACzC,IAAA,MAAM,MAAM,GAAG,YAAY,EAAE;AAC7B,IAAA,MAAM,aAAa,GAAG,MAAM,EAAE,oBAAoB,EAAE,GAAG,GAAG,sBAAsB,GAAG,SAAS;IAC5F,QACEA,KAAC,IAAI,EAAA,EACH,SAAS,EAAC,mKAAmK,EAC7K,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,CAAA,+FAAA,CAAiG;AAC7G,YAAA,cAAc,EAAE,OAAO;SACxB,EACD,OAAO,EAAE,aAAa,EAAA,QAAA,EAAA,CAEtBA,KAAC,IAAI,EAAA,EAAC,SAAS,EAAC,8DAA8D,EAAA,QAAA,EAAA,CAC5EC,aACE,GAAG,EAAC,uDAAuD,EAC3D,GAAG,EAAC,aAAa,EACjB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAA,CAC/B,EACFD,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,CAC5BA,IAAA,CAAC,IAAI,IACH,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,uDAAuD,EACjE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CAAA,QAAA,EAG/BC,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAC,kEAAkE,EACtE,GAAG,EAAC,2BAA2B,EAC/B,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EAAA,CACV,CAAA,EAAA,CACG,EACPA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,gDAAA,EAAA,CAE5D,CAAA,EAAA,CACD,IACF,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,mBAAmB,EAAA,QAAA,EACjCA,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,iNAAiN,EAAA,QAAA,EAAA,SAAA,EAAA,CAE1N,EAAA,CACJ,CAAA,EAAA,CACF;AAEX;;;;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
4
|
-
import { usePopups } from '
|
|
4
|
+
import { usePopups } from '../../../state/popups/usePopups.js';
|
|
5
5
|
import { Connection, PublicKey, SystemProgram, TransactionInstruction, Transaction } from '@solana/web3.js';
|
|
6
|
-
import useUserBonds from '
|
|
7
|
-
import { MPL_CORE_PROGRAM_ID } from '
|
|
6
|
+
import useUserBonds from '../../../state/bonds/useUserBonds.js';
|
|
7
|
+
import { MPL_CORE_PROGRAM_ID } from '../constants/solanaConstants.js';
|
|
8
8
|
import { Buffer } from 'buffer';
|
|
9
|
-
import { getRPC } from '
|
|
10
|
-
import useSOLAccount from '
|
|
11
|
-
import Button from '
|
|
9
|
+
import { getRPC } from '../../../config/constants/networks.js';
|
|
10
|
+
import useSOLAccount from '../state/useSOLAccount.js';
|
|
11
|
+
import Button from '../../../components/uikit-sdk/Button/Button.js';
|
|
12
12
|
|
|
13
13
|
const TransferAction = ({ userBill, toAddress, disabled, }) => {
|
|
14
14
|
// Hooks
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransferActionSolana.js","sources":["../../../../src/adapters/solana/views/TransferActionSolana.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { UserBill } from '../../../types/yourbonds'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { usePopups } from '../../../state/popups/usePopups'\nimport { Connection, PublicKey, Transaction, TransactionInstruction, SystemProgram } from '@solana/web3.js'\nimport useUserBonds from '../../../state/bonds/useUserBonds'\nimport { MPL_CORE_PROGRAM_ID } from '../constants/solanaConstants'\nimport { Buffer } from 'buffer'\nimport { getRPC } from '../../../config/constants/networks'\nimport useSOLAccount from '../state/useSOLAccount'\nimport Button from '../../../components/uikit-sdk/Button/Button'\n\nconst TransferAction = ({\n userBill,\n toAddress,\n disabled,\n}: {\n userBill?: UserBill\n toAddress?: string\n disabled?: boolean\n}) => {\n // Hooks\n const wallet = useSOLAccount()\n const { refetch } = useUserBonds()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n const { addToastError, addToastSuccess } = usePopups()\n\n const load = loadingTx\n\n const handleTransfer = async () => {\n try {\n if (!wallet.publicKey || !wallet.signTransaction) {\n throw new Error('Wallet not connected')\n }\n\n setLoadingTx(true)\n\n const connection = new Connection(getRPC(ChainId.SOL))\n\n // MPL Core program ID\n if (!userBill?.id || !toAddress || !userBill || !userBill?.asset) return\n const asset = new PublicKey(userBill?.asset)\n const newOwner = new PublicKey(toAddress)\n const collection = new PublicKey(userBill.billNftAddress)\n\n // Create instruction data with discriminator (14) + null compression_proof\n // Since compression_proof is null, we just need discriminator + 1 byte for None option\n const discriminator = Buffer.from([14])\n const nullOption = Buffer.from([0]) // 0 = None for Option<CompressionProof>\n const data = Buffer.concat([discriminator, nullOption])\n\n // Build the accounts array according to MPL Core transfer instruction\n const accounts = [\n { pubkey: asset, isSigner: false, isWritable: true }, // asset\n { pubkey: collection, isSigner: false, isWritable: false }, // collection\n { pubkey: wallet.publicKey, isSigner: true, isWritable: true }, // payer\n { pubkey: wallet.publicKey, isSigner: true, isWritable: false }, // authority\n { pubkey: newOwner, isSigner: false, isWritable: false }, // new_owner\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false }, // system_program\n { pubkey: new PublicKey('noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV'), isSigner: false, isWritable: false }, // log_wrapper (SPL Noop Program)\n ]\n\n const transferInstruction = new TransactionInstruction({\n keys: accounts,\n programId: MPL_CORE_PROGRAM_ID,\n data,\n })\n\n const transaction = new Transaction().add(transferInstruction)\n\n // Get recent blockhash\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash()\n transaction.recentBlockhash = blockhash\n transaction.feePayer = wallet.publicKey\n\n // Sign and send transaction\n const signedTransaction = await wallet.signTransaction(transaction)\n const signature = await connection.sendRawTransaction(signedTransaction.serialize())\n\n // Confirm transaction\n await connection.confirmTransaction(\n {\n signature,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n refetch()\n addToastSuccess(signature, userBill?.bond?.chainId)\n } catch (error: any) {\n console.error('Error during NFT transfer:', error)\n addToastError(error?.message || 'Unknown error')\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <Button onClick={handleTransfer} load={load} disabled={load || disabled} fullWidth>\n transfer\n </Button>\n )\n}\n\nexport default TransferAction\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
-
import TokenInfoAndName from '
|
|
4
|
-
import { formatNumberSI } from '
|
|
5
|
-
import Button from '
|
|
6
|
-
import TooltipBubble from '
|
|
7
|
-
import Flex from '
|
|
8
|
-
import { getTimeLeftForFullyVested, getPendingVestingString, claimable, pending, getPercentageVested } from '
|
|
9
|
-
import useModal from '
|
|
10
|
-
import { usePopups } from '
|
|
11
|
-
import BondInfoTooltip from '
|
|
12
|
-
import { getTimePeriods } from '
|
|
3
|
+
import TokenInfoAndName from '../../../components/TokenInfoAndName/index.js';
|
|
4
|
+
import { formatNumberSI } from '../../../utils/formatNumber.js';
|
|
5
|
+
import Button from '../../../components/uikit-sdk/Button/Button.js';
|
|
6
|
+
import TooltipBubble from '../../../components/uikit-sdk/TooltipBubble/index.js';
|
|
7
|
+
import Flex from '../../../components/uikit-sdk/Flex/index.js';
|
|
8
|
+
import { getTimeLeftForFullyVested, getPendingVestingString, claimable, pending, getPercentageVested } from '../../../utils/displayHelpers.js';
|
|
9
|
+
import useModal from '../../../hooks/useModal.js';
|
|
10
|
+
import { usePopups } from '../../../state/popups/usePopups.js';
|
|
11
|
+
import BondInfoTooltip from '../../../components/Tooltip/Tooltip.js';
|
|
12
|
+
import { getTimePeriods } from '../../../utils/getTimePeriods.js';
|
|
13
13
|
import { Connection, PublicKey, TransactionInstruction, Transaction } from '@solana/web3.js';
|
|
14
14
|
import { ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token';
|
|
15
|
-
import useUserBonds from '
|
|
16
|
-
import { PROGRAM_ID, CLAIM_DISCRIMINATOR } from '
|
|
17
|
-
import { getRPC } from '
|
|
15
|
+
import useUserBonds from '../../../state/bonds/useUserBonds.js';
|
|
16
|
+
import { PROGRAM_ID, CLAIM_DISCRIMINATOR } from '../constants/solanaConstants.js';
|
|
17
|
+
import { getRPC } from '../../../config/constants/networks.js';
|
|
18
18
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
19
|
-
import useSOLAccount from '
|
|
20
|
-
import ProfitCard from '
|
|
21
|
-
import ProgressBar from '
|
|
22
|
-
import ProgressBarWrapper from '
|
|
23
|
-
import { useSDKConfig } from '
|
|
24
|
-
import YourBondsModal from '
|
|
25
|
-
import { derivePda } from '
|
|
26
|
-
import { reportError } from '
|
|
27
|
-
import { getTokenProgramForMint, getAtaWithCreateInstruction } from '
|
|
28
|
-
import More from '
|
|
19
|
+
import useSOLAccount from '../state/useSOLAccount.js';
|
|
20
|
+
import ProfitCard from '../../../views/YourBonds/components/ProfitCard/ProfitCard.js';
|
|
21
|
+
import ProgressBar from '../../../components/ProgressBar/ProgressBar.js';
|
|
22
|
+
import ProgressBarWrapper from '../../../components/ProgressBar/ProgressBarWrapper.js';
|
|
23
|
+
import { useSDKConfig } from '../../../state/useSDKConfig.js';
|
|
24
|
+
import YourBondsModal from '../../../views/YourBondsModal/YourBondsModal.js';
|
|
25
|
+
import { derivePda } from '../utils/derivePda.js';
|
|
26
|
+
import { reportError } from '../../../utils/reportError.js';
|
|
27
|
+
import { getTokenProgramForMint, getAtaWithCreateInstruction } from '../utils/solanaAtaHelper.js';
|
|
28
|
+
import More from '../../../components/uikit-sdk/Svg/Icons/More.js';
|
|
29
29
|
|
|
30
30
|
const UserBondRowSolana = ({ bill }) => {
|
|
31
31
|
// Hooks
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserBondRowSolana.js","sources":["../../../../src/adapters/solana/views/UserBondRowSolana.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport TokenInfoAndName from '../../../components/TokenInfoAndName'\nimport { formatNumberSI } from '../../../utils/formatNumber'\nimport Button from '../../../components/uikit-sdk/Button/Button'\nimport TooltipBubble from '../../../components/uikit-sdk/TooltipBubble'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport { UserBill } from '../../../types/yourbonds'\nimport {\n claimable,\n getPendingVestingString,\n getPercentageVested,\n getTimeLeftForFullyVested,\n pending,\n} from '../../../utils/displayHelpers'\nimport useModal from '../../../hooks/useModal'\nimport { usePopups } from '../../../state/popups/usePopups'\nimport Tooltip from '../../../components/Tooltip/Tooltip'\nimport { getTimePeriods } from '../../../utils/getTimePeriods'\nimport { Connection, PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js'\nimport { ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport useUserBonds from '../../../state/bonds/useUserBonds'\nimport { CLAIM_DISCRIMINATOR, PROGRAM_ID } from '../constants/solanaConstants'\nimport { getRPC } from '../../../config/constants/networks'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport useSOLAccount from '../state/useSOLAccount'\nimport ProfitCard from '../../../views/YourBonds/components/ProfitCard/ProfitCard'\nimport ProgressBar from '../../../components/ProgressBar/ProgressBar'\nimport ProgressBarWrapper from '../../../components/ProgressBar/ProgressBarWrapper'\nimport { useSDKConfig } from '../../../state/useSDKConfig'\nimport YourBondsModal from '../../../views/YourBondsModal/YourBondsModal'\nimport { derivePda } from '../utils/derivePda'\nimport { reportError } from '../../../utils/reportError'\nimport { getAtaWithCreateInstruction, getTokenProgramForMint } from '../utils/solanaAtaHelper'\nimport More from '../../../components/uikit-sdk/Svg/Icons/More'\n\nconst UserBondRowSolana = ({ bill }: { bill: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const { publicKey: accountSolana, signTransaction } = useSOLAccount()\n const { addToastError, addToastSuccess } = usePopups()\n const { refetch } = useUserBonds()\n const connection = new Connection(getRPC(ChainId.SOL))\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\n const earnTokenPrice = parseFloat(bill?.bond?.payoutTokenPrice ?? '0')\n const vestingCliff = bill?.bond?.vestingCliff\n const currentTime = Math.round(new Date().getTime() / 1000)\n const vestingStartTimestamp = parseInt(bill?.vestingStartTimestamp ?? '0')\n const isPendingCliff = vestingCliff ? currentTime - vestingStartTimestamp < vestingCliff : false\n const cliffCountdown = getTimePeriods(vestingStartTimestamp + (vestingCliff ?? 0) - currentTime, true)\n\n const [onOpenPurchasedBond] = useModal(<YourBondsModal userBill={bill} />)\n\n const handleClaim = async () => {\n // Early return guard - prevent double execution\n if (loadingTx || !accountSolana) return\n\n try {\n setLoadingTx(true)\n const earnTokenAddress = bill?.bond?.earnToken?.address?.[bill?.bond?.chainId]\n const contractAddress = bill?.bond?.contractAddress?.[bill?.bond?.chainId]\n\n if (!earnTokenAddress || !bill.asset || !contractAddress || !accountSolana) return\n\n const payoutMint = new PublicKey(earnTokenAddress)\n const bondIssuancePda = new PublicKey(contractAddress)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n const nftMint = new PublicKey(bill.asset)\n\n // Detect token program for payout mint (supports Token-2022)\n const payoutTokenProgram = await getTokenProgramForMint(connection, payoutMint)\n\n const [bondTermPda] = PublicKey.findProgramAddressSync(\n [new TextEncoder().encode('bond_term'), bondIssuancePda.toBuffer()],\n PROGRAM_ID,\n )\n\n const [bondPda] = PublicKey.findProgramAddressSync(\n [new TextEncoder().encode('bond'), bondIssuancePda.toBuffer(), nftMint.toBuffer()],\n PROGRAM_ID,\n )\n\n // Get user payout ATA and creation instruction if needed\n const { address: userPayoutAta, createInstruction: createAtaIx } = await getAtaWithCreateInstruction(\n connection,\n payoutMint,\n accountSolana,\n )\n\n // Treasury ATA (standard associated token account for bond issuance PDA)\n const { address: treasuryAta, createInstruction: createTreasuryAtaIx } = await getAtaWithCreateInstruction(\n connection,\n payoutMint,\n bondIssuancePda,\n accountSolana,\n )\n\n // Build keys list\n const keys = [\n { pubkey: bondPda as PublicKey, isSigner: false, isWritable: true },\n { pubkey: bondTermPda as PublicKey, isSigner: false, isWritable: false },\n { pubkey: bondIssuancePda as PublicKey, isSigner: false, isWritable: false },\n { pubkey: bondPricingPda as PublicKey, isSigner: false, isWritable: true },\n { pubkey: accountSolana as PublicKey, isSigner: true, isWritable: true }, // user\n { pubkey: nftMint as PublicKey, isSigner: false, isWritable: true },\n { pubkey: userPayoutAta as PublicKey, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: payoutMint, isSigner: false, isWritable: false }, // payout_mint\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: new PublicKey('CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'), isSigner: false, isWritable: false }, // mplCoreProgram\n { pubkey: PROGRAM_ID, isSigner: false, isWritable: false }, // passing programId is the same as passing null\n ]\n\n // Build Claim Instruction (no args → just discriminator)\n const claimInstruction = new TransactionInstruction({\n keys,\n programId: PROGRAM_ID,\n data: CLAIM_DISCRIMINATOR,\n })\n\n // Build Transaction - include ATA creation if needed\n const transaction = new Transaction()\n if (createTreasuryAtaIx) transaction.add(createTreasuryAtaIx)\n if (createAtaIx) transaction.add(createAtaIx)\n transaction.add(claimInstruction)\n transaction.feePayer = accountSolana\n\n // Get fresh blockhash right before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('finalized')\n transaction.recentBlockhash = blockhash\n\n if (!signTransaction) return\n const signedTx = await signTransaction(transaction)\n\n // Send with better error handling\n const txHash = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'finalized',\n maxRetries: 0, // Don't auto-retry to avoid duplicates\n })\n\n await connection.confirmTransaction(\n {\n signature: txHash,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n const txStatus = await connection.getSignatureStatus(txHash, { searchTransactionHistory: true })\n if (txStatus?.value?.confirmationStatus === 'confirmed' || txStatus?.value?.confirmationStatus === 'finalized') {\n console.log('Tx confirmed on-chain, refetching bonds')\n refetch()\n addToastSuccess(txHash, ChainId.SOL)\n }\n } catch (error: any) {\n console.error('Claim failed:', error)\n\n // Better error messaging for duplicate transactions\n if (error?.message?.includes('already been processed')) {\n addToastError('Transaction already processed. Please wait and try again.')\n } else {\n addToastError(error?.message ?? 'Unknown error')\n }\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n chainId: ChainId.SOL,\n account: accountSolana?.toBase58() ?? '',\n extraInfo: { type: 'claim', bill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <div\n className=\"your-bonds ape:flex ape:flex-col ape:w-full ape:justify-around ape:bg-white2 ape:mb-[5px] ape:rounded-[10px] ape:cursor-pointer ape:hover:bg-white3 ape:min-[1000px]:flex-row ape:min-[1000px]:h-[70px]\"\n onClick={() => onOpenPurchasedBond()}\n >\n <div className=\"token-info-container ape:flex ape:w-full ape:min-[1000px]:w-[30%] ape:min-[1000px]:min-w-[300px]\">\n <TokenInfoAndName\n tokenSymbol={bill.bond?.earnToken.symbol}\n chain={bill?.bond?.chainId}\n vestEnds={getTimeLeftForFullyVested(bill) > 0 ? `Ends in ${getPendingVestingString(bill)}` : `Fully Vested`}\n isHotBond\n />\n <div className=\"tooltip-column ape:flex ape:w-[50px] ape:items-center ape:ml-[10px] ape:min-[1000px]:hidden\">\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Tooltip\n earnTokenContract={bill?.bond?.earnToken.address[bill?.bond.chainId] || ''}\n earnTokenSymbol={bill?.bond?.earnToken.symbol || ''}\n bondContract={bill?.address ?? ''}\n projectLink={bill?.bond?.projectLink}\n twitter={bill?.bond?.twitter}\n chain={bill?.bond?.chainId as number}\n cgId={bill?.bond?.cgId}\n dexscreener={bill?.bond?.dexscreener}\n />\n }\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(5%, 0%)\"\n >\n <Flex className=\"ape:opacity-80\">\n <More width=\"25px\" />\n </Flex>\n </TooltipBubble>\n </div>\n </div>\n <div className=\"your-bonds-columns-container ape:flex ape:flex-col ape:items-center ape:justify-end ape:w-full ape:min-[1000px]:w-[70%] ape:min-[1000px]:justify-between ape:min-[1000px]:flex-row ape:min-[1000px]:pr-[20px]\">\n <Flex className=\"ape:w-[125px]\">\n <ProfitCard userBond={bill} />\n </Flex>\n <div className=\"your-bonds-content ape:flex ape:items-center ape:justify-between ape:w-full ape:px-[10px] ape:text-[14px] ape:min-[1000px]:w-[130px] ape:min-[1000px]:justify-center ape:min-[1000px]:mt-0\">\n <div className=\"your-bonds-content-title ape:flex ape:text-[12px] ape:font-medium ape:opacity-60 ape:min-[1000px]:hidden\">\n Claimable\n </div>\n <div className=\"your-bonds-content-tokens-amount ape:flex ape:items-center ape:text-[14px] ape:font-semibold\">\n {formatNumberSI(claimable(bill), 4)}\n <div className=\"your-bonds-content-tokens-usd-amount ape:opacity-60 ape:text-[12px] ape:font-normal ape:ml-[4px] ape:text-text-disabled-button\">\n {`($${(claimable(bill) * earnTokenPrice).toFixed(2)})`}\n </div>\n </div>\n </div>\n <div className=\"your-bonds-content ape:flex ape:items-center ape:justify-between ape:w-full ape:px-[10px] ape:text-[14px] ape:min-[1000px]:w-[130px] ape:min-[1000px]:justify-center ape:min-[1000px]:mt-0\">\n <div className=\"your-bonds-content-title ape:flex ape:text-[12px] ape:font-medium ape:opacity-60 ape:min-[1000px]:hidden\">\n Pending\n </div>\n <div className=\"your-bonds-content-tokens-amount ape:flex ape:items-center ape:text-[14px] ape:font-semibold\">\n {formatNumberSI(pending(bill), 4)}\n <div className=\"your-bonds-content-tokens-usd-amount ape:opacity-60 ape:text-[12px] ape:font-normal ape:ml-[4px] ape:text-text-disabled-button\">\n {`($${(pending(bill) * earnTokenPrice).toFixed(2)})`}\n </div>\n </div>\n </div>\n <div className=\"your-bonds-content hide-mobile ape:hidden ape:min-[1000px]:flex\">\n <ProgressBarWrapper\n title={''}\n value={<ProgressBar value={getPercentageVested(bill)} />}\n style={{\n width: '127px',\n height: '25px',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n hideOnMobile\n showTooltip={true}\n toolTip={\n getTimeLeftForFullyVested(bill) > 0\n ? `Fully vested in ${getPendingVestingString(bill)}.`\n : `Fully Vested.`\n }\n />\n </div>\n <div className=\"your-bonds-column-button ape:flex ape:w-full ape:items-center ape:justify-center ape:p-[10px] ape:min-[1000px]:w-[210px] ape:min-[1000px]:p-0\">\n <Button\n className=\"button ape:text-[14px]! ape:p-[6px] ape:h-[30px]\"\n disabled={claimable(bill) === 0 || loadingTx || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n fullWidth\n >\n {isPendingCliff\n ? `Claimable in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`\n : 'Claim'}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n\nexport default UserBondRowSolana\n"],"names":["_jsx","_jsxs","Tooltip"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suiConstants.js","sources":["../../../../src/adapters/sui/constants/suiConstants.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Env gating — use NEXT_PUBLIC_SUI_NETWORK to control mainnet vs testnet.\n// Defaults to testnet until mainnet contracts are deployed and verified.\n// Set NEXT_PUBLIC_SUI_NETWORK=mainnet to switch to mainnet.\n// ---------------------------------------------------------------------------\nexport const IS_SUI_MAINNET = true\n\nexport const SUI_NETWORK: 'mainnet' | 'testnet' = IS_SUI_MAINNET ? 'mainnet' : 'testnet'\n\n// ---------------------------------------------------------------------------\n// Package ID (single Move package containing bond, factory, treasury modules)\n// ---------------------------------------------------------------------------\n// Testnet address is the current apebond-move-sui deployment.\n// MAINNET-TODO: Replace with your mainnet package ID after deploying contracts.\nconst SUI_PACKAGE_ID_TESTNET = '0x50c08fbf9c330f7658e1400f847f46b76165c8a68630e09a2d5ade0ceaa47264'\nconst SUI_PACKAGE_ID_MAINNET = '0x802ed2854f6523fc106644da079e0758ca759f63d9d577774b79c51b91f1a460'\n\nexport const SUI_PACKAGE_ID = IS_SUI_MAINNET ? SUI_PACKAGE_ID_MAINNET : SUI_PACKAGE_ID_TESTNET\n\n// Warn loudly if we ever end up in production with the placeholder address —\n// that would silently break every Sui interaction.\nif (\n typeof window !== 'undefined' &&\n IS_SUI_MAINNET &&\n SUI_PACKAGE_ID === SUI_PACKAGE_ID_MAINNET &&\n SUI_PACKAGE_ID_MAINNET.startsWith('0x0000')\n) {\n console.warn(\n '[ApeBond SDK] SUI_PACKAGE_ID is still the placeholder in production. ' +\n 'Replace SUI_PACKAGE_ID_MAINNET in src/constants/suiConstants.ts before shipping.',\n )\n}\n\n// ---------------------------------------------------------------------------\n// Module / entry function paths (stable across networks)\n// ---------------------------------------------------------------------------\n// Built directly from `SUI_PACKAGE_ID` so each path follows the\n// `package::module::function` convention used by the Sui Move VM.\n// export const SUI_BOND_MODULE = `${SUI_PACKAGE_ID}::bond`\n\n// Entry functions (write path)\nexport const SUI_DEPOSIT_FUNCTION = `${SUI_PACKAGE_ID}::bond::deposit`\nexport const SUI_CLAIM_FUNCTION = `${SUI_PACKAGE_ID}::bond::claim`\n\n// View / read functions\n// export const SUI_VIEW_MARKET_INFO = `${SUI_PACKAGE_ID}::bond::market_info`\n// export const SUI_VIEW_BILL_INFO = `${SUI_PACKAGE_ID}::bond::bill_info`\n// export const SUI_VIEW_VESTING_PROGRESS = `${SUI_PACKAGE_ID}::bond::vesting_progress`\n// export const SUI_VIEW_USER_BILLS = `${SUI_PACKAGE_ID}::bond_nft::user_bills`\n\n// ---------------------------------------------------------------------------\n// Placeholder bill image (shown until backend enrichment is available)\n// ---------------------------------------------------------------------------\nexport const SUI_PLACEHOLDER_BILL_IMAGE = 'https://www.ape.bond/images/bills/hidden-bill.jpg'\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG;AAU9B,MAAM,sBAAsB,GAAG,oEAAoE;AAE5F,MAAM,cAAc,GAAoB,sBAAsB;AAErE;AACA;AACA,IACE,OAAO,MAAM,KAAK,WAAW;IAC7B,cAAc;AACd,IAAA,cAAc,KAAK,sBAAsB;AACzC,IAAA,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC3C;IACA,OAAO,CAAC,IAAI,CACV,uEAAuE;AACrE,QAAA,kFAAkF,CACrF;AACH;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACO,MAAM,oBAAoB,GAAG,CAAA,EAAG,cAAc;AAC9C,MAAM,kBAAkB,GAAG,CAAA,EAAG,cAAc;AAEnD;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACO,MAAM,0BAA0B,GAAG;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suiZapTokens.js","sources":["../../../../src/adapters/sui/constants/suiZapTokens.ts"],"sourcesContent":["// =============================================================================\n// Sui zap tokens — static list of tokens available for zap on Sui\n// =============================================================================\n//\n// Equivalent to zapInputTokens[ChainId.SOL] from @ape.swap/apeswap-lists.\n// Until that package supports Sui, we maintain this local list.\n//\n// SUI native is NOT included here — it is covered by the 'NATIVE' entry that\n// useSortedZapList injects automatically (via WNATIVE[ChainId.SUI]).\n// Including it would cause a duplicate in the token selector.\n//\n// TODO(sui): Move to @ape.swap/apeswap-lists when it supports Sui.\n\nimport { ChainId, Token, zapInputTokens } from '@ape.swap/apeswap-lists'\n\n// SUI entry used only by findSuiZapToken for zap quote resolution.\n// Not in SUI_ZAP_TOKENS to avoid duplicate in the selector (NATIVE covers it).\nconst SUI_TOKEN: Token = {\n symbol: 'SUI',\n address: { [ChainId.SUI]: '0x2::sui::SUI' },\n decimals: { [ChainId.SUI]: 9 },\n active: true,\n}\n\n/**\n * Find a zap token by its address. Includes SUI even though it's not in the\n * selector list (NATIVE resolves to SUI for quote purposes).\n */\nexport const findSuiZapToken = (address: string | undefined): Token | undefined => {\n if (!address) return undefined\n if (address.toLowerCase() === '0x2::sui::sui') return SUI_TOKEN\n return zapInputTokens?.[ChainId.SUI]?.find((t) => t.address[ChainId.SUI]?.toLowerCase() === address.toLowerCase())\n}\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA,MAAM,SAAS,GAAU;AACvB,IAAA,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,eAAe,EAAE;IAC3C,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE;AAC9B,IAAA,MAAM,EAAE,IAAI;CACb;AAED;;;AAGG;AACI,MAAM,eAAe,GAAG,CAAC,OAA2B,KAAuB;AAChF,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,SAAS;AAC9B,IAAA,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe;AAAE,QAAA,OAAO,SAAS;AAC/D,IAAA,OAAO,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;AACpH;;;;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
2
|
-
import SuiAccountBridge from './SuiAccountBridge.js';
|
|
3
|
-
import { fetchBondsDataSUI } from './fetchBondsDataSui.js';
|
|
4
|
-
import { fetchUsersBondsSUI } from './fetchUsersBondsSUI.js';
|
|
5
|
-
import { getTokensBalanceSui, getTokenBalanceSui } from './useCurrencyBalanceSui.js';
|
|
6
|
-
import BuyComponentSui from './BuyComponentSui.js';
|
|
7
|
-
import UserBondRowSui from './UserBondRowSui.js';
|
|
8
|
-
import ActionsSui from './ActionsSui.js';
|
|
9
|
-
import TransferActionSui from './TransferActionSui.js';
|
|
10
|
-
import ClaimAllActionSui from './ClaimAllActionSui.js';
|
|
11
|
-
import ConnectToSuiBanner from './ConnectToSuiBanner.js';
|
|
2
|
+
import SuiAccountBridge from './state/SuiAccountBridge.js';
|
|
3
|
+
import { fetchBondsDataSUI } from './state/fetchBondsDataSui.js';
|
|
4
|
+
import { fetchUsersBondsSUI } from './state/fetchUsersBondsSUI.js';
|
|
5
|
+
import { getTokensBalanceSui, getTokenBalanceSui } from './state/useCurrencyBalanceSui.js';
|
|
6
|
+
import BuyComponentSui from './views/BuyComponentSui.js';
|
|
7
|
+
import UserBondRowSui from './views/UserBondRowSui.js';
|
|
8
|
+
import ActionsSui from './views/ActionsSui.js';
|
|
9
|
+
import TransferActionSui from './views/TransferActionSui.js';
|
|
10
|
+
import ClaimAllActionSui from './views/ClaimAllActionSui.js';
|
|
11
|
+
import ConnectToSuiBanner from './views/ConnectToSuiBanner.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Sui bonds. Requires `@mysten/dapp-kit` and `@mysten/sui`, and the consumer must mount dapp-kit's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/adapters/sui/index.ts"],"sourcesContent":["import { ChainId } from '@ape.swap/apeswap-lists'\nimport type { ChainAdapter } from '../types'\nimport SuiAccountBridge from './SuiAccountBridge'\nimport { fetchBondsDataSUI } from './fetchBondsDataSui'\nimport { fetchUsersBondsSUI } from './fetchUsersBondsSUI'\nimport { getTokenBalanceSui, getTokensBalanceSui } from './useCurrencyBalanceSui'\nimport BuyComponentSui from './BuyComponentSui'\nimport UserBondRowSui from './UserBondRowSui'\nimport ActionsSui from './ActionsSui'\nimport TransferActionSui from './TransferActionSui'\nimport ClaimAllActionSui from './ClaimAllActionSui'\nimport ConnectToSuiBanner from './ConnectToSuiBanner'\n\n/**\n * Sui bonds. Requires `@mysten/dapp-kit` and `@mysten/sui`, and the consumer must mount dapp-kit's\n * `SuiClientProvider` + `WalletProvider` (see docs/PLAN_CHAIN_ADAPTERS.md, section 3.2).\n */\nexport const suiAdapter: ChainAdapter = {\n ecosystem: 'sui',\n supportsChain: (chainId) => chainId === ChainId.SUI,\n AccountBridge: SuiAccountBridge,\n\n // Sui bonds are always read on-chain; api-v2 has no Sui support, so bills keep their on-chain metadata.\n usesRealtimeApi: false,\n fetchBondsData: (_chainId, bonds, tokenPrices) => fetchBondsDataSUI(bonds, tokenPrices),\n fetchUserBonds: (_chainId, account, bonds, tokenPrices) => fetchUsersBondsSUI(account, bonds, tokenPrices),\n enrichUserBondsViaApi: false,\n getTokenBalance: (_chainId, currency, account) => getTokenBalanceSui(currency, account),\n getTokensBalances: (_chainId, account, tokens) => getTokensBalanceSui(account, tokens),\n\n BuyComponent: BuyComponentSui,\n UserBondRow: UserBondRowSui,\n BondActions: ActionsSui,\n TransferAction: TransferActionSui,\n ClaimAllAction: ClaimAllActionSui,\n ConnectBanner: ConnectToSuiBanner,\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAaA;;;AAGG;AACI,MAAM,UAAU,GAAiB;AACtC,IAAA,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,CAAC,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC,GAAG;AACnD,IAAA,aAAa,EAAE,gBAAgB;;AAG/B,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,KAAK,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC;AACvF,IAAA,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,KAAK,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC;AAC1G,IAAA,qBAAqB,EAAE,KAAK;AAC5B,IAAA,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,KAAK,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvF,IAAA,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;AAEtF,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,aAAa,EAAE,kBAAkB;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/adapters/sui/index.ts"],"sourcesContent":["import { ChainId } from '@ape.swap/apeswap-lists'\nimport type { ChainAdapter } from '../types'\nimport SuiAccountBridge from './state/SuiAccountBridge'\nimport { fetchBondsDataSUI } from './state/fetchBondsDataSui'\nimport { fetchUsersBondsSUI } from './state/fetchUsersBondsSUI'\nimport { getTokenBalanceSui, getTokensBalanceSui } from './state/useCurrencyBalanceSui'\nimport BuyComponentSui from './views/BuyComponentSui'\nimport UserBondRowSui from './views/UserBondRowSui'\nimport ActionsSui from './views/ActionsSui'\nimport TransferActionSui from './views/TransferActionSui'\nimport ClaimAllActionSui from './views/ClaimAllActionSui'\nimport ConnectToSuiBanner from './views/ConnectToSuiBanner'\n\n/**\n * Sui bonds. Requires `@mysten/dapp-kit` and `@mysten/sui`, and the consumer must mount dapp-kit's\n * `SuiClientProvider` + `WalletProvider` (see docs/PLAN_CHAIN_ADAPTERS.md, section 3.2).\n */\nexport const suiAdapter: ChainAdapter = {\n ecosystem: 'sui',\n supportsChain: (chainId) => chainId === ChainId.SUI,\n AccountBridge: SuiAccountBridge,\n\n // Sui bonds are always read on-chain; api-v2 has no Sui support, so bills keep their on-chain metadata.\n usesRealtimeApi: false,\n fetchBondsData: (_chainId, bonds, tokenPrices) => fetchBondsDataSUI(bonds, tokenPrices),\n fetchUserBonds: (_chainId, account, bonds, tokenPrices) => fetchUsersBondsSUI(account, bonds, tokenPrices),\n enrichUserBondsViaApi: false,\n getTokenBalance: (_chainId, currency, account) => getTokenBalanceSui(currency, account),\n getTokensBalances: (_chainId, account, tokens) => getTokensBalanceSui(account, tokens),\n\n BuyComponent: BuyComponentSui,\n UserBondRow: UserBondRowSui,\n BondActions: ActionsSui,\n TransferAction: TransferActionSui,\n ClaimAllAction: ClaimAllActionSui,\n ConnectBanner: ConnectToSuiBanner,\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAaA;;;AAGG;AACI,MAAM,UAAU,GAAiB;AACtC,IAAA,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,CAAC,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC,GAAG;AACnD,IAAA,aAAa,EAAE,gBAAgB;;AAG/B,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,KAAK,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC;AACvF,IAAA,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,KAAK,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC;AAC1G,IAAA,qBAAqB,EAAE,KAAK;AAC5B,IAAA,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,KAAK,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvF,IAAA,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;AAEtF,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,aAAa,EAAE,kBAAkB;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import useSUIAccount from './useSUIAccount.js';
|
|
2
|
-
import { usePublishChainAccount } from '
|
|
2
|
+
import { usePublishChainAccount } from '../../../state/chainAccount/useChainAccount.js';
|
|
3
3
|
|
|
4
4
|
/** Publishes the connected Sui account (or the injected `suiAddress`) for core code; see ChainAdapter.AccountBridge. */
|
|
5
5
|
const SuiAccountBridge = () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuiAccountBridge.js","sources":["../../../../src/adapters/sui/state/SuiAccountBridge.tsx"],"sourcesContent":["import useSUIAccount from './useSUIAccount'\nimport { usePublishChainAccount } from '../../../state/chainAccount/useChainAccount'\n\n/** Publishes the connected Sui account (or the injected `suiAddress`) for core code; see ChainAdapter.AccountBridge. */\nconst SuiAccountBridge = () => {\n const { address } = useSUIAccount()\n usePublishChainAccount('sui', { address, connected: !!address })\n return null\n}\n\nexport default SuiAccountBridge\n"],"names":[],"mappings":";;;AAGA;AACA,MAAM,gBAAgB,GAAG,MAAK;AAC5B,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE;AACnC,IAAA,sBAAsB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AAChE,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BillsConfig } from '@ape.swap/apeswap-lists';
|
|
2
|
-
import { BondsData } from '
|
|
3
|
-
import { TokenPrices } from '
|
|
2
|
+
import { BondsData } from '../../../types/bonds';
|
|
3
|
+
import { TokenPrices } from '../../../state/tokenPrices/useTokenPrices';
|
|
4
4
|
/**
|
|
5
5
|
* Enrich Sui bond configs into full BondsData objects.
|
|
6
6
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
2
|
-
import { resolveBondTokenPrices } from '
|
|
3
|
-
import { getSuiClient } from '
|
|
4
|
-
import { formatUnits } from '
|
|
2
|
+
import { resolveBondTokenPrices } from '../../../state/tokenPrices/resolveTokenPrice.js';
|
|
3
|
+
import { getSuiClient } from '../utils/suiHelpers.js';
|
|
4
|
+
import { formatUnits } from '../../../utils/fixedPoint.js';
|
|
5
5
|
|
|
6
6
|
// =============================================================================
|
|
7
7
|
// Sui bond enrichment — builds BondsData[] from BillsConfig[] + prices
|