@ape.swap/bonds-sdk 7.0.0-test.3 → 7.0.0-test.5

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.
Files changed (379) hide show
  1. package/README.md +18 -27
  2. package/dist/adapters/aptos/index.js +10 -10
  3. package/dist/adapters/aptos/index.js.map +1 -1
  4. package/dist/adapters/aptos/{AptosAccountBridge.js → state/AptosAccountBridge.js} +1 -1
  5. package/dist/adapters/aptos/state/AptosAccountBridge.js.map +1 -0
  6. package/dist/adapters/aptos/{fetchBondsDataAptos.d.ts → state/fetchBondsDataAptos.d.ts} +2 -2
  7. package/dist/adapters/aptos/{fetchBondsDataAptos.js → state/fetchBondsDataAptos.js} +3 -3
  8. package/dist/adapters/aptos/state/fetchBondsDataAptos.js.map +1 -0
  9. package/dist/adapters/aptos/{fetchUsersBondsAptos.d.ts → state/fetchUsersBondsAptos.d.ts} +2 -2
  10. package/dist/adapters/aptos/{fetchUsersBondsAptos.js → state/fetchUsersBondsAptos.js} +4 -4
  11. package/dist/adapters/aptos/state/fetchUsersBondsAptos.js.map +1 -0
  12. package/dist/adapters/aptos/{useAPTAccount.js → state/useAPTAccount.js} +2 -2
  13. package/dist/adapters/aptos/state/useAPTAccount.js.map +1 -0
  14. package/dist/adapters/aptos/{useAptosZapQuote.d.ts → state/useAptosZapQuote.d.ts} +2 -2
  15. package/dist/adapters/aptos/{useAptosZapQuote.js → state/useAptosZapQuote.js} +4 -4
  16. package/dist/adapters/aptos/state/useAptosZapQuote.js.map +1 -0
  17. package/dist/adapters/aptos/{useCurrencyBalanceAptos.js → state/useCurrencyBalanceAptos.js} +2 -2
  18. package/dist/adapters/aptos/state/useCurrencyBalanceAptos.js.map +1 -0
  19. package/dist/adapters/aptos/{aptosHelpers.d.ts → utils/aptosHelpers.d.ts} +1 -1
  20. package/dist/adapters/aptos/{aptosHelpers.js → utils/aptosHelpers.js} +1 -1
  21. package/dist/adapters/aptos/utils/aptosHelpers.js.map +1 -0
  22. package/dist/adapters/aptos/{ActionsAptos.d.ts → views/ActionsAptos.d.ts} +1 -1
  23. package/dist/adapters/aptos/{ActionsAptos.js → views/ActionsAptos.js} +11 -11
  24. package/dist/adapters/aptos/views/ActionsAptos.js.map +1 -0
  25. package/dist/adapters/aptos/{BuyComponentAptos.js → views/BuyComponentAptos.js} +29 -29
  26. package/dist/adapters/aptos/views/BuyComponentAptos.js.map +1 -0
  27. package/dist/adapters/aptos/{ClaimAllActionAptos.d.ts → views/ClaimAllActionAptos.d.ts} +1 -1
  28. package/dist/adapters/aptos/{ClaimAllActionAptos.js → views/ClaimAllActionAptos.js} +10 -10
  29. package/dist/adapters/aptos/views/ClaimAllActionAptos.js.map +1 -0
  30. package/dist/adapters/aptos/{ConnectAptosWalletButton.js → views/ConnectAptosWalletButton.js} +4 -4
  31. package/dist/adapters/aptos/views/ConnectAptosWalletButton.js.map +1 -0
  32. package/dist/adapters/aptos/{ConnectToAptosBanner.js → views/ConnectToAptosBanner.js} +6 -6
  33. package/dist/adapters/aptos/views/ConnectToAptosBanner.js.map +1 -0
  34. package/dist/adapters/aptos/{TransferActionAptos.d.ts → views/TransferActionAptos.d.ts} +1 -1
  35. package/dist/adapters/aptos/{TransferActionAptos.js → views/TransferActionAptos.js} +1 -1
  36. package/dist/adapters/aptos/views/TransferActionAptos.js.map +1 -0
  37. package/dist/adapters/aptos/{UserBondRowAptos.d.ts → views/UserBondRowAptos.d.ts} +1 -1
  38. package/dist/adapters/aptos/{UserBondRowAptos.js → views/UserBondRowAptos.js} +22 -22
  39. package/dist/adapters/aptos/views/UserBondRowAptos.js.map +1 -0
  40. package/dist/adapters/evm/index.js +16 -16
  41. package/dist/adapters/evm/index.js.map +1 -1
  42. package/dist/adapters/evm/{EvmAccountBridge.js → state/EvmAccountBridge.js} +1 -1
  43. package/dist/adapters/evm/state/EvmAccountBridge.js.map +1 -0
  44. package/dist/adapters/evm/{balances.d.ts → state/balances.d.ts} +1 -1
  45. package/dist/adapters/evm/{balances.js → state/balances.js} +5 -5
  46. package/dist/adapters/evm/state/balances.js.map +1 -0
  47. package/dist/adapters/evm/{fetchBondsDataEVM.d.ts → state/fetchBondsDataEVM.d.ts} +2 -2
  48. package/dist/adapters/evm/{fetchBondsDataEVM.js → state/fetchBondsDataEVM.js} +8 -8
  49. package/dist/adapters/evm/state/fetchBondsDataEVM.js.map +1 -0
  50. package/dist/adapters/evm/{fetchUsersBondsEVM.d.ts → state/fetchUsersBondsEVM.d.ts} +2 -2
  51. package/dist/adapters/evm/{fetchUsersBondsEVM.js → state/fetchUsersBondsEVM.js} +4 -4
  52. package/dist/adapters/evm/state/fetchUsersBondsEVM.js.map +1 -0
  53. package/dist/adapters/evm/{getTierPoints.d.ts → state/getTierPoints.d.ts} +1 -1
  54. package/dist/adapters/evm/{getTierPoints.js → state/getTierPoints.js} +5 -5
  55. package/dist/adapters/evm/state/getTierPoints.js.map +1 -0
  56. package/dist/adapters/evm/{preTGE → state/preTGE}/fetchBondsDataPreTGE.d.ts +2 -2
  57. package/dist/adapters/evm/{preTGE → state/preTGE}/fetchBondsDataPreTGE.js +5 -5
  58. package/dist/adapters/evm/state/preTGE/fetchBondsDataPreTGE.js.map +1 -0
  59. package/dist/adapters/evm/{preTGE → state/preTGE}/fetchUserBondsPreTGE.d.ts +2 -2
  60. package/dist/adapters/evm/{preTGE → state/preTGE}/fetchUserBondsPreTGE.js +5 -5
  61. package/dist/adapters/evm/state/preTGE/fetchUserBondsPreTGE.js.map +1 -0
  62. package/dist/adapters/evm/{useAllowance.js → state/useAllowance.js} +9 -9
  63. package/dist/adapters/evm/state/useAllowance.js.map +1 -0
  64. package/dist/adapters/evm/{useEVMAccount.js → state/useEVMAccount.js} +1 -1
  65. package/dist/adapters/evm/state/useEVMAccount.js.map +1 -0
  66. package/dist/adapters/evm/{useMonitorTx.js → state/useMonitorTx.js} +1 -1
  67. package/dist/adapters/evm/state/useMonitorTx.js.map +1 -0
  68. package/dist/adapters/evm/{useSoulZapBondQuote.d.ts → state/useSoulZapBondQuote.d.ts} +1 -1
  69. package/dist/adapters/evm/{useSoulZapBondQuote.js → state/useSoulZapBondQuote.js} +9 -9
  70. package/dist/adapters/evm/state/useSoulZapBondQuote.js.map +1 -0
  71. package/dist/adapters/evm/{useTierProofSignature.js → state/useTierProofSignature.js} +4 -4
  72. package/dist/adapters/evm/state/useTierProofSignature.js.map +1 -0
  73. package/dist/adapters/evm/{multicall.js → utils/multicall.js} +3 -3
  74. package/dist/adapters/evm/utils/multicall.js.map +1 -0
  75. package/dist/adapters/evm/{Actions.d.ts → views/Actions.d.ts} +1 -1
  76. package/dist/adapters/evm/{Actions.js → views/Actions.js} +18 -18
  77. package/dist/adapters/evm/views/Actions.js.map +1 -0
  78. package/dist/adapters/evm/{BuyComponent.d.ts → views/BuyComponent.d.ts} +1 -1
  79. package/dist/adapters/evm/{BuyComponent.js → views/BuyComponent.js} +44 -44
  80. package/dist/adapters/evm/views/BuyComponent.js.map +1 -0
  81. package/dist/adapters/evm/{ClaimAllActionEVM.d.ts → views/ClaimAllActionEVM.d.ts} +1 -1
  82. package/dist/adapters/evm/{ClaimAllActionEVM.js → views/ClaimAllActionEVM.js} +9 -9
  83. package/dist/adapters/evm/views/ClaimAllActionEVM.js.map +1 -0
  84. package/dist/adapters/evm/{ConnectToEvmBanner.js → views/ConnectToEvmBanner.js} +4 -4
  85. package/dist/adapters/evm/views/ConnectToEvmBanner.js.map +1 -0
  86. package/dist/adapters/evm/{TransactionModal.d.ts → views/TransactionModal.d.ts} +2 -2
  87. package/dist/adapters/evm/{TransactionModal.js → views/TransactionModal.js} +21 -21
  88. package/dist/adapters/evm/views/TransactionModal.js.map +1 -0
  89. package/dist/adapters/evm/{TransferAction.d.ts → views/TransferAction.d.ts} +1 -1
  90. package/dist/adapters/evm/{TransferAction.js → views/TransferAction.js} +8 -8
  91. package/dist/adapters/evm/views/TransferAction.js.map +1 -0
  92. package/dist/adapters/evm/{UserBondRow.d.ts → views/UserBondRow.d.ts} +1 -1
  93. package/dist/adapters/evm/{UserBondRow.js → views/UserBondRow.js} +27 -27
  94. package/dist/adapters/evm/views/UserBondRow.js.map +1 -0
  95. package/dist/adapters/evm/{preTGE → views/preTGE}/BuyComponentPreTGE.js +26 -26
  96. package/dist/adapters/evm/views/preTGE/BuyComponentPreTGE.js.map +1 -0
  97. package/dist/adapters/evm/{preTGE → views/preTGE}/ModalHandlerPreTGE.js +3 -3
  98. package/dist/adapters/evm/views/preTGE/ModalHandlerPreTGE.js.map +1 -0
  99. package/dist/adapters/evm/{preTGE → views/preTGE}/PreTGEActions.d.ts +1 -1
  100. package/dist/adapters/evm/{preTGE → views/preTGE}/PreTGEActions.js +9 -9
  101. package/dist/adapters/evm/views/preTGE/PreTGEActions.js.map +1 -0
  102. package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowPreTGE.d.ts +1 -1
  103. package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowPreTGE.js +9 -9
  104. package/dist/adapters/evm/views/preTGE/UserBondRowPreTGE.js.map +1 -0
  105. package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowYield.d.ts +1 -1
  106. package/dist/adapters/evm/{preTGE → views/preTGE}/UserBondRowYield.js +10 -10
  107. package/dist/adapters/evm/views/preTGE/UserBondRowYield.js.map +1 -0
  108. package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/YourBondsModalYield.d.ts +1 -1
  109. package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/YourBondsModalYield.js +22 -22
  110. package/dist/adapters/evm/views/preTGE/YourBondsModalYield/YourBondsModalYield.js.map +1 -0
  111. package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.d.ts +1 -1
  112. package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js +10 -10
  113. package/dist/adapters/evm/views/preTGE/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js.map +1 -0
  114. package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.d.ts +1 -1
  115. package/dist/adapters/evm/{preTGE → views/preTGE}/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js +5 -5
  116. package/dist/adapters/evm/views/preTGE/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js.map +1 -0
  117. package/dist/adapters/lifi/index.js +1 -1
  118. package/dist/adapters/lifi/index.js.map +1 -1
  119. package/dist/adapters/lifi/{LifiModal.d.ts → views/LifiModal.d.ts} +1 -1
  120. package/dist/adapters/lifi/{LifiModal.js → views/LifiModal.js} +5 -5
  121. package/dist/adapters/lifi/views/LifiModal.js.map +1 -0
  122. package/dist/adapters/lifi/views/LifiWidgetContent.js.map +1 -0
  123. package/dist/adapters/solana/{solanaConstants.js → constants/solanaConstants.js} +1 -1
  124. package/dist/adapters/solana/constants/solanaConstants.js.map +1 -0
  125. package/dist/adapters/solana/index.d.ts +1 -1
  126. package/dist/adapters/solana/index.js +10 -10
  127. package/dist/adapters/solana/index.js.map +1 -1
  128. package/dist/adapters/solana/{SolanaAccountBridge.js → state/SolanaAccountBridge.js} +1 -1
  129. package/dist/adapters/solana/state/SolanaAccountBridge.js.map +1 -0
  130. package/dist/adapters/solana/{fetchBondsDataSOL.d.ts → state/fetchBondsDataSOL.d.ts} +2 -2
  131. package/dist/adapters/solana/{fetchBondsDataSOL.js → state/fetchBondsDataSOL.js} +8 -8
  132. package/dist/adapters/solana/state/fetchBondsDataSOL.js.map +1 -0
  133. package/dist/adapters/solana/{fetchUsersBondsSOL.d.ts → state/fetchUsersBondsSOL.d.ts} +2 -2
  134. package/dist/adapters/solana/{fetchUsersBondsSOL.js → state/fetchUsersBondsSOL.js} +5 -5
  135. package/dist/adapters/solana/state/fetchUsersBondsSOL.js.map +1 -0
  136. package/dist/adapters/solana/{useCurrencyBalanceSolana.js → state/useCurrencyBalanceSolana.js} +3 -3
  137. package/dist/adapters/solana/state/useCurrencyBalanceSolana.js.map +1 -0
  138. package/dist/adapters/solana/{useJupiterSolanaQuote.d.ts → state/useJupiterSolanaQuote.d.ts} +1 -1
  139. package/dist/adapters/solana/{useJupiterSolanaQuote.js → state/useJupiterSolanaQuote.js} +3 -3
  140. package/dist/adapters/solana/state/useJupiterSolanaQuote.js.map +1 -0
  141. package/dist/adapters/solana/{useSOLAccount.js → state/useSOLAccount.js} +1 -1
  142. package/dist/adapters/solana/state/useSOLAccount.js.map +1 -0
  143. package/dist/adapters/solana/{calculateSolanaTrueBillPrice.js → utils/calculateSolanaTrueBillPrice.js} +1 -1
  144. package/dist/adapters/solana/utils/calculateSolanaTrueBillPrice.js.map +1 -0
  145. package/dist/adapters/solana/{codecs → utils/codecs}/bondCodec.js +1 -1
  146. package/dist/adapters/solana/utils/codecs/bondCodec.js.map +1 -0
  147. package/dist/adapters/solana/{codecs → utils/codecs}/bondIssuanceCodec.js +1 -1
  148. package/dist/adapters/solana/utils/codecs/bondIssuanceCodec.js.map +1 -0
  149. package/dist/adapters/solana/{codecs → utils/codecs}/bondPricingCodec.js +1 -1
  150. package/dist/adapters/solana/utils/codecs/bondPricingCodec.js.map +1 -0
  151. package/dist/adapters/solana/{codecs → utils/codecs}/bondTermCodec.js +1 -1
  152. package/dist/adapters/solana/utils/codecs/bondTermCodec.js.map +1 -0
  153. package/dist/adapters/solana/utils/derivePda.js.map +1 -0
  154. package/dist/adapters/solana/utils/getSolanaAccount.js.map +1 -0
  155. package/dist/adapters/solana/utils/polyfills.js.map +1 -0
  156. package/dist/adapters/solana/utils/solanaAtaHelper.js.map +1 -0
  157. package/dist/adapters/solana/utils/solanaMulticall.js.map +1 -0
  158. package/dist/adapters/solana/{solanaRpc.js → utils/solanaRpc.js} +1 -1
  159. package/dist/adapters/solana/utils/solanaRpc.js.map +1 -0
  160. package/dist/adapters/solana/{ActionsSolana.d.ts → views/ActionsSolana.d.ts} +1 -1
  161. package/dist/adapters/solana/{ActionsSolana.js → views/ActionsSolana.js} +13 -13
  162. package/dist/adapters/solana/views/ActionsSolana.js.map +1 -0
  163. package/dist/adapters/solana/{BuyComponentSolana.js → views/BuyComponentSolana.js} +37 -37
  164. package/dist/adapters/solana/views/BuyComponentSolana.js.map +1 -0
  165. package/dist/adapters/solana/{ConnectSolanaWalletButton.js → views/ConnectSolanaWalletButton.js} +4 -4
  166. package/dist/adapters/solana/views/ConnectSolanaWalletButton.js.map +1 -0
  167. package/dist/adapters/solana/{ConnectToSolanaBanner.js → views/ConnectToSolanaBanner.js} +5 -5
  168. package/dist/adapters/solana/views/ConnectToSolanaBanner.js.map +1 -0
  169. package/dist/adapters/solana/{TransferActionSolana.d.ts → views/TransferActionSolana.d.ts} +1 -1
  170. package/dist/adapters/solana/{TransferActionSolana.js → views/TransferActionSolana.js} +6 -6
  171. package/dist/adapters/solana/views/TransferActionSolana.js.map +1 -0
  172. package/dist/adapters/solana/{UserBondRowSolana.d.ts → views/UserBondRowSolana.d.ts} +1 -1
  173. package/dist/adapters/solana/{UserBondRowSolana.js → views/UserBondRowSolana.js} +23 -23
  174. package/dist/adapters/solana/views/UserBondRowSolana.js.map +1 -0
  175. package/dist/adapters/sui/constants/suiConstants.js.map +1 -0
  176. package/dist/adapters/sui/constants/suiZapTokens.js.map +1 -0
  177. package/dist/adapters/sui/index.js +10 -10
  178. package/dist/adapters/sui/index.js.map +1 -1
  179. package/dist/adapters/sui/{SuiAccountBridge.js → state/SuiAccountBridge.js} +1 -1
  180. package/dist/adapters/sui/state/SuiAccountBridge.js.map +1 -0
  181. package/dist/adapters/sui/{fetchBondsDataSui.d.ts → state/fetchBondsDataSui.d.ts} +2 -2
  182. package/dist/adapters/sui/{fetchBondsDataSui.js → state/fetchBondsDataSui.js} +3 -3
  183. package/dist/adapters/sui/state/fetchBondsDataSui.js.map +1 -0
  184. package/dist/adapters/sui/{fetchUsersBondsSUI.d.ts → state/fetchUsersBondsSUI.d.ts} +2 -2
  185. package/dist/adapters/sui/{fetchUsersBondsSUI.js → state/fetchUsersBondsSUI.js} +4 -4
  186. package/dist/adapters/sui/state/fetchUsersBondsSUI.js.map +1 -0
  187. package/dist/adapters/sui/{useCurrencyBalanceSui.js → state/useCurrencyBalanceSui.js} +2 -2
  188. package/dist/adapters/sui/state/useCurrencyBalanceSui.js.map +1 -0
  189. package/dist/adapters/sui/{useSUIAccount.js → state/useSUIAccount.js} +1 -1
  190. package/dist/adapters/sui/state/useSUIAccount.js.map +1 -0
  191. package/dist/adapters/sui/{useSuiZapQuote.d.ts → state/useSuiZapQuote.d.ts} +1 -1
  192. package/dist/adapters/sui/{useSuiZapQuote.js → state/useSuiZapQuote.js} +5 -5
  193. package/dist/adapters/sui/state/useSuiZapQuote.js.map +1 -0
  194. package/dist/adapters/sui/{suiHelpers.js → utils/suiHelpers.js} +1 -1
  195. package/dist/adapters/sui/utils/suiHelpers.js.map +1 -0
  196. package/dist/adapters/sui/{ActionsSui.d.ts → views/ActionsSui.d.ts} +1 -1
  197. package/dist/adapters/sui/{ActionsSui.js → views/ActionsSui.js} +11 -11
  198. package/dist/adapters/sui/views/ActionsSui.js.map +1 -0
  199. package/dist/adapters/sui/{BuyComponentSui.js → views/BuyComponentSui.js} +32 -32
  200. package/dist/adapters/sui/views/BuyComponentSui.js.map +1 -0
  201. package/dist/adapters/sui/{ClaimAllActionSui.d.ts → views/ClaimAllActionSui.d.ts} +1 -1
  202. package/dist/adapters/sui/{ClaimAllActionSui.js → views/ClaimAllActionSui.js} +10 -10
  203. package/dist/adapters/sui/views/ClaimAllActionSui.js.map +1 -0
  204. package/dist/adapters/sui/{ConnectToSuiBanner.js → views/ConnectToSuiBanner.js} +6 -6
  205. package/dist/adapters/sui/views/ConnectToSuiBanner.js.map +1 -0
  206. package/dist/adapters/sui/{TransferActionSui.d.ts → views/TransferActionSui.d.ts} +1 -1
  207. package/dist/adapters/sui/{TransferActionSui.js → views/TransferActionSui.js} +7 -7
  208. package/dist/adapters/sui/views/TransferActionSui.js.map +1 -0
  209. package/dist/adapters/sui/{UserBondRowSui.d.ts → views/UserBondRowSui.d.ts} +1 -1
  210. package/dist/adapters/sui/{UserBondRowSui.js → views/UserBondRowSui.js} +22 -22
  211. package/dist/adapters/sui/views/UserBondRowSui.js.map +1 -0
  212. package/dist/components/NetworkFilter/index.js.map +1 -1
  213. package/dist/components/uikit-sdk/Svg/Icons/CoinGecko.js +3 -1
  214. package/dist/components/uikit-sdk/Svg/Icons/CoinGecko.js.map +1 -1
  215. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js +3 -1
  216. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js.map +1 -1
  217. package/dist/components/uikit-sdk/Svg/Icons/L1X.js +3 -1
  218. package/dist/components/uikit-sdk/Svg/Icons/L1X.js.map +1 -1
  219. package/dist/components/uikit-sdk/Svg/Icons/Success.js +3 -1
  220. package/dist/components/uikit-sdk/Svg/Icons/Success.js.map +1 -1
  221. package/dist/components/uikit-sdk/Svg/tokens/AVAX.js +3 -1
  222. package/dist/components/uikit-sdk/Svg/tokens/AVAX.js.map +1 -1
  223. package/dist/components/uikit-sdk/Svg/tokens/BLAST.js +3 -1
  224. package/dist/components/uikit-sdk/Svg/tokens/BLAST.js.map +1 -1
  225. package/dist/components/uikit-sdk/Svg/tokens/GraphLinq.js +3 -1
  226. package/dist/components/uikit-sdk/Svg/tokens/GraphLinq.js.map +1 -1
  227. package/dist/components/uikit-sdk/Svg/tokens/INEVM.js +3 -1
  228. package/dist/components/uikit-sdk/Svg/tokens/INEVM.js.map +1 -1
  229. package/dist/components/uikit-sdk/Svg/tokens/IOTA.js +3 -1
  230. package/dist/components/uikit-sdk/Svg/tokens/IOTA.js.map +1 -1
  231. package/dist/components/uikit-sdk/Svg/tokens/SOL.js +3 -1
  232. package/dist/components/uikit-sdk/Svg/tokens/SOL.js.map +1 -1
  233. package/dist/components/uikit-sdk/Svg/tokens/TLOS.js +3 -1
  234. package/dist/components/uikit-sdk/Svg/tokens/TLOS.js.map +1 -1
  235. package/dist/main.d.ts +1 -1
  236. package/dist/main.js +1 -1
  237. package/dist/main.js.map +1 -1
  238. package/dist/state/bonds/useBondsData.js.map +1 -1
  239. package/package.json +3 -7
  240. package/dist/adapters/all/index.d.ts +0 -13
  241. package/dist/adapters/all/index.js +0 -15
  242. package/dist/adapters/all/index.js.map +0 -1
  243. package/dist/adapters/aptos/ActionsAptos.js.map +0 -1
  244. package/dist/adapters/aptos/AptosAccountBridge.js.map +0 -1
  245. package/dist/adapters/aptos/BuyComponentAptos.js.map +0 -1
  246. package/dist/adapters/aptos/ClaimAllActionAptos.js.map +0 -1
  247. package/dist/adapters/aptos/ConnectAptosWalletButton.js.map +0 -1
  248. package/dist/adapters/aptos/ConnectToAptosBanner.js.map +0 -1
  249. package/dist/adapters/aptos/TransferActionAptos.js.map +0 -1
  250. package/dist/adapters/aptos/UserBondRowAptos.js.map +0 -1
  251. package/dist/adapters/aptos/aptosHelpers.js.map +0 -1
  252. package/dist/adapters/aptos/fetchBondsDataAptos.js.map +0 -1
  253. package/dist/adapters/aptos/fetchUsersBondsAptos.js.map +0 -1
  254. package/dist/adapters/aptos/useAPTAccount.js.map +0 -1
  255. package/dist/adapters/aptos/useAptosZapQuote.js.map +0 -1
  256. package/dist/adapters/aptos/useCurrencyBalanceAptos.js.map +0 -1
  257. package/dist/adapters/evm/Actions.js.map +0 -1
  258. package/dist/adapters/evm/BuyComponent.js.map +0 -1
  259. package/dist/adapters/evm/ClaimAllActionEVM.js.map +0 -1
  260. package/dist/adapters/evm/ConnectToEvmBanner.js.map +0 -1
  261. package/dist/adapters/evm/EvmAccountBridge.js.map +0 -1
  262. package/dist/adapters/evm/TransactionModal.js.map +0 -1
  263. package/dist/adapters/evm/TransferAction.js.map +0 -1
  264. package/dist/adapters/evm/UserBondRow.js.map +0 -1
  265. package/dist/adapters/evm/balances.js.map +0 -1
  266. package/dist/adapters/evm/fetchBondsDataEVM.js.map +0 -1
  267. package/dist/adapters/evm/fetchUsersBondsEVM.js.map +0 -1
  268. package/dist/adapters/evm/getTierPoints.js.map +0 -1
  269. package/dist/adapters/evm/multicall.js.map +0 -1
  270. package/dist/adapters/evm/preTGE/BuyComponentPreTGE.js.map +0 -1
  271. package/dist/adapters/evm/preTGE/ModalHandlerPreTGE.js.map +0 -1
  272. package/dist/adapters/evm/preTGE/PreTGEActions.js.map +0 -1
  273. package/dist/adapters/evm/preTGE/UserBondRowPreTGE.js.map +0 -1
  274. package/dist/adapters/evm/preTGE/UserBondRowYield.js.map +0 -1
  275. package/dist/adapters/evm/preTGE/YourBondsModalYield/YourBondsModalYield.js.map +0 -1
  276. package/dist/adapters/evm/preTGE/YourBondsModalYield/components/UnstakeModalYield/UnstakeModalYield.js.map +0 -1
  277. package/dist/adapters/evm/preTGE/YourBondsModalYield/components/YourBondModalHeader/YourBondModalHeader.js.map +0 -1
  278. package/dist/adapters/evm/preTGE/fetchBondsDataPreTGE.js.map +0 -1
  279. package/dist/adapters/evm/preTGE/fetchUserBondsPreTGE.js.map +0 -1
  280. package/dist/adapters/evm/useAllowance.js.map +0 -1
  281. package/dist/adapters/evm/useEVMAccount.js.map +0 -1
  282. package/dist/adapters/evm/useMonitorTx.js.map +0 -1
  283. package/dist/adapters/evm/useSoulZapBondQuote.js.map +0 -1
  284. package/dist/adapters/evm/useTierProofSignature.js.map +0 -1
  285. package/dist/adapters/lifi/LifiModal.js.map +0 -1
  286. package/dist/adapters/lifi/LifiWidgetContent.js.map +0 -1
  287. package/dist/adapters/solana/ActionsSolana.js.map +0 -1
  288. package/dist/adapters/solana/BuyComponentSolana.js.map +0 -1
  289. package/dist/adapters/solana/ConnectSolanaWalletButton.js.map +0 -1
  290. package/dist/adapters/solana/ConnectToSolanaBanner.js.map +0 -1
  291. package/dist/adapters/solana/SolanaAccountBridge.js.map +0 -1
  292. package/dist/adapters/solana/TransferActionSolana.js.map +0 -1
  293. package/dist/adapters/solana/UserBondRowSolana.js.map +0 -1
  294. package/dist/adapters/solana/calculateSolanaTrueBillPrice.js.map +0 -1
  295. package/dist/adapters/solana/codecs/bondCodec.js.map +0 -1
  296. package/dist/adapters/solana/codecs/bondIssuanceCodec.js.map +0 -1
  297. package/dist/adapters/solana/codecs/bondPricingCodec.js.map +0 -1
  298. package/dist/adapters/solana/codecs/bondTermCodec.js.map +0 -1
  299. package/dist/adapters/solana/derivePda.js.map +0 -1
  300. package/dist/adapters/solana/fetchBondsDataSOL.js.map +0 -1
  301. package/dist/adapters/solana/fetchUsersBondsSOL.js.map +0 -1
  302. package/dist/adapters/solana/getSolanaAccount.js.map +0 -1
  303. package/dist/adapters/solana/polyfills.js.map +0 -1
  304. package/dist/adapters/solana/solanaAtaHelper.js.map +0 -1
  305. package/dist/adapters/solana/solanaConstants.js.map +0 -1
  306. package/dist/adapters/solana/solanaMulticall.js.map +0 -1
  307. package/dist/adapters/solana/solanaRpc.js.map +0 -1
  308. package/dist/adapters/solana/useCurrencyBalanceSolana.js.map +0 -1
  309. package/dist/adapters/solana/useJupiterSolanaQuote.js.map +0 -1
  310. package/dist/adapters/solana/useSOLAccount.js.map +0 -1
  311. package/dist/adapters/sui/ActionsSui.js.map +0 -1
  312. package/dist/adapters/sui/BuyComponentSui.js.map +0 -1
  313. package/dist/adapters/sui/ClaimAllActionSui.js.map +0 -1
  314. package/dist/adapters/sui/ConnectToSuiBanner.js.map +0 -1
  315. package/dist/adapters/sui/SuiAccountBridge.js.map +0 -1
  316. package/dist/adapters/sui/TransferActionSui.js.map +0 -1
  317. package/dist/adapters/sui/UserBondRowSui.js.map +0 -1
  318. package/dist/adapters/sui/fetchBondsDataSui.js.map +0 -1
  319. package/dist/adapters/sui/fetchUsersBondsSUI.js.map +0 -1
  320. package/dist/adapters/sui/suiConstants.js.map +0 -1
  321. package/dist/adapters/sui/suiHelpers.js.map +0 -1
  322. package/dist/adapters/sui/suiZapTokens.js.map +0 -1
  323. package/dist/adapters/sui/useCurrencyBalanceSui.js.map +0 -1
  324. package/dist/adapters/sui/useSUIAccount.js.map +0 -1
  325. package/dist/adapters/sui/useSuiZapQuote.js.map +0 -1
  326. /package/dist/adapters/aptos/{AptosAccountBridge.d.ts → state/AptosAccountBridge.d.ts} +0 -0
  327. /package/dist/adapters/aptos/{useAPTAccount.d.ts → state/useAPTAccount.d.ts} +0 -0
  328. /package/dist/adapters/aptos/{useCurrencyBalanceAptos.d.ts → state/useCurrencyBalanceAptos.d.ts} +0 -0
  329. /package/dist/adapters/aptos/{aptosBonds.d.ts → types/aptosBonds.d.ts} +0 -0
  330. /package/dist/adapters/aptos/{BuyComponentAptos.d.ts → views/BuyComponentAptos.d.ts} +0 -0
  331. /package/dist/adapters/aptos/{ConnectAptosWalletButton.d.ts → views/ConnectAptosWalletButton.d.ts} +0 -0
  332. /package/dist/adapters/aptos/{ConnectToAptosBanner.d.ts → views/ConnectToAptosBanner.d.ts} +0 -0
  333. /package/dist/adapters/evm/{EvmAccountBridge.d.ts → state/EvmAccountBridge.d.ts} +0 -0
  334. /package/dist/adapters/evm/{useAllowance.d.ts → state/useAllowance.d.ts} +0 -0
  335. /package/dist/adapters/evm/{useEVMAccount.d.ts → state/useEVMAccount.d.ts} +0 -0
  336. /package/dist/adapters/evm/{useMonitorTx.d.ts → state/useMonitorTx.d.ts} +0 -0
  337. /package/dist/adapters/evm/{useTierProofSignature.d.ts → state/useTierProofSignature.d.ts} +0 -0
  338. /package/dist/adapters/evm/{multicall.d.ts → utils/multicall.d.ts} +0 -0
  339. /package/dist/adapters/evm/{ConnectToEvmBanner.d.ts → views/ConnectToEvmBanner.d.ts} +0 -0
  340. /package/dist/adapters/evm/{preTGE → views/preTGE}/BuyComponentPreTGE.d.ts +0 -0
  341. /package/dist/adapters/evm/{preTGE → views/preTGE}/ModalHandlerPreTGE.d.ts +0 -0
  342. /package/dist/adapters/lifi/{LifiWidgetContent.d.ts → views/LifiWidgetContent.d.ts} +0 -0
  343. /package/dist/adapters/lifi/{LifiWidgetContent.js → views/LifiWidgetContent.js} +0 -0
  344. /package/dist/adapters/solana/{solanaConstants.d.ts → constants/solanaConstants.d.ts} +0 -0
  345. /package/dist/adapters/solana/{SolanaAccountBridge.d.ts → state/SolanaAccountBridge.d.ts} +0 -0
  346. /package/dist/adapters/solana/{useCurrencyBalanceSolana.d.ts → state/useCurrencyBalanceSolana.d.ts} +0 -0
  347. /package/dist/adapters/solana/{useSOLAccount.d.ts → state/useSOLAccount.d.ts} +0 -0
  348. /package/dist/adapters/solana/{helius.d.ts → types/helius.d.ts} +0 -0
  349. /package/dist/adapters/solana/{solanaBonds.d.ts → types/solanaBonds.d.ts} +0 -0
  350. /package/dist/adapters/solana/{calculateSolanaTrueBillPrice.d.ts → utils/calculateSolanaTrueBillPrice.d.ts} +0 -0
  351. /package/dist/adapters/solana/{codecs → utils/codecs}/bondCodec.d.ts +0 -0
  352. /package/dist/adapters/solana/{codecs → utils/codecs}/bondIssuanceCodec.d.ts +0 -0
  353. /package/dist/adapters/solana/{codecs → utils/codecs}/bondPricingCodec.d.ts +0 -0
  354. /package/dist/adapters/solana/{codecs → utils/codecs}/bondTermCodec.d.ts +0 -0
  355. /package/dist/adapters/solana/{codecs → utils/codecs}/index.d.ts +0 -0
  356. /package/dist/adapters/solana/{derivePda.d.ts → utils/derivePda.d.ts} +0 -0
  357. /package/dist/adapters/solana/{derivePda.js → utils/derivePda.js} +0 -0
  358. /package/dist/adapters/solana/{getSolanaAccount.d.ts → utils/getSolanaAccount.d.ts} +0 -0
  359. /package/dist/adapters/solana/{getSolanaAccount.js → utils/getSolanaAccount.js} +0 -0
  360. /package/dist/adapters/solana/{polyfills.d.ts → utils/polyfills.d.ts} +0 -0
  361. /package/dist/adapters/solana/{polyfills.js → utils/polyfills.js} +0 -0
  362. /package/dist/adapters/solana/{solanaAtaHelper.d.ts → utils/solanaAtaHelper.d.ts} +0 -0
  363. /package/dist/adapters/solana/{solanaAtaHelper.js → utils/solanaAtaHelper.js} +0 -0
  364. /package/dist/adapters/solana/{solanaMulticall.d.ts → utils/solanaMulticall.d.ts} +0 -0
  365. /package/dist/adapters/solana/{solanaMulticall.js → utils/solanaMulticall.js} +0 -0
  366. /package/dist/adapters/solana/{solanaRpc.d.ts → utils/solanaRpc.d.ts} +0 -0
  367. /package/dist/adapters/solana/{BuyComponentSolana.d.ts → views/BuyComponentSolana.d.ts} +0 -0
  368. /package/dist/adapters/solana/{ConnectSolanaWalletButton.d.ts → views/ConnectSolanaWalletButton.d.ts} +0 -0
  369. /package/dist/adapters/solana/{ConnectToSolanaBanner.d.ts → views/ConnectToSolanaBanner.d.ts} +0 -0
  370. /package/dist/adapters/sui/{suiConstants.d.ts → constants/suiConstants.d.ts} +0 -0
  371. /package/dist/adapters/sui/{suiConstants.js → constants/suiConstants.js} +0 -0
  372. /package/dist/adapters/sui/{suiZapTokens.d.ts → constants/suiZapTokens.d.ts} +0 -0
  373. /package/dist/adapters/sui/{suiZapTokens.js → constants/suiZapTokens.js} +0 -0
  374. /package/dist/adapters/sui/{SuiAccountBridge.d.ts → state/SuiAccountBridge.d.ts} +0 -0
  375. /package/dist/adapters/sui/{useCurrencyBalanceSui.d.ts → state/useCurrencyBalanceSui.d.ts} +0 -0
  376. /package/dist/adapters/sui/{useSUIAccount.d.ts → state/useSUIAccount.d.ts} +0 -0
  377. /package/dist/adapters/sui/{suiHelpers.d.ts → utils/suiHelpers.d.ts} +0 -0
  378. /package/dist/adapters/sui/{BuyComponentSui.d.ts → views/BuyComponentSui.d.ts} +0 -0
  379. /package/dist/adapters/sui/{ConnectToSuiBanner.d.ts → views/ConnectToSuiBanner.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetchUsersBondsSUI.js","sources":["../../../src/adapters/sui/fetchUsersBondsSUI.ts"],"sourcesContent":["// =============================================================================\n// fetchUserOwnedSuiBonds — user bills fetcher for the Sui chain\n// =============================================================================\n//\n// On-chain first: reads user bills directly from Sui objects (no api-v2\n// dependency). Uses:\n//\n// getOwnedObjects(user, BondNFT filter) → [BondNFT objects]\n// Each BondNFT has fields: bill_id, bond_market, uri\n// getDynamicFieldObject(market.bills, bill_id) → Bill struct\n// Bill fields: payout, payout_claimed, vesting_term, vesting_start_timestamp,\n// last_claim_timestamp, true_price_paid\n\nimport { BillsConfig, ChainId } from '@ape.swap/apeswap-lists'\nimport type { UserOwnedBillsData, UserBill } from '../../types/yourbonds'\nimport type { BondsData } from '../../types/bonds'\nimport type { TokenPrices } from '../../state/tokenPrices/useTokenPrices'\nimport { SUI_PACKAGE_ID, SUI_PLACEHOLDER_BILL_IMAGE } from './suiConstants'\nimport { getSuiClient } from './suiHelpers'\nimport { apiGet } from '../../utils/httpClient'\nimport { PRICE_API_URL } from '../../config/constants/variables'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ninterface SuiBondNftFields {\n bill_id: string\n bond_market: string\n uri: string\n}\n\ninterface SuiBillFields {\n payout: string\n payout_claimed: string\n vesting_term: string\n vesting_start_timestamp: string\n last_claim_timestamp: string\n true_price_paid: string\n}\n\n/**\n * Fetch all BondNFT objects owned by a user address.\n * Returns the parsed content fields for each NFT.\n */\nasync function fetchUserBondNfts(userAddress: string): Promise<{ objectId: string; fields: SuiBondNftFields }[]> {\n const client = getSuiClient()\n const structType = `${SUI_PACKAGE_ID}::bond_nft::BondNFT`\n\n const results: { objectId: string; fields: SuiBondNftFields }[] = []\n let cursor: string | null | undefined = undefined\n let hasNextPage = true\n\n while (hasNextPage) {\n const response = await client.getOwnedObjects({\n owner: userAddress,\n filter: { StructType: structType },\n options: { showContent: true },\n cursor: cursor ?? undefined,\n })\n\n for (const item of response.data) {\n if (!item.data?.content || item.data.content.dataType !== 'moveObject') continue\n const fields = item.data.content.fields as unknown as SuiBondNftFields\n results.push({ objectId: item.data.objectId, fields })\n }\n\n hasNextPage = response.hasNextPage\n cursor = response.nextCursor\n }\n\n return results\n}\n\n/**\n * Read a single Bill from a BondMarket's `bills` Table by bill_id.\n *\n * The BondMarket is a shared object whose `bills` field is a `Table<u64, Bill>`.\n * Sui stores Table entries as dynamic fields on the Table's UID. We first read\n * the BondMarket object to get the Table's object ID, then query the dynamic\n * field for the specific bill_id.\n */\nasync function readBillFromMarket(\n marketObjectId: string,\n billId: string,\n): Promise<SuiBillFields & { cliffPeriod: number }> {\n const client = getSuiClient()\n\n // Step 1: Read the BondMarket object to find the `bills` Table object ID.\n // The `bills` field in a Move struct with `Table<u64, Bill>` is stored as an\n // object ID in the parent object's fields.\n const marketObj = await client.getObject({\n id: marketObjectId,\n options: { showContent: true },\n })\n\n if (!marketObj.data?.content || marketObj.data.content.dataType !== 'moveObject') {\n throw new Error(`[Sui] BondMarket ${marketObjectId} not found or not a Move object`)\n }\n\n const marketFields = marketObj.data.content.fields as Record<string, any>\n // Table fields in Sui are serialised as { id: { id: \"0x...\" }, size: N }\n const billsTableId = marketFields?.bills?.fields?.id?.id ?? marketFields?.bills?.id?.id\n if (!billsTableId) {\n throw new Error(`[Sui] Could not extract bills table ID from BondMarket ${marketObjectId}`)\n }\n\n // Step 2: Read the dynamic field for this bill_id from the Table.\n const billObj = await client.getDynamicFieldObject({\n parentId: billsTableId,\n name: { type: 'u64', value: billId },\n })\n\n if (!billObj.data?.content || billObj.data.content.dataType !== 'moveObject') {\n throw new Error(`[Sui] Bill ${billId} not found in market ${marketObjectId}`)\n }\n\n // The dynamic field value is nested under `fields.value` (or `fields.value.fields`\n // depending on serialisation depth).\n const dfFields = billObj.data.content.fields as Record<string, any>\n const billValue = dfFields?.value?.fields ?? dfFields?.value ?? dfFields\n\n // Extract cliff period from the market's vesting_config\n const vestingConfig = marketFields?.vesting_config\n const cliffPeriod = vestingConfig?.variant === 'CliffLinear' ? Number(vestingConfig?.fields?.cliff_period ?? 0) : 0\n\n return { ...(billValue as SuiBillFields), cliffPeriod }\n}\n\n// ---------------------------------------------------------------------------\n// Main export\n// ---------------------------------------------------------------------------\n\nexport async function fetchUsersBondsSUI(\n user: string | undefined,\n bondData: BillsConfig[],\n tokenPrices: Partial<Record<ChainId, TokenPrices[]>>,\n): Promise<UserOwnedBillsData[]> {\n if (!user) return []\n\n // Build one `UserOwnedBillsData` per known bond config. We always return\n // the outer shell so downstream code (`getUserBonds` in useUserBonds.ts)\n // can match bills back to their bond config.\n const suiKey = ChainId.SUI\n const suiPrices = tokenPrices?.[suiKey] ?? []\n\n // Index bonds by lowercased market address for O(1) lookup when matching\n // NFTs back to their market.\n const bondsByMarket = new Map<string, BillsConfig>()\n for (const bond of bondData) {\n const marketAddr = bond.contractAddress[suiKey]\n if (marketAddr) bondsByMarket.set(marketAddr.toLowerCase(), bond)\n }\n\n // Seed the result with empty shells so every bond is represented.\n const result: UserOwnedBillsData[] = bondData.map((bond) => ({\n index: bond.index,\n userOwnedBills: [] as UserBill[],\n }))\n const indexByBondIndex = new Map<number, UserOwnedBillsData>()\n for (const entry of result) indexByBondIndex.set(entry.index, entry)\n\n try {\n const nfts = await fetchUserBondNfts(user)\n if (nfts.length === 0) return result\n\n // For each BondNFT the user owns, resolve its market, read the bill data,\n // and compute vesting progress. NFTs whose market is not in our bondData\n // are silently skipped (they belong to a market the SDK isn't configured\n // to display).\n await Promise.all(\n nfts.map(async (nft) => {\n try {\n const { fields } = nft\n const billId = String(fields.bill_id)\n const marketAddr = fields.bond_market\n\n const bond = bondsByMarket.get(marketAddr.toLowerCase())\n if (!bond) return\n\n const billInfo = await readBillFromMarket(marketAddr, billId)\n\n const principalAddr = bond.lpToken.address[suiKey]?.toLowerCase()\n const payoutAddr = bond.earnToken.address[suiKey]?.toLowerCase()\n let principalPrice = suiPrices.find((t) => t.tokenAddress.toLowerCase() === principalAddr)?.price\n let payoutPrice = suiPrices.find((t) => t.tokenAddress.toLowerCase() === payoutAddr)?.price\n\n if (principalPrice === undefined) {\n try {\n const res = await apiGet<{ price: string }>(\n `${PRICE_API_URL}/realtime/price?token=${bond.lpToken.address[suiKey]}&chain=${suiKey}`,\n )\n principalPrice = parseFloat(res.price ?? '0')\n } catch {\n principalPrice = 0\n }\n }\n if (payoutPrice === undefined) {\n try {\n const res = await apiGet<{ price: string }>(\n `${PRICE_API_URL}/realtime/price?token=${bond.earnToken.address[suiKey]}&chain=${suiKey}`,\n )\n payoutPrice = parseFloat(res.price ?? '0')\n } catch {\n payoutPrice = 0\n }\n }\n\n const payoutTotal = String(billInfo.payout ?? '0')\n const payoutClaimed = String(billInfo.payout_claimed ?? '0')\n const payoutRemaining = (BigInt(payoutTotal) - BigInt(payoutClaimed)).toString()\n const vestingStart = String(billInfo.vesting_start_timestamp ?? '0')\n const lastClaim = String(billInfo.last_claim_timestamp ?? vestingStart)\n\n // Compute vesting progress client-side using the same curve as the contract.\n // Supports both Linear and CliffLinear vesting configurations.\n const nowSeconds = Math.floor(Date.now() / 1000)\n const vestingTerm = parseInt(String(billInfo.vesting_term ?? '0'))\n const vestingStartNum = parseInt(vestingStart)\n const cliffPeriod = billInfo.cliffPeriod ?? 0\n const elapsed = Math.max(0, nowSeconds - vestingStartNum)\n\n let totalVested: number\n if (cliffPeriod > 0) {\n // CliffLinear: nothing vests until cliff passes, then linear over remaining term\n if (elapsed < cliffPeriod) {\n totalVested = 0\n } else if (elapsed >= vestingTerm) {\n totalVested = parseInt(payoutTotal)\n } else {\n const elapsedAfterCliff = elapsed - cliffPeriod\n const vestingAfterCliff = vestingTerm - cliffPeriod\n totalVested =\n vestingAfterCliff > 0\n ? Math.floor((parseInt(payoutTotal) * elapsedAfterCliff) / vestingAfterCliff)\n : parseInt(payoutTotal)\n }\n } else {\n // Linear: standard proportional vesting\n const vestedFraction = vestingTerm > 0 ? Math.min(1, elapsed / vestingTerm) : 1\n totalVested = Math.floor(parseFloat(payoutTotal) * vestedFraction)\n }\n\n const claimable = Math.max(0, totalVested - parseInt(payoutClaimed))\n\n // Compute human-readable amounts for the modal display.\n const payoutDecimals = bond.earnToken.decimals[suiKey] ?? 9\n const principalDecimals = bond.lpToken.decimals[suiKey] ?? 9\n const payoutHuman = parseFloat(payoutTotal) / 10 ** payoutDecimals\n // Reconstruct deposit from payout and true_price_paid:\n // price = principal_amount * 1e8 / payout_amount -> principal = payout * price / 1e8\n const truePricePaid = parseFloat(String(billInfo.true_price_paid ?? '0'))\n const depositAtomic = (parseFloat(payoutTotal) * truePricePaid) / 1e12\n const depositHuman = depositAtomic / 10 ** principalDecimals\n const depositUSD = depositHuman * (principalPrice ?? 0)\n\n const userBill: UserBill = {\n // `UserBill.address` is used by the SDK's claim flow. On Sui, this\n // is the BondNFT object ID that the user passes to `bond::claim`.\n address: nft.objectId,\n id: billId,\n vestingTerm: String(billInfo.vesting_term ?? '0'),\n payout: payoutRemaining,\n totalPayout: payoutTotal,\n truePricePaid: String(billInfo.true_price_paid ?? '0'),\n lastBlockTimestamp: String(lastClaim),\n vestingStartTimestamp: String(vestingStart),\n pendingRewards: String(claimable),\n billNftAddress: bond.billNnftAddress[suiKey] ?? '',\n payoutClaimed,\n nftData: {\n tokenId: 0,\n billNftId: parseInt(billId),\n processing: false,\n image: SUI_PLACEHOLDER_BILL_IMAGE,\n // Populate `data` so YourBondsModal can display Deposit/Bond Value.\n // api-v2 won't enrich Sui bills, so we compute from on-chain data.\n data: {\n dollarValue: depositUSD,\n payout: payoutHuman,\n billContract: marketAddr,\n billNftAddress: bond.billNnftAddress[suiKey] ?? '',\n billNftId: parseInt(billId),\n blockNumber: 0,\n bondArtCollection: '',\n bondPartner: '',\n bondVersion: bond.version ?? '',\n chainId: suiKey,\n createTransactionHash: '',\n createdAddressOwner: user,\n createdAt: parseInt(String(vestingStart)),\n deposit: depositHuman,\n expires: parseInt(String(vestingStart)) + parseInt(String(billInfo.vesting_term ?? '0')),\n pairName: `${bond.lpToken.symbol}-${bond.earnToken.symbol}`,\n payoutToken: bond.earnToken.address[suiKey] ?? '',\n payoutTokenData: {\n address: bond.earnToken.address[suiKey] ?? '',\n name: bond.earnToken.symbol,\n symbol: bond.earnToken.symbol,\n decimals: bond.earnToken.decimals,\n },\n payoutTokenPrice: (payoutPrice ?? 0).toString(),\n principalToken: bond.lpToken.address[suiKey] ?? '',\n token0: {\n address: bond.lpToken.address[suiKey] ?? '',\n symbol: bond.lpToken.symbol,\n name: bond.lpToken.symbol,\n decimals: bond.lpToken.decimals,\n },\n token1: {\n address: bond.earnToken.address[suiKey] ?? '',\n symbol: bond.earnToken.symbol,\n name: bond.earnToken.symbol,\n decimals: bond.earnToken.decimals,\n },\n type: bond.billType ?? 'reserve',\n vestingPeriodSeconds: parseInt(String(billInfo.vesting_term ?? '0')),\n },\n },\n bond: {\n ...bond,\n payoutTokenPrice: payoutPrice?.toString(),\n principalTokenPrice: principalPrice?.toString(),\n } as BondsData,\n }\n\n const entry = indexByBondIndex.get(bond.index)\n entry?.userOwnedBills.push(userBill)\n } catch (billErr) {\n console.warn(`[Sui] Failed to read bill from NFT ${nft.objectId}`, billErr)\n }\n }),\n )\n } catch (e) {\n console.warn(`[Sui] Failed to list user bills for ${user}`, e)\n }\n\n return result\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"suiConstants.js","sources":["../../../src/adapters/sui/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;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"suiHelpers.js","sources":["../../../src/adapters/sui/suiHelpers.ts"],"sourcesContent":["import { SuiClient } from '@mysten/sui/client'\nimport { PUBLIC_RPC_URLS } from '../../config/constants/networks'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\n// ---------------------------------------------------------------------------\n// Sui client — lazy singleton\n// ---------------------------------------------------------------------------\nlet _suiClient: SuiClient | undefined\n\nexport const getSuiClient = (): SuiClient => {\n if (_suiClient) return _suiClient\n _suiClient = new SuiClient({ url: PUBLIC_RPC_URLS?.[ChainId.SUI]?.[0]! })\n return _suiClient\n}\n\n// ---------------------------------------------------------------------------\n// Unit conversion\n// ---------------------------------------------------------------------------\n// User inputs live in \"whole tokens\" (e.g. \"1.5 SUI\"). The Sui SDK\n// serialises numeric function arguments from strings, so we convert to\n// atomic units and return a stringified BigInt.\n// export const toAtomicUnits = (amount: string | number, decimals: number): string => {\n// if (amount === '' || amount == null) return '0'\n// const bn = new BigNumber(amount).times(new BigNumber(10).pow(decimals))\n// // Floor so we never over-spend what the user typed.\n// return bn.integerValue(BigNumber.ROUND_FLOOR).toFixed(0)\n// }\n//\n// // Atomic → human-readable.\n// export const fromAtomicUnits = (amount: string | number, decimals: number): number => {\n// if (amount === '' || amount == null) return 0\n// return new BigNumber(amount).div(new BigNumber(10).pow(decimals)).toNumber()\n// }\n\n// ---------------------------------------------------------------------------\n// Fresh bond price reader — reads the BondMarket object on-chain and\n// computes the current true_price using the same bond_math formulas as\n// the Move contract. Returns the u64 value (scaled 1e8).\n// ---------------------------------------------------------------------------\n\nconst PRICE_DECIMALS = 100_000_000n // 1e8\nconst PERCENTAGE_BASE = 1_000_000n // 1e6\n\nconst pow10bi = (n: number): bigint => 10n ** BigInt(n)\n\nconst valueOfToken = (fromDec: number, toDec: number, amount: bigint): bigint => {\n if (toDec >= fromDec) return amount * pow10bi(toDec - fromDec)\n return amount / pow10bi(fromDec - toDec)\n}\n\nexport const readFreshTrueBondPrice = async (marketObjectId?: string): Promise<bigint> => {\n if (!marketObjectId) {\n throw new Error('marketObjectId is required')\n }\n\n const client = getSuiClient()\n const obj = await client.getObject({ id: marketObjectId, options: { showContent: true } })\n\n if (!obj.data?.content || obj.data.content.dataType !== 'moveObject') {\n throw new Error(`[Sui] Could not read BondMarket ${marketObjectId}`)\n }\n\n const f = obj.data.content.fields as Record<string, unknown>\n const terms =\n ((f.terms as Record<string, unknown>)?.fields as Record<string, unknown>) ?? (f.terms as Record<string, unknown>)\n\n const totalDebt = BigInt(String(f.total_debt ?? '0'))\n const payoutInitialSupply = BigInt(String(f.payout_token_initial_supply ?? '0'))\n const controlVariable = BigInt(String(terms.control_variable ?? '0'))\n const minimumPrice = BigInt(String(terms.minimum_price ?? '0'))\n const vestingTerm = BigInt(String(terms.vesting_term ?? '1'))\n const lastDecay = BigInt(String(f.last_decay ?? '0'))\n const feeInPrincipal = BigInt(String(f.fee_in_principal ?? '0'))\n const payoutDecimals = Number(f.payout_decimals ?? 9)\n const principalDecimals = Number(f.principal_decimals ?? 9)\n\n // Decay debt client-side (same as contract's decay_debt)\n const nowSeconds = BigInt(Math.floor(Date.now() / 1000))\n let currentDebt = totalDebt\n if (nowSeconds > lastDecay && vestingTerm > 0n) {\n const elapsed = nowSeconds - lastDecay\n const decay = (totalDebt * elapsed) / vestingTerm\n currentDebt = totalDebt > decay ? totalDebt - decay : 0n\n }\n\n // calculate_price — contract casts total_debt (u128) to u64 via `as u64`\n const currentDebtU64 = currentDebt & 0xffffffffffffffffn\n const currentDebtPayout = valueOfToken(principalDecimals, payoutDecimals, currentDebtU64)\n const payoutScale = pow10bi(payoutDecimals)\n const principalScale = pow10bi(principalDecimals)\n\n const debtRatio = payoutInitialSupply > 0n ? (currentDebtPayout * payoutScale) / payoutInitialSupply : 0n\n const basePrice = (controlVariable * debtRatio * principalScale) / PRICE_DECIMALS\n\n const price = basePrice < minimumPrice ? minimumPrice : basePrice\n\n // calculate_true_price (includes fee)\n const denominator = PERCENTAGE_BASE - feeInPrincipal\n const truePrice = denominator > 0n ? (price * PERCENTAGE_BASE) / denominator : price\n\n return truePrice\n}\n\n// ---------------------------------------------------------------------------\n// TX status verification — Sui returns digests for failed TXs too.\n// Call this after waitForTransaction to ensure the TX actually succeeded.\n// ---------------------------------------------------------------------------\n\nexport const verifySuiTxSuccess = async (digest: string): Promise<void> => {\n const client = getSuiClient()\n const txBlock = await client.getTransactionBlock({\n digest,\n options: { showEffects: true },\n })\n const status = txBlock.effects?.status\n if (status?.status !== 'success') {\n const errorMsg = status?.error ?? 'Transaction failed on-chain'\n throw new Error(`Transaction failed: ${errorMsg}`)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"suiZapTokens.js","sources":["../../../src/adapters/sui/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 +0,0 @@
1
- {"version":3,"file":"useCurrencyBalanceSui.js","sources":["../../../src/adapters/sui/useCurrencyBalanceSui.ts"],"sourcesContent":["// Sui balance reads — mirrors useCurrencyBalanceAptos.ts\n\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\nimport { getSuiClient } from './suiHelpers'\nimport { formatUnits } from '../../utils/fixedPoint'\n\nconst SUI_KEY = ChainId.SUI\nconst SUI_NATIVE_COIN_TYPE = '0x2::sui::SUI'\nconst SUI_NATIVE_DECIMALS = 9\n\n/**\n * Single-token balance read for Sui.\n * Used by `useCurrencyBalance` when `chainId === ChainId.SUI`.\n */\nexport const getTokenBalanceSui = async (\n currency: 'NATIVE' | Token | null,\n account: string | null,\n): Promise<string | null> => {\n if (!account || !currency) return null\n\n const coinType = currency === 'NATIVE' ? SUI_NATIVE_COIN_TYPE : currency.address[SUI_KEY]\n if (!coinType) return '0'\n\n const decimals = currency === 'NATIVE' ? SUI_NATIVE_DECIMALS : (currency.decimals?.[SUI_KEY] ?? 9)\n\n try {\n const client = getSuiClient()\n const result = await client.getBalance({ owner: account, coinType })\n return formatUnits(result.totalBalance, decimals)\n } catch {\n return '0'\n }\n}\n\n/**\n * Multi-token balance read for Sui.\n * Used by `useUserTokensBalance` when `chainId === ChainId.SUI`.\n */\nexport const getTokensBalanceSui = async (\n account: string,\n tokens: ('NATIVE' | Token)[],\n): Promise<{ address: string; balance: string }[]> => {\n return Promise.all(\n tokens.map(async (token) => {\n const address = token === 'NATIVE' ? 'NATIVE' : ((token as Token).address[SUI_KEY] as string)\n const balance = await getTokenBalanceSui(token, account)\n return { address, balance: balance ?? '0' }\n }),\n )\n}\n"],"names":[],"mappings":";;;;AAAA;AAMA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG;AAC3B,MAAM,oBAAoB,GAAG,eAAe;AAC5C,MAAM,mBAAmB,GAAG,CAAC;AAE7B;;;AAGG;AACI,MAAM,kBAAkB,GAAG,OAChC,QAAiC,EACjC,OAAsB,KACI;AAC1B,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI;AAEtC,IAAA,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,GAAG,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AACzF,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,GAAG;IAEzB,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,GAAG,mBAAmB,IAAI,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAElG,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,GAAG,YAAY,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACpE,OAAO,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC;IACnD;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,GAAG;IACZ;AACF;AAEA;;;AAGG;AACI,MAAM,mBAAmB,GAAG,OACjC,OAAe,EACf,MAA4B,KACuB;AACnD,IAAA,OAAO,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,KAAI;AACzB,QAAA,MAAM,OAAO,GAAG,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAK,KAAe,CAAC,OAAO,CAAC,OAAO,CAAY;QAC7F,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE;IAC7C,CAAC,CAAC,CACH;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSUIAccount.js","sources":["../../../src/adapters/sui/useSUIAccount.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// useSUIAccount — Sui account hook\n// ---------------------------------------------------------------------------\n//\n// Thin wrapper around `@mysten/dapp-kit` hooks, mirroring the structure of\n// `useAPTAccount`. Works in two modes:\n//\n// 1. Wallet-connected — uses `useCurrentAccount` for the address and\n// `useSignAndExecuteTransaction` for signing.\n// 2. Headless / SSR — the consumer can inject `suiAddress` through\n// `SDKProps`; the hook returns a minimal object with just that address.\n//\n// The dapp-kit hooks throw if called outside of their provider, so we wrap\n// them in try-catch to keep the hook callable from shared code paths (e.g.\n// `useUserBonds`) without forcing every SDK consumer to mount the Sui\n// provider when they do not use Sui.\n\nimport { useCurrentAccount, useSignAndExecuteTransaction } from '@mysten/dapp-kit'\nimport { useSDKConfig } from '../../state/useSDKConfig'\n\n/**\n * Safely call a hook that may throw if its provider is not mounted.\n */\nconst safeUseHook = <T>(hookFn: () => T, fallback: T): T => {\n try {\n return hookFn()\n } catch {\n return fallback\n }\n}\n\n// Structural copy of `SuiSignAndExecuteTransactionOutput` (what dapp-kit returns by default), declared\n// locally so the SDK doesn't import `@mysten/wallet-standard`, which is not one of its declared dependencies.\ntype SuiExecuteTransactionResult = {\n digest: string\n /** Transaction effects as base64 encoded bcs. */\n effects: string\n bytes: string\n signature: string\n}\n\nconst useSignAndExecute = () => useSignAndExecuteTransaction<SuiExecuteTransactionResult>()\n\ntype UseSUIAccountResult = {\n address: string | null\n signAndExecuteTransaction:\n | ReturnType<typeof useSignAndExecuteTransaction<SuiExecuteTransactionResult>>['mutateAsync']\n | null\n}\n\nconst useSUIAccount = (): UseSUIAccountResult => {\n const { suiAddress } = useSDKConfig()\n\n const currentAccount = safeUseHook(useCurrentAccount, null)\n const txResult = safeUseHook(useSignAndExecute, null)\n\n const signAndExecuteTransaction = txResult?.mutateAsync ?? null\n\n // Prefer the injected SSR/headless address over the wallet adapter's.\n const adapterAddress = currentAccount?.address ?? null\n const address = suiAddress ?? adapterAddress\n\n return {\n address,\n signAndExecuteTransaction,\n }\n}\n\nexport default useSUIAccount\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;AAEG;AACH,MAAM,WAAW,GAAG,CAAI,MAAe,EAAE,QAAW,KAAO;AACzD,IAAA,IAAI;QACF,OAAO,MAAM,EAAE;IACjB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,QAAQ;IACjB;AACF,CAAC;AAYD,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,EAA+B;AAS3F,MAAM,aAAa,GAAG,MAA0B;AAC9C,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE;IAErC,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;AAErD,IAAA,MAAM,yBAAyB,GAAG,QAAQ,EAAE,WAAW,IAAI,IAAI;;AAG/D,IAAA,MAAM,cAAc,GAAG,cAAc,EAAE,OAAO,IAAI,IAAI;AACtD,IAAA,MAAM,OAAO,GAAG,UAAU,IAAI,cAAc;IAE5C,OAAO;QACL,OAAO;QACP,yBAAyB;KAC1B;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSuiZapQuote.js","sources":["../../../src/adapters/sui/useSuiZapQuote.ts"],"sourcesContent":["// =============================================================================\n// useSuiZapQuote — Aftermath Finance DEX aggregator quote for Sui zap\n// =============================================================================\n//\n// Mainnet: fetches a swap quote from Aftermath Finance (Sui DEX aggregator)\n// when the user selects an input token different from the bond's principal token.\n//\n// Testnet: no DEX aggregator supports Sui testnet or our custom test tokens.\n// Returns a mock quote calculated from fallback prices so the full zap UI and\n// two-TX flow (mint → deposit) can be tested end-to-end.\n//\n// Aftermath API: POST https://aftermath.finance/api/router/trade-route\n\nimport { useMemo } from 'react'\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\nimport { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { BondsData } from '../../types/bonds'\nimport useDebounce from '../../hooks/useDebounce'\nimport { apiPost } from '../../utils/httpClient'\nimport { IS_SUI_MAINNET } from './suiConstants'\nimport { formatUnits, parseUnits, toFixedString } from '../../utils/fixedPoint'\n\nconst AFTERMATH_API_URL = 'https://aftermath.finance/api/router/trade-route'\nconst AFTERMATH_TX_API_URL = 'https://aftermath.finance/api/router/transactions/trade'\n\ninterface AftermathCoinInfo {\n type: string\n amount: string // atomic units with BigInt \"n\" suffix, e.g. \"963906n\"\n tradeFee: string\n}\n\ninterface AftermathTradeRoute {\n routes: Array<{\n paths: Array<Record<string, unknown>>\n portion: string\n coinIn: AftermathCoinInfo\n coinOut: AftermathCoinInfo\n spotPrice: number\n }>\n coinIn: AftermathCoinInfo\n coinOut: AftermathCoinInfo\n spotPrice: number\n netTradeFeePercentage: number\n}\n\n/** Parse Aftermath amount strings — they may have a trailing \"n\" (BigInt notation) */\nconst parseAftermathAmount = (amount: string): string => {\n return amount.replace(/n$/, '')\n}\n\nconst useSuiZapQuote = (\n typedValue: string,\n inputToken: Token | undefined,\n bond: BondsData | undefined,\n account?: string,\n slippage = 0.5,\n): [\n loading: boolean,\n response: AftermathTradeRoute | null,\n depositAmount: string,\n error: boolean,\n minimumDepositAmount: string,\n] => {\n const debouncedInput = useDebounce(typedValue, 400)\n\n const principalTokenAddress = bond?.lpToken?.address?.[ChainId.SUI]\n const inputTokenAddress = inputToken?.address?.[ChainId.SUI]\n\n // Aftermath uses atomic units — convert from human-readable\n const inputDecimals = inputToken?.decimals?.[ChainId.SUI] ?? 9\n const inputAmountAtomic = useMemo(() => {\n if (!debouncedInput || Number(debouncedInput) <= 0) return '0'\n return parseUnits(debouncedInput, inputDecimals, 'floor').toString()\n }, [debouncedInput, inputDecimals])\n\n const principalDecimals = bond?.lpToken?.decimals?.[ChainId.SUI] ?? 6\n\n const queryParams = useMemo(() => {\n if (\n !inputTokenAddress ||\n !principalTokenAddress ||\n inputAmountAtomic === '0' ||\n !account ||\n inputTokenAddress.toLowerCase() === principalTokenAddress.toLowerCase()\n ) {\n return null\n }\n\n return {\n coinInType: inputTokenAddress,\n coinOutType: principalTokenAddress,\n coinInAmount: inputAmountAtomic,\n }\n }, [inputTokenAddress, principalTokenAddress, inputAmountAtomic, account])\n\n // -------------------------------------------------------------------------\n // Mainnet: fetch real quote from Aftermath\n // -------------------------------------------------------------------------\n const fetchAftermathQuote = async (): Promise<AftermathTradeRoute | null> => {\n if (!queryParams) return null\n\n const data = await apiPost<AftermathTradeRoute>(AFTERMATH_API_URL, queryParams)\n if (!data?.coinOut?.amount) return null\n return data\n }\n\n const {\n data: quoteData,\n isLoading,\n isFetching,\n error,\n } = useQuery({\n queryKey: [QUERY_KEYS.ZAP_TOKEN_QUOTE, 'aftermath-sui', queryParams],\n queryFn: fetchAftermathQuote,\n refetchInterval: 60000,\n enabled: IS_SUI_MAINNET && !!queryParams,\n retry: 1,\n staleTime: 30000,\n })\n\n // Use testnet mock on testnet, real quote on mainnet\n const activeQuote = quoteData ?? null\n const zapError = !!error\n\n // Convert amounts to human-readable\n const outputAmountDecimal = activeQuote?.coinOut?.amount\n ? formatUnits(parseAftermathAmount(activeQuote.coinOut.amount), principalDecimals)\n : undefined\n\n const estimatedDepositAmount = outputAmountDecimal ? toFixedString(outputAmountDecimal, principalDecimals) : '0'\n\n // Apply slippage for minimum deposit amount\n const minimumDepositAmount = outputAmountDecimal\n ? toFixedString(Number(outputAmountDecimal) * (1 - slippage / 100), principalDecimals)\n : '0'\n\n const zapLoading = IS_SUI_MAINNET ? isLoading || isFetching : false\n\n return [zapLoading, activeQuote, estimatedDepositAmount, zapError, minimumDepositAmount]\n}\n\nexport { AFTERMATH_TX_API_URL }\n\nexport default useSuiZapQuote\n"],"names":[],"mappings":"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"}