@ape.swap/bonds-sdk 5.1.5 → 5.1.7-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/components/BondFilters/BondFilters.js +2 -15
- package/dist/components/BondFilters/BondFilters.js.map +1 -1
- package/dist/components/ChainOptionList/ChainOptionsButtons.js +3 -16
- package/dist/components/ChainOptionList/ChainOptionsButtons.js.map +1 -1
- package/dist/components/ChainOptionList/ChainOptionsList.js +4 -16
- package/dist/components/ChainOptionList/ChainOptionsList.js.map +1 -1
- package/dist/components/CircularProgress/index.js +0 -14
- package/dist/components/CircularProgress/index.js.map +1 -1
- package/dist/components/ConnectButton/AppKitButton.js +0 -14
- package/dist/components/ConnectButton/AppKitButton.js.map +1 -1
- package/dist/components/ConnectButton/RainbowKitButton.js +0 -14
- package/dist/components/ConnectButton/RainbowKitButton.js.map +1 -1
- package/dist/components/ConnectButton/index.js +0 -14
- package/dist/components/ConnectButton/index.js.map +1 -1
- package/dist/components/ConnectSolanaWalletButton/ConnectSolanaWalletButton.js +3 -16
- package/dist/components/ConnectSolanaWalletButton/ConnectSolanaWalletButton.js.map +1 -1
- package/dist/components/ConnectoToVmBanners/ConnectToEvmBanner.js +1 -14
- package/dist/components/ConnectoToVmBanners/ConnectToEvmBanner.js.map +1 -1
- package/dist/components/ConnectoToVmBanners/ConnectToSolanaBanner.js +2 -15
- package/dist/components/ConnectoToVmBanners/ConnectToSolanaBanner.js.map +1 -1
- package/dist/components/CustomClaimModals/AbondModal.js +1 -13
- package/dist/components/CustomClaimModals/AbondModal.js.map +1 -1
- package/dist/components/CustomClaimModals/OabondModal.js +1 -13
- package/dist/components/CustomClaimModals/OabondModal.js.map +1 -1
- package/dist/components/CustomClaimModals/PmusdModal.js +1 -14
- package/dist/components/CustomClaimModals/PmusdModal.js.map +1 -1
- package/dist/components/FavIcons/AddFavToken.js +0 -12
- package/dist/components/FavIcons/AddFavToken.js.map +1 -1
- package/dist/components/FavIcons/FavFilter.js +1 -15
- package/dist/components/FavIcons/FavFilter.js.map +1 -1
- package/dist/components/LoadingSpinner/index.js +0 -14
- package/dist/components/LoadingSpinner/index.js.map +1 -1
- package/dist/components/MenuSelect/MenuSelect.js +1 -13
- package/dist/components/MenuSelect/MenuSelect.js.map +1 -1
- package/dist/components/MenuSelect/RecommendationSelector.js +0 -14
- package/dist/components/MenuSelect/RecommendationSelector.js.map +1 -1
- package/dist/components/NetworkFilter/index.js +4 -15
- package/dist/components/NetworkFilter/index.js.map +1 -1
- package/dist/components/PlaceholderMonkey/index.js +1 -14
- package/dist/components/PlaceholderMonkey/index.js.map +1 -1
- package/dist/components/ProgressBar/ProgressBarWrapper.js +2 -11
- package/dist/components/ProgressBar/ProgressBarWrapper.js.map +1 -1
- package/dist/components/ProgressiveImage/index.js +0 -12
- package/dist/components/ProgressiveImage/index.js.map +1 -1
- package/dist/components/SlippageModal/index.js +3 -15
- package/dist/components/SlippageModal/index.js.map +1 -1
- package/dist/components/StepBubble/index.js +2 -14
- package/dist/components/StepBubble/index.js.map +1 -1
- package/dist/components/Toast/index.js +4 -13
- package/dist/components/Toast/index.js.map +1 -1
- package/dist/components/TokenInfoAndName/index.js +4 -16
- package/dist/components/TokenInfoAndName/index.js.map +1 -1
- package/dist/components/TokenSelectorModal/TokenRow.js +1 -14
- package/dist/components/TokenSelectorModal/TokenRow.js.map +1 -1
- package/dist/components/TokenSelectorModal/index.d.ts +1 -2
- package/dist/components/TokenSelectorModal/index.js +3 -15
- package/dist/components/TokenSelectorModal/index.js.map +1 -1
- package/dist/components/TokenSelectorPanel/index.js +5 -17
- package/dist/components/TokenSelectorPanel/index.js.map +1 -1
- package/dist/components/Tooltip/ButtonsRow.js +2 -15
- package/dist/components/Tooltip/ButtonsRow.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +0 -13
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/YouTooltip/YouTooltip.js +0 -14
- package/dist/components/YouTooltip/YouTooltip.js.map +1 -1
- package/dist/components/uikit-sdk/LoadingDots/index.js +0 -14
- package/dist/components/uikit-sdk/LoadingDots/index.js.map +1 -1
- package/dist/components/uikit-sdk/Modal/ModalHeader.js +0 -2
- package/dist/components/uikit-sdk/Modal/ModalHeader.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 +2 -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/constants/solanaConstants.js +5 -5
- package/dist/constants/solanaConstants.js.map +1 -1
- package/dist/contexts/ModalContext.js +0 -12
- package/dist/contexts/ModalContext.js.map +1 -1
- package/dist/contexts/Popups.js +0 -14
- package/dist/contexts/Popups.js.map +1 -1
- package/dist/state/bonds/useUserBondsPreTGE.js +3 -3
- package/dist/state/bonds/utils.js +2 -2
- package/dist/utils/bondPriceHelpers.d.ts +14 -0
- package/dist/utils/bondPriceHelpers.js +36 -0
- package/dist/utils/bondPriceHelpers.js.map +1 -0
- package/dist/utils/displayHelpers.js +1 -1
- package/dist/utils/displayHelpers.js.map +1 -1
- package/dist/views/Bonds/Bonds.js +2 -15
- package/dist/views/Bonds/Bonds.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/BondRow.js +4 -16
- package/dist/views/Bonds/components/BondRows/BondRow.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/ChainTitle.js +3 -15
- package/dist/views/Bonds/components/BondRows/ChainTitle.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/SoldOutRows.js +1 -13
- package/dist/views/Bonds/components/BondRows/SoldOutRows.js.map +1 -1
- package/dist/views/Bonds/components/BondsMenu/BondsMenu.js +1 -14
- package/dist/views/Bonds/components/BondsMenu/BondsMenu.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +5 -17
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js +1 -15
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
- package/dist/views/Bonds/components/BuyAgainRow/index.js +0 -12
- package/dist/views/Bonds/components/BuyAgainRow/index.js.map +1 -1
- package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +1 -14
- package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
- package/dist/views/Bonds/components/HotBondCards/HotBondCard.js +5 -17
- package/dist/views/Bonds/components/HotBondCards/HotBondCard.js.map +1 -1
- package/dist/views/Bonds/components/HotBondCards/index.js +3 -16
- package/dist/views/Bonds/components/HotBondCards/index.js.map +1 -1
- package/dist/views/Bonds/components/LoadingSkeleton/LoadingSkeleton.js +1 -12
- package/dist/views/Bonds/components/LoadingSkeleton/LoadingSkeleton.js.map +1 -1
- package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js +0 -14
- package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js.map +1 -1
- package/dist/views/Bonds/components/RecommendationCards/index.js +1 -14
- package/dist/views/Bonds/components/RecommendationCards/index.js.map +1 -1
- package/dist/views/Bonds/utils.d.ts +1 -14
- package/dist/views/Bonds/utils.js +2 -32
- package/dist/views/Bonds/utils.js.map +1 -1
- package/dist/views/BuyBond/BuyBondModal.js +0 -13
- package/dist/views/BuyBond/BuyBondModal.js.map +1 -1
- package/dist/views/BuyBond/BuyComponent.js +5 -16
- package/dist/views/BuyBond/BuyComponent.js.map +1 -1
- package/dist/views/BuyBond/BuyComponentPreTGE.js +9 -18
- package/dist/views/BuyBond/BuyComponentPreTGE.js.map +1 -1
- package/dist/views/BuyBond/BuyComponentSolana.js +28 -32
- package/dist/views/BuyBond/BuyComponentSolana.js.map +1 -1
- package/dist/views/BuyBond/ParticipationSuccessful.js +4 -15
- package/dist/views/BuyBond/ParticipationSuccessful.js.map +1 -1
- package/dist/views/BuyBond/components/BondCards/BondCards.js +4 -16
- package/dist/views/BuyBond/components/BondCards/BondCards.js.map +1 -1
- package/dist/views/BuyBond/components/BondCards/BondCardsPreTGE.js +3 -16
- package/dist/views/BuyBond/components/BondCards/BondCardsPreTGE.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalHeader.js +4 -17
- package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalMinTierHeader.js +2 -15
- package/dist/views/BuyBond/components/BondModalMinTierHeader.js.map +1 -1
- package/dist/views/BuyBond/components/Estimations.js +5 -18
- package/dist/views/BuyBond/components/Estimations.js.map +1 -1
- package/dist/views/BuyBond/components/ExpandedViewButton.js +1 -15
- package/dist/views/BuyBond/components/ExpandedViewButton.js.map +1 -1
- package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +4 -15
- package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +1 -1
- package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +2 -14
- package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
- package/dist/views/BuyBond/components/NoBonusModal/NoBonusModal.js +1 -12
- package/dist/views/BuyBond/components/NoBonusModal/NoBonusModal.js.map +1 -1
- package/dist/views/BuyBond/components/ProjectDescription.js +0 -12
- package/dist/views/BuyBond/components/ProjectDescription.js.map +1 -1
- package/dist/views/FullBondsView/FullBondsView.d.ts +0 -4
- package/dist/views/FullBondsView/FullBondsView.js +3 -21
- package/dist/views/FullBondsView/FullBondsView.js.map +1 -1
- package/dist/views/LifiModal/LifiModal.js +1 -13
- package/dist/views/LifiModal/LifiModal.js.map +1 -1
- package/dist/views/ProjectView/ProjectView.js +0 -13
- package/dist/views/ProjectView/ProjectView.js.map +1 -1
- package/dist/views/ProjectView/components/BondLeaderboard/components/SalesTable.js +0 -14
- package/dist/views/ProjectView/components/BondLeaderboard/components/SalesTable.js.map +1 -1
- package/dist/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.js +0 -14
- package/dist/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.js.map +1 -1
- package/dist/views/ProjectView/components/BondLeaderboard/components/TopThreeSalesCards.js +0 -14
- package/dist/views/ProjectView/components/BondLeaderboard/components/TopThreeSalesCards.js.map +1 -1
- package/dist/views/ProjectView/components/BondLeaderboard/index.js +1 -15
- package/dist/views/ProjectView/components/BondLeaderboard/index.js.map +1 -1
- package/dist/views/ProjectView/components/BondStats/index.js +0 -12
- package/dist/views/ProjectView/components/BondStats/index.js.map +1 -1
- package/dist/views/ProjectView/components/NavPanel/index.js +1 -15
- package/dist/views/ProjectView/components/NavPanel/index.js.map +1 -1
- package/dist/views/ProjectView/components/PriceChart/index.js +2 -15
- package/dist/views/ProjectView/components/PriceChart/index.js.map +1 -1
- package/dist/views/ProjectView/components/ProjectInfo/index.js +0 -14
- package/dist/views/ProjectView/components/ProjectInfo/index.js.map +1 -1
- package/dist/views/ProjectView/components/RecommendationCards/index.js +1 -14
- package/dist/views/ProjectView/components/RecommendationCards/index.js.map +1 -1
- package/dist/views/SingleBond/SingleBond.js +1 -13
- package/dist/views/SingleBond/SingleBond.js.map +1 -1
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js +1 -14
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
- package/dist/views/TransactionModal/TransactionModal.js +3 -15
- package/dist/views/TransactionModal/TransactionModal.js.map +1 -1
- package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js +2 -13
- package/dist/views/YourBonds/components/ClaimAll/ClaimAllModal.js.map +1 -1
- package/dist/views/YourBonds/components/ClaimAll/index.js +0 -14
- package/dist/views/YourBonds/components/ClaimAll/index.js.map +1 -1
- package/dist/views/YourBonds/components/UserBondRow/PreTGEActions.js +3 -16
- package/dist/views/YourBonds/components/UserBondRow/PreTGEActions.js.map +1 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRow.js +1 -12
- package/dist/views/YourBonds/components/UserBondRow/UserBondRow.js.map +1 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowPreTGE.js +1 -13
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowPreTGE.js.map +1 -1
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowSolana.js +7 -17
- package/dist/views/YourBonds/components/UserBondRow/UserBondRowSolana.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/YourBondsModal.js +6 -16
- package/dist/views/YourBondsModal/YourBondsModal.js.map +1 -1
- package/dist/views/YourBondsModal/components/Actions/Actions.js +0 -13
- package/dist/views/YourBondsModal/components/Actions/Actions.js.map +1 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsSolana.js +6 -17
- package/dist/views/YourBondsModal/components/Actions/ActionsSolana.js.map +1 -1
- package/dist/views/YourBondsModal/components/LinkShare/LinkShare.js +1 -13
- package/dist/views/YourBondsModal/components/LinkShare/LinkShare.js.map +1 -1
- package/dist/views/YourBondsModal/components/NFTImage/NFTImage.js +4 -13
- package/dist/views/YourBondsModal/components/NFTImage/NFTImage.js.map +1 -1
- package/dist/views/YourBondsModal/components/Recommendations/CardRecommendation.js +3 -16
- package/dist/views/YourBondsModal/components/Recommendations/CardRecommendation.js.map +1 -1
- package/dist/views/YourBondsModal/components/Recommendations/RecSkeleton.js +0 -12
- package/dist/views/YourBondsModal/components/Recommendations/RecSkeleton.js.map +1 -1
- package/dist/views/YourBondsModal/components/Recommendations/Recommendations.js +2 -15
- package/dist/views/YourBondsModal/components/Recommendations/Recommendations.js.map +1 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js +0 -13
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferAction.js.map +1 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionSolana.js +1 -14
- package/dist/views/YourBondsModal/components/TransferBondModal/TransferActionSolana.js.map +1 -1
- package/dist/views/YourBondsModal/components/TransferBondModal/index.js +2 -12
- package/dist/views/YourBondsModal/components/TransferBondModal/index.js.map +1 -1
- package/dist/views/YourBondsModal/components/YourBondModalHeader/YourBondModalHeader.js +6 -16
- package/dist/views/YourBondsModal/components/YourBondModalHeader/YourBondModalHeader.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/uikit-sdk/Button/index.d.ts +0 -2
- package/dist/components/uikit-sdk/Input/index.d.ts +0 -2
- package/dist/components/uikit-sdk/Select/index.d.ts +0 -2
- package/dist/components/uikit-sdk/Tag/index.d.ts +0 -1
- package/dist/components/uikit-sdk/index.d.ts +0 -15
|
@@ -3,22 +3,6 @@ import { useState } from 'react';
|
|
|
3
3
|
import BigNumber from 'bignumber.js';
|
|
4
4
|
import { styles } from './styles.js';
|
|
5
5
|
import { getBalanceNumber } from '../../utils/getBalanceNumber.js';
|
|
6
|
-
import Svg from '../../components/uikit-sdk/Svg/index.js';
|
|
7
|
-
import Flex from '../../components/uikit-sdk/Flex/index.js';
|
|
8
|
-
import Text from '../../components/uikit-sdk/Text/index.js';
|
|
9
|
-
import '../../components/uikit-sdk/Checkbox/types.js';
|
|
10
|
-
import 'theme-ui';
|
|
11
|
-
import '../../components/uikit-sdk/Skeleton/types.js';
|
|
12
|
-
import '../../components/uikit-sdk/Skeleton/styles.js';
|
|
13
|
-
import TooltipBubble from '../../components/uikit-sdk/TooltipBubble/index.js';
|
|
14
|
-
import Modal from '../../components/uikit-sdk/Modal/index.js';
|
|
15
|
-
import 'framer-motion';
|
|
16
|
-
import '../FullBondsView/FullBondsView.js';
|
|
17
|
-
import Button from '../../components/uikit-sdk/Button/Button.js';
|
|
18
|
-
import '../../components/uikit-sdk/Svg/types.js';
|
|
19
|
-
import '../../components/uikit-sdk/Button/types.js';
|
|
20
|
-
import '../../components/uikit-sdk/Select/types.js';
|
|
21
|
-
import ListTag from '../../components/uikit-sdk/Tag/ListTag.js';
|
|
22
6
|
import TokenSelectorPanel from '../../components/TokenSelectorPanel/index.js';
|
|
23
7
|
import useCurrencyBalance from '../../state/balance/useCurrencyBalance.js';
|
|
24
8
|
import { useWriteContract } from 'wagmi';
|
|
@@ -32,11 +16,18 @@ import useBondsData from '../../state/bonds/useBondsData.js';
|
|
|
32
16
|
import useModal from '../../hooks/useModal.js';
|
|
33
17
|
import TransactionModal from '../TransactionModal/TransactionModal.js';
|
|
34
18
|
import { useApproval } from '../../state/allowance/useAllowance.js';
|
|
35
|
-
import
|
|
19
|
+
import LaunchBondABI_V_2_4_1 from '../../config/abi/launchBond_v2_4_1.json.js';
|
|
36
20
|
import ConnectButton from '../../components/ConnectButton/index.js';
|
|
37
21
|
import track from '../../utils/track.js';
|
|
38
22
|
import useEVMAccount from '../../hooks/accounts/useEVMAccount.js';
|
|
39
23
|
import { useSDKConfig } from '../../state/useSDKConfig.js';
|
|
24
|
+
import Modal from '../../components/uikit-sdk/Modal/index.js';
|
|
25
|
+
import Flex from '../../components/uikit-sdk/Flex/index.js';
|
|
26
|
+
import Text from '../../components/uikit-sdk/Text/index.js';
|
|
27
|
+
import ListTag from '../../components/uikit-sdk/Tag/ListTag.js';
|
|
28
|
+
import TooltipBubble from '../../components/uikit-sdk/TooltipBubble/index.js';
|
|
29
|
+
import Svg from '../../components/uikit-sdk/Svg/index.js';
|
|
30
|
+
import Button from '../../components/uikit-sdk/Button/Button.js';
|
|
40
31
|
|
|
41
32
|
const BuyComponentPreTGE = ({ bondAddress, bondChain, onDismiss, handlePurchasedBond, }) => {
|
|
42
33
|
const SDKConfig = useSDKConfig();
|
|
@@ -90,7 +81,7 @@ const BuyComponentPreTGE = ({ bondAddress, bondChain, onDismiss, handlePurchased
|
|
|
90
81
|
const args = [amount, maxPrice, address];
|
|
91
82
|
await writeContractAsync({
|
|
92
83
|
address: bond?.contractAddress?.[bond.chainId],
|
|
93
|
-
abi:
|
|
84
|
+
abi: LaunchBondABI_V_2_4_1,
|
|
94
85
|
functionName: 'deposit',
|
|
95
86
|
args: args,
|
|
96
87
|
chain: bond.chainId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyComponentPreTGE.js","sources":["../../../src/views/BuyBond/BuyComponentPreTGE.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { styles } from './styles'\nimport { getBalanceNumber } from '../../utils/getBalanceNumber'\nimport { Flex, Svg, Text, TooltipBubble, Button, ListTag, Modal } from '../../components/uikit-sdk'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport useCurrencyBalance from '../../state/balance/useCurrencyBalance'\nimport { useWriteContract } from 'wagmi'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader'\nimport ProjectDescription from '../BuyBond/components/ProjectDescription'\nimport { TooltipText } from '../../config/constants/tooltips'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport BondCardsPreTGE from './components/BondCards/BondCardsPreTGE'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport useModal from '../../hooks/useModal'\nimport TransactionModal from '../TransactionModal/TransactionModal'\nimport { useApproval } from '../../state/allowance/useAllowance'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport launchBondsABI_V2_2_0 from '../../config/abi/launchBond_v2_4_1.json'\nimport ConnectButton from '../../components/ConnectButton'\nimport track from '../../utils/track'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\nimport { useSDKConfig } from '../../state/useSDKConfig'\n\nconst BuyComponentPreTGE = ({\n bondAddress,\n bondChain,\n onDismiss,\n handlePurchasedBond,\n}: {\n bondAddress: string\n bondChain: number\n onDismiss?: () => void\n handlePurchasedBond: (hash: string, inputAmount: string) => void\n}) => {\n const SDKConfig = useSDKConfig()\n const { data: preTGEBonds } = useBondsData()\n const bond = preTGEBonds?.find(\n (bond) =>\n bond.contractAddress?.[bond.chainId]?.toLowerCase() === bondAddress.toLowerCase() && bond.chainId === bondChain,\n )!\n\n // Hooks\n const { address } = useEVMAccount()\n const { data: principalTokenBalance } = useCurrencyBalance(bond.lpToken, address as string, bond.chainId)\n // Local state\n const [inputValue, setInputValue] = useState<string>('')\n\n // Display Values\n const raiseGoal = getBalanceNumber(new BigNumber(bond?.totalRaise ?? '0'), 18)\n const totalPrincipalBilled = getBalanceNumber(new BigNumber(bond?.totalPrincipalBilled ?? '0'), 18)\n const percentageSold = (totalPrincipalBilled * 100) / raiseGoal\n const tgePrice = bond?.tgePrice ?? 0\n const initPrice = bond?.initPrice ?? 0\n\n const inputValueToDisplay = parseFloat(inputValue).toFixed(2)\n const inputValueToDisplayUSD = parseFloat(inputValueToDisplay) * parseFloat(bond?.principalTokenPrice ?? '0')\n const youGet = parseFloat(inputValue) / initPrice\n const youGetUSD = youGet * tgePrice\n const bonusUSD = youGetUSD - inputValueToDisplayUSD\n\n const handleClose = () => {\n if (typeof window !== 'undefined') {\n window.history.pushState({}, '', `/bonds`)\n }\n onDismiss?.()\n }\n\n const [loading, setLoading] = useState<boolean>(false)\n const [buyTxHash, setHash] = useState<string>('')\n // Approve logic\n const [approvalState, approveCallback] = useApproval(\n inputValue,\n bond.lpToken,\n bond?.contractAddress[bond.chainId] as `0x${string}`,\n address as string,\n bond.chainId as ChainId,\n )\n const handleApprove = async () => {\n return approveCallback().then(() => {\n track({\n event: 'approveBondClick',\n chain: bondChain,\n data: {\n cat: bond?.billType,\n bond: bond?.earnToken.symbol,\n },\n })\n })\n }\n const { writeContractAsync } = useWriteContract()\n const onBuyBill = async () => {\n setLoading(true)\n const amount = new BigNumber(inputValue)\n .times(new BigNumber(10).pow(bond?.lpToken?.decimals?.[bond?.chainId] ?? 18))\n .toString()\n const maxPrice = new BigNumber(bond?.trueBondPrices?.[0].trueBondPrice ?? '0').times(102).div(100).toFixed(0)\n const args = [amount, maxPrice, address]\n\n await writeContractAsync({\n address: bond?.contractAddress?.[bond.chainId] as `0x${string}`,\n abi: launchBondsABI_V2_2_0,\n functionName: 'deposit',\n args: args,\n chain: bond.chainId as any,\n account: address,\n })\n .then((hash) => {\n setHash(hash)\n handlePurchasedBond(hash, inputValue)\n })\n .finally(() => {\n setLoading(false)\n })\n }\n\n const [openTxModal] = useModal(\n <TransactionModal\n txChain={bondChain}\n approvalState={approvalState}\n approveCallback={handleApprove}\n loadingTx={loading}\n txCallback={onBuyBill}\n bondData={bond!}\n inputToken={bond.lpToken}\n inputValue={inputValue}\n depositAmount={inputValue}\n buyTxHash={buyTxHash}\n rateChanged={false}\n />,\n false,\n true,\n 'transactionModal',\n )\n\n const { data: currencyBalanceString } = useCurrencyBalance(bond.lpToken, address as string, bond.chainId)\n const exceedsBalance = parseFloat(inputValue) > parseFloat(currencyBalanceString ?? '0')\n const saleStartTime = (bond?.initTime?.[bond.chainId] ?? 0) * 1000\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const now = new Date().getTime()\n const saleHasStarted = now > saleStartTime\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n const error = SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : !saleHasStarted\n ? `Sale hasn't started`\n : saleHasFinished\n ? 'Sale Finished'\n : exceedsBalance\n ? 'Exceeds balance'\n : percentageSold > 99.9\n ? 'Soldout'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : !bond\n ? 'no bond'\n : null\n\n return (\n <Modal onDismiss={handleClose} sx={{ width: '740px' }}>\n <ModalHeader onDismiss={handleClose} hideDivider />\n <Flex sx={styles.buyContainer}>\n <Flex sx={styles.cardContainer}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>\n <Flex>\n <Flex className=\"title-container bondicon\">\n <TokenImage symbol={bond.earnToken.symbol} size={50} chain={bond.chainId} />\n </Flex>\n <Flex className=\"title-container bondname\">\n {bond.earnToken.symbol}\n <ListTag text={bond?.tags?.[0]} />\n </Flex>\n </Flex>\n <Flex sx={{ flexDirection: 'column', ml: '15px' }}>\n <Flex className=\"price-container price\">${bond.tgePrice}</Flex>\n <Flex sx={{ fontSize: '24px', fontWeight: 700 }}>${bond.initPrice}</Flex>\n </Flex>\n </Flex>\n </Flex>\n <ProjectDescription description={bond.shortDescription} isProjectView />\n <BondCardsPreTGE bond={bond} />\n <Flex sx={{ ...styles.infoRowsContainer, mt: '10px' }}>\n <Flex sx={styles.infoRow}>\n <Text sx={styles.infoTitle}>You Spend:</Text>\n <Text sx={styles.infoData}>\n {isNaN(parseFloat(inputValueToDisplay)) ? 0 : inputValueToDisplay} {bond?.lpToken.symbol} = $\n {isNaN(inputValueToDisplayUSD) ? '0' : inputValueToDisplayUSD.toFixed(2)}\n </Text>\n </Flex>\n <Flex sx={styles.infoRow}>\n <Flex sx={{ ...styles.infoTitle, alignItems: 'center' }}>\n Bonus:\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Premium}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n <Text sx={{ ...styles.infoData, color: 'success' }}>${isNaN(bonusUSD) ? '0' : bonusUSD.toFixed(2)}</Text>\n </Flex>\n <Flex sx={styles.infoRow}>\n <Text sx={styles.infoTitle}>You Get:</Text>\n <Text sx={styles.infoData}>\n {isNaN(youGet) ? 0 : formatNumberSI(youGet, 0)} {bond?.earnToken.symbol} = $\n {isNaN(youGetUSD) ? '0' : youGetUSD.toFixed(2)}\n </Text>\n </Flex>\n </Flex>\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={bond?.lpToken}\n handleValueBtn={() => setInputValue(new BigNumber(principalTokenBalance ?? '0')?.toString())}\n handleCurrencySelect={() => null}\n bondChainId={bond?.chainId}\n enableZap={false}\n bondPrincipalToken={bond?.lpToken}\n tokenBalance={principalTokenBalance ?? undefined}\n selectedTokenPrice={parseFloat(bond?.principalTokenPrice ?? '0')}\n inputDisabled={false}\n />\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n justifyContent: 'center',\n mt: '10px',\n borderRadius: 'normal',\n p: '4px 10px',\n fontSize: '12px',\n fontWeight: 400,\n }}\n >\n {bond.warningCard ? (\n bond.warningCard\n ) : (\n <>\n This is a Pre-TGE Bond - Tokens will be tradeable upon listing.\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Text sx={{ textTransform: 'none' }}>\n Pre-TGE Bonds are a pre-sale for tokens before their Token Generation Event (TGE), when tokens are\n officially launched to the public.\n </Text>\n }\n width=\"315px\"\n placement=\"topRight\"\n transformTip=\"translate(9%, -10%)\"\n >\n <Flex sx={{ ml: '4px', minWidth: '14px' }}>\n <Svg icon=\"questionCircle\" width={12} />\n </Flex>\n </TooltipBubble>\n </>\n )}\n </Flex>\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n justifyContent: 'space-between',\n height: ['unset', 'unset', 'unset', '40px'],\n flexDirection: ['column-reverse', 'column-reverse', 'column-reverse', 'row'],\n }}\n >\n {!address ? (\n <ConnectButton />\n ) : (\n <>\n <Flex sx={{ width: ['100%', '100%', '100%', '45%'], justifyContent: 'center' }}>\n <Button\n variant=\"secondary\"\n onClick={() =>\n window.open(\n `/swap?outputCurrency=${bond?.lpToken?.address[bond?.chainId]}&outputChain=${bond?.chainId}`,\n '_blank',\n )\n }\n fullWidth\n >\n Get {bond?.lpToken?.symbol}\n </Button>\n </Flex>\n {error ? (\n <Button disabled fullWidth sx={{ ml: ['0', '0', '0', '10px'] }}>\n {error}\n </Button>\n ) : (\n <Button\n disabled={loading}\n load={loading}\n onClick={openTxModal}\n fullWidth\n sx={{ ml: ['0', '0', '0', '10px'] }}\n >\n Buy\n </Button>\n )}\n </>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Modal>\n )\n}\n\nexport default BuyComponentPreTGE\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BuyComponentPreTGE.js","sources":["../../../src/views/BuyBond/BuyComponentPreTGE.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { styles } from './styles'\nimport { getBalanceNumber } from '../../utils/getBalanceNumber'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport useCurrencyBalance from '../../state/balance/useCurrencyBalance'\nimport { useWriteContract } from 'wagmi'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader'\nimport ProjectDescription from '../BuyBond/components/ProjectDescription'\nimport { TooltipText } from '../../config/constants/tooltips'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport BondCardsPreTGE from './components/BondCards/BondCardsPreTGE'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport useModal from '../../hooks/useModal'\nimport TransactionModal from '../TransactionModal/TransactionModal'\nimport { useApproval } from '../../state/allowance/useAllowance'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport launchBondsABI_V2_2_0 from '../../config/abi/launchBond_v2_4_1.json'\nimport ConnectButton from '../../components/ConnectButton'\nimport track from '../../utils/track'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport Modal from '../../components/uikit-sdk/Modal'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport ListTag from '../../components/uikit-sdk/Tag/ListTag'\nimport TooltipBubble from '../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport Button from '../../components/uikit-sdk/Button/Button'\n\nconst BuyComponentPreTGE = ({\n bondAddress,\n bondChain,\n onDismiss,\n handlePurchasedBond,\n}: {\n bondAddress: string\n bondChain: number\n onDismiss?: () => void\n handlePurchasedBond: (hash: string, inputAmount: string) => void\n}) => {\n const SDKConfig = useSDKConfig()\n const { data: preTGEBonds } = useBondsData()\n const bond = preTGEBonds?.find(\n (bond) =>\n bond.contractAddress?.[bond.chainId]?.toLowerCase() === bondAddress.toLowerCase() && bond.chainId === bondChain,\n )!\n\n // Hooks\n const { address } = useEVMAccount()\n const { data: principalTokenBalance } = useCurrencyBalance(bond.lpToken, address as string, bond.chainId)\n // Local state\n const [inputValue, setInputValue] = useState<string>('')\n\n // Display Values\n const raiseGoal = getBalanceNumber(new BigNumber(bond?.totalRaise ?? '0'), 18)\n const totalPrincipalBilled = getBalanceNumber(new BigNumber(bond?.totalPrincipalBilled ?? '0'), 18)\n const percentageSold = (totalPrincipalBilled * 100) / raiseGoal\n const tgePrice = bond?.tgePrice ?? 0\n const initPrice = bond?.initPrice ?? 0\n\n const inputValueToDisplay = parseFloat(inputValue).toFixed(2)\n const inputValueToDisplayUSD = parseFloat(inputValueToDisplay) * parseFloat(bond?.principalTokenPrice ?? '0')\n const youGet = parseFloat(inputValue) / initPrice\n const youGetUSD = youGet * tgePrice\n const bonusUSD = youGetUSD - inputValueToDisplayUSD\n\n const handleClose = () => {\n if (typeof window !== 'undefined') {\n window.history.pushState({}, '', `/bonds`)\n }\n onDismiss?.()\n }\n\n const [loading, setLoading] = useState<boolean>(false)\n const [buyTxHash, setHash] = useState<string>('')\n // Approve logic\n const [approvalState, approveCallback] = useApproval(\n inputValue,\n bond.lpToken,\n bond?.contractAddress[bond.chainId] as `0x${string}`,\n address as string,\n bond.chainId as ChainId,\n )\n const handleApprove = async () => {\n return approveCallback().then(() => {\n track({\n event: 'approveBondClick',\n chain: bondChain,\n data: {\n cat: bond?.billType,\n bond: bond?.earnToken.symbol,\n },\n })\n })\n }\n const { writeContractAsync } = useWriteContract()\n const onBuyBill = async () => {\n setLoading(true)\n const amount = new BigNumber(inputValue)\n .times(new BigNumber(10).pow(bond?.lpToken?.decimals?.[bond?.chainId] ?? 18))\n .toString()\n const maxPrice = new BigNumber(bond?.trueBondPrices?.[0].trueBondPrice ?? '0').times(102).div(100).toFixed(0)\n const args = [amount, maxPrice, address]\n\n await writeContractAsync({\n address: bond?.contractAddress?.[bond.chainId] as `0x${string}`,\n abi: launchBondsABI_V2_2_0,\n functionName: 'deposit',\n args: args,\n chain: bond.chainId as any,\n account: address,\n })\n .then((hash) => {\n setHash(hash)\n handlePurchasedBond(hash, inputValue)\n })\n .finally(() => {\n setLoading(false)\n })\n }\n\n const [openTxModal] = useModal(\n <TransactionModal\n txChain={bondChain}\n approvalState={approvalState}\n approveCallback={handleApprove}\n loadingTx={loading}\n txCallback={onBuyBill}\n bondData={bond!}\n inputToken={bond.lpToken}\n inputValue={inputValue}\n depositAmount={inputValue}\n buyTxHash={buyTxHash}\n rateChanged={false}\n />,\n false,\n true,\n 'transactionModal',\n )\n\n const { data: currencyBalanceString } = useCurrencyBalance(bond.lpToken, address as string, bond.chainId)\n const exceedsBalance = parseFloat(inputValue) > parseFloat(currencyBalanceString ?? '0')\n const saleStartTime = (bond?.initTime?.[bond.chainId] ?? 0) * 1000\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const now = new Date().getTime()\n const saleHasStarted = now > saleStartTime\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n const error = SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : !saleHasStarted\n ? `Sale hasn't started`\n : saleHasFinished\n ? 'Sale Finished'\n : exceedsBalance\n ? 'Exceeds balance'\n : percentageSold > 99.9\n ? 'Soldout'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : !bond\n ? 'no bond'\n : null\n\n return (\n <Modal onDismiss={handleClose} sx={{ width: '740px' }}>\n <ModalHeader onDismiss={handleClose} hideDivider />\n <Flex sx={styles.buyContainer}>\n <Flex sx={styles.cardContainer}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>\n <Flex>\n <Flex className=\"title-container bondicon\">\n <TokenImage symbol={bond.earnToken.symbol} size={50} chain={bond.chainId} />\n </Flex>\n <Flex className=\"title-container bondname\">\n {bond.earnToken.symbol}\n <ListTag text={bond?.tags?.[0]} />\n </Flex>\n </Flex>\n <Flex sx={{ flexDirection: 'column', ml: '15px' }}>\n <Flex className=\"price-container price\">${bond.tgePrice}</Flex>\n <Flex sx={{ fontSize: '24px', fontWeight: 700 }}>${bond.initPrice}</Flex>\n </Flex>\n </Flex>\n </Flex>\n <ProjectDescription description={bond.shortDescription} isProjectView />\n <BondCardsPreTGE bond={bond} />\n <Flex sx={{ ...styles.infoRowsContainer, mt: '10px' }}>\n <Flex sx={styles.infoRow}>\n <Text sx={styles.infoTitle}>You Spend:</Text>\n <Text sx={styles.infoData}>\n {isNaN(parseFloat(inputValueToDisplay)) ? 0 : inputValueToDisplay} {bond?.lpToken.symbol} = $\n {isNaN(inputValueToDisplayUSD) ? '0' : inputValueToDisplayUSD.toFixed(2)}\n </Text>\n </Flex>\n <Flex sx={styles.infoRow}>\n <Flex sx={{ ...styles.infoTitle, alignItems: 'center' }}>\n Bonus:\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Premium}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n <Text sx={{ ...styles.infoData, color: 'success' }}>${isNaN(bonusUSD) ? '0' : bonusUSD.toFixed(2)}</Text>\n </Flex>\n <Flex sx={styles.infoRow}>\n <Text sx={styles.infoTitle}>You Get:</Text>\n <Text sx={styles.infoData}>\n {isNaN(youGet) ? 0 : formatNumberSI(youGet, 0)} {bond?.earnToken.symbol} = $\n {isNaN(youGetUSD) ? '0' : youGetUSD.toFixed(2)}\n </Text>\n </Flex>\n </Flex>\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={bond?.lpToken}\n handleValueBtn={() => setInputValue(new BigNumber(principalTokenBalance ?? '0')?.toString())}\n handleCurrencySelect={() => null}\n bondChainId={bond?.chainId}\n enableZap={false}\n bondPrincipalToken={bond?.lpToken}\n tokenBalance={principalTokenBalance ?? undefined}\n selectedTokenPrice={parseFloat(bond?.principalTokenPrice ?? '0')}\n inputDisabled={false}\n />\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n justifyContent: 'center',\n mt: '10px',\n borderRadius: 'normal',\n p: '4px 10px',\n fontSize: '12px',\n fontWeight: 400,\n }}\n >\n {bond.warningCard ? (\n bond.warningCard\n ) : (\n <>\n This is a Pre-TGE Bond - Tokens will be tradeable upon listing.\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Text sx={{ textTransform: 'none' }}>\n Pre-TGE Bonds are a pre-sale for tokens before their Token Generation Event (TGE), when tokens are\n officially launched to the public.\n </Text>\n }\n width=\"315px\"\n placement=\"topRight\"\n transformTip=\"translate(9%, -10%)\"\n >\n <Flex sx={{ ml: '4px', minWidth: '14px' }}>\n <Svg icon=\"questionCircle\" width={12} />\n </Flex>\n </TooltipBubble>\n </>\n )}\n </Flex>\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n justifyContent: 'space-between',\n height: ['unset', 'unset', 'unset', '40px'],\n flexDirection: ['column-reverse', 'column-reverse', 'column-reverse', 'row'],\n }}\n >\n {!address ? (\n <ConnectButton />\n ) : (\n <>\n <Flex sx={{ width: ['100%', '100%', '100%', '45%'], justifyContent: 'center' }}>\n <Button\n variant=\"secondary\"\n onClick={() =>\n window.open(\n `/swap?outputCurrency=${bond?.lpToken?.address[bond?.chainId]}&outputChain=${bond?.chainId}`,\n '_blank',\n )\n }\n fullWidth\n >\n Get {bond?.lpToken?.symbol}\n </Button>\n </Flex>\n {error ? (\n <Button disabled fullWidth sx={{ ml: ['0', '0', '0', '10px'] }}>\n {error}\n </Button>\n ) : (\n <Button\n disabled={loading}\n load={loading}\n onClick={openTxModal}\n fullWidth\n sx={{ ml: ['0', '0', '0', '10px'] }}\n >\n Buy\n </Button>\n )}\n </>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Modal>\n )\n}\n\nexport default BuyComponentPreTGE\n"],"names":["launchBondsABI_V2_2_0","_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'theme-ui/jsx-runtime';
|
|
2
2
|
import { useState, useCallback, useEffect } from 'react';
|
|
3
3
|
import { BigNumber } from 'bignumber.js';
|
|
4
|
-
import Svg from '../../components/uikit-sdk/Svg/index.js';
|
|
5
|
-
import Flex from '../../components/uikit-sdk/Flex/index.js';
|
|
6
|
-
import Text from '../../components/uikit-sdk/Text/index.js';
|
|
7
|
-
import '../../components/uikit-sdk/Checkbox/types.js';
|
|
8
|
-
import 'theme-ui';
|
|
9
|
-
import '../../components/uikit-sdk/Skeleton/types.js';
|
|
10
|
-
import '../../components/uikit-sdk/Skeleton/styles.js';
|
|
11
|
-
import TooltipBubble from '../../components/uikit-sdk/TooltipBubble/index.js';
|
|
12
|
-
import 'framer-motion';
|
|
13
|
-
import Button from '../../components/uikit-sdk/Button/Button.js';
|
|
14
|
-
import '../../components/uikit-sdk/Svg/types.js';
|
|
15
|
-
import '../../components/uikit-sdk/Button/types.js';
|
|
16
|
-
import '../../contexts/ModalContext.js';
|
|
17
|
-
import '../FullBondsView/FullBondsView.js';
|
|
18
|
-
import '../../components/uikit-sdk/Select/types.js';
|
|
19
|
-
import { MCBuyComponentStyles } from '../../utils/campaignStyles.js';
|
|
20
4
|
import useModal from '../../hooks/useModal.js';
|
|
21
5
|
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
22
6
|
import TokenSelectorPanel from '../../components/TokenSelectorPanel/index.js';
|
|
@@ -41,18 +25,24 @@ import { derivePda } from '../../utils/derivePda.js';
|
|
|
41
25
|
import { getAssociatedTokenAddress, ASSOCIATED_TOKEN_PROGRAM_ID, getAccount, createAssociatedTokenAccountInstruction } from '@solana/spl-token';
|
|
42
26
|
import { getBondIssuanceAccountSolana } from '../../utils/getSolanaAccount.js';
|
|
43
27
|
import { getU64Codec } from '@solana/kit';
|
|
44
|
-
import { PROGRAM_ID,
|
|
28
|
+
import { PROGRAM_ID, MPL_CORE_PROGRAM_ID, DEPOSIT_DISCRIMINATOR } from '../../constants/solanaConstants.js';
|
|
45
29
|
import { Buffer } from 'buffer';
|
|
46
30
|
import { getRPC } from '../../config/constants/networks.js';
|
|
47
31
|
import { reportError } from '../../utils/reportError.js';
|
|
48
32
|
import SafeHTMLComponent from '../../components/SafeHTMLComponent/index.js';
|
|
49
|
-
import { findHighestTrueBondPrice } from '
|
|
33
|
+
import { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers.js';
|
|
50
34
|
import track from '../../utils/track.js';
|
|
51
35
|
import { remove0xPrefix } from '../../utils/remove0xPrefix.js';
|
|
36
|
+
import { MCBuyComponentStyles } from '../../utils/campaignStyles.js';
|
|
52
37
|
import useSOLAccount from '../../hooks/accounts/useSOLAccount.js';
|
|
53
38
|
import { useSendReferenceId } from '../../hooks/useSendReferenceId.js';
|
|
54
39
|
import LifiModal from '../LifiModal/LifiModal.js';
|
|
55
|
-
import { getTokenProgramForMint } from '../../utils/solanaAtaHelper.js';
|
|
40
|
+
import { getTokenProgramForMint, getAtaWithCreateInstruction } from '../../utils/solanaAtaHelper.js';
|
|
41
|
+
import Flex from '../../components/uikit-sdk/Flex/index.js';
|
|
42
|
+
import Text from '../../components/uikit-sdk/Text/index.js';
|
|
43
|
+
import TooltipBubble from '../../components/uikit-sdk/TooltipBubble/index.js';
|
|
44
|
+
import Svg from '../../components/uikit-sdk/Svg/index.js';
|
|
45
|
+
import Button from '../../components/uikit-sdk/Button/Button.js';
|
|
56
46
|
|
|
57
47
|
const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView, setBillId, }) => {
|
|
58
48
|
const SDKConfig = useSDKConfig();
|
|
@@ -180,7 +170,7 @@ const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView,
|
|
|
180
170
|
const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram);
|
|
181
171
|
const feePrincipalRecipientAta = await getAssociatedTokenAddress(principalMint, feeRecipient, true, principalTokenProgram);
|
|
182
172
|
const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(principalMint, partnerRecipient, true, principalTokenProgram);
|
|
183
|
-
const
|
|
173
|
+
const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } = await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, user);
|
|
184
174
|
// Encode args
|
|
185
175
|
const u64Codec = getU64Codec();
|
|
186
176
|
const amountEncoded = Buffer.from(u64Codec.encode(amountBigInt));
|
|
@@ -214,8 +204,11 @@ const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView,
|
|
|
214
204
|
programId: PROGRAM_ID,
|
|
215
205
|
data: instructionData,
|
|
216
206
|
});
|
|
217
|
-
// Create tx
|
|
218
|
-
const transaction = new Transaction()
|
|
207
|
+
// Create tx (prepend payout fee recipient ATA creation if needed)
|
|
208
|
+
const transaction = new Transaction();
|
|
209
|
+
if (createPayoutFeeRecipientAtaIx)
|
|
210
|
+
transaction.add(createPayoutFeeRecipientAtaIx);
|
|
211
|
+
transaction.add(instruction);
|
|
219
212
|
transaction.feePayer = user;
|
|
220
213
|
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
|
|
221
214
|
transaction.recentBlockhash = blockhash;
|
|
@@ -397,7 +390,7 @@ const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView,
|
|
|
397
390
|
const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram);
|
|
398
391
|
const feePrincipalRecipientAta = await getAssociatedTokenAddress(principalMint, feeRecipient, true, principalTokenProgram);
|
|
399
392
|
const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(principalMint, partnerRecipient, true, principalTokenProgram);
|
|
400
|
-
const
|
|
393
|
+
const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } = await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, accountSolana);
|
|
401
394
|
const u64Codec = getU64Codec();
|
|
402
395
|
const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)));
|
|
403
396
|
const bondKeys = [
|
|
@@ -456,10 +449,12 @@ const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView,
|
|
|
456
449
|
try {
|
|
457
450
|
// Build swap instructions
|
|
458
451
|
const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult);
|
|
459
|
-
const
|
|
460
|
-
? [createPrincipalAtaIx
|
|
461
|
-
:
|
|
462
|
-
|
|
452
|
+
const setupIxs = [
|
|
453
|
+
...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []),
|
|
454
|
+
...(createPayoutFeeRecipientAtaIx ? [createPayoutFeeRecipientAtaIx] : []),
|
|
455
|
+
...setupInstructions,
|
|
456
|
+
];
|
|
457
|
+
const allInstructions = [...setupIxs, swapInstruction, bondInstruction];
|
|
463
458
|
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
|
|
464
459
|
const combinedTx = new Transaction();
|
|
465
460
|
combinedTx.add(...allInstructions);
|
|
@@ -504,10 +499,8 @@ const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView,
|
|
|
504
499
|
console.log('Executing TWO separate transactions...');
|
|
505
500
|
// Execute swap first
|
|
506
501
|
const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult);
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
: setupInstructions;
|
|
510
|
-
const swapTx = new Transaction().add(...allSetupInstructions, swapInstruction);
|
|
502
|
+
const swapSetupIxs = [...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []), ...setupInstructions];
|
|
503
|
+
const swapTx = new Transaction().add(...swapSetupIxs, swapInstruction);
|
|
511
504
|
swapTx.feePayer = accountSolana;
|
|
512
505
|
const { blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid } = await connection.getLatestBlockhash('confirmed');
|
|
513
506
|
swapTx.recentBlockhash = swapBlockhash;
|
|
@@ -523,7 +516,10 @@ const BuyComponentSolana = ({ onDismiss, bondAddress, bondChain, isProjectView,
|
|
|
523
516
|
const actualAmount = BigInt(principalTokenBalance.value.amount);
|
|
524
517
|
// REBUILD BOND INSTRUCTION WITH ACTUAL AMOUNT
|
|
525
518
|
const actualBondInstruction = buildBondInstruction(actualAmount, maxPriceEncoded, bondKeys);
|
|
526
|
-
const bondTx = new Transaction()
|
|
519
|
+
const bondTx = new Transaction();
|
|
520
|
+
if (createPayoutFeeRecipientAtaIx)
|
|
521
|
+
bondTx.add(createPayoutFeeRecipientAtaIx);
|
|
522
|
+
bondTx.add(actualBondInstruction);
|
|
527
523
|
bondTx.feePayer = accountSolana;
|
|
528
524
|
const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
|
|
529
525
|
bondTx.recentBlockhash = blockhash;
|