@ape.swap/bonds-sdk 5.1.48 → 5.1.49-test.1

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 (183) hide show
  1. package/README.md +14 -7
  2. package/dist/components/ConnectAptosWalletButton/ConnectAptosWalletButton.d.ts +4 -0
  3. package/dist/components/ConnectAptosWalletButton/ConnectAptosWalletButton.js +39 -0
  4. package/dist/components/ConnectAptosWalletButton/ConnectAptosWalletButton.js.map +1 -0
  5. package/dist/components/ConnectSuiWalletButton/ConnectSuiWalletButton.d.ts +5 -0
  6. package/dist/components/ConnectoToVmBanners/ConnectToAptosBanner.d.ts +1 -0
  7. package/dist/components/ConnectoToVmBanners/ConnectToAptosBanner.js +49 -0
  8. package/dist/components/ConnectoToVmBanners/ConnectToAptosBanner.js.map +1 -0
  9. package/dist/components/ConnectoToVmBanners/ConnectToEvmBanner.js +11 -15
  10. package/dist/components/ConnectoToVmBanners/ConnectToEvmBanner.js.map +1 -1
  11. package/dist/components/ConnectoToVmBanners/ConnectToSolanaBanner.js +13 -17
  12. package/dist/components/ConnectoToVmBanners/ConnectToSolanaBanner.js.map +1 -1
  13. package/dist/components/ConnectoToVmBanners/ConnectToSuiBanner.d.ts +1 -0
  14. package/dist/components/ConnectoToVmBanners/ConnectToSuiBanner.js +44 -0
  15. package/dist/components/ConnectoToVmBanners/ConnectToSuiBanner.js.map +1 -0
  16. package/dist/components/TokenInfoAndName/index.js +2 -0
  17. package/dist/components/TokenInfoAndName/index.js.map +1 -1
  18. package/dist/components/TokenSelectorPanel/index.js +11 -1
  19. package/dist/components/TokenSelectorPanel/index.js.map +1 -1
  20. package/dist/components/Tooltip/Tooltip.js +11 -3
  21. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  22. package/dist/components/uikit-sdk/Svg/index.js +6 -0
  23. package/dist/components/uikit-sdk/Svg/index.js.map +1 -1
  24. package/dist/components/uikit-sdk/Svg/tokens/APTOS.d.ts +4 -0
  25. package/dist/components/uikit-sdk/Svg/tokens/APTOS.js +8 -0
  26. package/dist/components/uikit-sdk/Svg/tokens/APTOS.js.map +1 -0
  27. package/dist/components/uikit-sdk/Svg/tokens/SUI.d.ts +4 -0
  28. package/dist/components/uikit-sdk/Svg/tokens/SUI.js +8 -0
  29. package/dist/components/uikit-sdk/Svg/tokens/SUI.js.map +1 -0
  30. package/dist/components/uikit-sdk/Svg/types.d.ts +2 -0
  31. package/dist/components/uikit-sdk/Svg/types.js +2 -0
  32. package/dist/components/uikit-sdk/Svg/types.js.map +1 -1
  33. package/dist/components/uikit-sdk/TokenImage/index.js +15 -3
  34. package/dist/components/uikit-sdk/TokenImage/index.js.map +1 -1
  35. package/dist/config/constants/addresses.d.ts +1 -1
  36. package/dist/config/constants/addresses.js +2 -0
  37. package/dist/config/constants/addresses.js.map +1 -1
  38. package/dist/config/constants/aptosZapTokens.d.ts +23 -0
  39. package/dist/config/constants/aptosZapTokens.js +66 -0
  40. package/dist/config/constants/aptosZapTokens.js.map +1 -0
  41. package/dist/config/constants/chains.d.ts +2 -0
  42. package/dist/config/constants/chains.js +12 -0
  43. package/dist/config/constants/chains.js.map +1 -1
  44. package/dist/config/constants/networks.js +9 -0
  45. package/dist/config/constants/networks.js.map +1 -1
  46. package/dist/config/constants/queryKeys.js +23 -1
  47. package/dist/config/constants/queryKeys.js.map +1 -1
  48. package/dist/config/constants/suiZapTokens.d.ts +14 -0
  49. package/dist/config/constants/suiZapTokens.js +41 -0
  50. package/dist/config/constants/suiZapTokens.js.map +1 -0
  51. package/dist/config/constants/tokens.js +48 -0
  52. package/dist/config/constants/tokens.js.map +1 -0
  53. package/dist/config/constants/variables.d.ts +1 -1
  54. package/dist/config/constants/variables.js +2 -0
  55. package/dist/config/constants/variables.js.map +1 -1
  56. package/dist/constants/aptosConstants.d.ts +20 -0
  57. package/dist/constants/aptosConstants.js +78 -0
  58. package/dist/constants/aptosConstants.js.map +1 -0
  59. package/dist/constants/suiConstants.d.ts +18 -0
  60. package/dist/constants/suiConstants.js +61 -0
  61. package/dist/constants/suiConstants.js.map +1 -0
  62. package/dist/hooks/accounts/useAPTAccount.d.ts +30 -0
  63. package/dist/hooks/accounts/useAPTAccount.js +39 -0
  64. package/dist/hooks/accounts/useAPTAccount.js.map +1 -0
  65. package/dist/hooks/accounts/useSUIAccount.d.ts +7 -0
  66. package/dist/hooks/accounts/useSUIAccount.js +46 -0
  67. package/dist/hooks/accounts/useSUIAccount.js.map +1 -0
  68. package/dist/hooks/useMonitorTx.d.ts +2 -21
  69. package/dist/hooks/useMonitorTx.js.map +1 -1
  70. package/dist/hooks/useSortedZapList.js +7 -2
  71. package/dist/hooks/useSortedZapList.js.map +1 -1
  72. package/dist/hooks/useTokenFromZapList.js +1 -0
  73. package/dist/hooks/useTokenFromZapList.js.map +1 -1
  74. package/dist/providers/AptosWalletProvider.d.ts +5 -0
  75. package/dist/providers/SuiWalletProvider.d.ts +5 -0
  76. package/dist/state/balance/useCurrencyBalance.js +9 -0
  77. package/dist/state/balance/useCurrencyBalance.js.map +1 -1
  78. package/dist/state/balance/useCurrencyBalanceAptos.d.ts +14 -0
  79. package/dist/state/balance/useCurrencyBalanceAptos.js +75 -0
  80. package/dist/state/balance/useCurrencyBalanceAptos.js.map +1 -0
  81. package/dist/state/balance/useCurrencyBalanceSui.d.ts +14 -0
  82. package/dist/state/balance/useCurrencyBalanceSui.js +42 -0
  83. package/dist/state/balance/useCurrencyBalanceSui.js.map +1 -0
  84. package/dist/state/balance/useUserTokensBalance.js +19 -1
  85. package/dist/state/balance/useUserTokensBalance.js.map +1 -1
  86. package/dist/state/bonds/aptosBondsConfig.d.ts +4 -0
  87. package/dist/state/bonds/aptosBondsConfig.js +114 -0
  88. package/dist/state/bonds/aptosBondsConfig.js.map +1 -0
  89. package/dist/state/bonds/fetchBillsUserAptos.d.ts +4 -0
  90. package/dist/state/bonds/fetchBillsUserAptos.js +187 -0
  91. package/dist/state/bonds/fetchBillsUserAptos.js.map +1 -0
  92. package/dist/state/bonds/fetchBillsUserSui.d.ts +4 -0
  93. package/dist/state/bonds/fetchBillsUserSui.js +287 -0
  94. package/dist/state/bonds/fetchBillsUserSui.js.map +1 -0
  95. package/dist/state/bonds/fetchBondsDataAptos.d.ts +12 -0
  96. package/dist/state/bonds/fetchBondsDataAptos.js +114 -0
  97. package/dist/state/bonds/fetchBondsDataAptos.js.map +1 -0
  98. package/dist/state/bonds/fetchBondsDataSui.d.ts +13 -0
  99. package/dist/state/bonds/fetchBondsDataSui.js +205 -0
  100. package/dist/state/bonds/fetchBondsDataSui.js.map +1 -0
  101. package/dist/state/bonds/suiBondsConfig.d.ts +4 -0
  102. package/dist/state/bonds/suiBondsConfig.js +113 -0
  103. package/dist/state/bonds/suiBondsConfig.js.map +1 -0
  104. package/dist/state/bonds/useBondsData.js +32 -8
  105. package/dist/state/bonds/useBondsData.js.map +1 -1
  106. package/dist/state/bonds/useBondsList.js +15 -2
  107. package/dist/state/bonds/useBondsList.js.map +1 -1
  108. package/dist/state/bonds/useUserBonds.d.ts +1 -1
  109. package/dist/state/bonds/useUserBonds.js +34 -12
  110. package/dist/state/bonds/useUserBonds.js.map +1 -1
  111. package/dist/state/bonds/utils.js +8 -0
  112. package/dist/state/bonds/utils.js.map +1 -1
  113. package/dist/state/price/useCurrencyPrice.js +2 -1
  114. package/dist/state/price/useCurrencyPrice.js.map +1 -1
  115. package/dist/state/tiers/useTierPoints.js +1 -4
  116. package/dist/state/tiers/useTierPoints.js.map +1 -1
  117. package/dist/state/tokenPrices/useTokenPrices.js +16 -1
  118. package/dist/state/tokenPrices/useTokenPrices.js.map +1 -1
  119. package/dist/state/useSDKConfig.d.ts +4 -0
  120. package/dist/state/useSDKConfig.js.map +1 -1
  121. package/dist/state/zap/useAptosZapQuote.d.ts +28 -0
  122. package/dist/state/zap/useAptosZapQuote.js +83 -0
  123. package/dist/state/zap/useAptosZapQuote.js.map +1 -0
  124. package/dist/state/zap/useSoulZapBondQuote.js +1 -0
  125. package/dist/state/zap/useSoulZapBondQuote.js.map +1 -1
  126. package/dist/state/zap/useSuiZapQuote.d.ts +24 -0
  127. package/dist/state/zap/useSuiZapQuote.js +119 -0
  128. package/dist/state/zap/useSuiZapQuote.js.map +1 -0
  129. package/dist/types/aptosBonds.d.ts +152 -0
  130. package/dist/types/yourbonds.d.ts +3 -9
  131. package/dist/utils/aptosHelpers.d.ts +80 -0
  132. package/dist/utils/aptosHelpers.js +202 -0
  133. package/dist/utils/aptosHelpers.js.map +1 -0
  134. package/dist/utils/getNativeTicker.js +1 -0
  135. package/dist/utils/getNativeTicker.js.map +1 -1
  136. package/dist/utils/suiHelpers.d.ts +6 -0
  137. package/dist/utils/suiHelpers.js +106 -0
  138. package/dist/utils/suiHelpers.js.map +1 -0
  139. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +8 -2
  140. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
  141. package/dist/views/Bonds/components/BondRows/ModalHandler.js +18 -1
  142. package/dist/views/Bonds/components/BondRows/ModalHandler.js.map +1 -1
  143. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +29 -0
  144. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
  145. package/dist/views/BuyBond/BuyBondModal.js +4 -1
  146. package/dist/views/BuyBond/BuyBondModal.js.map +1 -1
  147. package/dist/views/BuyBond/BuyComponentAptos.d.ts +10 -0
  148. package/dist/views/BuyBond/BuyComponentAptos.js +349 -0
  149. package/dist/views/BuyBond/BuyComponentAptos.js.map +1 -0
  150. package/dist/views/BuyBond/BuyComponentSui.d.ts +10 -0
  151. package/dist/views/BuyBond/BuyComponentSui.js +459 -0
  152. package/dist/views/BuyBond/BuyComponentSui.js.map +1 -0
  153. package/dist/views/BuyBond/components/Estimations.js +2 -1
  154. package/dist/views/BuyBond/components/Estimations.js.map +1 -1
  155. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +8 -23
  156. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
  157. package/dist/views/YourBonds/YourBonds.js +19 -2
  158. package/dist/views/YourBonds/YourBonds.js.map +1 -1
  159. package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js +139 -5
  160. package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js.map +1 -1
  161. package/dist/views/YourBonds/components/ClaimAll/index.js +6 -2
  162. package/dist/views/YourBonds/components/ClaimAll/index.js.map +1 -1
  163. package/dist/views/YourBonds/components/UserBondRow/UserBondRowAptos.d.ts +6 -0
  164. package/dist/views/YourBonds/components/UserBondRow/UserBondRowAptos.js +109 -0
  165. package/dist/views/YourBonds/components/UserBondRow/UserBondRowAptos.js.map +1 -0
  166. package/dist/views/YourBonds/components/UserBondRow/UserBondRowSui.d.ts +6 -0
  167. package/dist/views/YourBonds/components/UserBondRow/UserBondRowSui.js +126 -0
  168. package/dist/views/YourBonds/components/UserBondRow/UserBondRowSui.js.map +1 -0
  169. package/dist/views/YourBonds/components/UserBondRow/index.d.ts +2 -0
  170. package/dist/views/YourBondsModal/YourBondsModal.js +3 -1
  171. package/dist/views/YourBondsModal/YourBondsModal.js.map +1 -1
  172. package/dist/views/YourBondsModal/components/Actions/ActionsAptos.d.ts +6 -0
  173. package/dist/views/YourBondsModal/components/Actions/ActionsAptos.js +96 -0
  174. package/dist/views/YourBondsModal/components/Actions/ActionsAptos.js.map +1 -0
  175. package/dist/views/YourBondsModal/components/Actions/ActionsSui.d.ts +6 -0
  176. package/dist/views/YourBondsModal/components/Actions/ActionsSui.js +115 -0
  177. package/dist/views/YourBondsModal/components/Actions/ActionsSui.js.map +1 -0
  178. package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionAptos.d.ts +8 -0
  179. package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionAptos.js +18 -0
  180. package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionAptos.js.map +1 -0
  181. package/dist/views/YourBondsModal/components/TransferBondModal/index.js +2 -1
  182. package/dist/views/YourBondsModal/components/TransferBondModal/index.js.map +1 -1
  183. package/package.json +7 -4
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'theme-ui/jsx-runtime';
2
- import { useState } from 'react';
2
+ import { useState, useEffect } from 'react';
3
3
  import { useSwitchChain, useWriteContract } from 'wagmi';
