@ape.swap/bonds-sdk 3.2.0 → 3.3.0-test.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/components/BondFilters/BondFilters.js +0 -12
  2. package/dist/components/BondFilters/BondFilters.js.map +1 -1
  3. package/dist/components/ChainOptionList/ChainOptionsButtons.js +1 -13
  4. package/dist/components/ChainOptionList/ChainOptionsButtons.js.map +1 -1
  5. package/dist/components/ChainOptionList/ChainOptionsList.js +2 -13
  6. package/dist/components/ChainOptionList/ChainOptionsList.js.map +1 -1
  7. package/dist/components/ConnectButton/index.js +3 -17
  8. package/dist/components/ConnectButton/index.js.map +1 -1
  9. package/dist/components/FavIcons/AddFavToken.js +1 -12
  10. package/dist/components/FavIcons/AddFavToken.js.map +1 -1
  11. package/dist/components/FavIcons/FavFilter.js +1 -13
  12. package/dist/components/FavIcons/FavFilter.js.map +1 -1
  13. package/dist/components/LoadingSpinner/index.js +0 -13
  14. package/dist/components/LoadingSpinner/index.js.map +1 -1
  15. package/dist/components/MenuSelect/MenuSelect.js +1 -12
  16. package/dist/components/MenuSelect/MenuSelect.js.map +1 -1
  17. package/dist/components/MenuSelect/RecommendationSelector.js +0 -13
  18. package/dist/components/MenuSelect/RecommendationSelector.js.map +1 -1
  19. package/dist/components/NetworkFilter/index.js +2 -12
  20. package/dist/components/NetworkFilter/index.js.map +1 -1
  21. package/dist/components/PlaceholderMonkey/index.js +2 -13
  22. package/dist/components/PlaceholderMonkey/index.js.map +1 -1
  23. package/dist/components/ProgressBar/ProgressBarWrapper.js +1 -9
  24. package/dist/components/ProgressBar/ProgressBarWrapper.js.map +1 -1
  25. package/dist/components/SlippageModal/index.js +2 -13
  26. package/dist/components/SlippageModal/index.js.map +1 -1
  27. package/dist/components/StepBubble/index.js +1 -12
  28. package/dist/components/StepBubble/index.js.map +1 -1
  29. package/dist/components/Toast/index.js +2 -10
  30. package/dist/components/Toast/index.js.map +1 -1
  31. package/dist/components/TokenInfoAndName/index.js +2 -14
  32. package/dist/components/TokenInfoAndName/index.js.map +1 -1
  33. package/dist/components/TokenSelectorModal/TokenRow.js +1 -13
  34. package/dist/components/TokenSelectorModal/TokenRow.js.map +1 -1
  35. package/dist/components/TokenSelectorModal/index.js +2 -16
  36. package/dist/components/TokenSelectorModal/index.js.map +1 -1
  37. package/dist/components/TokenSelectorPanel/index.js +1 -13
  38. package/dist/components/TokenSelectorPanel/index.js.map +1 -1
  39. package/dist/components/Tooltip/ButtonsRow.js +1 -12
  40. package/dist/components/Tooltip/ButtonsRow.js.map +1 -1
  41. package/dist/components/Tooltip/Tooltip.js +0 -12
  42. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  43. package/dist/components/YouTooltip/YouTooltip.js +0 -13
  44. package/dist/components/YouTooltip/YouTooltip.js.map +1 -1
  45. package/dist/components/uikit-sdk/LoadingDots/index.js +0 -13
  46. package/dist/components/uikit-sdk/LoadingDots/index.js.map +1 -1
  47. package/dist/components/uikit-sdk/Toggle/index.js +1 -1
  48. package/dist/components/uikit-sdk/Toggle/index.js.map +1 -1
  49. package/dist/components/uikit-sdk/TokenImage/index.js +0 -13
  50. package/dist/components/uikit-sdk/TokenImage/index.js.map +1 -1
  51. package/dist/config/abi/launchBond_v2_4_1.json.js +2 -2
  52. package/dist/config/constants/walletConnectors.d.ts +3 -0
  53. package/dist/config/constants/walletConnectors.js +18 -0
  54. package/dist/config/constants/walletConnectors.js.map +1 -0
  55. package/dist/contexts/ModalContext.js +0 -11
  56. package/dist/contexts/ModalContext.js.map +1 -1
  57. package/dist/contexts/Popups.js +0 -13
  58. package/dist/contexts/Popups.js.map +1 -1
  59. package/dist/state/allowance/useAllowance.js +2 -2
  60. package/dist/state/allowance/useAllowance.js.map +1 -1
  61. package/dist/state/bonds/utils.js +2 -2
  62. package/dist/state/preTGEBonds/usePreTGEUserBonds.js +3 -3
  63. package/dist/state/useSDKConfig.d.ts +7 -2
  64. package/dist/state/useSDKConfig.js +10 -2
  65. package/dist/state/useSDKConfig.js.map +1 -1
  66. package/dist/utils/convertToTokenValue.d.ts +1 -3
  67. package/dist/utils/convertToTokenValue.js +7 -9
  68. package/dist/utils/convertToTokenValue.js.map +1 -1
  69. package/dist/utils/multicall.js +34 -18
  70. package/dist/utils/multicall.js.map +1 -1
  71. package/dist/views/Bonds/Bonds.js +0 -11
  72. package/dist/views/Bonds/Bonds.js.map +1 -1
  73. package/dist/views/Bonds/components/BannerTestnet/BannerTestnet.js +1 -13
  74. package/dist/views/Bonds/components/BannerTestnet/BannerTestnet.js.map +1 -1
  75. package/dist/views/Bonds/components/BondRows/BondRow.js +1 -13
  76. package/dist/views/Bonds/components/BondRows/BondRow.js.map +1 -1
  77. package/dist/views/Bonds/components/BondRows/ChainTitle.js +1 -12
  78. package/dist/views/Bonds/components/BondRows/ChainTitle.js.map +1 -1
  79. package/dist/views/Bonds/components/BondsMenu/BondsMenu.js +0 -12
  80. package/dist/views/Bonds/components/BondsMenu/BondsMenu.js.map +1 -1
  81. package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +1 -13
  82. package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
  83. package/dist/views/Bonds/components/BonusComponents/BonusTable.js +1 -14
  84. package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
  85. package/dist/views/Bonds/components/BuyAgainRow/index.js +0 -11
  86. package/dist/views/Bonds/components/BuyAgainRow/index.js.map +1 -1
  87. package/dist/views/Bonds/components/HotBondCards/HotBondCard.js +1 -13
  88. package/dist/views/Bonds/components/HotBondCards/HotBondCard.js.map +1 -1
  89. package/dist/views/Bonds/components/HotBondCards/index.js +0 -12
  90. package/dist/views/Bonds/components/HotBondCards/index.js.map +1 -1
  91. package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js +0 -13
  92. package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js.map +1 -1
  93. package/dist/views/Bonds/components/RecommendationCards/index.js +0 -12
  94. package/dist/views/Bonds/components/RecommendationCards/index.js.map +1 -1
  95. package/dist/views/BuyBond/BuyBond.js +2 -12
  96. package/dist/views/BuyBond/BuyBond.js.map +1 -1
  97. package/dist/views/BuyBond/BuyBondModal.js +0 -12
  98. package/dist/views/BuyBond/BuyBondModal.js.map +1 -1
  99. package/dist/views/BuyBond/components/BondModalHeader.js +1 -14
  100. package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
  101. package/dist/views/BuyBond/components/BondModalMinTierHeader.js +0 -12
  102. package/dist/views/BuyBond/components/BondModalMinTierHeader.js.map +1 -1
  103. package/dist/views/BuyBond/components/ExpandedViewButton.js +1 -14
  104. package/dist/views/BuyBond/components/ExpandedViewButton.js.map +1 -1
  105. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +2 -13
  106. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +1 -1
  107. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +1 -12
  108. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
  109. package/dist/views/BuyBond/components/NoBonusModal/NoBonusModal.js +1 -11
  110. package/dist/views/BuyBond/components/NoBonusModal/NoBonusModal.js.map +1 -1
  111. package/dist/views/BuyBond/components/ProjectDescription.js +0 -11
  112. package/dist/views/BuyBond/components/ProjectDescription.js.map +1 -1
  113. package/dist/views/BuyBond/index.d.ts +2 -2
  114. package/dist/views/BuyBond/index.js.map +1 -1
  115. package/dist/views/FullBondsView/FullBondsView.d.ts +0 -4
  116. package/dist/views/FullBondsView/FullBondsView.js +2 -19
  117. package/dist/views/FullBondsView/FullBondsView.js.map +1 -1
  118. package/dist/views/PreTGEBonds/components/BuyComponent/BondCards.js +1 -13
  119. package/dist/views/PreTGEBonds/components/BuyComponent/BondCards.js.map +1 -1
  120. package/dist/views/PreTGEBonds/components/BuyComponent/ParticipationSuccessful.js +4 -14
  121. package/dist/views/PreTGEBonds/components/BuyComponent/ParticipationSuccessful.js.map +1 -1
  122. package/dist/views/PreTGEBonds/components/BuyComponent/PreTGEBuyComponent.js +4 -13
  123. package/dist/views/PreTGEBonds/components/BuyComponent/PreTGEBuyComponent.js.map +1 -1
  124. package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEActions.js +3 -15
  125. package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEActions.js.map +1 -1
  126. package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEUserRow.js +1 -12
  127. package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEUserRow.js.map +1 -1
  128. package/dist/views/TransactionModal/TransactionModal.js +2 -13
  129. package/dist/views/TransactionModal/TransactionModal.js.map +1 -1
  130. package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js +3 -13
  131. package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js.map +1 -1
  132. package/dist/views/YourBonds/components/ClaimAll/index.js +0 -13
  133. package/dist/views/YourBonds/components/ClaimAll/index.js.map +1 -1
  134. package/dist/views/YourBonds/components/YourBondsMenu/YourBondsMenu.js +0 -12
  135. package/dist/views/YourBonds/components/YourBondsMenu/YourBondsMenu.js.map +1 -1
  136. package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js +0 -12
  137. package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js.map +1 -1
  138. package/dist/views/YourBondsModal/components/TransferBondModal/index.js +3 -12
  139. package/dist/views/YourBondsModal/components/TransferBondModal/index.js.map +1 -1
  140. package/dist/views/ZapModal/index.js +4 -13
  141. package/dist/views/ZapModal/index.js.map +1 -1
  142. package/package.json +18 -8
  143. package/dist/components/ConnectButton/AppKitButton.d.ts +0 -3
  144. package/dist/components/ConnectButton/AppKitButton.js +0 -22
  145. package/dist/components/ConnectButton/AppKitButton.js.map +0 -1
  146. package/dist/components/ConnectButton/RainbowKitButton.d.ts +0 -3
  147. package/dist/components/ConnectButton/RainbowKitButton.js +0 -35
  148. package/dist/components/ConnectButton/RainbowKitButton.js.map +0 -1
  149. package/dist/components/uikit-sdk/index.d.ts +0 -15
  150. package/dist/config/abi/types/Banana.d.ts +0 -394
  151. package/dist/config/abi/types/Bond.d.ts +0 -758
  152. package/dist/config/abi/types/BondNft.d.ts +0 -556
  153. package/dist/config/abi/types/EnsPublicResolver.d.ts +0 -437
  154. package/dist/config/abi/types/EnsRegistrar.d.ts +0 -254
  155. package/dist/config/abi/types/Erc20.d.ts +0 -156
  156. package/dist/config/abi/types/Erc20_bytes32.d.ts +0 -50
  157. package/dist/config/abi/types/JungleChef.d.ts +0 -245
  158. package/dist/config/abi/types/LaunchBonds.d.ts +0 -1306
  159. package/dist/config/abi/types/LensContract.d.ts +0 -276
  160. package/dist/config/abi/types/LockVeAbond.d.ts +0 -1173
  161. package/dist/config/abi/types/MigrationBond.d.ts +0 -1074
  162. package/dist/config/abi/types/MigrationFveAbond.d.ts +0 -284
  163. package/dist/config/abi/types/MiniComplexRewarder.d.ts +0 -423
  164. package/dist/config/abi/types/Multicallv2.d.ts +0 -139
  165. package/dist/config/abi/types/Multicallv3.d.ts +0 -98
  166. package/dist/config/abi/types/NonFungibleApes.d.ts +0 -492
  167. package/dist/config/abi/types/NonFungibleBananas.d.ts +0 -468
  168. package/dist/config/abi/types/PriceGetter.d.ts +0 -676
  169. package/dist/config/abi/types/PriceGetterLinea.d.ts +0 -756
  170. package/dist/config/abi/types/PriceGetterV2.d.ts +0 -692
  171. package/dist/config/abi/types/SousChef.d.ts +0 -542
  172. package/dist/config/abi/types/Treasury.d.ts +0 -274
  173. package/dist/config/abi/types/Weth.d.ts +0 -206
  174. package/dist/config/abi/types/Zap.d.ts +0 -484
  175. package/dist/config/abi/types/common.d.ts +0 -22
  176. package/dist/config/abi/types/factories/Banana__factory.d.ts +0 -475
  177. package/dist/config/abi/types/factories/BondNft__factory.d.ts +0 -723
  178. package/dist/config/abi/types/factories/Bond__factory.d.ts +0 -799
  179. package/dist/config/abi/types/factories/EnsPublicResolver__factory.d.ts +0 -649
  180. package/dist/config/abi/types/factories/EnsRegistrar__factory.d.ts +0 -338
  181. package/dist/config/abi/types/factories/Erc20__factory.d.ts +0 -175
  182. package/dist/config/abi/types/factories/Erc20_bytes32__factory.d.ts +0 -30
  183. package/dist/config/abi/types/factories/JungleChef__factory.d.ts +0 -247
  184. package/dist/config/abi/types/factories/LaunchBonds__factory.d.ts +0 -1560
  185. package/dist/config/abi/types/factories/LensContract__factory.d.ts +0 -254
  186. package/dist/config/abi/types/factories/LockVeAbond__factory.d.ts +0 -1698
  187. package/dist/config/abi/types/factories/MigrationBond__factory.d.ts +0 -1268
  188. package/dist/config/abi/types/factories/MigrationFveAbond__factory.d.ts +0 -262
  189. package/dist/config/abi/types/factories/MiniComplexRewarder__factory.d.ts +0 -448
  190. package/dist/config/abi/types/factories/Multicallv2__factory.d.ts +0 -115
  191. package/dist/config/abi/types/factories/Multicallv3__factory.d.ts +0 -76
  192. package/dist/config/abi/types/factories/NonFungibleApes__factory.d.ts +0 -617
  193. package/dist/config/abi/types/factories/NonFungibleBananas__factory.d.ts +0 -576
  194. package/dist/config/abi/types/factories/PriceGetterLinea__factory.d.ts +0 -1105
  195. package/dist/config/abi/types/factories/PriceGetterV2__factory.d.ts +0 -1027
  196. package/dist/config/abi/types/factories/PriceGetter__factory.d.ts +0 -999
  197. package/dist/config/abi/types/factories/SousChef__factory.d.ts +0 -511
  198. package/dist/config/abi/types/factories/Treasury__factory.d.ts +0 -235
  199. package/dist/config/abi/types/factories/Weth__factory.d.ts +0 -220
  200. package/dist/config/abi/types/factories/Zap__factory.d.ts +0 -695
  201. package/dist/config/abi/types/factories/index.d.ts +0 -25
  202. package/dist/config/abi/types/index.d.ts +0 -51
  203. package/dist/utils/index.d.ts +0 -1
  204. package/dist/utils/index.js +0 -16
  205. package/dist/utils/index.js.map +0 -1
