@ape.swap/bonds-sdk 3.2.0 → 3.3.0-test.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/BondFilters/BondFilters.js +0 -12
- package/dist/components/BondFilters/BondFilters.js.map +1 -1
- package/dist/components/ChainOptionList/ChainOptionsButtons.js +1 -13
- package/dist/components/ChainOptionList/ChainOptionsButtons.js.map +1 -1
- package/dist/components/ChainOptionList/ChainOptionsList.js +1 -13
- package/dist/components/ChainOptionList/ChainOptionsList.js.map +1 -1
- package/dist/components/ConnectButton/index.js +3 -17
- package/dist/components/ConnectButton/index.js.map +1 -1
- package/dist/components/FavIcons/AddFavToken.js +1 -12
- package/dist/components/FavIcons/AddFavToken.js.map +1 -1
- package/dist/components/FavIcons/FavFilter.js +1 -13
- package/dist/components/FavIcons/FavFilter.js.map +1 -1
- package/dist/components/LoadingSpinner/index.js +0 -13
- package/dist/components/LoadingSpinner/index.js.map +1 -1
- package/dist/components/MenuSelect/MenuSelect.js +1 -12
- package/dist/components/MenuSelect/MenuSelect.js.map +1 -1
- package/dist/components/MenuSelect/RecommendationSelector.js +0 -13
- package/dist/components/MenuSelect/RecommendationSelector.js.map +1 -1
- package/dist/components/NetworkFilter/index.js +2 -12
- package/dist/components/NetworkFilter/index.js.map +1 -1
- package/dist/components/PlaceholderMonkey/index.js +3 -14
- package/dist/components/PlaceholderMonkey/index.js.map +1 -1
- package/dist/components/ProgressBar/ProgressBarWrapper.js +1 -9
- package/dist/components/ProgressBar/ProgressBarWrapper.js.map +1 -1
- package/dist/components/SlippageModal/index.js +1 -13
- package/dist/components/SlippageModal/index.js.map +1 -1
- package/dist/components/StepBubble/index.js +1 -12
- package/dist/components/StepBubble/index.js.map +1 -1
- package/dist/components/Toast/index.js +2 -10
- package/dist/components/Toast/index.js.map +1 -1
- package/dist/components/TokenInfoAndName/index.js +2 -14
- package/dist/components/TokenInfoAndName/index.js.map +1 -1
- package/dist/components/TokenSelectorModal/TokenRow.js +1 -13
- package/dist/components/TokenSelectorModal/TokenRow.js.map +1 -1
- package/dist/components/TokenSelectorModal/index.js +2 -17
- package/dist/components/TokenSelectorModal/index.js.map +1 -1
- package/dist/components/TokenSelectorPanel/index.js +1 -13
- package/dist/components/TokenSelectorPanel/index.js.map +1 -1
- package/dist/components/Tooltip/ButtonsRow.js +1 -12
- package/dist/components/Tooltip/ButtonsRow.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +0 -12
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/YouTooltip/YouTooltip.js +0 -13
- package/dist/components/YouTooltip/YouTooltip.js.map +1 -1
- package/dist/components/uikit-sdk/LoadingDots/index.js +0 -13
- package/dist/components/uikit-sdk/LoadingDots/index.js.map +1 -1
- package/dist/components/uikit-sdk/Svg/Icons/Timer.js +1 -1
- package/dist/components/uikit-sdk/Svg/Icons/Timer.js.map +1 -1
- package/dist/components/uikit-sdk/Toggle/index.js +1 -1
- package/dist/components/uikit-sdk/Toggle/index.js.map +1 -1
- package/dist/components/uikit-sdk/TokenImage/index.js +0 -13
- package/dist/components/uikit-sdk/TokenImage/index.js.map +1 -1
- package/dist/config/abi/launchBond_v2_4_1.json.js +2 -2
- package/dist/config/constants/walletConnectors.d.ts +3 -0
- package/dist/config/constants/walletConnectors.js +18 -0
- package/dist/config/constants/walletConnectors.js.map +1 -0
- package/dist/contexts/ModalContext.js +0 -11
- package/dist/contexts/ModalContext.js.map +1 -1
- package/dist/contexts/Popups.js +0 -13
- package/dist/contexts/Popups.js.map +1 -1
- package/dist/state/allowance/useAllowance.js +2 -2
- package/dist/state/allowance/useAllowance.js.map +1 -1
- package/dist/state/bonds/utils.js +2 -2
- package/dist/state/preTGEBonds/usePreTGEUserBonds.js +3 -3
- package/dist/state/useSDKConfig.d.ts +7 -2
- package/dist/state/useSDKConfig.js +10 -2
- package/dist/state/useSDKConfig.js.map +1 -1
- package/dist/utils/convertToTokenValue.d.ts +1 -3
- package/dist/utils/convertToTokenValue.js +7 -9
- package/dist/utils/convertToTokenValue.js.map +1 -1
- package/dist/utils/formatNumbers.d.ts +0 -1
- package/dist/utils/formatNumbers.js +19 -13
- package/dist/utils/formatNumbers.js.map +1 -1
- package/dist/utils/multicall.js +34 -18
- package/dist/utils/multicall.js.map +1 -1
- package/dist/utils/numbers.d.ts +0 -4
- package/dist/utils/numbers.js +0 -2
- package/dist/utils/numbers.js.map +1 -1
- package/dist/views/Bonds/Bonds.js +0 -11
- package/dist/views/Bonds/Bonds.js.map +1 -1
- package/dist/views/Bonds/components/BannerTestnet/BannerTestnet.js +1 -13
- package/dist/views/Bonds/components/BannerTestnet/BannerTestnet.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/BondRow.js +1 -13
- package/dist/views/Bonds/components/BondRows/BondRow.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/ChainTitle.js +1 -12
- package/dist/views/Bonds/components/BondRows/ChainTitle.js.map +1 -1
- package/dist/views/Bonds/components/BondsMenu/BondsMenu.js +0 -13
- package/dist/views/Bonds/components/BondsMenu/BondsMenu.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +2 -14
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js +1 -14
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
- package/dist/views/Bonds/components/BuyAgainRow/index.js +0 -11
- package/dist/views/Bonds/components/BuyAgainRow/index.js.map +1 -1
- package/dist/views/Bonds/components/HotBondCards/HotBondCard.js +1 -13
- package/dist/views/Bonds/components/HotBondCards/HotBondCard.js.map +1 -1
- package/dist/views/Bonds/components/HotBondCards/index.js +0 -12
- package/dist/views/Bonds/components/HotBondCards/index.js.map +1 -1
- package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js +0 -13
- package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js.map +1 -1
- package/dist/views/Bonds/components/RecommendationCards/index.js +0 -12
- package/dist/views/Bonds/components/RecommendationCards/index.js.map +1 -1
- package/dist/views/BuyBond/BuyBond.js +2 -12
- package/dist/views/BuyBond/BuyBond.js.map +1 -1
- package/dist/views/BuyBond/BuyBondModal.js +0 -12
- package/dist/views/BuyBond/BuyBondModal.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalHeader.js +1 -14
- package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalMinTierHeader.js +0 -12
- package/dist/views/BuyBond/components/BondModalMinTierHeader.js.map +1 -1
- package/dist/views/BuyBond/components/ExpandedViewButton.js +1 -14
- package/dist/views/BuyBond/components/ExpandedViewButton.js.map +1 -1
- package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +2 -13
- package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +1 -1
- package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +1 -12
- package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
- package/dist/views/BuyBond/components/NoBonusModal/NoBonusModal.js +1 -11
- package/dist/views/BuyBond/components/NoBonusModal/NoBonusModal.js.map +1 -1
- package/dist/views/BuyBond/components/ProjectDescription.js +0 -11
- package/dist/views/BuyBond/components/ProjectDescription.js.map +1 -1
- package/dist/views/BuyBond/index.d.ts +2 -2
- package/dist/views/BuyBond/index.js.map +1 -1
- package/dist/views/FullBondsView/FullBondsView.d.ts +0 -4
- package/dist/views/FullBondsView/FullBondsView.js +2 -19
- package/dist/views/FullBondsView/FullBondsView.js.map +1 -1
- package/dist/views/PreTGEBonds/components/BuyComponent/BondCards.js +1 -13
- package/dist/views/PreTGEBonds/components/BuyComponent/BondCards.js.map +1 -1
- package/dist/views/PreTGEBonds/components/BuyComponent/ParticipationSuccessful.js +4 -14
- package/dist/views/PreTGEBonds/components/BuyComponent/ParticipationSuccessful.js.map +1 -1
- package/dist/views/PreTGEBonds/components/BuyComponent/PreTGEBuyComponent.js +4 -13
- package/dist/views/PreTGEBonds/components/BuyComponent/PreTGEBuyComponent.js.map +1 -1
- package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEActions.js +3 -15
- package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEActions.js.map +1 -1
- package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEUserRow.js +1 -12
- package/dist/views/PreTGEBonds/components/PreTGEUserRows/PreTGEUserRow.js.map +1 -1
- package/dist/views/TransactionModal/TransactionModal.js +2 -13
- package/dist/views/TransactionModal/TransactionModal.js.map +1 -1
- package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js +3 -13
- package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js.map +1 -1
- package/dist/views/YourBonds/components/ClaimAll/index.js +0 -13
- package/dist/views/YourBonds/components/ClaimAll/index.js.map +1 -1
- package/dist/views/YourBonds/components/YourBondsMenu/YourBondsMenu.js +0 -13
- package/dist/views/YourBonds/components/YourBondsMenu/YourBondsMenu.js.map +1 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js +0 -12
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js.map +1 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/index.js +3 -13
- package/dist/views/YourBondsModal/components/TransferBondModal/index.js.map +1 -1
- package/dist/views/ZapModal/index.js +4 -13
- package/dist/views/ZapModal/index.js.map +1 -1
- package/package.json +22 -13
- package/dist/components/ConnectButton/AppKitButton.d.ts +0 -3
- package/dist/components/ConnectButton/AppKitButton.js +0 -22
- package/dist/components/ConnectButton/AppKitButton.js.map +0 -1
- package/dist/components/ConnectButton/RainbowKitButton.d.ts +0 -3
- package/dist/components/ConnectButton/RainbowKitButton.js +0 -35
- package/dist/components/ConnectButton/RainbowKitButton.js.map +0 -1
- package/dist/components/uikit-sdk/index.d.ts +0 -15
- package/dist/config/abi/types/Banana.d.ts +0 -394
- package/dist/config/abi/types/Bond.d.ts +0 -758
- package/dist/config/abi/types/BondNft.d.ts +0 -556
- package/dist/config/abi/types/EnsPublicResolver.d.ts +0 -437
- package/dist/config/abi/types/EnsRegistrar.d.ts +0 -254
- package/dist/config/abi/types/Erc20.d.ts +0 -156
- package/dist/config/abi/types/Erc20_bytes32.d.ts +0 -50
- package/dist/config/abi/types/JungleChef.d.ts +0 -245
- package/dist/config/abi/types/LaunchBonds.d.ts +0 -1306
- package/dist/config/abi/types/LensContract.d.ts +0 -276
- package/dist/config/abi/types/LockVeAbond.d.ts +0 -1173
- package/dist/config/abi/types/MigrationBond.d.ts +0 -1074
- package/dist/config/abi/types/MigrationFveAbond.d.ts +0 -284
- package/dist/config/abi/types/MiniComplexRewarder.d.ts +0 -423
- package/dist/config/abi/types/Multicallv2.d.ts +0 -139
- package/dist/config/abi/types/Multicallv3.d.ts +0 -98
- package/dist/config/abi/types/NonFungibleApes.d.ts +0 -492
- package/dist/config/abi/types/NonFungibleBananas.d.ts +0 -468
- package/dist/config/abi/types/PriceGetter.d.ts +0 -676
- package/dist/config/abi/types/PriceGetterLinea.d.ts +0 -756
- package/dist/config/abi/types/PriceGetterV2.d.ts +0 -692
- package/dist/config/abi/types/SousChef.d.ts +0 -542
- package/dist/config/abi/types/Treasury.d.ts +0 -274
- package/dist/config/abi/types/Weth.d.ts +0 -206
- package/dist/config/abi/types/Zap.d.ts +0 -484
- package/dist/config/abi/types/common.d.ts +0 -22
- package/dist/config/abi/types/factories/Banana__factory.d.ts +0 -475
- package/dist/config/abi/types/factories/BondNft__factory.d.ts +0 -723
- package/dist/config/abi/types/factories/Bond__factory.d.ts +0 -799
- package/dist/config/abi/types/factories/EnsPublicResolver__factory.d.ts +0 -649
- package/dist/config/abi/types/factories/EnsRegistrar__factory.d.ts +0 -338
- package/dist/config/abi/types/factories/Erc20__factory.d.ts +0 -175
- package/dist/config/abi/types/factories/Erc20_bytes32__factory.d.ts +0 -30
- package/dist/config/abi/types/factories/JungleChef__factory.d.ts +0 -247
- package/dist/config/abi/types/factories/LaunchBonds__factory.d.ts +0 -1560
- package/dist/config/abi/types/factories/LensContract__factory.d.ts +0 -254
- package/dist/config/abi/types/factories/LockVeAbond__factory.d.ts +0 -1698
- package/dist/config/abi/types/factories/MigrationBond__factory.d.ts +0 -1268
- package/dist/config/abi/types/factories/MigrationFveAbond__factory.d.ts +0 -262
- package/dist/config/abi/types/factories/MiniComplexRewarder__factory.d.ts +0 -448
- package/dist/config/abi/types/factories/Multicallv2__factory.d.ts +0 -115
- package/dist/config/abi/types/factories/Multicallv3__factory.d.ts +0 -76
- package/dist/config/abi/types/factories/NonFungibleApes__factory.d.ts +0 -617
- package/dist/config/abi/types/factories/NonFungibleBananas__factory.d.ts +0 -576
- package/dist/config/abi/types/factories/PriceGetterLinea__factory.d.ts +0 -1105
- package/dist/config/abi/types/factories/PriceGetterV2__factory.d.ts +0 -1027
- package/dist/config/abi/types/factories/PriceGetter__factory.d.ts +0 -999
- package/dist/config/abi/types/factories/SousChef__factory.d.ts +0 -511
- package/dist/config/abi/types/factories/Treasury__factory.d.ts +0 -235
- package/dist/config/abi/types/factories/Weth__factory.d.ts +0 -220
- package/dist/config/abi/types/factories/Zap__factory.d.ts +0 -695
- package/dist/config/abi/types/factories/index.d.ts +0 -25
- package/dist/config/abi/types/index.d.ts +0 -51
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -16
- package/dist/utils/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/uikit-sdk/Toggle/index.tsx"],"sourcesContent":["import React from 'react'\nimport styles from './styles'\nimport Flex from '../Flex'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { BondsViewOptions } from '../../../
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/uikit-sdk/Toggle/index.tsx"],"sourcesContent":["import React from 'react'\nimport styles from './styles'\nimport Flex from '../Flex'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { BondsViewOptions } from '../../../state/activeView'\n\nconst Toggle = ({\n options,\n activeOption,\n handleToggle,\n claimableBillsAmount,\n}: {\n options: string[]\n activeOption: string\n handleToggle: (newOption: string) => void\n claimableBillsAmount?: string\n}) => {\n return (\n <Flex sx={styles.container}>\n <AnimatePresence initial={false}>\n {options.map((option) => {\n return (\n <motion.div\n key={option}\n animate={{ opacity: option === activeOption ? 1 : 0.6, scale: option === activeOption ? 1 : 0.9 }}\n exit={{ opacity: 0, scale: 0.9 }}\n transition={{ duration: 0.2, type: 'spring', stiffness: 50 }}\n sx={{ overflow: 'hidden', width: '100%' }}\n >\n <Flex\n sx={{\n ...styles.switch,\n background: option === activeOption ? 'primaryButton' : 'white2',\n color: option === activeOption ? 'primaryBright' : 'primaryButtonDisable',\n }}\n onClick={() => handleToggle(option)}\n >\n {option}\n {option === BondsViewOptions.YOURBONDS && claimableBillsAmount ? ` (${claimableBillsAmount})` : ''}\n </Flex>\n </motion.div>\n )\n })}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default Toggle\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAMA,MAAM,MAAM,GAAG,CAAC,EACd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,oBAAoB,GAMrB,KAAI;IACH,QACEA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAA,QAAA,EACxBA,GAAA,CAAC,eAAe,IAAC,OAAO,EAAE,KAAK,EAAA,QAAA,EAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AACtB,gBAAA,QACEA,GAAA,CAAC,MAAM,CAAC,GAAG,IAET,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,GAAG,CAAC,GAAG,GAAG,EAAE,EACjG,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAChC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAC5D,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAEzCC,KAAC,IAAI,EAAA,EACH,EAAE,EAAE;4BACF,GAAG,MAAM,CAAC,MAAM;4BAChB,UAAU,EAAE,MAAM,KAAK,YAAY,GAAG,eAAe,GAAG,QAAQ;4BAChE,KAAK,EAAE,MAAM,KAAK,YAAY,GAAG,eAAe,GAAG,sBAAsB;AAC1E,yBAAA,EACD,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,aAElC,MAAM,EACN,MAAM,KAAK,gBAAgB,CAAC,SAAS,IAAI,oBAAoB,GAAG,CAAA,EAAA,EAAK,oBAAoB,CAAA,CAAA,CAAG,GAAG,EAAE,CAAA,EAAA,CAC7F,EAAA,EAhBF,MAAM,CAiBA;AAEjB,YAAA,CAAC,CAAC,EAAA,CACc,EAAA,CACb;AAEX;;;;"}
|
|
@@ -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
|
|
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
|
|
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 {
|
|
2357
|
+
export { LaunchBondABI_V_2_4_1 as default };
|
|
2358
2358
|
//# sourceMappingURL=launchBond_v2_4_1.json.js.map
|
|
@@ -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
|
|
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;;;;"}
|
package/dist/contexts/Popups.js
CHANGED
|
@@ -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
|
|
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
|
|
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 =
|
|
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
|
|
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":"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"}
|
|
@@ -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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
|
4
|
-
export default convertToTokenValue;
|
|
2
|
+
export declare const convertToBigish: (numberString?: string, decimals?: number) => string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
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
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
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,
|
|
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
|
|
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;;;;"}
|
|
@@ -19,7 +19,6 @@ interface FormatDollarArgs {
|
|
|
19
19
|
* @param round whether or not to round up non-price amounts
|
|
20
20
|
*/
|
|
21
21
|
export declare const formatDollar: ({ num, isPrice, lessPreciseStablecoinValues, digits, round, }: FormatDollarArgs) => string;
|
|
22
|
-
export declare const formatValue: ({ num, digits, round }: any) => string;
|
|
23
22
|
/**
|
|
24
23
|
* Returns a numerical amount of any token formatted in human readable string for use in template.
|
|
25
24
|
*
|
|
@@ -1,6 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const dollarAbbreviations = [
|
|
2
|
+
{ value: 1e12, suffix: 'T' },
|
|
3
|
+
{ value: 1e9, suffix: 'B' },
|
|
4
|
+
{ value: 1e6, suffix: 'M' },
|
|
5
|
+
// { value: 1e3, suffix: 'K' },
|
|
6
|
+
];
|
|
7
|
+
const formatDollarAmount = (num, digits, round) => {
|
|
8
|
+
const mantissa = num > 1000 ? 2 : digits;
|
|
9
|
+
const sign = num < 0 ? '-' : '';
|
|
10
|
+
const absoluteNum = Math.abs(num);
|
|
11
|
+
if (round) {
|
|
12
|
+
const abbreviation = dollarAbbreviations.find(({ value }) => absoluteNum >= value);
|
|
13
|
+
if (abbreviation) {
|
|
14
|
+
return `${sign}$${(absoluteNum / abbreviation.value).toFixed(mantissa)}${abbreviation.suffix}`;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return `${sign}$${absoluteNum.toFixed(mantissa)}`;
|
|
18
|
+
};
|
|
4
19
|
/**
|
|
5
20
|
* Returns a USD dollar or equivalent denominated numerical value formatted
|
|
6
21
|
* in human readable string for use in template.
|
|
@@ -49,16 +64,7 @@ const formatDollar = ({ num, isPrice = false, lessPreciseStablecoinValues = fals
|
|
|
49
64
|
if (num >= 0.1 && num < 1.05) {
|
|
50
65
|
return `$${num.toFixed(3)}`;
|
|
51
66
|
}
|
|
52
|
-
return
|
|
53
|
-
.formatCurrency({
|
|
54
|
-
average: round,
|
|
55
|
-
mantissa: num > 1000 ? 2 : digits,
|
|
56
|
-
abbreviations: {
|
|
57
|
-
million: 'M',
|
|
58
|
-
billion: 'B',
|
|
59
|
-
},
|
|
60
|
-
})
|
|
61
|
-
.toUpperCase();
|
|
67
|
+
return formatDollarAmount(num, digits, round);
|
|
62
68
|
}
|
|
63
69
|
};
|
|
64
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatNumbers.js","sources":["../../src/utils/formatNumbers.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"formatNumbers.js","sources":["../../src/utils/formatNumbers.ts"],"sourcesContent":["interface FormatDollarArgs {\n num: number | undefined | null\n isPrice?: boolean\n lessPreciseStablecoinValues?: boolean\n digits?: number\n round?: boolean\n}\n\nconst dollarAbbreviations = [\n { value: 1e12, suffix: 'T' },\n { value: 1e9, suffix: 'B' },\n { value: 1e6, suffix: 'M' },\n // { value: 1e3, suffix: 'K' },\n]\n\nconst formatDollarAmount = (num: number, digits: number, round: boolean): string => {\n const mantissa = num > 1000 ? 2 : digits\n const sign = num < 0 ? '-' : ''\n const absoluteNum = Math.abs(num)\n\n if (round) {\n const abbreviation = dollarAbbreviations.find(({ value }) => absoluteNum >= value)\n\n if (abbreviation) {\n return `${sign}$${(absoluteNum / abbreviation.value).toFixed(mantissa)}${abbreviation.suffix}`\n }\n }\n\n return `${sign}$${absoluteNum.toFixed(mantissa)}`\n}\n\n/**\n * Returns a USD dollar or equivalent denominated numerical value formatted\n * in human readable string for use in template.\n *\n * Adheres to guidelines for prices and other numbers defined here:\n * https://www.notion.so/uniswaplabs/Number-standards-fbb9f533f10e4e22820722c2f66d23c0\n * @param num numerical value denominated in USD or USD equivalent\n * @param isPrice whether the amount represents a price or not\n * @param lessPreciseStablecoinValues whether or not we should show less precise values for\n * stablecoins (around 1$ in value always) for the sake of readability\n * @param digits number of digits after the decimal for non-price amounts\n * @param round whether or not to round up non-price amounts\n */\nexport const formatDollar = ({\n num,\n isPrice = false,\n lessPreciseStablecoinValues = false,\n digits = 2,\n round = true,\n}: FormatDollarArgs): string => {\n // For USD dollar denominated prices.\n if (isPrice) {\n if (num === 0) return '$0.00'\n if (!num) return '-'\n if (num < 0.000001) {\n return `$${num.toExponential(2)}`\n }\n if ((num >= 0.000001 && num < 0.1) || num > 1000000) {\n return `$${Number(num).toPrecision(3)}`\n }\n // We only show 2 decimal places in explore table for stablecoin value ranges\n // for the sake of readability (as opposed to the usual 3 elsewhere).\n if (num >= 0.1 && num < (lessPreciseStablecoinValues ? 0.9995 : 1.05)) {\n return `$${num.toFixed(3)}`\n }\n return `$${Number(num.toFixed(2)).toLocaleString('en-US', { minimumFractionDigits: 2 })}`\n }\n // For volume dollar amounts, like market cap, total value locked, etc.\n else {\n if (num === 0) return '$0.00'\n if (!num) return '-'\n if (num < 0.000001) {\n return '$<0.000001'\n }\n if (num >= 0.000001 && num < 0.1) {\n return `$${Number(num).toPrecision(3)}`\n }\n if (num >= 0.1 && num < 1.05) {\n return `$${num.toFixed(3)}`\n }\n\n return formatDollarAmount(num, digits, round)\n }\n}\n\n/**\n * Returns a numerical amount of any token formatted in human readable string for use in template.\n *\n * For transaction review numbers, such as token quantities, NFT price (token-denominated),\n * network fees, transaction history items. Adheres to guidelines defined here:\n * https://www.notion.so/uniswaplabs/Number-standards-fbb9f533f10e4e22820722c2f66d23c0\n * @param num numerical value denominated in any token\n * @param maxDigits the maximum number of digits that should be shown for the quantity\n */\nexport const formatTransactionAmount = (num: number | undefined | null, maxDigits = 9) => {\n if (num === 0) return '0.00'\n if (!num) return ''\n if (num < 0.00001) {\n return '<0.00001'\n }\n if (num >= 0.00001 && num < 1) {\n return `${Number(num.toFixed(5)).toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 5,\n })}`\n }\n if (num >= 1 && num < 10000) {\n return `${Number(num.toPrecision(6)).toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 6,\n })}`\n }\n if (num >= 10000 && num < 1000000) {\n return `${Number(num.toFixed(2)).toLocaleString('en-US', { minimumFractionDigits: 2 })}`\n }\n // For very large numbers, switch to scientific notation and show as much precision\n // as permissible by maxDigits param.\n if (num >= Math.pow(10, maxDigits - 1)) {\n return `${num.toExponential(maxDigits - 3)}`\n }\n return `${Number(num.toFixed(2)).toLocaleString('en-US', { minimumFractionDigits: 2 })}`\n}\n"],"names":[],"mappings":"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"}
|
package/dist/utils/multicall.js
CHANGED
|
@@ -1,33 +1,49 @@
|
|
|
1
|
-
import {
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const calldata = calls.map((call) =>
|
|
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
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
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
|
-
|
|
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) {
|