4
+ import { ChainId } from '@ape.swap/apeswap-lists';
4
5
  import useUserBonds from '../../../../state/bonds/useUserBonds.js';
5
6
  import Button from '../../../../components/uikit-sdk/Button/Button.js';
6
7
  import Svg from '../../../../components/uikit-sdk/Svg/index.js';
@@ -17,13 +18,22 @@ import track from '../../../../utils/track.js';
17
18
  import { usePopups } from '../../../../state/popups/usePopups.js';
18
19
  import { reportError } from '../../../../utils/reportError.js';
19
20
  import useEVMAccount from '../../../../hooks/accounts/useEVMAccount.js';
21
+ import useAPTAccount from '../../../../hooks/accounts/useAPTAccount.js';
22
+ import useSUIAccount from '../../../../hooks/accounts/useSUIAccount.js';
23
+ import { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants.js';
24
+ import { SUI_CLAIM_FUNCTION } from '../../../../constants/suiConstants.js';
25
+ import { getAptosClient } from '../../../../utils/aptosHelpers.js';
26
+ import { Transaction } from '@mysten/sui/transactions';
27
+ import { verifySuiTxSuccess } from '../../../../utils/suiHelpers.js';
20
28
 
21
29
  const ClaimAllModal = () => {
22
30
  const { chainId, address: account } = useEVMAccount();
31
+ const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount();
32
+ const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount();
23
33
  const { switchChain } = useSwitchChain();
24
34
  const SDKConfig = useSDKConfig();
25
35
  const chains = SDKConfig?.chains;
26
- const [selectedChain, setSelectedChain] = useState(chainId ?? 56);
36
+ const [selectedChain, setSelectedChain] = useState(chainId ?? (aptosAccount ? ChainId.APTOS : suiAccount ? ChainId.SUI : 56));
27
37
  const [viewAllChains, setViewAllChains] = useState(false);
28
38
  const { data: userOwnedBills } = useUserBonds();
29
39
  const ownedBills = userOwnedBills?.filter((bill) => parseFloat(bill?.payout) > 0);
@@ -46,9 +56,13 @@ const ClaimAllModal = () => {
46
56
  }, []);
47
57
  const bondsOfSelectedChain = groupedBills?.filter((group) => group.bond.chainId === selectedChain);
48
58
  const ownedBillsAmount = bondsOfSelectedChain?.reduce((total, ownerBills) => total + (ownerBills.userOwnedBills?.length || 0), 0);
49
- const { addToastError } = usePopups();
59
+ const { addToastError, addToastSuccess } = usePopups();
50
60
  const { writeContractAsync } = useWriteContract();
51
- const handleClaim = async () => {
61
+ const { refetch } = useUserBonds();
62
+ const [loadingTx, setLoadingTx] = useState(false);
63
+ const isAptosChain = selectedChain === ChainId.APTOS;
64
+ const isSuiChain = selectedChain === ChainId.SUI;
65
+ const handleClaimEVM = async () => {
52
66
  try {
53
67
  bondsOfSelectedChain?.map(async (purchasedBond) => {
54
68
  const address = purchasedBond.bond.contractAddress[purchasedBond.bond.chainId];
@@ -83,6 +97,117 @@ const ClaimAllModal = () => {
83
97
  });
84
98
  }
85
99
  };
100
+ const handleClaimAptos = async () => {
101
+ if (!aptosAccount || !bondsOfSelectedChain?.length)
102
+ return;
103
+ setLoadingTx(true);
104
+ try {
105
+ // Aptos has no batchRedeem — claim each bill individually
106
+ const allBills = bondsOfSelectedChain.flatMap((group) => group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })));
107
+ let lastTxHash = '';
108
+ for (const { bill, market } of allBills) {
109
+ if (!market || !bill.id)
110
+ continue;
111
+ track({
112
+ event: 'bond',
113
+ chain: ChainId.APTOS,
114
+ data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },
115
+ });
116
+ const response = await signAndSubmitTransaction?.({
117
+ data: {
118
+ function: APTOS_CLAIM_FUNCTION,
119
+ typeArguments: [],
120
+ functionArguments: [market, bill.id],
121
+ },
122
+ });
123
+ if (!response?.hash)
124
+ throw new Error('No tx hash returned by wallet');
125
+ lastTxHash = response.hash;
126
+ const aptos = getAptosClient();
127
+ await aptos.waitForTransaction({ transactionHash: response.hash });
128
+ }
129
+ refetch();
130
+ addToastSuccess(lastTxHash, ChainId.APTOS);
131
+ }
132
+ catch (error) {
133
+ console.error('Aptos Claim All failed:', error);
134
+ addToastError(error?.message ?? 'Unknown error');
135
+ reportError({
136
+ apiUrl: SDKConfig?.urls?.apiV2,
137
+ error,
138
+ extraInfo: { type: 'aptosClaimAll', bondsOfSelectedChain, error },
139
+ chainId: ChainId.APTOS,
140
+ account: aptosAccount ?? '',
141
+ });
142
+ }
143
+ finally {
144
+ setLoadingTx(false);
145
+ }
146
+ };
147
+ const handleClaimSui = async () => {
148
+ if (!suiAccount || !bondsOfSelectedChain?.length || !signAndExecuteTransaction)
149
+ return;
150
+ setLoadingTx(true);
151
+ try {
152
+ const allBills = bondsOfSelectedChain
153
+ .flatMap((group) => group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })))
154
+ .filter(({ bill }) => bill.pendingRewards !== '0');
155
+ // Build a single PTB that claims all bills in one transaction
156
+ const tx = new Transaction();
157
+ for (const { bill, market } of allBills) {
158
+ if (!market || !bill.address)
159
+ continue;
160
+ const payoutCoinType = bill.bond?.earnToken?.address?.[bill.bond?.chainId ?? 0];
161
+ const principalCoinType = bill.bond?.lpToken?.address?.[bill.bond?.chainId ?? 0];
162
+ if (!payoutCoinType || !principalCoinType)
163
+ continue;
164
+ track({
165
+ event: 'bond',
166
+ chain: ChainId.SUI,
167
+ data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },
168
+ });
169
+ const [claimedCoin] = tx.moveCall({
170
+ target: SUI_CLAIM_FUNCTION,
171
+ typeArguments: [payoutCoinType, principalCoinType],
172
+ arguments: [
173
+ tx.object(market),
174
+ tx.object(bill.address), // BondNFT object ID
175
+ tx.object('0x6'), // clock
176
+ ],
177
+ });
178
+ tx.transferObjects([claimedCoin], tx.pure.address(suiAccount));
179
+ }
180
+ // Pre-build so the wallet receives fully-resolved bytes
181
+ tx.setSender(suiAccount);
182
+ tx.setGasBudget(50000000);
183
+ const { getSuiClient } = await import('../../../../utils/suiHelpers.js');
184
+ const suiClient = getSuiClient();
185
+ const builtBytes = await tx.build({ client: suiClient });
186
+ const prebuiltTx = Transaction.from(builtBytes);
187
+ const claimResponse = await signAndExecuteTransaction({ transaction: prebuiltTx });
188
+ const claimDigest = claimResponse?.digest;
189
+ if (claimDigest) {
190
+ await verifySuiTxSuccess(claimDigest);
191
+ }
192
+ refetch();
193
+ addToastSuccess(claimDigest, ChainId.SUI);
194
+ }
195
+ catch (error) {
196
+ console.error('Sui Claim All failed:', error);
197
+ addToastError(error?.message ?? 'Unknown error');
198
+ reportError({
199
+ apiUrl: SDKConfig?.urls?.apiV2,
200
+ error,
201
+ extraInfo: { type: 'suiClaimAll', bondsOfSelectedChain, error },
202
+ chainId: ChainId.SUI,
203
+ account: suiAccount ?? '',
204
+ });
205
+ }
206
+ finally {
207
+ setLoadingTx(false);
208
+ }
209
+ };
210
+ const handleClaim = isSuiChain ? handleClaimSui : isAptosChain ? handleClaimAptos : handleClaimEVM;
86
211
  const purchasedBillsChains = groupedBills