@@ -2,19 +2,6 @@ import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
2
  import Flex from '../Flex/index.js';
3
3
  import { NETWORK_ICONS } from '../../../config/constants/chains.js';
4
4
  import Svg from '../Svg/index.js';
5
- import 'theme-ui';
6
- import '../Text/types.js';
7
- import '../Checkbox/types.js';
8
- import '../Skeleton/types.js';
9
- import '../Skeleton/styles.js';
10
- import '../TooltipBubble/index.js';
11
- import 'react';
12
- import 'framer-motion';
13
- import '../Button/types.js';
14
- import '../Svg/types.js';
15
- import '../../../contexts/ModalContext.js';
16
- import '../../../views/FullBondsView/FullBondsView.js';
17
- import '../Select/types.js';
18
5
  import { APEBOND } from '../../../config/constants/variables.js';
19
6
 
20
7
  const TokenImage = ({ symbol, symbol2, size, chain, }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/uikit-sdk/TokenImage/index.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../Flex'\nimport { NETWORK_ICONS } from '../../../config/constants/chains'\nimport { Svg } from '../index'\nimport { APEBOND } from '../../../config/constants/variables'\n\nconst TokenImage = ({\n symbol,\n symbol2,\n size,\n chain,\n}: {\n symbol?: string\n symbol2?: string\n size: number\n chain?: number\n}) => {\n const token1 = symbol === 'USDC.e' ? 'USDC' : symbol\n const token2 = symbol2 === 'USDC.e' ? 'USDC' : symbol2\n return token2 ? (\n <Flex\n sx={{\n minWidth: size * 1.5 - 2,\n height: size - 2,\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '55px',\n position: 'relative',\n }}\n >\n <img\n src={`${APEBOND}/tokenImages/${token1?.toUpperCase()}.png`}\n alt={`tokenImgFor:${token1}`}\n width={size}\n height={size}\n style={{ position: 'absolute', zIndex: 4001, left: 0 }}\n />\n <img\n src={`${APEBOND}/tokenImages/${token2.toUpperCase()}.png`}\n alt={`tokenImgFor:${token2}`}\n width={size}\n height={size}\n style={{ position: 'absolute', zIndex: 4000, left: '33%' }}\n />\n {chain && (\n <Flex\n sx={{\n zIndex: 4002,\n position: 'absolute',\n top: '-2px',\n right: `-${size / 5}px`,\n overflow: 'hidden',\n borderRadius: '50px',\n }}\n >\n <Svg width={size / 2.5} height={size / 2.5} icon={NETWORK_ICONS?.[chain] ?? 'question'} />\n </Flex>\n )}\n </Flex>\n ) : (\n <Flex\n sx={{\n width: size - 2,\n height: size - 2,\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '55px',\n position: 'relative',\n }}\n >\n <img\n src={`${APEBOND}/tokenImages/${token1?.toUpperCase()}.png`}\n alt={`tokenImgFor:${token1}`}\n width={size}\n height={token1 === 'BNB-ICHI' ? 19 : size}\n />\n {chain && (\n <Flex\n sx={{\n zIndex: 5,\n position: 'absolute',\n top: '-2px',\n right: '-4px',\n overflow: 'hidden',\n borderRadius: '50px',\n width: `${size / 2.5}px`,\n height: `${size / 2.5}px`,\n }}\n >\n <Svg width={size / 2.5} height={size / 2.5} icon={NETWORK_ICONS?.[chain] ?? 'question'} />\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default TokenImage\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/uikit-sdk/TokenImage/index.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../Flex'\nimport { NETWORK_ICONS } from '../../../config/constants/chains'\nimport Svg from '../Svg'\nimport { APEBOND } from '../../../config/constants/variables'\n\nconst TokenImage = ({\n symbol,\n symbol2,\n size,\n chain,\n}: {\n symbol?: string\n symbol2?: string\n size: number\n chain?: number\n}) => {\n const token1 = symbol === 'USDC.e' ? 'USDC' : symbol\n const token2 = symbol2 === 'USDC.e' ? 'USDC' : symbol2\n return token2 ? (\n <Flex\n sx={{\n minWidth: size * 1.5 - 2,\n height: size - 2,\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '55px',\n position: 'relative',\n }}\n >\n <img\n src={`${APEBOND}/tokenImages/${token1?.toUpperCase()}.png`}\n alt={`tokenImgFor:${token1}`}\n width={size}\n height={size}\n style={{ position: 'absolute', zIndex: 4001, left: 0 }}\n />\n <img\n src={`${APEBOND}/tokenImages/${token2.toUpperCase()}.png`}\n alt={`tokenImgFor:${token2}`}\n width={size}\n height={size}\n style={{ position: 'absolute', zIndex: 4000, left: '33%' }}\n />\n {chain && (\n <Flex\n sx={{\n zIndex: 4002,\n position: 'absolute',\n top: '-2px',\n right: `-${size / 5}px`,\n overflow: 'hidden',\n borderRadius: '50px',\n }}\n >\n <Svg width={size / 2.5} height={size / 2.5} icon={NETWORK_ICONS?.[chain] ?? 'question'} />\n </Flex>\n )}\n </Flex>\n ) : (\n <Flex\n sx={{\n width: size - 2,\n height: size - 2,\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '55px',\n position: 'relative',\n }}\n >\n <img\n src={`${APEBOND}/tokenImages/${token1?.toUpperCase()}.png`}\n alt={`tokenImgFor:${token1}`}\n width={size}\n height={token1 === 'BNB-ICHI' ? 19 : size}\n />\n {chain && (\n <Flex\n sx={{\n zIndex: 5,\n position: 'absolute',\n top: '-2px',\n right: '-4px',\n overflow: 'hidden',\n borderRadius: '50px',\n width: `${size / 2.5}px`,\n height: `${size / 2.5}px`,\n }}\n >\n <Svg width={size / 2.5} height={size / 2.5} icon={NETWORK_ICONS?.[chain] ?? 'question'} />\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default TokenImage\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var launchBondsABI_V2_2_0 = [
1
+ var LaunchBondABI_V_2_4_1 = [
2
2
  {
3
3
  anonymous: false,
4
4
  inputs: [
@@ -2354,5 +2354,5 @@ var launchBondsABI_V2_2_0 = [
2354
2354
  }
2355
2355
  ];
2356
2356
 
2357
- export { launchBondsABI_V2_2_0 as default };
2357
+ export { LaunchBondABI_V_2_4_1 as default };
2358
2358
  //# sourceMappingURL=launchBond_v2_4_1.json.js.map
@@ -0,0 +1,3 @@
1
+ export type Ecosystem = 'evm';
2
+ export declare const setWalletConnectorOpener: (ecosystem: Ecosystem, fn?: () => void) => void;
3
+ export declare const openEvmWalletConnector: () => void;
@@ -0,0 +1,18 @@
1
+ // Module-level singleton for wallet-connect-modal openers injected by the SDK consumer via `SDKPropsDTO.openWalletConnector`.
2
+ const openers = {};
3
+ const setWalletConnectorOpener = (ecosystem, fn) => {
4
+ openers[ecosystem] = fn;
5
+ };
6
+ const callOpener = (ecosystem) => {
7
+ const fn = openers[ecosystem];
8
+ if (!fn) {
9
+ console.error(`[ApeBond SDK] openWalletConnector.${ecosystem} was called but no opener has been registered via SDKPropsDTO.openWalletConnector.${ecosystem}`);
10
+ }
11
+ else {
12
+ fn();
13
+ }
14
+ };
15
+ const openEvmWalletConnector = () => callOpener('evm');
16
+
17
+ export { openEvmWalletConnector, setWalletConnectorOpener };
18
+ //# sourceMappingURL=walletConnectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletConnectors.js","sources":["../../../src/config/constants/walletConnectors.ts"],"sourcesContent":["// Module-level singleton for wallet-connect-modal openers injected by the SDK consumer via `SDKPropsDTO.openWalletConnector`.\n\nexport type Ecosystem = 'evm'\n\nconst openers: Partial<Record<Ecosystem, () => void>> = {}\n\nexport const setWalletConnectorOpener = (ecosystem: Ecosystem, fn?: () => void) => {\n openers[ecosystem] = fn\n}\n\nconst callOpener = (ecosystem: Ecosystem) => {\n const fn = openers[ecosystem]\n if (!fn) {\n console.error(\n `[ApeBond SDK] openWalletConnector.${ecosystem} was called but no opener has been registered via SDKPropsDTO.openWalletConnector.${ecosystem}`,\n )\n } else {\n fn()\n }\n}\n\nexport const openEvmWalletConnector = () => callOpener('evm')\n"],"names":[],"mappings":"AAAA;AAIA,MAAM,OAAO,GAA2C,EAAE;MAE7C,wBAAwB,GAAG,CAAC,SAAoB,EAAE,EAAe,KAAI;AAChF,IAAA,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;AACzB;AAEA,MAAM,UAAU,GAAG,CAAC,SAAoB,KAAI;AAC1C,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,EAAE;QACP,OAAO,CAAC,KAAK,CACX,CAAA,kCAAA,EAAqC,SAAS,CAAA,kFAAA,EAAqF,SAAS,CAAA,CAAE,CAC/I;IACH;SAAO;AACL,QAAA,EAAE,EAAE;IACN;AACF,CAAC;AAEM,MAAM,sBAAsB,GAAG,MAAM,UAAU,CAAC,KAAK;;;;"}
@@ -1,17 +1,6 @@
1
1
  import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
- import '../components/uikit-sdk/Svg/types.js';
3
- import 'theme-ui';
4
2
  import Flex from '../components/uikit-sdk/Flex/index.js';
5
- import '../components/uikit-sdk/Text/types.js';
6
- import '../components/uikit-sdk/Checkbox/types.js';
7
- import '../components/uikit-sdk/Skeleton/types.js';
8
- import '../components/uikit-sdk/Skeleton/styles.js';
9
- import '../components/uikit-sdk/TooltipBubble/index.js';
10
3
  import React, { createContext, useState } from 'react';
11
- import 'framer-motion';
12
- import '../components/uikit-sdk/Button/types.js';
13
- import '../views/FullBondsView/FullBondsView.js';
14
- import '../components/uikit-sdk/Select/types.js';
15
4
 
16
5
  const Context = createContext({
17
6
  nodeId: [],
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContext.js","sources":["../../src/contexts/ModalContext.tsx"],"sourcesContent":["import { Flex } from '../components/uikit-sdk'\nimport React, { createContext, useState } from 'react'\n\ninterface ModalsContext {\n nodeId: string[]\n modalNode: React.ReactNode[]\n setModalNode: React.Dispatch<React.SetStateAction<React.ReactNode[]>>\n onPresent: (node: React.ReactNode, newNodeId: string, clearModalStack: boolean) => void\n handleClose: () => void\n setCloseOnOverlayClick: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const Context = createContext<ModalsContext>({\n nodeId: [],\n modalNode: [],\n setModalNode: () => null,\n onPresent: () => null,\n handleClose: () => null,\n setCloseOnOverlayClick: () => true,\n})\n\nconst ModalProvider = ({ children }: { children: React.ReactNode }) => {\n const [nodeId, setNodeId] = useState<string[]>([])\n const [modalNode, setModalNode] = useState<React.ReactNode[]>([])\n const [closeOnOverlayClick, setCloseOnOverlayClick] = useState(true)\n\n const handlePresent = (node: React.ReactNode, newNodeId: string, clearModalStack: boolean) => {\n if (clearModalStack) {\n setModalNode([node])\n setNodeId([newNodeId])\n } else {\n setModalNode((prev) => [...prev, node])\n setNodeId((prev) => [...prev, newNodeId])\n }\n }\n\n const handleDismiss = () => {\n if (modalNode.length > 0) {\n if (React.isValidElement(modalNode[modalNode.length - 1])) {\n // @ts-ignore\n modalNode[modalNode.length - 1].props.onDismiss?.()\n }\n }\n setModalNode(modalNode.slice(0, modalNode.length - 1))\n setNodeId(nodeId.slice(0, nodeId.length - 1))\n }\n\n const handleOverlayDismiss = () => {\n if (closeOnOverlayClick) {\n handleDismiss()\n }\n }\n\n return (\n <Context.Provider\n value={{\n nodeId,\n modalNode,\n setModalNode,\n onPresent: handlePresent,\n handleClose: handleDismiss,\n setCloseOnOverlayClick,\n }}\n >\n {modalNode.map((modal, i) => {\n return (\n <Flex key={nodeId[i]}>\n <Flex onClick={handleOverlayDismiss} />\n {React.isValidElement(modal) &&\n React.cloneElement(modal, {\n // @ts-ignore\n onDismiss: handleDismiss,\n })}\n </Flex>\n )\n })}\n {children}\n </Context.Provider>\n )\n}\n\nexport default ModalProvider\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;AAYO,MAAM,OAAO,GAAG,aAAa,CAAgB;AAClD,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,YAAY,EAAE,MAAM,IAAI;AACxB,IAAA,SAAS,EAAE,MAAM,IAAI;AACrB,IAAA,WAAW,EAAE,MAAM,IAAI;AACvB,IAAA,sBAAsB,EAAE,MAAM,IAAI;AACnC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAiC,KAAI;IACpE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC;IACjE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAEpE,MAAM,aAAa,GAAG,CAAC,IAAqB,EAAE,SAAiB,EAAE,eAAwB,KAAI;QAC3F,IAAI,eAAe,EAAE;AACnB,YAAA,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,YAAA,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;QACxB;aAAO;AACL,YAAA,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,YAAA,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C;AACF,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,MAAK;AACzB,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;;AAEzD,gBAAA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI;YACrD;QACF;AACA,QAAA,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,QAAA,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;QAChC,IAAI,mBAAmB,EAAE;AACvB,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC;AAED,IAAA,QACEA,IAAA,CAAC,OAAO,CAAC,QAAQ,EAAA,EACf,KAAK,EAAE;YACL,MAAM;YACN,SAAS;YACT,YAAY;AACZ,YAAA,SAAS,EAAE,aAAa;AACxB,YAAA,WAAW,EAAE,aAAa;YAC1B,sBAAsB;SACvB,EAAA,QAAA,EAAA,CAEA,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC1B,gBAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,CACHC,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAE,oBAAoB,GAAI,EACtC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,4BAAA,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;;AAExB,gCAAA,SAAS,EAAE,aAAa;AACzB,6BAAA,CAAC,KANK,MAAM,CAAC,CAAC,CAAC,CAOb;AAEX,YAAA,CAAC,CAAC,EACD,QAAQ,CAAA,EAAA,CACQ;AAEvB;;;;"}
1
+ {"version":3,"file":"ModalContext.js","sources":["../../src/contexts/ModalContext.tsx"],"sourcesContent":["import Flex from '../components/uikit-sdk/Flex'\nimport React, { createContext, useState } from 'react'\n\ninterface ModalsContext {\n nodeId: string[]\n modalNode: React.ReactNode[]\n setModalNode: React.Dispatch<React.SetStateAction<React.ReactNode[]>>\n onPresent: (node: React.ReactNode, newNodeId: string, clearModalStack: boolean) => void\n handleClose: () => void\n setCloseOnOverlayClick: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const Context = createContext<ModalsContext>({\n nodeId: [],\n modalNode: [],\n setModalNode: () => null,\n onPresent: () => null,\n handleClose: () => null,\n setCloseOnOverlayClick: () => true,\n})\n\nconst ModalProvider = ({ children }: { children: React.ReactNode }) => {\n const [nodeId, setNodeId] = useState<string[]>([])\n const [modalNode, setModalNode] = useState<React.ReactNode[]>([])\n const [closeOnOverlayClick, setCloseOnOverlayClick] = useState(true)\n\n const handlePresent = (node: React.ReactNode, newNodeId: string, clearModalStack: boolean) => {\n if (clearModalStack) {\n setModalNode([node])\n setNodeId([newNodeId])\n } else {\n setModalNode((prev) => [...prev, node])\n setNodeId((prev) => [...prev, newNodeId])\n }\n }\n\n const handleDismiss = () => {\n if (modalNode.length > 0) {\n if (React.isValidElement(modalNode[modalNode.length - 1])) {\n // @ts-ignore\n modalNode[modalNode.length - 1].props.onDismiss?.()\n }\n }\n setModalNode(modalNode.slice(0, modalNode.length - 1))\n setNodeId(nodeId.slice(0, nodeId.length - 1))\n }\n\n const handleOverlayDismiss = () => {\n if (closeOnOverlayClick) {\n handleDismiss()\n }\n }\n\n return (\n <Context.Provider\n value={{\n nodeId,\n modalNode,\n setModalNode,\n onPresent: handlePresent,\n handleClose: handleDismiss,\n setCloseOnOverlayClick,\n }}\n >\n {modalNode.map((modal, i) => {\n return (\n <Flex key={nodeId[i]}>\n <Flex onClick={handleOverlayDismiss} />\n {React.isValidElement(modal) &&\n React.cloneElement(modal, {\n // @ts-ignore\n onDismiss: handleDismiss,\n })}\n </Flex>\n )\n })}\n {children}\n </Context.Provider>\n )\n}\n\nexport default ModalProvider\n"],"names":["_jsxs","_jsx"],"mappings":";;;;AAYO,MAAM,OAAO,GAAG,aAAa,CAAgB;AAClD,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,YAAY,EAAE,MAAM,IAAI;AACxB,IAAA,SAAS,EAAE,MAAM,IAAI;AACrB,IAAA,WAAW,EAAE,MAAM,IAAI;AACvB,IAAA,sBAAsB,EAAE,MAAM,IAAI;AACnC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAiC,KAAI;IACpE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC;IACjE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAEpE,MAAM,aAAa,GAAG,CAAC,IAAqB,EAAE,SAAiB,EAAE,eAAwB,KAAI;QAC3F,IAAI,eAAe,EAAE;AACnB,YAAA,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,YAAA,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;QACxB;aAAO;AACL,YAAA,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,YAAA,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C;AACF,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,MAAK;AACzB,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;;AAEzD,gBAAA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI;YACrD;QACF;AACA,QAAA,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,QAAA,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;QAChC,IAAI,mBAAmB,EAAE;AACvB,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC;AAED,IAAA,QACEA,IAAA,CAAC,OAAO,CAAC,QAAQ,EAAA,EACf,KAAK,EAAE;YACL,MAAM;YACN,SAAS;YACT,YAAY;AACZ,YAAA,SAAS,EAAE,aAAa;AACxB,YAAA,WAAW,EAAE,aAAa;YAC1B,sBAAsB;SACvB,EAAA,QAAA,EAAA,CAEA,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC1B,gBAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,CACHC,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAE,oBAAoB,GAAI,EACtC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,4BAAA,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;;AAExB,gCAAA,SAAS,EAAE,aAAa;AACzB,6BAAA,CAAC,KANK,MAAM,CAAC,CAAC,CAAC,CAOb;AAEX,YAAA,CAAC,CAAC,EACD,QAAQ,CAAA,EAAA,CACQ;AAEvB;;;;"}
@@ -1,18 +1,5 @@
1
1
  import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
- import '../components/uikit-sdk/Svg/types.js';
3
- import 'theme-ui';
4
2
  import Flex from '../components/uikit-sdk/Flex/index.js';
5
- import '../components/uikit-sdk/Text/types.js';
6
- import '../components/uikit-sdk/Checkbox/types.js';
7
- import '../components/uikit-sdk/Skeleton/types.js';
8
- import '../components/uikit-sdk/Skeleton/styles.js';
9
- import '../components/uikit-sdk/TooltipBubble/index.js';
10
- import 'react';
11
- import 'framer-motion';
12
- import '../components/uikit-sdk/Button/types.js';
13
- import './ModalContext.js';
14
- import '../views/FullBondsView/FullBondsView.js';
15
- import '../components/uikit-sdk/Select/types.js';
16
3
  import Toast from '../components/Toast/index.js';
17
4
  import { usePopups } from '../state/popups/usePopups.js';
18
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"Popups.js","sources":["../../src/contexts/Popups.tsx"],"sourcesContent":["import React from 'react'\nimport { Flex } from '../components/uikit-sdk'\nimport Toast from '../components/Toast'\nimport { PopupProps, usePopups } from '../state/popups/usePopups'\n\nconst Popups = ({ children }: { children: React.ReactNode }) => {\n const { data: activePopups } = usePopups()\n\n const filteredPopups = activePopups?.filter((popup: PopupProps) => popup.timestamp > Date.now() - 10000)\n\n return (\n <Flex sx={{ width: '100%', height: '100%', position: 'relative', flexDirection: 'column' }}>\n <Flex sx={{ position: 'absolute', top: 0, right: 0 }}>\n {filteredPopups?.map((popup: PopupProps, i) => {\n return <Toast key={popup.timestamp} popIndex={i + 1} popup={popup} />\n })}\n </Flex>\n {children}\n </Flex>\n )\n}\n\nexport default Popups\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;AAKA,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAiC,KAAI;IAC7D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE;IAE1C,MAAM,cAAc,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,KAAiB,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAExG,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACxFC,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAA,QAAA,EACjD,cAAc,EAAE,GAAG,CAAC,CAAC,KAAiB,EAAE,CAAC,KAAI;AAC5C,oBAAA,OAAOA,IAAC,KAAK,EAAA,EAAuB,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAA,EAA9C,KAAK,CAAC,SAAS,CAAmC;AACvE,gBAAA,CAAC,CAAC,EAAA,CACG,EACN,QAAQ,CAAA,EAAA,CACJ;AAEX;;;;"}
1
+ {"version":3,"file":"Popups.js","sources":["../../src/contexts/Popups.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../components/uikit-sdk/Flex'\nimport Toast from '../components/Toast'\nimport { PopupProps, usePopups } from '../state/popups/usePopups'\n\nconst Popups = ({ children }: { children: React.ReactNode }) => {\n const { data: activePopups } = usePopups()\n\n const filteredPopups = activePopups?.filter((popup: PopupProps) => popup.timestamp > Date.now() - 10000)\n\n return (\n <Flex sx={{ width: '100%', height: '100%', position: 'relative', flexDirection: 'column' }}>\n <Flex sx={{ position: 'absolute', top: 0, right: 0 }}>\n {filteredPopups?.map((popup: PopupProps, i) => {\n return <Toast key={popup.timestamp} popIndex={i + 1} popup={popup} />\n })}\n </Flex>\n {children}\n </Flex>\n )\n}\n\nexport default Popups\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAKA,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAiC,KAAI;IAC7D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE;IAE1C,MAAM,cAAc,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,KAAiB,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAExG,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACxFC,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAA,QAAA,EACjD,cAAc,EAAE,GAAG,CAAC,CAAC,KAAiB,EAAE,CAAC,KAAI;AAC5C,oBAAA,OAAOA,IAAC,KAAK,EAAA,EAAuB,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAA,EAA9C,KAAK,CAAC,SAAS,CAAmC;AACvE,gBAAA,CAAC,CAAC,EAAA,CACG,EACN,QAAQ,CAAA,EAAA,CACJ;AAEX;;;;"}
@@ -3,7 +3,7 @@ import BigNumber from 'bignumber.js';
3
3
  import ERC_20_ABI from '../../config/abi/erc20.json.js';
4
4
  import { QUERY_KEYS } from '../../config/constants/queryKeys.js';
5
5
  import multicall from '../../utils/multicall.js';
6
- import convertToTokenValue from '../../utils/convertToTokenValue.js';
6
+ import { convertToBigish } from '../../utils/convertToTokenValue.js';
7
7
  import USDT_ETH_ABI from '../../config/abi/usdtETH.json.js';
8
8
  import { useState, useEffect, useCallback } from 'react';
9
9
  import { useWriteContract } from 'wagmi';
@@ -88,7 +88,7 @@ const useApproval = (amount, currency, spender, account, chainId) => {
88
88
  if (!decimals || !tokenAddress)
89
89
  return null;
90
90
  try {
91
- const bigishAmount = convertToTokenValue(amount, decimals);
91
+ const bigishAmount = convertToBigish(amount, decimals);
92
92
  setConfirmingTxOnWallet(true);
93
93
  const hash = await writeContractAsync({
94
94
  address: tokenAddress,
@@ -1 +1 @@
1
- {"version":3,"file":"useAllowance.js","sources":["../../../src/state/allowance/useAllowance.ts"],"sourcesContent":["import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport BigNumber from 'bignumber.js'\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\nimport erc20ABI from '../../config/abi/erc20.json'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport multicall, { Call } from '../../utils/multicall'\nimport convertToTokenValue from '../../utils/convertToTokenValue'\nimport ERC_20_ABI from '../../config/abi/erc20.json'\nimport USDT_ETH_ABI from '../../config/abi/usdtETH.json'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useWriteContract } from 'wagmi'\nimport { useMonitorTxHash } from '../../hooks/useMonitorTxHash'\nimport { usePopups } from '../popups/usePopups'\nimport { reportError } from '../../utils/reportError'\nimport { useURLByEnvironment } from '../useSDKConfig'\n\n/**\n * useAllowance hook: fetches the amount approved by the user for a given token\n * useApproval hook: returns the approval state (not approved, pending or approved) and a function to approve on chain\n * getTokenAllowance function fetches the allowance on chain\n */\n\nexport enum ApprovalState {\n NOT_APPROVED = 'NOT_APPROVED',\n PENDING = 'PENDING',\n APPROVED = 'APPROVED',\n}\n\nexport default function useAllowance(\n currency: 'NATIVE' | Token | null,\n spender: string | null,\n account: string | null,\n chainId: ChainId | null,\n): UseQueryResult<number | null> {\n return useQuery({\n queryKey: [\n QUERY_KEYS.ALLOWANCE,\n account ?? '',\n chainId,\n currency === 'NATIVE' ? currency : currency?.symbol,\n spender,\n ],\n queryFn: () => getTokenAllowance(currency, spender, account, chainId),\n refetchInterval: 10000, // i.e. 10 sec\n refetchOnWindowFocus: false,\n retry: 1,\n })\n}\n\nexport const getTokenAllowance = async (\n currency: 'NATIVE' | Token | null,\n spender: string | null,\n account: string | null,\n chainId: ChainId | null,\n): Promise<number | null> => {\n if (currency === 'NATIVE') return null\n // if (!account) {\n // console.log('Account disconnected')\n // } else if (!currency) {\n // console.log('No currency selected')\n // } else if (!chainId) {\n // console.log('No chainId selected')\n // } else if (!spender) {\n // console.log('No spender selected')\n // }\n if (!account || !currency || !chainId || !spender) return null\n const calls: Call[] = [\n {\n address: currency.address[chainId]!,\n name: 'allowance',\n params: [account, spender],\n },\n ]\n const data = await multicall(chainId, erc20ABI, calls)\n const value = new BigNumber(data[0] ?? 0).div(new BigNumber(10).pow(currency.decimals![chainId]!))\n return value.toNumber()\n}\n\nexport const useApproval = (\n amount: string,\n currency: 'NATIVE' | Token | null,\n spender: string | null,\n account: string | null,\n chainId: ChainId | null,\n): [ApprovalState, () => Promise<string | null | undefined>] => {\n const apiUrl = useURLByEnvironment('apiV2')\n const [confirmingTxOnWallet, setConfirmingTxOnWallet] = useState(false)\n const [txHash, setTxHash] = useState('')\n const { data: allowance, refetch } = useAllowance(currency, spender, account, chainId)\n\n const { writeContractAsync } = useWriteContract()\n const { isLoading: isConfirming, isSuccess: isConfirmed } = useMonitorTxHash(txHash, chainId as ChainId)\n const { addToastError } = usePopups()\n const confirmingTxOnChain = isConfirming && !isConfirmed\n\n useEffect(() => {\n if (txHash && isConfirmed) {\n setTxHash('')\n refetch()\n console.log('refetch allowance')\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [txHash, confirmingTxOnChain])\n\n const handleApprove = useCallback(async () => {\n if (!chainId || !amount || currency === 'NATIVE' || !currency) return null\n const decimals = currency.decimals![chainId]\n const tokenAddress = currency.address[chainId] as `0x${string}`\n if (!decimals || !tokenAddress) return null\n try {\n const bigishAmount = convertToTokenValue(amount, decimals)\n setConfirmingTxOnWallet(true)\n const hash = await writeContractAsync({\n address: tokenAddress,\n abi:\n tokenAddress?.toLowerCase() === '0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase()\n ? USDT_ETH_ABI\n : ERC_20_ABI,\n functionName: 'approve',\n args: [spender, bigishAmount],\n account: account as `0x${string}`,\n chain: chainId as any,\n })\n setConfirmingTxOnWallet(false)\n setTxHash(hash)\n return hash\n } catch (error: any) {\n setConfirmingTxOnWallet(false)\n console.error('Approval failed:', error)\n addToastError(error?.shortMessage || error?.details || error?.message)\n reportError({\n apiUrl,\n error,\n extraInfo: { type: 'approval', tokenAddress: tokenAddress, spenderAddress: spender, error },\n chainId,\n account: account!,\n })\n throw error\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [amount, currency, chainId])\n\n let approvalState: ApprovalState = ApprovalState.NOT_APPROVED\n\n if (allowance && amount) {\n approvalState = allowance >= parseFloat(amount) ? ApprovalState.APPROVED : ApprovalState.NOT_APPROVED\n }\n if (currency === 'NATIVE') {\n approvalState = ApprovalState.APPROVED\n }\n if (confirmingTxOnChain || confirmingTxOnWallet) {\n approvalState = ApprovalState.PENDING\n }\n\n return [approvalState ?? ApprovalState.NOT_APPROVED, handleApprove]\n}\n"],"names":["erc20ABI"],"mappings":"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"}
1
+ {"version":3,"file":"useAllowance.js","sources":["../../../src/state/allowance/useAllowance.ts"],"sourcesContent":["import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport BigNumber from 'bignumber.js'\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\nimport erc20ABI from '../../config/abi/erc20.json'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport multicall, { Call } from '../../utils/multicall'\nimport { convertToBigish } from '../../utils/convertToTokenValue'\nimport ERC_20_ABI from '../../config/abi/erc20.json'\nimport USDT_ETH_ABI from '../../config/abi/usdtETH.json'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useWriteContract } from 'wagmi'\nimport { useMonitorTxHash } from '../../hooks/useMonitorTxHash'\nimport { usePopups } from '../popups/usePopups'\nimport { reportError } from '../../utils/reportError'\nimport { useURLByEnvironment } from '../useSDKConfig'\n\n/**\n * useAllowance hook: fetches the amount approved by the user for a given token\n * useApproval hook: returns the approval state (not approved, pending or approved) and a function to approve on chain\n * getTokenAllowance function fetches the allowance on chain\n */\n\nexport enum ApprovalState {\n NOT_APPROVED = 'NOT_APPROVED',\n PENDING = 'PENDING',\n APPROVED = 'APPROVED',\n}\n\nexport default function useAllowance(\n currency: 'NATIVE' | Token | null,\n spender: string | null,\n account: string | null,\n chainId: ChainId | null,\n): UseQueryResult<number | null> {\n return useQuery({\n queryKey: [\n QUERY_KEYS.ALLOWANCE,\n account ?? '',\n chainId,\n currency === 'NATIVE' ? currency : currency?.symbol,\n spender,\n ],\n queryFn: () => getTokenAllowance(currency, spender, account, chainId),\n refetchInterval: 10000, // i.e. 10 sec\n refetchOnWindowFocus: false,\n retry: 1,\n })\n}\n\nexport const getTokenAllowance = async (\n currency: 'NATIVE' | Token | null,\n spender: string | null,\n account: string | null,\n chainId: ChainId | null,\n): Promise<number | null> => {\n if (currency === 'NATIVE') return null\n // if (!account) {\n // console.log('Account disconnected')\n // } else if (!currency) {\n // console.log('No currency selected')\n // } else if (!chainId) {\n // console.log('No chainId selected')\n // } else if (!spender) {\n // console.log('No spender selected')\n // }\n if (!account || !currency || !chainId || !spender) return null\n const calls: Call[] = [\n {\n address: currency.address[chainId]!,\n name: 'allowance',\n params: [account, spender],\n },\n ]\n const data = await multicall(chainId, erc20ABI, calls)\n const value = new BigNumber(data[0] ?? 0).div(new BigNumber(10).pow(currency.decimals![chainId]!))\n return value.toNumber()\n}\n\nexport const useApproval = (\n amount: string,\n currency: 'NATIVE' | Token | null,\n spender: string | null,\n account: string | null,\n chainId: ChainId | null,\n): [ApprovalState, () => Promise<string | null | undefined>] => {\n const apiUrl = useURLByEnvironment('apiV2')\n const [confirmingTxOnWallet, setConfirmingTxOnWallet] = useState(false)\n const [txHash, setTxHash] = useState('')\n const { data: allowance, refetch } = useAllowance(currency, spender, account, chainId)\n\n const { writeContractAsync } = useWriteContract()\n const { isLoading: isConfirming, isSuccess: isConfirmed } = useMonitorTxHash(txHash, chainId as ChainId)\n const { addToastError } = usePopups()\n const confirmingTxOnChain = isConfirming && !isConfirmed\n\n useEffect(() => {\n if (txHash && isConfirmed) {\n setTxHash('')\n refetch()\n console.log('refetch allowance')\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [txHash, confirmingTxOnChain])\n\n const handleApprove = useCallback(async () => {\n if (!chainId || !amount || currency === 'NATIVE' || !currency) return null\n const decimals = currency.decimals![chainId]\n const tokenAddress = currency.address[chainId] as `0x${string}`\n if (!decimals || !tokenAddress) return null\n try {\n const bigishAmount = convertToBigish(amount, decimals)\n setConfirmingTxOnWallet(true)\n const hash = await writeContractAsync({\n address: tokenAddress,\n abi:\n tokenAddress?.toLowerCase() === '0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase()\n ? USDT_ETH_ABI\n : ERC_20_ABI,\n functionName: 'approve',\n args: [spender, bigishAmount],\n account: account as `0x${string}`,\n chain: chainId as any,\n })\n setConfirmingTxOnWallet(false)\n setTxHash(hash)\n return hash\n } catch (error: any) {\n setConfirmingTxOnWallet(false)\n console.error('Approval failed:', error)\n addToastError(error?.shortMessage || error?.details || error?.message)\n reportError({\n apiUrl,\n error,\n extraInfo: { type: 'approval', tokenAddress: tokenAddress, spenderAddress: spender, error },\n chainId,\n account: account!,\n })\n throw error\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [amount, currency, chainId])\n\n let approvalState: ApprovalState = ApprovalState.NOT_APPROVED\n\n if (allowance && amount) {\n approvalState = allowance >= parseFloat(amount) ? ApprovalState.APPROVED : ApprovalState.NOT_APPROVED\n }\n if (currency === 'NATIVE') {\n approvalState = ApprovalState.APPROVED\n }\n if (confirmingTxOnChain || confirmingTxOnWallet) {\n approvalState = ApprovalState.PENDING\n }\n\n return [approvalState ?? ApprovalState.NOT_APPROVED, handleApprove]\n}\n"],"names":["erc20ABI"],"mappings":";;;;;;;;;;;;;;AAgBA;;;;AAIG;IAES;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;AAMX,SAAU,YAAY,CAClC,QAAiC,EACjC,OAAsB,EACtB,OAAsB,EACtB,OAAuB,EAAA;AAEvB,IAAA,OAAO,QAAQ,CAAC;AACd,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,CAAC,SAAS;AACpB,YAAA,OAAO,IAAI,EAAE;YACb,OAAO;YACP,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,MAAM;YACnD,OAAO;AACR,SAAA;AACD,QAAA,OAAO,EAAE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrE,eAAe,EAAE,KAAK;AACtB,QAAA,oBAAoB,EAAE,KAAK;AAC3B,QAAA,KAAK,EAAE,CAAC;AACT,KAAA,CAAC;AACJ;AAEO,MAAM,iBAAiB,GAAG,OAC/B,QAAiC,EACjC,OAAsB,EACtB,OAAsB,EACtB,OAAuB,KACG;IAC1B,IAAI,QAAQ,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI;;;;;;;;;;IAUtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,IAAI;AAC9D,IAAA,MAAM,KAAK,GAAW;AACpB,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAE;AACnC,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3B,SAAA;KACF;IACD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAEA,UAAQ,EAAE,KAAK,CAAC;AACtD,IAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAS,CAAC,OAAO,CAAE,CAAC,CAAC;AAClG,IAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;AACzB;AAEO,MAAM,WAAW,GAAG,CACzB,MAAc,EACd,QAAiC,EACjC,OAAsB,EACtB,OAAsB,EACtB,OAAuB,KACsC;AAC7D,IAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC;IAC3C,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACvE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AACxC,IAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAEtF,IAAA,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE;AACjD,IAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAkB,CAAC;AACxG,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE;AACrC,IAAA,MAAM,mBAAmB,GAAG,YAAY,IAAI,CAAC,WAAW;IAExD,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,MAAM,IAAI,WAAW,EAAE;YACzB,SAAS,CAAC,EAAE,CAAC;AACb,YAAA,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAClC;;AAEF,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEjC,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,YAAW;QAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;QAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAS,CAAC,OAAO,CAAC;QAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAkB;AAC/D,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI;AAC3C,QAAA,IAAI;YACF,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;YACtD,uBAAuB,CAAC,IAAI,CAAC;AAC7B,YAAA,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC;AACpC,gBAAA,OAAO,EAAE,YAAY;gBACrB,GAAG,EACD,YAAY,EAAE,WAAW,EAAE,KAAK,4CAA4C,CAAC,WAAW;AACtF,sBAAE;AACF,sBAAE,UAAU;AAChB,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;AAC7B,gBAAA,OAAO,EAAE,OAAwB;AACjC,gBAAA,KAAK,EAAE,OAAc;AACtB,aAAA,CAAC;YACF,uBAAuB,CAAC,KAAK,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC;AACf,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,KAAU,EAAE;YACnB,uBAAuB,CAAC,KAAK,CAAC;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;AACxC,YAAA,aAAa,CAAC,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,CAAC;AACtE,YAAA,WAAW,CAAC;gBACV,MAAM;gBACN,KAAK;AACL,gBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3F,OAAO;AACP,gBAAA,OAAO,EAAE,OAAQ;AAClB,aAAA,CAAC;AACF,YAAA,MAAM,KAAK;QACb;;IAEF,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE/B,IAAA,IAAI,aAAa,GAAkB,aAAa,CAAC,YAAY;AAE7D,IAAA,IAAI,SAAS,IAAI,MAAM,EAAE;AACvB,QAAA,aAAa,GAAG,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,YAAY;IACvG;AACA,IAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,QAAA,aAAa,GAAG,aAAa,CAAC,QAAQ;IACxC;AACA,IAAA,IAAI,mBAAmB,IAAI,oBAAoB,EAAE;AAC/C,QAAA,aAAa,GAAG,aAAa,CAAC,OAAO;IACvC;IAEA,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC;AACrE;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { getBalanceNumber } from '../../utils/getBalanceNumber.js';
2
2
  import { BillVersion } from '@ape.swap/apeswap-lists';
3
3
  import multicall from '../../utils/multicall.js';
4
- import launchBondsABI_V2_2_0 from '../../config/abi/launchBond_v2_4_1.json.js';
4
+ import LaunchBondABI_V_2_4_1 from '../../config/abi/launchBond_v2_4_1.json.js';
5
5
  import BOND_ABI from '../../config/abi/BOND_2_4_0.json.js';
6
6
  import ERC_20_ABI from '../../config/abi/erc20.json.js';
7
7
  import { reportError } from '../../utils/reportError.js';
@@ -51,7 +51,7 @@ const fetchBondsDataPreTGE = async (chain, tokenPrices, preTGEBonds, apiUrl) =>
51
51
  },
52
52
  ];
53
53
  });
54
- const vals = await multicall(chainId, launchBondsABI_V2_2_0, launchBondsCalls);
54
+ const vals = await multicall(chainId, LaunchBondABI_V_2_4_1, launchBondsCalls);
55
55
  const chunkSize = vals.length / preTGEBonds.length;
56
56
  const chunkedBills = chunk(vals, chunkSize);
57
57
  const returnedBills = chunkedBills?.map((chunk, index) => {
@@ -1,7 +1,7 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import { QUERY_KEYS } from '../../config/constants/queryKeys.js';
3
3
  import multicall from '../../utils/multicall.js';
4
- import launchBondsABI_V2_2_0 from '../../config/abi/launchBond_v2_4_1.json.js';
4
+ import LaunchBondABI_V_2_4_1 from '../../config/abi/launchBond_v2_4_1.json.js';
5
5
  import BigNumber from 'bignumber.js';
6
6
  import { reportError } from '../../utils/reportError.js';
7
7
  import { useURLByEnvironment, useSDKConfig } from '../useSDKConfig.js';
@@ -58,7 +58,7 @@ const fetchPreTGEUserBonds = async (chains, tokenPrices, preTGEList, account, ap
58
58
  name: 'trueBillPrice',
59
59
  },
60
60
  ];
61
- const res = await multicall(bond.chainId, launchBondsABI_V2_2_0, calls);
61
+ const res = await multicall(bond.chainId, LaunchBondABI_V_2_4_1, calls);
62
62
  const billId = res?.[0]?.[0]?.[0]?.toString();
63
63
  let userOwnedBillsData;
64
64
  if (billId) {
@@ -78,7 +78,7 @@ const fetchPreTGEUserBonds = async (chains, tokenPrices, preTGEList, account, ap
78
78
  params: [billId],
79
79
  },
80
80
  ];
81
- const billData = await multicall(bond.chainId, launchBondsABI_V2_2_0, billDataCalls);
81
+ const billData = await multicall(bond.chainId, LaunchBondABI_V_2_4_1, billDataCalls);
82
82
  userOwnedBillsData = {
83
83
  address: bond.contractAddress[bond.chainId] ?? '',
84
84
  id: billId,
@@ -1,9 +1,11 @@
1
1
  import { ChainId } from '@ape.swap/apeswap-lists';
2
+ export interface OpenWalletConnectorsDTO {
3
+ evm?: () => void;
4
+ }
2
5
  export interface SDKPropsDTO {
3
6
  referenceId: string;
4
7
  chains: number[];
5
8
  hotBondChains?: number[];
6
- connector?: 'rainbowkit' | 'appkit' | 'default';
7
9
  useHotBonds?: boolean;
8
10
  useTiers?: boolean;
9
11
  useTGEBonds?: boolean;
@@ -14,12 +16,12 @@ export interface SDKPropsDTO {
14
16
  theme?: any;
15
17
  highestCompatibleVersion?: string;
16
18
  customRPCS?: Partial<Record<ChainId, string[]>>;
19
+ openWalletConnectors?: OpenWalletConnectorsDTO;
17
20
  }
18
21
  export interface SDKProps {
19
22
  referenceId: string;
20
23
  chains: number[];
21
24
  hotBondChains: number[];
22
- connector?: 'rainbowkit' | 'appkit' | 'default';
23
25
  useHotBonds: boolean;
24
26
  useTiers: boolean;
25
27
  useTGEBonds: boolean;
@@ -30,6 +32,9 @@ export interface SDKProps {
30
32
  theme?: any;
31
33
  highestCompatibleVersion?: string;
32
34
  customRPCS?: Partial<Record<ChainId, string[]>>;
35
+ openWalletConnectors: {
36
+ evm: boolean;
37
+ };
33
38
  }
34
39
  export declare const useSDKConfig: (config?: SDKPropsDTO) => SDKProps;
35
40
  export type URLKeys = 'apiV2' | 'realTimeApi' | 'mainUrl' | 'priceApi';
@@ -3,6 +3,7 @@ import { QUERY_KEYS } from '../config/constants/queryKeys.js';
3
3
  import { ChainId } from '@ape.swap/apeswap-lists';
4
4
  import { useEffect } from 'react';
5
5
  import { setCustomRPCS } from '../config/constants/networks.js';
6
+ import { setWalletConnectorOpener } from '../config/constants/walletConnectors.js';
6
7
 
7
8
  // Prod URLS. Do not make changes here
8
9
  const defaultUrls = {
@@ -25,21 +26,28 @@ const useSDKConfig = (config) => {
25
26
  chains: [],
26
27
  hotBondChains: [ChainId.BSC, ChainId.MATIC],
27
28
  useHotBonds: true,
28
- connector: 'default',
29
29
  useTiers: false,
30
30
  useTGEBonds: false,
31
31
  showLowValueBonds: false,
32
32
  bondPartner: undefined,
33
33
  namingPreference: 'Bonus',
34
34
  ...config,
35
+ openWalletConnectors: {
36
+ evm: !!config?.openWalletConnectors?.evm,
37
+ },
35
38
  urls: { ...urls, ...config?.urls },
36
39
  highestCompatibleVersion: '2.1.3',
37
40
  };
41
+ const evmConnectorOpener = config?.openWalletConnectors?.evm;
38
42
  useEffect(() => {
39
43
  if (config?.customRPCS) {
40
44
  setCustomRPCS(config.customRPCS);
41
45
  }
42
- }, [config?.customRPCS]);
46
+ if (evmConnectorOpener) {
47
+ console.log('set evm wallet opener');
48
+ setWalletConnectorOpener('evm', evmConnectorOpener);
49
+ }
50
+ }, [config?.customRPCS, evmConnectorOpener]);
43
51
  const { data } = useQuery({
44
52
  queryKey: [QUERY_KEYS.SDK_CONFIG],
45
53
  queryFn: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useSDKConfig.js","sources":["../../src/state/useSDKConfig.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../config/constants/queryKeys'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { useEffect } from 'react'\nimport { setCustomRPCS } from '../config/constants/networks'\n\n// Prod URLS. Do not make changes here\nconst defaultUrls = {\n apiV2: 'https://api.ape.bond',\n realTimeApi: 'https://realtime-api.ape.bond',\n mainUrl: 'https://ape.bond',\n priceApi: 'https://price-api.ape.bond',\n}\n\n// Staging URLS.\nconst stagingUrls = {\n apiV2: 'https://staging-api.ape.bond',\n realTimeApi: 'https://realtime-api-staging.ape.bond',\n mainUrl: 'https://staging.ape.bond',\n priceApi: 'https://price-api.ape.bond',\n}\n\nexport interface SDKPropsDTO {\n referenceId: string\n chains: number[]\n hotBondChains?: number[]\n connector?: 'rainbowkit' | 'appkit' | 'default'\n useHotBonds?: boolean\n useTiers?: boolean\n useTGEBonds?: boolean\n showLowValueBonds?: boolean\n bondPartner?: string\n namingPreference?: 'Discount' | 'Bonus'\n urls?: Partial<Record<URLKeys, string>>\n theme?: any\n highestCompatibleVersion?: string\n customRPCS?: Partial<Record<ChainId, string[]>>\n}\n\nexport interface SDKProps {\n referenceId: string\n chains: number[]\n hotBondChains: number[]\n connector?: 'rainbowkit' | 'appkit' | 'default'\n useHotBonds: boolean\n useTiers: boolean\n useTGEBonds: boolean\n showLowValueBonds: boolean\n bondPartner?: string\n namingPreference: 'Discount' | 'Bonus'\n urls: Record<URLKeys, string>\n theme?: any\n highestCompatibleVersion?: string\n customRPCS?: Partial<Record<ChainId, string[]>>\n}\n\nexport const useSDKConfig = (config?: SDKPropsDTO): SDKProps => {\n const urls = process.env.NODE_ENV === 'production' ? defaultUrls : stagingUrls\n\n const initialData: SDKProps = {\n referenceId: '',\n chains: [],\n hotBondChains: [ChainId.BSC, ChainId.MATIC],\n useHotBonds: true,\n connector: 'default',\n useTiers: false,\n useTGEBonds: false,\n showLowValueBonds: false,\n bondPartner: undefined,\n namingPreference: 'Bonus',\n ...config,\n urls: { ...urls, ...config?.urls },\n highestCompatibleVersion: '2.1.3',\n }\n\n useEffect(() => {\n if (config?.customRPCS) {\n setCustomRPCS(config.customRPCS)\n }\n }, [config?.customRPCS])\n\n const { data } = useQuery({\n queryKey: [QUERY_KEYS.SDK_CONFIG],\n queryFn: () => {\n throw new Error('Just a hotfix for latest versions of react-query that make queryFn a required prop')\n },\n initialData,\n })\n return data as SDKProps\n}\n\nexport type URLKeys = 'apiV2' | 'realTimeApi' | 'mainUrl' | 'priceApi'\n\nexport const useURLByEnvironment = (key: URLKeys) => {\n const config = useSDKConfig()\n return config?.urls?.[key] as string\n}\n"],"names":[],"mappings":";;;;;;AAMA;AACA,MAAM,WAAW,GAAG;AAClB,IAAA,KAAK,EAAE,sBAAsB;AAC7B,IAAA,WAAW,EAAE,+BAA+B;AAC5C,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,QAAQ,EAAE,4BAA4B;CACvC;AAED;AACA,MAAM,WAAW,GAAG;AAClB,IAAA,KAAK,EAAE,8BAA8B;AACrC,IAAA,WAAW,EAAE,uCAAuC;AACpD,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,QAAQ,EAAE,4BAA4B;CACvC;AAoCM,MAAM,YAAY,GAAG,CAAC,MAAoB,KAAc;AAC7D,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,WAAW,GAAG,WAAW;AAE9E,IAAA,MAAM,WAAW,GAAa;AAC5B,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;AAC3C,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,iBAAiB,EAAE,KAAK;AACxB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,gBAAgB,EAAE,OAAO;AACzB,QAAA,GAAG,MAAM;QACT,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE;AAClC,QAAA,wBAAwB,EAAE,OAAO;KAClC;IAED,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,MAAM,EAAE,UAAU,EAAE;AACtB,YAAA,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;QAClC;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAExB,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,OAAO,EAAE,MAAK;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC;QACvG,CAAC;QACD,WAAW;AACZ,KAAA,CAAC;AACF,IAAA,OAAO,IAAgB;AACzB;AAIO,MAAM,mBAAmB,GAAG,CAAC,GAAY,KAAI;AAClD,IAAA,MAAM,MAAM,GAAG,YAAY,EAAE;AAC7B,IAAA,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,CAAW;AACtC;;;;"}
1
+ {"version":3,"file":"useSDKConfig.js","sources":["../../src/state/useSDKConfig.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../config/constants/queryKeys'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { useEffect } from 'react'\nimport { setCustomRPCS } from '../config/constants/networks'\nimport { setWalletConnectorOpener } from '../config/constants/walletConnectors'\n\n// Prod URLS. Do not make changes here\nconst defaultUrls = {\n apiV2: 'https://api.ape.bond',\n realTimeApi: 'https://realtime-api.ape.bond',\n mainUrl: 'https://ape.bond',\n priceApi: 'https://price-api.ape.bond',\n}\n\n// Staging URLS.\nconst stagingUrls = {\n apiV2: 'https://staging-api.ape.bond',\n realTimeApi: 'https://realtime-api-staging.ape.bond',\n mainUrl: 'https://staging.ape.bond',\n priceApi: 'https://price-api.ape.bond',\n}\n\nexport interface OpenWalletConnectorsDTO {\n evm?: () => void\n}\n\nexport interface SDKPropsDTO {\n referenceId: string\n chains: number[]\n hotBondChains?: number[]\n useHotBonds?: boolean\n useTiers?: boolean\n useTGEBonds?: boolean\n showLowValueBonds?: boolean\n bondPartner?: string\n namingPreference?: 'Discount' | 'Bonus'\n urls?: Partial<Record<URLKeys, string>>\n theme?: any\n highestCompatibleVersion?: string\n customRPCS?: Partial<Record<ChainId, string[]>>\n openWalletConnectors?: OpenWalletConnectorsDTO\n}\n\nexport interface SDKProps {\n referenceId: string\n chains: number[]\n hotBondChains: number[]\n useHotBonds: boolean\n useTiers: boolean\n useTGEBonds: boolean\n showLowValueBonds: boolean\n bondPartner?: string\n namingPreference: 'Discount' | 'Bonus'\n urls: Record<URLKeys, string>\n theme?: any\n highestCompatibleVersion?: string\n customRPCS?: Partial<Record<ChainId, string[]>>\n openWalletConnectors: {\n evm: boolean\n }\n}\n\nexport const useSDKConfig = (config?: SDKPropsDTO): SDKProps => {\n const urls = process.env.NODE_ENV === 'production' ? defaultUrls : stagingUrls\n\n const initialData: SDKProps = {\n referenceId: '',\n chains: [],\n hotBondChains: [ChainId.BSC, ChainId.MATIC],\n useHotBonds: true,\n useTiers: false,\n useTGEBonds: false,\n showLowValueBonds: false,\n bondPartner: undefined,\n namingPreference: 'Bonus',\n ...config,\n openWalletConnectors: {\n evm: !!config?.openWalletConnectors?.evm,\n },\n urls: { ...urls, ...config?.urls },\n highestCompatibleVersion: '2.1.3',\n }\n\n const evmConnectorOpener = config?.openWalletConnectors?.evm\n\n useEffect(() => {\n if (config?.customRPCS) {\n setCustomRPCS(config.customRPCS)\n }\n if (evmConnectorOpener) {\n console.log('set evm wallet opener')\n setWalletConnectorOpener('evm', evmConnectorOpener)\n }\n }, [config?.customRPCS, evmConnectorOpener])\n\n const { data } = useQuery({\n queryKey: [QUERY_KEYS.SDK_CONFIG],\n queryFn: () => {\n throw new Error('Just a hotfix for latest versions of react-query that make queryFn a required prop')\n },\n initialData,\n })\n return data as SDKProps\n}\n\nexport type URLKeys = 'apiV2' | 'realTimeApi' | 'mainUrl' | 'priceApi'\n\nexport const useURLByEnvironment = (key: URLKeys) => {\n const config = useSDKConfig()\n return config?.urls?.[key] as string\n}\n"],"names":[],"mappings":";;;;;;;AAOA;AACA,MAAM,WAAW,GAAG;AAClB,IAAA,KAAK,EAAE,sBAAsB;AAC7B,IAAA,WAAW,EAAE,+BAA+B;AAC5C,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,QAAQ,EAAE,4BAA4B;CACvC;AAED;AACA,MAAM,WAAW,GAAG;AAClB,IAAA,KAAK,EAAE,8BAA8B;AACrC,IAAA,WAAW,EAAE,uCAAuC;AACpD,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,QAAQ,EAAE,4BAA4B;CACvC;AA0CM,MAAM,YAAY,GAAG,CAAC,MAAoB,KAAc;AAC7D,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,WAAW,GAAG,WAAW;AAE9E,IAAA,MAAM,WAAW,GAAa;AAC5B,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;AAC3C,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,iBAAiB,EAAE,KAAK;AACxB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,gBAAgB,EAAE,OAAO;AACzB,QAAA,GAAG,MAAM;AACT,QAAA,oBAAoB,EAAE;AACpB,YAAA,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG;AACzC,SAAA;QACD,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE;AAClC,QAAA,wBAAwB,EAAE,OAAO;KAClC;AAED,IAAA,MAAM,kBAAkB,GAAG,MAAM,EAAE,oBAAoB,EAAE,GAAG;IAE5D,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,MAAM,EAAE,UAAU,EAAE;AACtB,YAAA,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;QAClC;QACA,IAAI,kBAAkB,EAAE;AACtB,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACpC,YAAA,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,CAAC;QACrD;IACF,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAE5C,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;AACxB,QAAA,QAAQ,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,OAAO,EAAE,MAAK;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC;QACvG,CAAC;QACD,WAAW;AACZ,KAAA,CAAC;AACF,IAAA,OAAO,IAAgB;AACzB;AAIO,MAAM,mBAAmB,GAAG,CAAC,GAAY,KAAI;AAClD,IAAA,MAAM,MAAM,GAAG,YAAY,EAAE;AAC7B,IAAA,OAAO,MAAM,EAAE,IAAI,GAAG,GAAG,CAAW;AACtC;;;;"}
@@ -1,4 +1,2 @@
1
- import { ethers } from 'ethers';
2
1
  export declare function adjustDecimals(numStr: string): string;
3
- declare const convertToTokenValue: (numberString: string, decimals: number) => ethers.BigNumber;
4
- export default convertToTokenValue;
2
+ export declare const convertToBigish: (numberString?: string, decimals?: number) => string;
@@ -1,4 +1,4 @@
1
- import { ethers } from 'ethers';
1
+ import BigNumber from 'bignumber.js';
2
2
 
3
3
  function adjustDecimals(numStr) {
4
4
  const parts = numStr.split('.');
@@ -14,14 +14,12 @@ function adjustDecimals(numStr) {
14
14
  return numStr;
15
15
  }
16
16
  }
17
- const convertToTokenValue = (numberString, decimals) => {
18
- if (isNaN(parseFloat(numberString))) {
19
- console.error('Error: numberString to parse is not a number');
20
- return ethers.utils.parseUnits('0', decimals);
21
- }
22
- const tokenValue = ethers.utils.parseUnits(adjustDecimals(numberString), decimals);
23
- return tokenValue;
17
+ const convertToBigish = (numberString, decimals = 18) => {
18
+ if (!numberString || !decimals)
19
+ return '';
20
+ const adjustedDecimals = adjustDecimals(numberString);
21
+ return new BigNumber(adjustedDecimals).times(new BigNumber(10).pow(decimals)).toFixed(0);
24
22
  };
25
23
 
26
- export { adjustDecimals, convertToTokenValue as default };
24
+ export { adjustDecimals, convertToBigish };
27
25
  //# sourceMappingURL=convertToTokenValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertToTokenValue.js","sources":["../../src/utils/convertToTokenValue.ts"],"sourcesContent":["import { ethers } from 'ethers'\n\nexport function adjustDecimals(numStr: string) {\n const parts = numStr.split('.')\n if (parts.length < 2) {\n // This means the number doesn't have any decimals\n return numStr\n }\n if (parts[1].length > 18) {\n parts[1] = parts[1].slice(0, 18) // Take the first 18 decimals\n return parts[0] + '.' + parts[1]\n } else {\n return numStr\n }\n}\n\nconst convertToTokenValue = (numberString: string, decimals: number): ethers.BigNumber => {\n if (isNaN(parseFloat(numberString))) {\n console.error('Error: numberString to parse is not a number')\n return ethers.utils.parseUnits('0', decimals)\n }\n const tokenValue = ethers.utils.parseUnits(adjustDecimals(numberString), decimals)\n return tokenValue\n}\n\nexport default convertToTokenValue\n"],"names":[],"mappings":";;AAEM,SAAU,cAAc,CAAC,MAAc,EAAA;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEpB,QAAA,OAAO,MAAM;IACf;IACA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE;AACxB,QAAA,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAChC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAClC;SAAO;AACL,QAAA,OAAO,MAAM;IACf;AACF;AAEA,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,QAAgB,KAAsB;IACvF,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE;AACnC,QAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;IAC/C;AACA,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC;AAClF,IAAA,OAAO,UAAU;AACnB;;;;"}
1
+ {"version":3,"file":"convertToTokenValue.js","sources":["../../src/utils/convertToTokenValue.ts"],"sourcesContent":["import BigNumber from 'bignumber.js'\n\nexport function adjustDecimals(numStr: string) {\n const parts = numStr.split('.')\n if (parts.length < 2) {\n // This means the number doesn't have any decimals\n return numStr\n }\n if (parts[1].length > 18) {\n parts[1] = parts[1].slice(0, 18) // Take the first 18 decimals\n return parts[0] + '.' + parts[1]\n } else {\n return numStr\n }\n}\n\nexport const convertToBigish = (numberString?: string, decimals: number = 18) => {\n if (!numberString || !decimals) return ''\n\n const adjustedDecimals = adjustDecimals(numberString)\n\n return new BigNumber(adjustedDecimals).times(new BigNumber(10).pow(decimals)).toFixed(0)\n}\n"],"names":[],"mappings":";;AAEM,SAAU,cAAc,CAAC,MAAc,EAAA;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEpB,QAAA,OAAO,MAAM;IACf;IACA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE;AACxB,QAAA,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAChC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAClC;SAAO;AACL,QAAA,OAAO,MAAM;IACf;AACF;AAEO,MAAM,eAAe,GAAG,CAAC,YAAqB,EAAE,QAAA,GAAmB,EAAE,KAAI;AAC9E,IAAA,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,EAAE;AAEzC,IAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,CAAC;IAErD,OAAO,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1F;;;;"}
@@ -1,33 +1,49 @@
1
- import { Interface } from '@ethersproject/abi';
1
+ import { createPublicClient, http, encodeFunctionData, decodeFunctionResult } from 'viem';
2
2
  import multicallV2Abi from '../config/abi/multicallv2.json.js';
3
- import { ethers } from 'ethers';
4
- import { chunk, flatten } from 'lodash';
5
3
  import { getRPC } from '../config/constants/networks.js';
6
4
  import { MULTICALL_V2 } from '../config/constants/addresses.js';
5
+ import { ChainId } from '@ape.swap/apeswap-lists';
6
+ import { chunk, flatten } from 'lodash';
7
7
 
8
+ // Wraps decoded result in an array when the function has a single output,
9
+ // matching ethers v5 Result behavior so consuming code doesn't need to change.
10
+ // Multi-output functions already return an array from viem, so they're left as-is.
11
+ const decodeResult = (abi, functionName, data) => {
12
+ const decoded = decodeFunctionResult({ abi, functionName, data });
13
+ const fn = abi.find((item) => item.type === 'function' && item.name === functionName);
14
+ return fn?.outputs?.length === 1 ? [decoded] : decoded;
15
+ };
8
16
  // This is the legacy multicall
9
17
  // Try to use multicall hooks
10
18
  const multicall = async (chainId, abi, calls, batch, batchSize) => {
11
19
  try {
20
+ if (chainId === ChainId.SOL)
21
+ return;
12
22
  const multicallAddress = MULTICALL_V2[chainId];
13
- const provider = new ethers.providers.JsonRpcProvider(getRPC(chainId), chainId);
14
- const multi = new ethers.Contract(multicallAddress, multicallV2Abi, provider);
15
- const itf = new Interface(abi);
16
- const calldata = calls.map((call) => [call.address.toLowerCase(), itf.encodeFunctionData(call.name, call.params)]);
23
+ const client = createPublicClient({
24
+ transport: http(getRPC(chainId)),
25
+ });
26
+ const calldata = calls.map((call) => ({
27
+ target: call.address.toLowerCase(),
28
+ callData: encodeFunctionData({ abi: abi, functionName: call.name, args: call.params }),
29
+ }));
30
+ const aggregate = async (calldataChunk, callsChunk) => {
31
+ const [, returnData] = (await client.readContract({
32
+ address: multicallAddress,
33
+ abi: multicallV2Abi,
34
+ functionName: 'aggregate',
35
+ args: [calldataChunk],
36
+ }));
37
+ return returnData.map((data, i) => decodeResult(abi, callsChunk[i].name, data));
38
+ };
17
39
  if (batch) {
18
- const chunkedCalls = chunk(calldata, batchSize);
19
- const chunkedCallNames = chunk(calls, batchSize);
20
- const chunkedData = chunkedCalls.flatMap(async (chunkedCallSet, i) => {
21
- const { returnData } = await multi.aggregate(chunkedCallSet);
22
- return returnData.map((call, j) => itf.decodeFunctionResult(chunkedCallNames[i][j].name, call));
23
- });
24
- const resolveCall = await Promise.all(chunkedData);
25
- const flattenCalls = flatten(resolveCall);
26
- return flattenCalls;
40
+ const chunkedCalldata = chunk(calldata, batchSize);
41
+ const chunkedCalls = chunk(calls, batchSize);
42
+ const results = await Promise.all(chunkedCalls.map((callsChunk, i) => aggregate(chunkedCalldata[i], callsChunk)));
43
+ return flatten(results);
27
44
  }
28
45
  else {
29
- const { returnData } = await multi.aggregate(calldata);
30
- return returnData.map((call, i) => itf.decodeFunctionResult(calls[i].name, call));
46
+ return aggregate(calldata, calls);
31
47
  }
32
48
  }
33
49
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.js","sources":["../../src/utils/multicall.ts"],"sourcesContent":["import { Interface } from '@ethersproject/abi'\nimport multicallV2Abi from '../config/abi/multicallv2.json'\nimport { ethers } from 'ethers'\nimport { chunk, flatten } from 'lodash'\nimport { getRPC } from '../config/constants/networks'\nimport { MULTICALL_V2 } from '../config/constants/addresses'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\nexport interface Call {\n address: string // Address of the contract\n name: string // Function name on the contract (exemple: balanceOf)\n params?: any[] // Function params\n}\n\n// This is the legacy multicall\n// Try to use multicall hooks\nconst multicall = async (chainId: number, abi: any[], calls: Call[], batch?: boolean, batchSize?: number) => {\n try {\n const multicallAddress = MULTICALL_V2[chainId]\n const provider = new ethers.providers.JsonRpcProvider(getRPC(chainId as ChainId), chainId)\n const multi = new ethers.Contract(multicallAddress, multicallV2Abi, provider)\n const itf = new Interface(abi)\n const calldata = calls.map((call) => [call.address.toLowerCase(), itf.encodeFunctionData(call.name, call.params)])\n if (batch) {\n const chunkedCalls = chunk(calldata, batchSize)\n const chunkedCallNames = chunk(calls, batchSize)\n const chunkedData = chunkedCalls.flatMap(async (chunkedCallSet, i) => {\n const { returnData } = await multi.aggregate(chunkedCallSet)\n return returnData.map((call: any, j: number) => itf.decodeFunctionResult(chunkedCallNames[i][j].name, call))\n })\n const resolveCall = await Promise.all(chunkedData)\n const flattenCalls = flatten(resolveCall)\n return flattenCalls\n } else {\n const { returnData } = await multi.aggregate(calldata)\n return returnData.map((call: any, i: number) => itf.decodeFunctionResult(calls[i].name, call))\n }\n } catch (e) {\n console.error(e)\n console.error(chainId)\n console.error(calls)\n }\n}\n\nexport default multicall\n"],"names":[],"mappings":";;;;;;;AAcA;AACA;AACA,MAAM,SAAS,GAAG,OAAO,OAAe,EAAE,GAAU,EAAE,KAAa,EAAE,KAAe,EAAE,SAAkB,KAAI;AAC1G,IAAA,IAAI;AACF,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC;AAC9C,QAAA,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,OAAkB,CAAC,EAAE,OAAO,CAAC;AAC1F,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,EAAE,QAAQ,CAAC;AAC7E,QAAA,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;AAC9B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClH,IAAI,KAAK,EAAE;YACT,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;AAChD,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,cAAc,EAAE,CAAC,KAAI;gBACnE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;AAC5D,gBAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,CAAS,KAAK,GAAG,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9G,YAAA,CAAC,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AAClD,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;AACzC,YAAA,OAAO,YAAY;QACrB;aAAO;YACL,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,CAAS,KAAK,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChG;IACF;IAAE,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AACtB,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IACtB;AACF;;;;"}
1
+ {"version":3,"file":"multicall.js","sources":["../../src/utils/multicall.ts"],"sourcesContent":["import {\n createPublicClient,\n http,\n encodeFunctionData,\n decodeFunctionResult,\n type Abi,\n type Address,\n type AbiFunction,\n} from 'viem'\nimport multicallV2Abi from '../config/abi/multicallv2.json'\nimport { getRPC } from '../config/constants/networks'\nimport { MULTICALL_V2 } from '../config/constants/addresses'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { chunk, flatten } from 'lodash'\n\nexport interface Call {\n address: string // Address of the contract\n name: string // Function name on the contract (exemple: balanceOf)\n params?: any[] // Function params\n}\n\n// Wraps decoded result in an array when the function has a single output,\n// matching ethers v5 Result behavior so consuming code doesn't need to change.\n// Multi-output functions already return an array from viem, so they're left as-is.\nconst decodeResult = (abi: Abi, functionName: string, data: `0x${string}`) => {\n const decoded = decodeFunctionResult({ abi, functionName, data })\n const fn = abi.find((item): item is AbiFunction => item.type === 'function' && item.name === functionName)\n return fn?.outputs?.length === 1 ? [decoded] : decoded\n}\n\n// This is the legacy multicall\n// Try to use multicall hooks\nconst multicall = async (\n chainId: number,\n abi: any[],\n calls: Call[],\n batch?: boolean,\n batchSize?: number,\n): Promise<any> => {\n try {\n if (chainId === ChainId.SOL) return\n\n const multicallAddress = MULTICALL_V2[chainId] as Address\n const client = createPublicClient({\n transport: http(getRPC(chainId as ChainId)),\n })\n\n const calldata = calls.map((call) => ({\n target: call.address.toLowerCase() as Address,\n callData: encodeFunctionData({ abi: abi as Abi, functionName: call.name, args: call.params }),\n }))\n\n const aggregate = async (calldataChunk: typeof calldata, callsChunk: Call[]) => {\n const [, returnData] = (await client.readContract({\n address: multicallAddress,\n abi: multicallV2Abi as Abi,\n functionName: 'aggregate',\n args: [calldataChunk],\n })) as [bigint, readonly `0x${string}`[]]\n\n return returnData.map((data, i) => decodeResult(abi as Abi, callsChunk[i].name, data))\n }\n\n if (batch) {\n const chunkedCalldata = chunk(calldata, batchSize)\n const chunkedCalls = chunk(calls, batchSize)\n const results = await Promise.all(chunkedCalls.map((callsChunk, i) => aggregate(chunkedCalldata[i], callsChunk)))\n return flatten(results)\n } else {\n return aggregate(calldata, calls)\n }\n } catch (e) {\n console.error(e)\n console.error(chainId)\n console.error(calls)\n }\n}\n\nexport default multicall\n"],"names":[],"mappings":";;;;;;;AAqBA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,YAAoB,EAAE,IAAmB,KAAI;AAC3E,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACjE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAA0B,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AAC1G,IAAA,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO;AACxD,CAAC;AAED;AACA;AACA,MAAM,SAAS,GAAG,OAChB,OAAe,EACf,GAAU,EACV,KAAa,EACb,KAAe,EACf,SAAkB,KACF;AAChB,IAAA,IAAI;AACF,QAAA,IAAI,OAAO,KAAK,OAAO,CAAC,GAAG;YAAE;AAE7B,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAY;QACzD,MAAM,MAAM,GAAG,kBAAkB,CAAC;AAChC,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC,CAAC;AAC5C,SAAA,CAAC;QAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACpC,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAa;YAC7C,QAAQ,EAAE,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAU,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9F,SAAA,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,aAA8B,EAAE,UAAkB,KAAI;YAC7E,MAAM,GAAG,UAAU,CAAC,IAAI,MAAM,MAAM,CAAC,YAAY,CAAC;AAChD,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,GAAG,EAAE,cAAqB;AAC1B,gBAAA,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,CAAC,aAAa,CAAC;AACtB,aAAA,CAAC,CAAuC;YAEzC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,YAAY,CAAC,GAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxF,QAAA,CAAC;QAED,IAAI,KAAK,EAAE;YACT,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC;YAClD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;AAC5C,YAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACjH,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC;QACzB;aAAO;AACL,YAAA,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;QACnC;IACF;IAAE,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AACtB,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IACtB;AACF;;;;"}
@@ -14,17 +14,6 @@ import useHotBonds from '../../state/bonds/useHotBonds.js';
14
14
  import RecommendationCards from './components/RecommendationCards/index.js';
15
15
  import BondsMenu from './components/BondsMenu/BondsMenu.js';
16
16
  import Svg from '../../components/uikit-sdk/Svg/index.js';
17
- import '../../components/uikit-sdk/Text/types.js';
18
- import '../../components/uikit-sdk/Checkbox/types.js';
19
- import '../../components/uikit-sdk/Skeleton/types.js';
20
- import '../../components/uikit-sdk/Skeleton/styles.js';
21
- import '../../components/uikit-sdk/TooltipBubble/index.js';
22
- import 'framer-motion';
23
- import '../../components/uikit-sdk/Button/types.js';
24
- import '../../components/uikit-sdk/Svg/types.js';
25
- import '../../contexts/ModalContext.js';
26
- import '../FullBondsView/FullBondsView.js';
27
- import '../../components/uikit-sdk/Select/types.js';
28
17
  import useTokenPrices from '../../state/tokenPrices/useTokenPrices.js';
29
18
  import { useSDKConfig } from '../../state/useSDKConfig.js';
30
19
  import BuyAgainRow from './components/BuyAgainRow/index.js';