87
212
  ?.reduce((acc, bill) => {
88
213
  if (acc.includes(bill.bond.chainId)) {
@@ -92,6 +217,13 @@ const ClaimAllModal = () => {
92
217
  return [...acc, bill.bond.chainId];
93
218
  }, [])
94
219
  ?.sort((a, b) => a - b);
220
+ // Auto-select the first chain that has bonds when the current selection has none
221
+ useEffect(() => {
222
+ if (purchasedBillsChains?.length && !purchasedBillsChains.includes(selectedChain)) {
223
+ setSelectedChain(purchasedBillsChains[0]);
224
+ }
225
+ /* eslint-disable react-hooks/exhaustive-deps */
226
+ }, [purchasedBillsChains?.length]);
95
227
  return (jsx(Modal, { title: "Claim All", sx: { width: '420px' }, children: viewAllChains ? (jsxs(Fragment, { children: [jsxs(Flex, { sx: { justifyContent: 'space-between', mb: '20px' }, children: [jsx(Flex, { onClick: () => setViewAllChains(false), sx: {
96
228
  ':hover': {
97
229
  cursor: 'pointer',
@@ -115,7 +247,9 @@ const ClaimAllModal = () => {
115
247
  color: 'textDisabledButton',
116
248
  justifyContent: 'center',
117
249
  mt: '10px',
118
- }, children: "No bonds to claim for this chain" })) }), jsxs(Text, { sx: { fontSize: '14px', fontWeight: 400, mt: '15px' }, children: [`You'll claim`, " ", ownedBillsAmount, " Bonds in ", bondsOfSelectedChain?.length, " transaction", (bondsOfSelectedChain?.length ?? 0) > 1 ? 's' : '', "."] }), chainId === selectedChain ? (jsx(Button, { sx: { mt: '15px', width: '100%' }, onClick: handleClaim, children: "Claim" })) : (jsxs(Button, { sx: { mt: '15px', width: '100%' }, onClick: () => switchChain({ chainId: selectedChain }), children: ["Switch to ", NETWORK_LABEL[selectedChain ?? 0]] }))] })) }));
250
+ }, children: "No bonds to claim for this chain" })) }), jsxs(Text, { sx: { fontSize: '14px', fontWeight: 400, mt: '15px' }, children: [`You'll claim`, " ", ownedBillsAmount, " Bonds in", ' ', isAptosChain ? ownedBillsAmount : isSuiChain ? 1 : bondsOfSelectedChain?.length, " transaction", (isAptosChain ? (ownedBillsAmount ?? 0) : isSuiChain ? 0 : (bondsOfSelectedChain?.length ?? 0)) > 1
251
+ ? 's'
252
+ : '', "."] }), isSuiChain ? (jsx(Button, { sx: { mt: '15px', width: '100%' }, onClick: handleClaim, disabled: !suiAccount || loadingTx || !ownedBillsAmount, load: loadingTx, children: !suiAccount ? 'Connect Sui Wallet' : 'Claim' })) : isAptosChain ? (jsx(Button, { sx: { mt: '15px', width: '100%' }, onClick: handleClaim, disabled: !aptosAccount || loadingTx || !ownedBillsAmount, load: loadingTx, children: !aptosAccount ? 'Connect Aptos Wallet' : 'Claim' })) : chainId === selectedChain ? (jsx(Button, { sx: { mt: '15px', width: '100%' }, onClick: handleClaim, children: "Claim" })) : (jsxs(Button, { sx: { mt: '15px', width: '100%' }, onClick: () => switchChain({ chainId: selectedChain }), children: ["Switch to ", NETWORK_LABEL[selectedChain ?? 0]] }))] })) }));
119
253
  };
120
254
 
121
255
  export { ClaimAllModal as default };
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimAllModal.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/ClaimAllModal.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useSwitchChain, useWriteContract } from 'wagmi'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport { NETWORK_LABEL } from '../../../../config/constants/chains'\nimport ChainOptionsList from '../../../../components/ChainOptionList/ChainOptionsList'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport ChainOptionsButtons from '../../../../components/ChainOptionList/ChainOptionsButtons'\nimport { UserBill } from '../../../../types/yourbonds'\nimport BOND_ABI from '../../../../config/abi/BOND_2_4_0.json'\nimport track from '../../../../utils/track'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { BillsConfig } from '@ape.swap/apeswap-lists'\nimport { reportError } from '../../../../utils/reportError'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\n\nconst ClaimAllModal = () => {\n const { chainId, address: account } = useEVMAccount()\n const { switchChain } = useSwitchChain()\n const SDKConfig = useSDKConfig()\n const chains = SDKConfig?.chains as number[]\n\n const [selectedChain, setSelectedChain] = useState(chainId ?? 56)\n const [viewAllChains, setViewAllChains] = useState<boolean>(false)\n const { data: userOwnedBills } = useUserBonds()\n const ownedBills = userOwnedBills?.filter((bill) => parseFloat(bill?.payout) > 0)\n\n const groupedBills = ownedBills?.reduce((acc: { bond: BillsConfig; userOwnedBills: UserBill[] }[], bill) => {\n const bondIndex = bill?.bond?.index\n\n // Check if this bond index already exists in the accumulator\n const existingGroup = acc.find((group) => group.bond.index === bondIndex)\n\n if (existingGroup) {\n // If the group already exists, add this bill to the userOwnedBills array\n existingGroup.userOwnedBills.push(bill)\n } else {\n // If it doesn't exist, create a new group\n acc.push({\n bond: bill.bond as any,\n userOwnedBills: [bill],\n })\n }\n\n return acc\n }, [])\n\n const bondsOfSelectedChain = groupedBills?.filter((group) => group.bond.chainId === selectedChain)\n const ownedBillsAmount = bondsOfSelectedChain?.reduce(\n (total, ownerBills) => total + (ownerBills.userOwnedBills?.length || 0),\n 0,\n )\n const { addToastError } = usePopups()\n\n const { writeContractAsync } = useWriteContract()\n\n const handleClaim = async () => {\n try {\n bondsOfSelectedChain?.map(async (purchasedBond) => {\n const address: `0x${string}` = purchasedBond.bond.contractAddress[purchasedBond.bond.chainId] as `0x${string}`\n track({\n event: 'bond',\n chain: purchasedBond.bond.chainId,\n data: {\n cat: 'claimAll',\n address,\n earnToken: purchasedBond?.bond.earnToken.symbol,\n },\n })\n return writeContractAsync({\n address,\n abi: BOND_ABI,\n functionName: 'batchRedeem',\n args: [purchasedBond.userOwnedBills.map((b) => b.id)],\n chain: chainId as any,\n account,\n })\n })\n } catch (error: any) {\n console.error('Claim All failed:', error)\n addToastError(error.message)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'claimAll', bondsOfSelectedChain, error },\n chainId,\n account,\n })\n }\n }\n\n const purchasedBillsChains = groupedBills\n ?.reduce((acc: number[], bill) => {\n if (acc.includes(bill.bond.chainId)) {\n return acc\n } else return [...acc, bill.bond.chainId]\n }, [])\n ?.sort((a, b) => a - b)\n\n return (\n <Modal title=\"Claim All\" sx={{ width: '420px' }}>\n {viewAllChains ? (\n <>\n <Flex sx={{ justifyContent: 'space-between', mb: '20px' }}>\n <Flex\n onClick={() => setViewAllChains(false)}\n sx={{\n ':hover': {\n cursor: 'pointer',\n },\n }}\n >\n <Svg width=\"10px\" icon=\"arrow\" direction=\"left\" />\n </Flex>\n <Text sx={{ fontSize: '16px', fontWeight: '300' }}>All Chain Options</Text>\n </Flex>\n <ChainOptionsList\n setSelectedChain={setSelectedChain}\n setViewAllChains={setViewAllChains}\n chainList={chains}\n />\n </>\n ) : (\n <Flex sx={{ flexDirection: 'column', width: '100%' }}>\n <Text sx={{ fontSize: '14px', fontWeight: 400, my: '10px' }}>\n Select the chain from which you want to claim your Bonds.\n </Text>\n <ChainOptionsButtons\n setSelectedChain={setSelectedChain}\n selectedChain={selectedChain}\n setViewAllChains={setViewAllChains}\n chainList={purchasedBillsChains ?? []}\n />\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n background: 'white3',\n borderRadius: 'normal',\n p: '10px',\n flexDirection: 'column',\n height: '30vh',\n overflowY: 'auto',\n }}\n >\n {bondsOfSelectedChain && bondsOfSelectedChain?.length > 0 ? (\n bondsOfSelectedChain\n ?.filter((userBill) => userBill.bond.chainId === selectedChain)\n .map((ownedBill, index) => {\n return (\n <Flex\n key={`${ownedBill.bond.earnToken.symbol}-${index}`}\n sx={{ width: '100%', alignItems: 'center', p: '5px' }}\n >\n <TokenImage symbol={ownedBill.bond.earnToken.symbol} size={30} />\n <Text sx={{ ml: '10px' }}>\n {ownedBill.bond.earnToken.symbol}\n <Text sx={{ fontSize: '14px', fontWeight: 400, color: 'textDisabledButton', ml: '10px' }}>\n ({ownedBill?.userOwnedBills?.length} Bond\n {ownedBill?.userOwnedBills && ownedBill?.userOwnedBills?.length > 1 ? 's' : ''})\n </Text>\n </Text>\n </Flex>\n )\n })\n ) : (\n <Flex\n sx={{\n fontSize: '14px',\n fontWeight: 400,\n color: 'textDisabledButton',\n justifyContent: 'center',\n mt: '10px',\n }}\n >\n No bonds to claim for this chain\n </Flex>\n )}\n </Flex>\n <Text sx={{ fontSize: '14px', fontWeight: 400, mt: '15px' }}>\n {`You'll claim`} {ownedBillsAmount} Bonds in {bondsOfSelectedChain?.length} transaction\n {(bondsOfSelectedChain?.length ?? 0) > 1 ? 's' : ''}.\n </Text>\n {chainId === selectedChain ? (\n <Button sx={{ mt: '15px', width: '100%' }} onClick={handleClaim}>\n Claim\n </Button>\n ) : (\n <Button sx={{ mt: '15px', width: '100%' }} onClick={() => switchChain({ chainId: selectedChain })}>\n Switch to {NETWORK_LABEL[selectedChain ?? 0]}\n </Button>\n )}\n </Flex>\n )}\n </Modal>\n )\n}\n\nexport default ClaimAllModal\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"ClaimAllModal.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/ClaimAllModal.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { useSwitchChain, useWriteContract } from 'wagmi'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport { NETWORK_LABEL } from '../../../../config/constants/chains'\nimport ChainOptionsList from '../../../../components/ChainOptionList/ChainOptionsList'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport ChainOptionsButtons from '../../../../components/ChainOptionList/ChainOptionsButtons'\nimport { UserBill } from '../../../../types/yourbonds'\nimport BOND_ABI from '../../../../config/abi/BOND_2_4_0.json'\nimport track from '../../../../utils/track'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { BillsConfig } from '@ape.swap/apeswap-lists'\nimport { reportError } from '../../../../utils/reportError'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\nimport useAPTAccount from '../../../../hooks/accounts/useAPTAccount'\nimport useSUIAccount from '../../../../hooks/accounts/useSUIAccount'\nimport { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants'\nimport { SUI_CLAIM_FUNCTION } from '../../../../constants/suiConstants'\nimport { getAptosClient } from '../../../../utils/aptosHelpers'\nimport { Transaction } from '@mysten/sui/transactions'\nimport { verifySuiTxSuccess } from '../../../../utils/suiHelpers'\n\nconst ClaimAllModal = () => {\n const { chainId, address: account } = useEVMAccount()\n const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount()\n const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount()\n const { switchChain } = useSwitchChain()\n const SDKConfig = useSDKConfig()\n const chains = SDKConfig?.chains as number[]\n\n const [selectedChain, setSelectedChain] = useState(\n chainId ?? (aptosAccount ? ChainId.APTOS : suiAccount ? ChainId.SUI : 56),\n )\n const [viewAllChains, setViewAllChains] = useState<boolean>(false)\n const { data: userOwnedBills } = useUserBonds()\n const ownedBills = userOwnedBills?.filter((bill) => parseFloat(bill?.payout) > 0)\n\n const groupedBills = ownedBills?.reduce((acc: { bond: BillsConfig; userOwnedBills: UserBill[] }[], bill) => {\n const bondIndex = bill?.bond?.index\n\n // Check if this bond index already exists in the accumulator\n const existingGroup = acc.find((group) => group.bond.index === bondIndex)\n\n if (existingGroup) {\n // If the group already exists, add this bill to the userOwnedBills array\n existingGroup.userOwnedBills.push(bill)\n } else {\n // If it doesn't exist, create a new group\n acc.push({\n bond: bill.bond as any,\n userOwnedBills: [bill],\n })\n }\n\n return acc\n }, [])\n\n const bondsOfSelectedChain = groupedBills?.filter((group) => group.bond.chainId === selectedChain)\n const ownedBillsAmount = bondsOfSelectedChain?.reduce(\n (total, ownerBills) => total + (ownerBills.userOwnedBills?.length || 0),\n 0,\n )\n const { addToastError, addToastSuccess } = usePopups()\n\n const { writeContractAsync } = useWriteContract()\n const { refetch } = useUserBonds()\n const [loadingTx, setLoadingTx] = useState(false)\n\n const isAptosChain = selectedChain === ChainId.APTOS\n const isSuiChain = selectedChain === ChainId.SUI\n\n const handleClaimEVM = async () => {\n try {\n bondsOfSelectedChain?.map(async (purchasedBond) => {\n const address: `0x${string}` = purchasedBond.bond.contractAddress[purchasedBond.bond.chainId] as `0x${string}`\n track({\n event: 'bond',\n chain: purchasedBond.bond.chainId,\n data: {\n cat: 'claimAll',\n address,\n earnToken: purchasedBond?.bond.earnToken.symbol,\n },\n })\n return writeContractAsync({\n address,\n abi: BOND_ABI,\n functionName: 'batchRedeem',\n args: [purchasedBond.userOwnedBills.map((b) => b.id)],\n chain: chainId as any,\n account,\n })\n })\n } catch (error: any) {\n console.error('Claim All failed:', error)\n addToastError(error.message)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'claimAll', bondsOfSelectedChain, error },\n chainId,\n account,\n })\n }\n }\n\n const handleClaimAptos = async () => {\n if (!aptosAccount || !bondsOfSelectedChain?.length) return\n\n setLoadingTx(true)\n try {\n // Aptos has no batchRedeem — claim each bill individually\n const allBills = bondsOfSelectedChain.flatMap((group) =>\n group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })),\n )\n\n let lastTxHash = ''\n for (const { bill, market } of allBills) {\n if (!market || !bill.id) continue\n\n track({\n event: 'bond',\n chain: ChainId.APTOS,\n data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },\n })\n\n const response = await signAndSubmitTransaction?.({\n data: {\n function: APTOS_CLAIM_FUNCTION,\n typeArguments: [],\n functionArguments: [market, bill.id],\n },\n })\n if (!response?.hash) throw new Error('No tx hash returned by wallet')\n lastTxHash = response.hash\n\n const aptos = getAptosClient()\n await aptos.waitForTransaction({ transactionHash: response.hash })\n }\n\n refetch()\n addToastSuccess(lastTxHash, ChainId.APTOS)\n } catch (error: any) {\n console.error('Aptos Claim All failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'aptosClaimAll', bondsOfSelectedChain, error },\n chainId: ChainId.APTOS,\n account: aptosAccount ?? '',\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleClaimSui = async () => {\n if (!suiAccount || !bondsOfSelectedChain?.length || !signAndExecuteTransaction) return\n\n setLoadingTx(true)\n try {\n const allBills = bondsOfSelectedChain\n .flatMap((group) =>\n group.userOwnedBills.map((b) => ({ bill: b, market: group.bond.contractAddress[group.bond.chainId] })),\n )\n .filter(({ bill }) => bill.pendingRewards !== '0')\n\n // Build a single PTB that claims all bills in one transaction\n const tx = new Transaction()\n for (const { bill, market } of allBills) {\n if (!market || !bill.address) continue\n\n const payoutCoinType = bill.bond?.earnToken?.address?.[bill.bond?.chainId ?? 0]\n const principalCoinType = bill.bond?.lpToken?.address?.[bill.bond?.chainId ?? 0]\n if (!payoutCoinType || !principalCoinType) continue\n\n track({\n event: 'bond',\n chain: ChainId.SUI,\n data: { cat: 'claimAll', address: market, earnToken: bill.bond?.earnToken?.symbol },\n })\n\n const [claimedCoin] = tx.moveCall({\n target: SUI_CLAIM_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(bill.address), // BondNFT object ID\n tx.object('0x6'), // clock\n ],\n })\n tx.transferObjects([claimedCoin], tx.pure.address(suiAccount!))\n }\n\n // Pre-build so the wallet receives fully-resolved bytes\n tx.setSender(suiAccount!)\n tx.setGasBudget(50_000_000)\n const { getSuiClient } = await import('../../../../utils/suiHelpers')\n const suiClient = getSuiClient()\n const builtBytes = await tx.build({ client: suiClient })\n const prebuiltTx = Transaction.from(builtBytes)\n\n const claimResponse = await signAndExecuteTransaction({ transaction: prebuiltTx })\n const claimDigest = claimResponse?.digest\n if (claimDigest) {\n await verifySuiTxSuccess(claimDigest)\n }\n\n refetch()\n addToastSuccess(claimDigest, ChainId.SUI)\n } catch (error: any) {\n console.error('Sui Claim All failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'suiClaimAll', bondsOfSelectedChain, error },\n chainId: ChainId.SUI,\n account: suiAccount ?? '',\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleClaim = isSuiChain ? handleClaimSui : isAptosChain ? handleClaimAptos : handleClaimEVM\n\n const purchasedBillsChains = groupedBills\n ?.reduce((acc: number[], bill) => {\n if (acc.includes(bill.bond.chainId)) {\n return acc\n } else return [...acc, bill.bond.chainId]\n }, [])\n ?.sort((a, b) => a - b)\n\n // Auto-select the first chain that has bonds when the current selection has none\n useEffect(() => {\n if (purchasedBillsChains?.length && !purchasedBillsChains.includes(selectedChain)) {\n setSelectedChain(purchasedBillsChains[0])\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [purchasedBillsChains?.length])\n\n return (\n <Modal title=\"Claim All\" sx={{ width: '420px' }}>\n {viewAllChains ? (\n <>\n <Flex sx={{ justifyContent: 'space-between', mb: '20px' }}>\n <Flex\n onClick={() => setViewAllChains(false)}\n sx={{\n ':hover': {\n cursor: 'pointer',\n },\n }}\n >\n <Svg width=\"10px\" icon=\"arrow\" direction=\"left\" />\n </Flex>\n <Text sx={{ fontSize: '16px', fontWeight: '300' }}>All Chain Options</Text>\n </Flex>\n <ChainOptionsList\n setSelectedChain={setSelectedChain}\n setViewAllChains={setViewAllChains}\n chainList={chains}\n />\n </>\n ) : (\n <Flex sx={{ flexDirection: 'column', width: '100%' }}>\n <Text sx={{ fontSize: '14px', fontWeight: 400, my: '10px' }}>\n Select the chain from which you want to claim your Bonds.\n </Text>\n <ChainOptionsButtons\n setSelectedChain={setSelectedChain}\n selectedChain={selectedChain}\n setViewAllChains={setViewAllChains}\n chainList={purchasedBillsChains ?? []}\n />\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n background: 'white3',\n borderRadius: 'normal',\n p: '10px',\n flexDirection: 'column',\n height: '30vh',\n overflowY: 'auto',\n }}\n >\n {bondsOfSelectedChain && bondsOfSelectedChain?.length > 0 ? (\n bondsOfSelectedChain\n ?.filter((userBill) => userBill.bond.chainId === selectedChain)\n .map((ownedBill, index) => {\n return (\n <Flex\n key={`${ownedBill.bond.earnToken.symbol}-${index}`}\n sx={{ width: '100%', alignItems: 'center', p: '5px' }}\n >\n <TokenImage symbol={ownedBill.bond.earnToken.symbol} size={30} />\n <Text sx={{ ml: '10px' }}>\n {ownedBill.bond.earnToken.symbol}\n <Text sx={{ fontSize: '14px', fontWeight: 400, color: 'textDisabledButton', ml: '10px' }}>\n ({ownedBill?.userOwnedBills?.length} Bond\n {ownedBill?.userOwnedBills && ownedBill?.userOwnedBills?.length > 1 ? 's' : ''})\n </Text>\n </Text>\n </Flex>\n )\n })\n ) : (\n <Flex\n sx={{\n fontSize: '14px',\n fontWeight: 400,\n color: 'textDisabledButton',\n justifyContent: 'center',\n mt: '10px',\n }}\n >\n No bonds to claim for this chain\n </Flex>\n )}\n </Flex>\n <Text sx={{ fontSize: '14px', fontWeight: 400, mt: '15px' }}>\n {`You'll claim`} {ownedBillsAmount} Bonds in{' '}\n {isAptosChain ? ownedBillsAmount : isSuiChain ? 1 : bondsOfSelectedChain?.length} transaction\n {(isAptosChain ? (ownedBillsAmount ?? 0) : isSuiChain ? 0 : (bondsOfSelectedChain?.length ?? 0)) > 1\n ? 's'\n : ''}\n .\n </Text>\n {isSuiChain ? (\n <Button\n sx={{ mt: '15px', width: '100%' }}\n onClick={handleClaim}\n disabled={!suiAccount || loadingTx || !ownedBillsAmount}\n load={loadingTx}\n >\n {!suiAccount ? 'Connect Sui Wallet' : 'Claim'}\n </Button>\n ) : isAptosChain ? (\n <Button\n sx={{ mt: '15px', width: '100%' }}\n onClick={handleClaim}\n disabled={!aptosAccount || loadingTx || !ownedBillsAmount}\n load={loadingTx}\n >\n {!aptosAccount ? 'Connect Aptos Wallet' : 'Claim'}\n </Button>\n ) : chainId === selectedChain ? (\n <Button sx={{ mt: '15px', width: '100%' }} onClick={handleClaim}>\n Claim\n </Button>\n ) : (\n <Button sx={{ mt: '15px', width: '100%' }} onClick={() => switchChain({ chainId: selectedChain })}>\n Switch to {NETWORK_LABEL[selectedChain ?? 0]}\n </Button>\n )}\n </Flex>\n )}\n </Modal>\n )\n}\n\nexport default ClaimAllModal\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -3,11 +3,15 @@ import ClaimAllModal from './ClaimAllModal.js';
3
3
  import Button from '../../../../components/uikit-sdk/Button/Button.js';
4
4
  import useModal from '../../../../hooks/useModal.js';
5
5
  import useEVMAccount from '../../../../hooks/accounts/useEVMAccount.js';
6
+ import useAPTAccount from '../../../../hooks/accounts/useAPTAccount.js';
7
+ import useSUIAccount from '../../../../hooks/accounts/useSUIAccount.js';
6
8
 
7
9
  const ClaimAll = () => {
8
- const { address: account } = useEVMAccount();
10
+ const { address: evmAccount } = useEVMAccount();
11
+ const { address: aptosAccount } = useAPTAccount();
12
+ const { address: suiAccount } = useSUIAccount();
9
13
  const [onOpenModal] = useModal(jsx(ClaimAllModal, {}));
10
- return (jsx(Button, { onClick: onOpenModal, disabled: !account, sx: {
14
+ return (jsx(Button, { onClick: onOpenModal, disabled: !evmAccount && !aptosAccount && !suiAccount, sx: {
11
15
  height: '30px',
12
16
  lineHeight: '12px',
13
17
  fontSize: '14px',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/index.tsx"],"sourcesContent":["import React from 'react'\nimport ClaimAllModal from './ClaimAllModal'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport useModal from '../../../../hooks/useModal'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\n\nconst ClaimAll = () => {\n const { address: account } = useEVMAccount()\n const [onOpenModal] = useModal(<ClaimAllModal />)\n\n return (\n <Button\n onClick={onOpenModal}\n disabled={!account}\n sx={{\n height: '30px',\n lineHeight: '12px',\n fontSize: '14px',\n fontWeight: 600,\n width: '100%',\n opacity: 1,\n ml: ['10px', '10px', '10px', '0'],\n }}\n >\n Claim All\n </Button>\n )\n}\n\nexport default ClaimAll\n"],"names":["_jsx"],"mappings":";;;;;;AAMA,MAAM,QAAQ,GAAG,MAAK;IACpB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE;IAC5C,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAACA,GAAA,CAAC,aAAa,EAAA,EAAA,CAAG,CAAC;AAEjD,IAAA,QACEA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,OAAO,EAClB,EAAE,EAAE;AACF,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,OAAO,EAAE,CAAC;YACV,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;AAClC,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAGM;AAEb;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/YourBonds/components/ClaimAll/index.tsx"],"sourcesContent":["import React from 'react'\nimport ClaimAllModal from './ClaimAllModal'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport useModal from '../../../../hooks/useModal'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\nimport useAPTAccount from '../../../../hooks/accounts/useAPTAccount'\nimport useSUIAccount from '../../../../hooks/accounts/useSUIAccount'\n\nconst ClaimAll = () => {\n const { address: evmAccount } = useEVMAccount()\n const { address: aptosAccount } = useAPTAccount()\n const { address: suiAccount } = useSUIAccount()\n const [onOpenModal] = useModal(<ClaimAllModal />)\n\n return (\n <Button\n onClick={onOpenModal}\n disabled={!evmAccount && !aptosAccount && !suiAccount}\n sx={{\n height: '30px',\n lineHeight: '12px',\n fontSize: '14px',\n fontWeight: 600,\n width: '100%',\n opacity: 1,\n ml: ['10px', '10px', '10px', '0'],\n }}\n >\n Claim All\n </Button>\n )\n}\n\nexport default ClaimAll\n"],"names":["_jsx"],"mappings":";;;;;;;;AAQA,MAAM,QAAQ,GAAG,MAAK;IACpB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE;IACjD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE;IAC/C,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAACA,GAAA,CAAC,aAAa,EAAA,EAAA,CAAG,CAAC;IAEjD,QACEA,IAAC,MAAM,EAAA,EACL,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EACrD,EAAE,EAAE;AACF,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,OAAO,EAAE,CAAC;YACV,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;AAClC,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAGM;AAEb;;;;"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { UserBill } from '../../../../types/yourbonds';
3
+ declare const UserBondRowAptos: ({ bill }: {
4
+ bill: UserBill;
5
+ }) => React.JSX.Element;
6
+ export default UserBondRowAptos;
@@ -0,0 +1,109 @@
1
+ import { jsx, jsxs } from 'theme-ui/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import { ChainId } from '@ape.swap/apeswap-lists';
4
+ import TokenInfoAndName from '../../../../components/TokenInfoAndName/index.js';
5
+ import { formatNumberSI } from '../../../../utils/formatNumber.js';
6
+ import Button from '../../../../components/uikit-sdk/Button/Button.js';
7
+ import Svg from '../../../../components/uikit-sdk/Svg/index.js';
8
+ import TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble/index.js';
9
+ import Flex from '../../../../components/uikit-sdk/Flex/index.js';
10
+ import { NETWORK_LABEL } from '../../../../config/constants/chains.js';
11
+ import { getTimeLeftForFullyVested, getPendingVestingString, claimable, pending, getPercentageVested } from '../../../../utils/displayHelpers.js';
12
+ import useModal from '../../../../hooks/useModal.js';
13
+ import { usePopups } from '../../../../state/popups/usePopups.js';
14
+ import BondInfoTooltip from '../../../../components/Tooltip/Tooltip.js';
15
+ import { getTimePeriods } from '../../../../utils/getTimePeriods.js';
16
+ import ProfitCard from '../ProfitCard/ProfitCard.js';
17
+ import ProgressBar from '../../../../components/ProgressBar/ProgressBar.js';
18
+ import ProgressBarWrapper from '../../../../components/ProgressBar/ProgressBarWrapper.js';
19
+ import { useSDKConfig } from '../../../../state/useSDKConfig.js';
20
+ import YourBondsModal from '../../../YourBondsModal/YourBondsModal.js';
21
+ import { reportError } from '../../../../utils/reportError.js';
22
+ import { useQueryClient } from '@tanstack/react-query';
23
+ import useAPTAccount from '../../../../hooks/accounts/useAPTAccount.js';
24
+ import { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants.js';
25
+ import { getAptosClient } from '../../../../utils/aptosHelpers.js';
26
+ import { QUERY_KEYS } from '../../../../config/constants/queryKeys.js';
27
+
28
+ // Row renderer for Aptos user bonds. Structure and layout mirror
29
+ // `UserBondRowSolana` so the Your Bonds grid stays visually consistent
30
+ // across VMs. The only meaningful divergence is `handleClaim`, which either
31
+ // writes into the React Query cache (simulation) or calls the Aptos
32
+ // wallet adapter (real path). Everything else is a pass-through of the
33
+ // shared `UserBill` projection + `displayHelpers` utilities.
34
+ const UserBondRowAptos = ({ bill }) => {
35
+ // Hooks
36
+ const SDKConfig = useSDKConfig();
37
+ const queryClient = useQueryClient();
38
+ const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount();
39
+ const { addToastError, addToastSuccess } = usePopups();
40
+ // State
41
+ const [loadingTx, setLoadingTx] = useState(false);
42
+ // Static Data
43
+ const earnTokenPrice = parseFloat(bill?.bond?.payoutTokenPrice ?? '0');
44
+ const vestingCliff = bill?.bond?.vestingCliff;
45
+ const currentTime = Math.round(new Date().getTime() / 1000);
46
+ const vestingStartTimestamp = parseInt(bill?.vestingStartTimestamp ?? '0');
47
+ const isPendingCliff = vestingCliff ? currentTime - vestingStartTimestamp < vestingCliff : false;
48
+ const cliffCountdown = getTimePeriods(vestingStartTimestamp + (vestingCliff ?? 0) - currentTime, true);
49
+ const [onOpenPurchasedBond] = useModal(jsx(YourBondsModal, { userBill: bill }));
50
+ const handleClaim = async () => {
51
+ if (loadingTx || !aptosAccount)
52
+ return;
53
+ try {
54
+ setLoadingTx(true);
55
+ // The contract's `claim` entry function takes `(market, bill_id: u64)` —
56
+ // the scalar bill_id, NOT the object address.
57
+ const market = bill?.bond?.contractAddress?.[bill?.bond?.chainId ?? 0];
58
+ if (!market)
59
+ throw new Error('Missing bond market address');
60
+ if (!bill.id)
61
+ throw new Error('Missing bill ID');
62
+ const response = await signAndSubmitTransaction?.({
63
+ data: {
64
+ function: APTOS_CLAIM_FUNCTION,
65
+ typeArguments: [],
66
+ functionArguments: [market, bill.id],
67
+ },
68
+ });
69
+ if (!response?.hash)
70
+ throw new Error('No tx hash returned by wallet');
71
+ const aptos = getAptosClient();
72
+ await aptos.waitForTransaction({ transactionHash: response.hash });
73
+ await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] });
74
+ addToastSuccess(response.hash, ChainId.APTOS);
75
+ }
76
+ catch (error) {
77
+ console.error('Aptos claim failed:', error);
78
+ addToastError(error?.message ?? 'Unknown error');
79
+ reportError({
80
+ apiUrl: SDKConfig?.urls?.apiV2,
81
+ error,
82
+ chainId: ChainId.APTOS,
83
+ account: aptosAccount ?? '',
84
+ extraInfo: { type: 'aptosClaim', bill, error },
85
+ });
86
+ }
87
+ finally {
88
+ setLoadingTx(false);
89
+ }
90
+ };
91
+ return (jsxs("div", { className: "your-bonds", onClick: () => onOpenPurchasedBond(), children: [jsxs("div", { className: "token-info-container", children: [jsx(TokenInfoAndName, { tokenSymbol: bill.bond?.earnToken.symbol, chain: bill?.bond?.chainId, vestEnds: getTimeLeftForFullyVested(bill) > 0 ? `Ends in ${getPendingVestingString(bill)}` : `Fully Vested`, isHotBond: true }), jsx("div", { className: "tooltip-column", children: jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(BondInfoTooltip, { earnTokenContract: bill?.bond?.earnToken.address[bill?.bond.chainId] || '', earnTokenSymbol: bill?.bond?.earnToken.symbol || '', bondContract: bill?.address ?? '', projectLink: bill?.bond?.projectLink, twitter: bill?.bond?.twitter, chain: bill?.bond?.chainId, cgId: bill?.bond?.cgId, dexscreener: bill?.bond?.dexscreener }), width: "205px", placement: "bottomRight", transformTip: "translate(5%, 0%)", children: jsx(Flex, { sx: { opacity: 0.8 }, children: jsx(Svg, { icon: "more", width: "25px" }) }) }) })] }), jsxs("div", { className: "your-bonds-columns-container", children: [jsx(Flex, { sx: { width: '125px' }, children: jsx(ProfitCard, { userBond: bill }) }), jsxs("div", { className: "your-bonds-content", children: [jsx("div", { className: "your-bonds-content-title", children: "Claimable" }), jsxs("div", { className: "your-bonds-content-tokens-amount", children: [formatNumberSI(claimable(bill), 4), jsx("div", { className: "your-bonds-content-tokens-usd-amount", children: `($${(claimable(bill) * earnTokenPrice).toFixed(2)})` })] })] }), jsxs("div", { className: "your-bonds-content", children: [jsx("div", { className: "your-bonds-content-title", children: "Pending" }), jsxs("div", { className: "your-bonds-content-tokens-amount", children: [formatNumberSI(pending(bill), 4), jsx("div", { className: "your-bonds-content-tokens-usd-amount", children: `($${(pending(bill) * earnTokenPrice).toFixed(2)})` })] })] }), jsx("div", { className: "your-bonds-content hide-mobile", children: jsx(ProgressBarWrapper, { title: '', value: jsx(ProgressBar, { value: getPercentageVested(bill) }), style: {
92
+ width: '127px',
93
+ height: '25px',
94
+ flexDirection: 'column',
95
+ justifyContent: 'center',
96
+ display: ['none', 'none', 'none', 'flex'],
97
+ }, showTooltip: true, toolTip: getTimeLeftForFullyVested(bill) > 0
98
+ ? `Fully vested in ${getPendingVestingString(bill)}.`
99
+ : `Fully Vested.` }) }), jsx("div", { className: "your-bonds-column-button", children: !aptosAccount ? (jsxs(Button, { className: "button", disabled: true, fullWidth: true, children: ["Connect to ", NETWORK_LABEL[ChainId.APTOS]] })) : (jsx(Button, { className: "button", disabled: claimable(bill) === 0 || loadingTx || isPendingCliff, load: loadingTx, onClick: (event) => {
100
+ event.stopPropagation();
101
+ if (!loadingTx)
102
+ handleClaim();
103
+ }, fullWidth: true, children: isPendingCliff
104
+ ? `Claimable in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`
105
+ : 'Claim' })) })] })] }));
106
+ };
107
+
108
+ export { UserBondRowAptos as default };
109
+ //# sourceMappingURL=UserBondRowAptos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserBondRowAptos.js","sources":["../../../../../src/views/YourBonds/components/UserBondRow/UserBondRowAptos.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\nimport TokenInfoAndName from '../../../../components/TokenInfoAndName'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { NETWORK_LABEL } from '../../../../config/constants/chains'\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 ProfitCard from '../ProfitCard/ProfitCard'\nimport ProgressBar from '../../../../components/ProgressBar/ProgressBar'\nimport ProgressBarWrapper from '../../../../components/ProgressBar/ProgressBarWrapper'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport YourBondsModal from '../../../YourBondsModal/YourBondsModal'\nimport { reportError } from '../../../../utils/reportError'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport useAPTAccount from '../../../../hooks/accounts/useAPTAccount'\nimport { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants'\nimport { getAptosClient } from '../../../../utils/aptosHelpers'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n// Row renderer for Aptos user bonds. Structure and layout mirror\n// `UserBondRowSolana` so the Your Bonds grid stays visually consistent\n// across VMs. The only meaningful divergence is `handleClaim`, which either\n// writes into the React Query cache (simulation) or calls the Aptos\n// wallet adapter (real path). Everything else is a pass-through of the\n// shared `UserBill` projection + `displayHelpers` utilities.\nconst UserBondRowAptos = ({ bill }: { bill: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount()\n const { addToastError, addToastSuccess } = usePopups()\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 if (loadingTx || !aptosAccount) return\n\n try {\n setLoadingTx(true)\n\n // The contract's `claim` entry function takes `(market, bill_id: u64)` —\n // the scalar bill_id, NOT the object address.\n const market = bill?.bond?.contractAddress?.[bill?.bond?.chainId ?? 0]\n if (!market) throw new Error('Missing bond market address')\n if (!bill.id) throw new Error('Missing bill ID')\n\n const response = await signAndSubmitTransaction?.({\n data: {\n function: APTOS_CLAIM_FUNCTION,\n typeArguments: [],\n functionArguments: [market, bill.id],\n },\n })\n if (!response?.hash) throw new Error('No tx hash returned by wallet')\n\n const aptos = getAptosClient()\n await aptos.waitForTransaction({ transactionHash: response.hash })\n\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] })\n addToastSuccess(response.hash, ChainId.APTOS)\n } catch (error: any) {\n console.error('Aptos claim failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n chainId: ChainId.APTOS,\n account: aptosAccount ?? '',\n extraInfo: { type: 'aptosClaim', bill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <div className=\"your-bonds\" onClick={() => onOpenPurchasedBond()}>\n <div className=\"token-info-container\">\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\">\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 sx={{ opacity: 0.8 }}>\n <Svg icon=\"more\" width=\"25px\" />\n </Flex>\n </TooltipBubble>\n </div>\n </div>\n <div className=\"your-bonds-columns-container\">\n <Flex sx={{ width: '125px' }}>\n <ProfitCard userBond={bill} />\n </Flex>\n <div className=\"your-bonds-content\">\n <div className=\"your-bonds-content-title\">Claimable</div>\n <div className=\"your-bonds-content-tokens-amount\">\n {formatNumberSI(claimable(bill), 4)}\n <div className=\"your-bonds-content-tokens-usd-amount\">\n {`($${(claimable(bill) * earnTokenPrice).toFixed(2)})`}\n </div>\n </div>\n </div>\n <div className=\"your-bonds-content\">\n <div className=\"your-bonds-content-title\">Pending</div>\n <div className=\"your-bonds-content-tokens-amount\">\n {formatNumberSI(pending(bill), 4)}\n <div className=\"your-bonds-content-tokens-usd-amount\">\n {`($${(pending(bill) * earnTokenPrice).toFixed(2)})`}\n </div>\n </div>\n </div>\n <div className=\"your-bonds-content hide-mobile\">\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 display: ['none', 'none', 'none', 'flex'],\n }}\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\">\n {!aptosAccount ? (\n <Button className=\"button\" disabled={true} fullWidth>\n Connect to {NETWORK_LABEL[ChainId.APTOS]}\n </Button>\n ) : (\n <Button\n className=\"button\"\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 )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default UserBondRowAptos\n"],"names":["_jsx","_jsxs","Tooltip"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { UserBill } from '../../../../types/yourbonds';
3
+ declare const UserBondRowSui: ({ bill }: {
4
+ bill: UserBill;
5
+ }) => React.JSX.Element;
6
+ export default UserBondRowSui;