@ape.swap/bonds-sdk 6.1.1 → 6.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/config/constants/tooltips.d.ts +0 -8
  2. package/dist/config/constants/tooltips.js +1 -22
  3. package/dist/config/constants/tooltips.js.map +1 -1
  4. package/dist/state/tiers/useTierPoints.d.ts +15 -3
  5. package/dist/state/tiers/useTierPoints.js +28 -7
  6. package/dist/state/tiers/useTierPoints.js.map +1 -1
  7. package/dist/state/zap/useSoulZapBondQuote.js +3 -6
  8. package/dist/state/zap/useSoulZapBondQuote.js.map +1 -1
  9. package/dist/views/Bonds/components/BonusComponents/BonusComponent.d.ts +1 -2
  10. package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +2 -23
  11. package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
  12. package/dist/views/Bonds/components/BonusComponents/BonusTable.d.ts +1 -2
  13. package/dist/views/Bonds/components/BonusComponents/BonusTable.js +4 -49
  14. package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
  15. package/dist/views/BuyBond/BuyComponent.js +14 -28
  16. package/dist/views/BuyBond/BuyComponent.js.map +1 -1
  17. package/dist/views/BuyBond/BuyComponentAptos.js +1 -1
  18. package/dist/views/BuyBond/BuyComponentAptos.js.map +1 -1
  19. package/dist/views/BuyBond/BuyComponentSui.js +1 -1
  20. package/dist/views/BuyBond/BuyComponentSui.js.map +1 -1
  21. package/dist/views/BuyBond/components/BondCards/BondCards.js +1 -1
  22. package/dist/views/BuyBond/components/BondCards/BondCards.js.map +1 -1
  23. package/dist/views/BuyBond/components/BondModalHeader.js +7 -6
  24. package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
  25. package/dist/views/BuyBond/components/Estimations.js +22 -36
  26. package/dist/views/BuyBond/components/Estimations.js.map +1 -1
  27. package/package.json +2 -2
@@ -8,14 +8,6 @@ export declare const TooltipText: {
8
8
  Fee: string;
9
9
  Boost: string;
10
10
  };
11
- export declare const PromotionTooltipText: {
12
- welcomeBonus: {
13
- header: string;
14
- boost: string;
15
- };
16
- };
17
- export declare const getBoostTooltipText: (promotion?: string | null) => string;
18
- export declare const getHeaderPromotionTooltipText: (promotion?: string | null) => string;
19
11
  export declare const UserBillTooltipText: {
20
12
  FullyVested: string;
21
13
  Pending: string;
@@ -1,4 +1,3 @@
1
- //TODO: remove this shit
2
1
  const TooltipText = {
3
2
  Discount: 'This is the percentage of additional tokens you’ll get based on the current bond’s bonus.',
4
3
  ARR: 'This is the Annualized Rate of Return you would receive considering the current bonus, adjusted for APR.',
@@ -9,26 +8,6 @@ const TooltipText = {
9
8
  Fee: 'This is the platform fee (2%).',
10
9
  Boost: 'This is the dollar value of the additional tokens you’ll receive thanks to your Ape Tier at current market price.',
11
10
  };
12
- const PromotionTooltipText = {
13
- welcomeBonus: {
14
- header: 'Your first purchase is eligible for a Welcome Bonus boost of 5%!',
15
- boost: 'Your first purchase is eligible for a Welcome Bonus boost of 5%!',
16
- },
17
- };
18
- const DEFAULT_PROMOTION_TOOLTIP_CONTENT = {
19
- header: '',
20
- boost: TooltipText.Boost,
21
- };
22
- const PROMOTION_TOOLTIP_CONTENT = {
23
- 'welcome bonus': PromotionTooltipText.welcomeBonus,
24
- };
25
- const getPromotionTooltipContent = (promotion) => {
26
- if (!promotion)
27
- return DEFAULT_PROMOTION_TOOLTIP_CONTENT;
28
- return PROMOTION_TOOLTIP_CONTENT[promotion] ?? DEFAULT_PROMOTION_TOOLTIP_CONTENT;
29
- };
30
- const getBoostTooltipText = (promotion) => getPromotionTooltipContent(promotion).boost;
31
- const getHeaderPromotionTooltipText = (promotion) => getPromotionTooltipContent(promotion).header;
32
11
  const UserBillTooltipText = {
33
12
  FullyVested: 'This is the time remaining until all tokens from the bond are available to claim.',
34
13
  Pending: 'This is the amount of unvested tokens that cannot be claimed yet.',
@@ -36,5 +15,5 @@ const UserBillTooltipText = {
36
15
  Claimed: 'This is the amount of tokens that you have already claimed.',
37
16
  };
38
17
 
39
- export { PromotionTooltipText, TooltipText, UserBillTooltipText, getBoostTooltipText, getHeaderPromotionTooltipText };
18
+ export { TooltipText, UserBillTooltipText };
40
19
  //# sourceMappingURL=tooltips.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltips.js","sources":["../../../src/config/constants/tooltips.ts"],"sourcesContent":["//TODO: remove this shit\n\nexport const TooltipText = {\n Discount: 'This is the percentage of additional tokens you’ll get based on the current bond’s bonus.',\n ARR: 'This is the Annualized Rate of Return you would receive considering the current bonus, adjusted for APR.',\n Terms: 'This is the amount of days it will take for all tokens in the Bond to fully vest.',\n TokensRemaining: 'This is the amount of remaining tokens for sale in this Bond.',\n MaxBuy: (payoutToken: string) =>\n `This is the maximum amount of ${payoutToken} you can currently purchase through this Bond.`,\n Premium: 'This is the dollar value of the bonus tokens you’ll receive at current market price.',\n Fee: 'This is the platform fee (2%).',\n Boost:\n 'This is the dollar value of the additional tokens you’ll receive thanks to your Ape Tier at current market price.',\n}\n\nexport const PromotionTooltipText = {\n welcomeBonus: {\n header: 'Your first purchase is eligible for a Welcome Bonus boost of 5%!',\n boost: 'Your first purchase is eligible for a Welcome Bonus boost of 5%!',\n },\n}\n\ntype PromotionTooltipContent = {\n header: string\n boost: string\n}\n\nconst DEFAULT_PROMOTION_TOOLTIP_CONTENT: PromotionTooltipContent = {\n header: '',\n boost: TooltipText.Boost,\n}\n\nconst PROMOTION_TOOLTIP_CONTENT: Partial<Record<string, PromotionTooltipContent>> = {\n 'welcome bonus': PromotionTooltipText.welcomeBonus,\n}\n\nconst getPromotionTooltipContent = (promotion?: string | null): PromotionTooltipContent => {\n if (!promotion) return DEFAULT_PROMOTION_TOOLTIP_CONTENT\n return PROMOTION_TOOLTIP_CONTENT[promotion] ?? DEFAULT_PROMOTION_TOOLTIP_CONTENT\n}\n\nexport const getBoostTooltipText = (promotion?: string | null) => getPromotionTooltipContent(promotion).boost\n\nexport const getHeaderPromotionTooltipText = (promotion?: string | null) => getPromotionTooltipContent(promotion).header\n\nexport const UserBillTooltipText = {\n FullyVested: 'This is the time remaining until all tokens from the bond are available to claim.',\n Pending: 'This is the amount of unvested tokens that cannot be claimed yet.',\n Claimable: 'This is the amount of tokens that have vested and are available to claim.',\n YouSpent: 'This is the dollar amount you spent on the bond at the time of purchase.',\n Claimed: 'This is the amount of tokens that you have already claimed.',\n}\n"],"names":[],"mappings":"AAAA;AAEO,MAAM,WAAW,GAAG;AACzB,IAAA,QAAQ,EAAE,2FAA2F;AACrG,IAAA,GAAG,EAAE,0GAA0G;AAC/G,IAAA,KAAK,EAAE,mFAAmF;AAC1F,IAAA,eAAe,EAAE,+DAA+D;IAChF,MAAM,EAAE,CAAC,WAAmB,KAC1B,CAAA,8BAAA,EAAiC,WAAW,CAAA,8CAAA,CAAgD;AAC9F,IAAA,OAAO,EAAE,sFAAsF;AAC/F,IAAA,GAAG,EAAE,gCAAgC;AACrC,IAAA,KAAK,EACH,mHAAmH;;AAGhH,MAAM,oBAAoB,GAAG;AAClC,IAAA,YAAY,EAAE;AACZ,QAAA,MAAM,EAAE,kEAAkE;AAC1E,QAAA,KAAK,EAAE,kEAAkE;AAC1E,KAAA;;AAQH,MAAM,iCAAiC,GAA4B;AACjE,IAAA,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,WAAW,CAAC,KAAK;CACzB;AAED,MAAM,yBAAyB,GAAqD;IAClF,eAAe,EAAE,oBAAoB,CAAC,YAAY;CACnD;AAED,MAAM,0BAA0B,GAAG,CAAC,SAAyB,KAA6B;AACxF,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,iCAAiC;AACxD,IAAA,OAAO,yBAAyB,CAAC,SAAS,CAAC,IAAI,iCAAiC;AAClF,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAC,SAAyB,KAAK,0BAA0B,CAAC,SAAS,CAAC,CAAC;AAEjG,MAAM,6BAA6B,GAAG,CAAC,SAAyB,KAAK,0BAA0B,CAAC,SAAS,CAAC,CAAC;AAE3G,MAAM,mBAAmB,GAAG;AACjC,IAAA,WAAW,EAAE,mFAAmF;AAChG,IAAA,OAAO,EAAE,mEAAmE;AAC5E,IAAA,SAAS,EAAE,2EAA2E;AACtF,IACA,OAAO,EAAE,6DAA6D;;;;;"}
1
+ {"version":3,"file":"tooltips.js","sources":["../../../src/config/constants/tooltips.ts"],"sourcesContent":["export const TooltipText = {\n Discount: 'This is the percentage of additional tokens you’ll get based on the current bond’s bonus.',\n ARR: 'This is the Annualized Rate of Return you would receive considering the current bonus, adjusted for APR.',\n Terms: 'This is the amount of days it will take for all tokens in the Bond to fully vest.',\n TokensRemaining: 'This is the amount of remaining tokens for sale in this Bond.',\n MaxBuy: (payoutToken: string) =>\n `This is the maximum amount of ${payoutToken} you can currently purchase through this Bond.`,\n Premium: 'This is the dollar value of the bonus tokens you’ll receive at current market price.',\n Fee: 'This is the platform fee (2%).',\n Boost:\n 'This is the dollar value of the additional tokens you’ll receive thanks to your Ape Tier at current market price.',\n}\n\nexport const UserBillTooltipText = {\n FullyVested: 'This is the time remaining until all tokens from the bond are available to claim.',\n Pending: 'This is the amount of unvested tokens that cannot be claimed yet.',\n Claimable: 'This is the amount of tokens that have vested and are available to claim.',\n YouSpent: 'This is the dollar amount you spent on the bond at the time of purchase.',\n Claimed: 'This is the amount of tokens that you have already claimed.',\n}\n"],"names":[],"mappings":"AAAO,MAAM,WAAW,GAAG;AACzB,IAAA,QAAQ,EAAE,2FAA2F;AACrG,IAAA,GAAG,EAAE,0GAA0G;AAC/G,IAAA,KAAK,EAAE,mFAAmF;AAC1F,IAAA,eAAe,EAAE,+DAA+D;IAChF,MAAM,EAAE,CAAC,WAAmB,KAC1B,CAAA,8BAAA,EAAiC,WAAW,CAAA,8CAAA,CAAgD;AAC9F,IAAA,OAAO,EAAE,sFAAsF;AAC/F,IAAA,GAAG,EAAE,gCAAgC;AACrC,IAAA,KAAK,EACH,mHAAmH;;AAGhH,MAAM,mBAAmB,GAAG;AACjC,IAAA,WAAW,EAAE,mFAAmF;AAChG,IAAA,OAAO,EAAE,mEAAmE;AAC5E,IAAA,SAAS,EAAE,2EAA2E;AACtF,IACA,OAAO,EAAE,6DAA6D;;;;;"}
@@ -1,3 +1,4 @@
1
+ import { ChainId } from '@ape.swap/apeswap-lists';
1
2
  import { LaunchBondTiers } from '@ape.swap/apeswap-lists';
2
3
  export declare enum NewTiers {
3
4
  Silver = 1,
@@ -7,8 +8,19 @@ export declare enum NewTiers {
7
8
  Mythical = 5
8
9
  }
9
10
  export declare enum Promotions {
10
- WelcomeBonus = "welcome bonus"
11
+ WelcomeBonus = "welcome bonus",
12
+ BonusWeek = "bonus week"
11
13
  }
14
+ export declare const promotionDataMapping: {
15
+ "welcome bonus": {
16
+ icon: string;
17
+ tooltip: string;
18
+ };
19
+ "bonus week": {
20
+ icon: string;
21
+ tooltip: string;
22
+ };
23
+ };
12
24
  export declare const TIERS_COLORS: {
13
25
  1: string;
14
26
  2: string;
@@ -49,12 +61,12 @@ export declare const getUserTier: (weight?: string | null) => LaunchBondTiers |
49
61
  export declare const fetchUserPoints: (account?: string, useTiers?: boolean, apiUrl?: string) => Promise<{
50
62
  onChainPoints: string;
51
63
  promotionalPoints: string;
52
- usingPromotion: boolean;
53
64
  promotion: Promotions | null;
65
+ eligibleChains: ChainId[] | undefined;
54
66
  } | null>;
55
67
  export default function useTierPoints(): import("@tanstack/react-query").UseQueryResult<{
56
68
  onChainPoints: string;
57
69
  promotionalPoints: string;
58
- usingPromotion: boolean;
59
70
  promotion: Promotions | null;
71
+ eligibleChains: ChainId[] | undefined;
60
72
  } | null, Error>;
@@ -20,7 +20,18 @@ var NewTiers;
20
20
  var Promotions;
21
21
  (function (Promotions) {
22
22
  Promotions["WelcomeBonus"] = "welcome bonus";
23
+ Promotions["BonusWeek"] = "bonus week";
23
24
  })(Promotions || (Promotions = {}));
25
+ const promotionDataMapping = {
26
+ [Promotions.WelcomeBonus]: {
27
+ icon: 'GiftBoxPlain',
28
+ tooltip: 'Your first purchase is eligible for a Welcome Bonus boost of 5%!',
29
+ },
30
+ [Promotions.BonusWeek]: {
31
+ icon: 'GiftBoxPlain',
32
+ tooltip: 'Get an extra 5% Bonus on one Bond purchase from this chain during Bonus Week.',
33
+ },
34
+ };
24
35
  const TIERS_COLORS = {
25
36
  [NewTiers.Silver]: '#7c7c7c',
26
37
  [NewTiers.Gold]: '#cc9d60',
@@ -109,10 +120,10 @@ const fetchUserPoints = async (account, useTiers, apiUrl) => {
109
120
  promotionalPoints: bestPromotionPoints.gt(onChainPoints)
110
121
  ? bestPromotionPoints.toString()
111
122
  : onChainPoints.toString(),
112
- usingPromotion: bestPromotionPoints.gt(onChainPoints),
113
- promotion: bestPromotionPoints.gt(onChainPoints) && promotionsData?.bestPromotion?.promotion === Promotions.WelcomeBonus
114
- ? Promotions.WelcomeBonus
115
- : null,
123
+ promotion: bestPromotionPoints.gt(onChainPoints) ? promotionsData?.bestPromotion?.promotion : null,
124
+ // promotion: Promotions.WelcomeBonus,
125
+ eligibleChains: promotionsData?.bestPromotion?.eligibleChains || undefined,
126
+ // eligibleChains: undefined,
116
127
  };
117
128
  }
118
129
  catch (e) {
@@ -123,11 +134,21 @@ const fetchUserPoints = async (account, useTiers, apiUrl) => {
123
134
  extraInfo: { type: 'fetchUserPoints', e },
124
135
  account,
125
136
  });
126
- return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null };
137
+ return {
138
+ onChainPoints: '0',
139
+ promotionalPoints: '0',
140
+ promotion: null,
141
+ eligibleChains: undefined,
142
+ };
127
143
  }
128
144
  }
129
145
  else
130
- return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null };
146
+ return {
147
+ onChainPoints: '0',
148
+ promotionalPoints: '0',
149
+ promotion: null,
150
+ eligibleChains: undefined,
151
+ };
131
152
  };
132
153
  function useTierPoints() {
133
154
  const { address: account } = useEVMAccount();
@@ -142,5 +163,5 @@ function useTierPoints() {
142
163
  });
143
164
  }
144
165
 
145
- export { NewTiers, Promotions, TIERS_BG, TIERS_COLORS, TIERS_NAMES, TIERS_WEIGHT, TIER_MAPPING, useTierPoints as default, fetchUserPoints, getUserTier };
166
+ export { NewTiers, Promotions, TIERS_BG, TIERS_COLORS, TIERS_NAMES, TIERS_WEIGHT, TIER_MAPPING, useTierPoints as default, fetchUserPoints, getUserTier, promotionDataMapping };
146
167
  //# sourceMappingURL=useTierPoints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTierPoints.js","sources":["../../../src/state/tiers/useTierPoints.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport lensContractABI from '../../config/abi/lensContract.json'\nimport { LENS_CONTRACT } from '../../config/constants/addresses'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport multicall from '../../utils/multicall'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport BigNumber from 'bignumber.js'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { useSDKConfig } from '../useSDKConfig'\nimport { reportError } from '../../utils/reportError'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nexport enum NewTiers {\n Silver = 1,\n Gold = 2,\n Diamond = 3,\n Legend = 4,\n Mythical = 5,\n}\n\nexport enum Promotions {\n WelcomeBonus = 'welcome bonus',\n}\n\nexport const TIERS_COLORS = {\n [NewTiers.Silver]: '#7c7c7c',\n [NewTiers.Gold]: '#cc9d60',\n [NewTiers.Diamond]: '#427b9e',\n [NewTiers.Legend]: '#8984E8',\n [NewTiers.Mythical]: '#891F3F',\n}\n\nexport const TIERS_BG = {\n [NewTiers.Silver]: 'linear-gradient(90deg, #3A3A3C 0%, #2C2C2F 100%)',\n [NewTiers.Gold]: 'linear-gradient(90deg, #BC933F 0%, #56431D 100%)',\n [NewTiers.Diamond]: 'linear-gradient(90deg, #1174A2 0%, #062B3C 100%)',\n [NewTiers.Legend]: 'linear-gradient(90deg, #6B43D7 0%, #382371 100%)',\n [NewTiers.Mythical]: 'linear-gradient(90deg, #DFA9D2 -13.84%, #790524 10.35%, #DFA9D2 38.05%, #790524 76.31%)',\n}\n\nexport const TIERS_WEIGHT = {\n [NewTiers.Silver]: '10000000000000000000000',\n [NewTiers.Gold]: '50000000000000000000000',\n [NewTiers.Diamond]: '200000000000000000000000',\n [NewTiers.Legend]: '500000000000000000000000',\n [NewTiers.Mythical]: '1000000000000000000000000',\n}\n\nexport const TIER_MAPPING = {\n '10000000000000000000000': NewTiers.Silver,\n '50000000000000000000000': NewTiers.Gold,\n '200000000000000000000000': NewTiers.Diamond,\n '500000000000000000000000': NewTiers.Legend,\n '1000000000000000000000000': NewTiers.Mythical,\n}\n\nexport const TIERS_NAMES = {\n null: 'No Tier',\n [NewTiers.Silver]: 'Silver',\n [NewTiers.Gold]: 'Gold',\n [NewTiers.Diamond]: 'Diamond',\n [NewTiers.Legend]: 'Legend',\n [NewTiers.Mythical]: 'Mythical',\n}\n\nexport const getUserTier = (weight?: string | null): LaunchBondTiers | null => {\n if (!weight) return null\n const weightBG = new BigNumber(weight)\n const silver = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Silver])\n const gold = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Gold])\n const diamond = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Diamond])\n const legend = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Legend])\n const mythical = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Mythical])\n\n if (weightBG.gte(mythical)) {\n return LaunchBondTiers.Mythical\n } else if (weightBG.gte(legend)) {\n return LaunchBondTiers.Legend\n } else if (weightBG.gte(diamond)) {\n return LaunchBondTiers.Diamond\n } else if (weightBG.gte(gold)) {\n return LaunchBondTiers.Gold\n } else if (weightBG.gte(silver)) {\n return LaunchBondTiers.Silver\n }\n return null\n}\n\nexport const fetchUserPoints = async (\n account?: string,\n useTiers?: boolean,\n apiUrl?: string,\n): Promise<{\n onChainPoints: string\n promotionalPoints: string\n usingPromotion: boolean\n promotion: Promotions | null\n} | null> => {\n const lensContractAddress = LENS_CONTRACT[ChainId.BSC]\n if (account && useTiers) {\n try {\n const res = await multicall(ChainId.BSC, lensContractABI, [\n {\n address: lensContractAddress,\n name: 'getEscrowWeight',\n params: [account],\n },\n ])\n const onChainPoints = new BigNumber(res[0][0].toString()).times(2)\n\n const promotionsData = await fetch(`${apiUrl}/tier-promotion?user=${account}`)\n .then((res) => res.json())\n .then((data) => data)\n .catch((err) => {\n console.error('Error fetching promotions:', err)\n return {}\n })\n const promotionalTier: LaunchBondTiers | null = promotionsData?.bestPromotion?.tier\n\n const bestPromotionPoints = new BigNumber(promotionalTier ? TIERS_WEIGHT[promotionalTier] : 0)\n\n return {\n onChainPoints: onChainPoints.toString(),\n promotionalPoints: bestPromotionPoints.gt(onChainPoints)\n ? bestPromotionPoints.toString()\n : onChainPoints.toString(),\n usingPromotion: bestPromotionPoints.gt(onChainPoints),\n promotion:\n bestPromotionPoints.gt(onChainPoints) && promotionsData?.bestPromotion?.promotion === Promotions.WelcomeBonus\n ? Promotions.WelcomeBonus\n : null,\n }\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'fetchUserPoints', e },\n account,\n })\n return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null }\n }\n } else return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null }\n}\n\nexport default function useTierPoints() {\n const { address: account } = useEVMAccount()\n const SDKConfig = useSDKConfig()\n const apiUrl = SDKConfig?.urls?.apiV2\n return useQuery({\n queryKey: [QUERY_KEYS.TIERS, account],\n queryFn: () => fetchUserPoints(account, SDKConfig.useTiers, apiUrl),\n refetchInterval: 120000, // i.e. 2 mins\n staleTime: 120000, // i.e. 2 mins\n refetchOnWindowFocus: false,\n })\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTierPoints.js","sources":["../../../src/state/tiers/useTierPoints.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport lensContractABI from '../../config/abi/lensContract.json'\nimport { LENS_CONTRACT } from '../../config/constants/addresses'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport multicall from '../../utils/multicall'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport BigNumber from 'bignumber.js'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { useSDKConfig } from '../useSDKConfig'\nimport { reportError } from '../../utils/reportError'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nexport enum NewTiers {\n Silver = 1,\n Gold = 2,\n Diamond = 3,\n Legend = 4,\n Mythical = 5,\n}\n\nexport enum Promotions {\n WelcomeBonus = 'welcome bonus',\n BonusWeek = 'bonus week',\n}\n\nexport const promotionDataMapping = {\n [Promotions.WelcomeBonus]: {\n icon: 'GiftBoxPlain',\n tooltip: 'Your first purchase is eligible for a Welcome Bonus boost of 5%!',\n },\n [Promotions.BonusWeek]: {\n icon: 'GiftBoxPlain',\n tooltip: 'Get an extra 5% Bonus on one Bond purchase from this chain during Bonus Week.',\n },\n}\n\nexport const TIERS_COLORS = {\n [NewTiers.Silver]: '#7c7c7c',\n [NewTiers.Gold]: '#cc9d60',\n [NewTiers.Diamond]: '#427b9e',\n [NewTiers.Legend]: '#8984E8',\n [NewTiers.Mythical]: '#891F3F',\n}\n\nexport const TIERS_BG = {\n [NewTiers.Silver]: 'linear-gradient(90deg, #3A3A3C 0%, #2C2C2F 100%)',\n [NewTiers.Gold]: 'linear-gradient(90deg, #BC933F 0%, #56431D 100%)',\n [NewTiers.Diamond]: 'linear-gradient(90deg, #1174A2 0%, #062B3C 100%)',\n [NewTiers.Legend]: 'linear-gradient(90deg, #6B43D7 0%, #382371 100%)',\n [NewTiers.Mythical]: 'linear-gradient(90deg, #DFA9D2 -13.84%, #790524 10.35%, #DFA9D2 38.05%, #790524 76.31%)',\n}\n\nexport const TIERS_WEIGHT = {\n [NewTiers.Silver]: '10000000000000000000000',\n [NewTiers.Gold]: '50000000000000000000000',\n [NewTiers.Diamond]: '200000000000000000000000',\n [NewTiers.Legend]: '500000000000000000000000',\n [NewTiers.Mythical]: '1000000000000000000000000',\n}\n\nexport const TIER_MAPPING = {\n '10000000000000000000000': NewTiers.Silver,\n '50000000000000000000000': NewTiers.Gold,\n '200000000000000000000000': NewTiers.Diamond,\n '500000000000000000000000': NewTiers.Legend,\n '1000000000000000000000000': NewTiers.Mythical,\n}\n\nexport const TIERS_NAMES = {\n null: 'No Tier',\n [NewTiers.Silver]: 'Silver',\n [NewTiers.Gold]: 'Gold',\n [NewTiers.Diamond]: 'Diamond',\n [NewTiers.Legend]: 'Legend',\n [NewTiers.Mythical]: 'Mythical',\n}\n\nexport const getUserTier = (weight?: string | null): LaunchBondTiers | null => {\n if (!weight) return null\n const weightBG = new BigNumber(weight)\n const silver = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Silver])\n const gold = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Gold])\n const diamond = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Diamond])\n const legend = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Legend])\n const mythical = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Mythical])\n\n if (weightBG.gte(mythical)) {\n return LaunchBondTiers.Mythical\n } else if (weightBG.gte(legend)) {\n return LaunchBondTiers.Legend\n } else if (weightBG.gte(diamond)) {\n return LaunchBondTiers.Diamond\n } else if (weightBG.gte(gold)) {\n return LaunchBondTiers.Gold\n } else if (weightBG.gte(silver)) {\n return LaunchBondTiers.Silver\n }\n return null\n}\n\nexport const fetchUserPoints = async (\n account?: string,\n useTiers?: boolean,\n apiUrl?: string,\n): Promise<{\n onChainPoints: string\n promotionalPoints: string\n promotion: Promotions | null\n eligibleChains: ChainId[] | undefined\n} | null> => {\n const lensContractAddress = LENS_CONTRACT[ChainId.BSC]\n if (account && useTiers) {\n try {\n const res = await multicall(ChainId.BSC, lensContractABI, [\n {\n address: lensContractAddress,\n name: 'getEscrowWeight',\n params: [account],\n },\n ])\n const onChainPoints = new BigNumber(res[0][0].toString()).times(2)\n\n const promotionsData = await fetch(`${apiUrl}/tier-promotion?user=${account}`)\n .then((res) => res.json())\n .then((data) => data)\n .catch((err) => {\n console.error('Error fetching promotions:', err)\n return {}\n })\n const promotionalTier: LaunchBondTiers | null = promotionsData?.bestPromotion?.tier\n\n const bestPromotionPoints = new BigNumber(promotionalTier ? TIERS_WEIGHT[promotionalTier] : 0)\n\n return {\n onChainPoints: onChainPoints.toString(),\n promotionalPoints: bestPromotionPoints.gt(onChainPoints)\n ? bestPromotionPoints.toString()\n : onChainPoints.toString(),\n promotion: bestPromotionPoints.gt(onChainPoints) ? promotionsData?.bestPromotion?.promotion : null,\n // promotion: Promotions.WelcomeBonus,\n eligibleChains: promotionsData?.bestPromotion?.eligibleChains || undefined,\n // eligibleChains: undefined,\n }\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'fetchUserPoints', e },\n account,\n })\n return {\n onChainPoints: '0',\n promotionalPoints: '0',\n promotion: null,\n eligibleChains: undefined,\n }\n }\n } else\n return {\n onChainPoints: '0',\n promotionalPoints: '0',\n promotion: null,\n eligibleChains: undefined,\n }\n}\n\nexport default function useTierPoints() {\n const { address: account } = useEVMAccount()\n const SDKConfig = useSDKConfig()\n const apiUrl = SDKConfig?.urls?.apiV2\n return useQuery({\n queryKey: [QUERY_KEYS.TIERS, account],\n queryFn: () => fetchUserPoints(account, SDKConfig.useTiers, apiUrl),\n refetchInterval: 120000, // i.e. 2 mins\n staleTime: 120000, // i.e. 2 mins\n refetchOnWindowFocus: false,\n })\n}\n"],"names":[],"mappings":";;;;;;;;;;;IAYY;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,QAAA,CAAA,QAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACd,CAAC,EANW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;IAQR;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AAC1B,CAAC,EAHW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;AAKf,MAAM,oBAAoB,GAAG;AAClC,IAAA,CAAC,UAAU,CAAC,YAAY,GAAG;AACzB,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,OAAO,EAAE,kEAAkE;AAC5E,KAAA;AACD,IAAA,CAAC,UAAU,CAAC,SAAS,GAAG;AACtB,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,OAAO,EAAE,+EAA+E;AACzF,KAAA;;AAGI,MAAM,YAAY,GAAG;AAC1B,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS;AAC5B,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS;AAC1B,IAAA,CAAC,QAAQ,CAAC,OAAO,GAAG,SAAS;AAC7B,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS;AAC5B,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS;;AAGzB,MAAM,QAAQ,GAAG;AACtB,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,kDAAkD;AACrE,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,kDAAkD;AACnE,IAAA,CAAC,QAAQ,CAAC,OAAO,GAAG,kDAAkD;AACtE,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,kDAAkD;AACrE,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG,yFAAyF;;AAGzG,MAAM,YAAY,GAAG;AAC1B,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,yBAAyB;AAC5C,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,yBAAyB;AAC1C,IAAA,CAAC,QAAQ,CAAC,OAAO,GAAG,0BAA0B;AAC9C,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,0BAA0B;AAC7C,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG,2BAA2B;;AAG3C,MAAM,YAAY,GAAG;IAC1B,yBAAyB,EAAE,QAAQ,CAAC,MAAM;IAC1C,yBAAyB,EAAE,QAAQ,CAAC,IAAI;IACxC,0BAA0B,EAAE,QAAQ,CAAC,OAAO;IAC5C,0BAA0B,EAAE,QAAQ,CAAC,MAAM;IAC3C,2BAA2B,EAAE,QAAQ,CAAC,QAAQ;;AAGzC,MAAM,WAAW,GAAG;AACzB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ;AAC3B,IAAA,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM;AACvB,IAAA,CAAC,QAAQ,CAAC,OAAO,GAAG,SAAS;AAC7B,IAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ;AAC3B,IAAA,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU;;AAG1B,MAAM,WAAW,GAAG,CAAC,MAAsB,KAA4B;AAC5E,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC;AACtC,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAClE,IAAA,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAA,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACpE,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAClE,IAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAEtE,IAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC1B,OAAO,eAAe,CAAC,QAAQ;IACjC;AAAO,SAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,eAAe,CAAC,MAAM;IAC/B;AAAO,SAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,eAAe,CAAC,OAAO;IAChC;AAAO,SAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,eAAe,CAAC,IAAI;IAC7B;AAAO,SAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,eAAe,CAAC,MAAM;IAC/B;AACA,IAAA,OAAO,IAAI;AACb;AAEO,MAAM,eAAe,GAAG,OAC7B,OAAgB,EAChB,QAAkB,EAClB,MAAe,KAML;IACV,MAAM,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;AACtD,IAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE;AACxD,gBAAA;AACE,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA;AACF,aAAA,CAAC;YACF,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAElE,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAA,qBAAA,EAAwB,OAAO,CAAA,CAAE;iBAC1E,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE;AACxB,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;AACnB,iBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC;AAChD,gBAAA,OAAO,EAAE;AACX,YAAA,CAAC,CAAC;AACJ,YAAA,MAAM,eAAe,GAA2B,cAAc,EAAE,aAAa,EAAE,IAAI;AAEnF,YAAA,MAAM,mBAAmB,GAAG,IAAI,SAAS,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAE9F,OAAO;AACL,gBAAA,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;AACvC,gBAAA,iBAAiB,EAAE,mBAAmB,CAAC,EAAE,CAAC,aAAa;AACrD,sBAAE,mBAAmB,CAAC,QAAQ;AAC9B,sBAAE,aAAa,CAAC,QAAQ,EAAE;AAC5B,gBAAA,SAAS,EAAE,mBAAmB,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,cAAc,EAAE,aAAa,EAAE,SAAS,GAAG,IAAI;;AAElG,gBAAA,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,IAAI,SAAS;;aAE3E;QACH;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,YAAA,WAAW,CAAC;gBACV,MAAM;AACN,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE;gBACzC,OAAO;AACR,aAAA,CAAC;YACF,OAAO;AACL,gBAAA,aAAa,EAAE,GAAG;AAClB,gBAAA,iBAAiB,EAAE,GAAG;AACtB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,cAAc,EAAE,SAAS;aAC1B;QACH;IACF;;QACE,OAAO;AACL,YAAA,aAAa,EAAE,GAAG;AAClB,YAAA,iBAAiB,EAAE,GAAG;AACtB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,cAAc,EAAE,SAAS;SAC1B;AACL;AAEc,SAAU,aAAa,GAAA;IACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE;AAC5C,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;AAChC,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;AACrC,IAAA,OAAO,QAAQ,CAAC;AACd,QAAA,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;AACrC,QAAA,OAAO,EAAE,MAAM,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;QACnE,eAAe,EAAE,MAAM;QACvB,SAAS,EAAE,MAAM;AACjB,QAAA,oBAAoB,EAAE,KAAK;AAC5B,KAAA,CAAC;AACJ;;;;"}
@@ -11,7 +11,6 @@ import useDebounce from '../../hooks/useDebounce.js';
11
11
  import '../../config/constants/tokens.js';
12
12
  import { zapSupported, SOUL_ZAP_API } from '../../config/constants/variables.js';
13
13
  import { useSDKConfig } from '../useSDKConfig.js';
14
- import useTierPoints from '../tiers/useTierPoints.js';
15
14
 
16
15
  const useSoulZapBondQuote = (typedValue, inputCurrency, bond, account, tierProofSig) => {
17
16
  const isZapSupported = zapSupported.includes(bond?.chainId);
@@ -19,8 +18,6 @@ const useSoulZapBondQuote = (typedValue, inputCurrency, bond, account, tierProof
19
18
  const isDebouncing = typedValue !== debouncedInput;
20
19
  const { evmSlippage: slippage } = useSlippage();
21
20
  const SDKConfig = useSDKConfig();
22
- const { data: tierPointsState } = useTierPoints();
23
- const { usingPromotion } = tierPointsState || {};
24
21
  const principalToken = bond?.lpToken;
25
22
  const bondContractAddress = bond?.contractAddress[bond?.chainId];
26
23
  const chainId = bond?.chainId;
@@ -67,7 +64,7 @@ const useSoulZapBondQuote = (typedValue, inputCurrency, bond, account, tierProof
67
64
  bond: bondContractAddress,
68
65
  depositer: account ?? '0x0000000000000000000000000000000000000000',
69
66
  tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,
70
- enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,
67
+ enableTierOptimizer: SDKConfig.useTiers,
71
68
  tierBoostRate: bond.tierBoostRate,
72
69
  },
73
70
  };
@@ -88,7 +85,7 @@ const useSoulZapBondQuote = (typedValue, inputCurrency, bond, account, tierProof
88
85
  bond: bondContractAddress,
89
86
  depositer: account ?? '0x0000000000000000000000000000000000000000',
90
87
  tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,
91
- enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,
88
+ enableTierOptimizer: SDKConfig.useTiers,
92
89
  tierBoostRate: bond.tierBoostRate,
93
90
  },
94
91
  };
@@ -116,7 +113,7 @@ const useSoulZapBondQuote = (typedValue, inputCurrency, bond, account, tierProof
116
113
  bond: bondContractAddress,
117
114
  depositer: account ?? '0x0000000000000000000000000000000000000000',
118
115
  tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,
119
- enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,
116
+ enableTierOptimizer: SDKConfig.useTiers,
120
117
  tierBoostRate: bond.tierBoostRate,
121
118
  },
122
119
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useSoulZapBondQuote.js","sources":["../../../src/state/zap/useSoulZapBondQuote.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { BillVersion, ChainId, dexFactories, LiquidityDex, Token, Wrappers } from '@ape.swap/apeswap-lists'\nimport { getChainParam, getLpType } from './getChainParam'\nimport axios from 'axios'\nimport { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport useCurrencyPrice from '../../state/price/useCurrencyPrice'\nimport { BondsData } from '../../types/bonds'\nimport { useSlippage } from '../slippage/useSlippage'\nimport useDebounce from '../../hooks/useDebounce'\nimport { WNATIVE, zapInputTokens } from '../../config/constants/tokens'\nimport { SOUL_ZAP_API, zapSupported, ZapSupportedChainId } from '../../config/constants/variables'\nimport { useSDKConfig } from '../useSDKConfig'\nimport useTierPoints from '../tiers/useTierPoints'\n\nconst useSoulZapBondQuote = (\n typedValue: string,\n inputCurrency: 'NATIVE' | Token | undefined,\n bond: BondsData | undefined,\n account?: string,\n tierProofSig?: string,\n): [loading: boolean, response: any, depositAmount: string, error: boolean, trueBondPrice: string | undefined] => {\n const isZapSupported = zapSupported.includes(bond?.chainId as ZapSupportedChainId)\n const debouncedInput = useDebounce(typedValue, 500)\n const isDebouncing = typedValue !== debouncedInput\n const { evmSlippage: slippage } = useSlippage()\n const SDKConfig = useSDKConfig()\n const { data: tierPointsState } = useTierPoints()\n const { usingPromotion } = tierPointsState || {}\n\n const principalToken = bond?.lpToken as Token\n const bondContractAddress = bond?.contractAddress[bond?.chainId as ChainId]\n const chainId = bond?.chainId as ChainId\n const inputCurrencyString =\n inputCurrency === 'NATIVE' ? '0x0000000000000000000000000000000000000000' : inputCurrency?.address[chainId]\n const inputCurrencyDecimals = inputCurrency === 'NATIVE' ? 18 : inputCurrency?.decimals![chainId]\n const principalContractAddress = principalToken?.address[chainId]\n const chainName = getChainParam(chainId)\n\n const isReserveBond = bond?.billType === 'reserve' || bond?.billType === 'staking'\n const liquidityDex: LiquidityDex | undefined =\n principalToken?.liquiditySource?.[chainId] ?? principalToken?.liquidityDex?.[chainId]\n const protocol = dexFactories[chainId]?.[liquidityDex!]?.protocol\n const lpType = isReserveBond ? 'single' : getLpType(protocol)\n const ichiUnderlyingDex = principalToken?.ichiUnderlyingDex\n const vault = principalToken?.address?.[chainId]\n const router = dexFactories[chainId]?.[liquidityDex!]?.router\n\n // Validates that the user did not pass an amount with 19 decimals or more\n const validated18DecimalAmount = new BigNumber(debouncedInput ?? '0').toFixed(18, 5)\n const bigishInputAmount = new BigNumber(validated18DecimalAmount ?? '0')\n .times(new BigNumber(10).pow(inputCurrencyDecimals ?? 18))\n .toString()\n\n const zapInputData = useMemo(() => {\n if (\n inputCurrencyString &&\n inputCurrencyDecimals &&\n bigishInputAmount !== 'NaN' &&\n bigishInputAmount !== '0' &&\n principalContractAddress &&\n chainName &&\n bondContractAddress &&\n isZapSupported\n ) {\n if (principalToken.liquidityWrapper && principalToken.liquidityWrapper === Wrappers.Steer) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'steer',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n lpAddress: vault,\n periphery: '0xCEBF1A54A9Ce703FC80967760b5A6cbDb4111099',\n slippage,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n }\n // a.k.a if it is principal token\n if (inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'none',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType:\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n ? 'none'\n : lpType,\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n underlyingDex: ichiUnderlyingDex,\n vault: isReserveBond ? undefined : vault,\n slippage: slippage,\n lpAddress: lpType === 'solidly' || lpType === 'univ2' || lpType === 'curve' ? vault : undefined,\n router: lpType === 'solidly' || lpType === 'univ2' ? router : undefined,\n toToken: isReserveBond ? vault : undefined,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else {\n return null\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [\n bigishInputAmount,\n principalContractAddress,\n chainName,\n account,\n ichiUnderlyingDex,\n vault,\n lpType,\n router,\n slippage,\n ])\n\n const queryKey = useMemo(() => {\n if (!zapInputData) return null\n return [\n 'zapBondDetails',\n zapInputData.chain,\n zapInputData.user,\n zapInputData.lpData.lpType,\n zapInputData.lpData.fromToken,\n zapInputData.lpData.fromAmount,\n zapInputData.lpData.underlyingDex ?? '',\n zapInputData.lpData.vault,\n zapInputData.lpData.slippage,\n zapInputData.lpData.lpAddress,\n zapInputData.lpData.router ?? '',\n ]\n }, [zapInputData])\n\n const fetchZapDetails = async () => {\n const response = await axios.post(SOUL_ZAP_API, zapInputData)\n return response.data?.result?.data\n }\n\n const {\n data: response,\n isLoading,\n isFetching,\n error,\n } = useQuery({\n queryKey: [QUERY_KEYS.ZAP_TOKEN_QUOTE, queryKey],\n queryFn: fetchZapDetails,\n refetchInterval: 60000, // i.e. 60 sec\n staleTime: 60000,\n enabled: !!queryKey,\n retry: 1,\n })\n const zapError = !!error\n\n const tokenList = zapInputTokens[chainId] ? zapInputTokens[chainId] : []\n\n // toToken0 data\n const toToken0Estimate: string | undefined = response?.lpQuote?.token0?.fromAmountEstimate\n const toToken0 = [...tokenList, principalToken]?.find(\n (token) => token?.address?.[chainId]?.toLowerCase() === response?.lpQuote?.token0?.address?.toLowerCase(),\n )\n const toToken0Price = useCurrencyPrice(toToken0 ?? null, chainId)\n\n // toToken1 data\n const toToken1Estimate: string | undefined = response?.lpQuote?.token1?.fromAmountEstimate\n const toToken1 = zapInputTokens[chainId]?.find(\n (token) => token.address[chainId]?.toLowerCase() === response?.lpQuote?.token1?.address?.toLowerCase(),\n )\n const toToken1Price = useCurrencyPrice(toToken1 ?? null, chainId)\n\n let toToken0USD = new BigNumber(toToken0Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken0?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken0Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token0?.fromAmountUSD) {\n toToken0USD = new BigNumber(response?.lpQuote?.token0?.fromAmountUSD)\n }\n\n let toToken1USD = new BigNumber(toToken1Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken1?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken1Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token1?.fromAmountUSD) {\n toToken1USD = new BigNumber(response?.lpQuote?.token1?.fromAmountUSD)\n }\n\n const youSpendUSD = toToken0USD.plus(toToken1USD) // youSpendUSD\n const estimatedDepositAmount = youSpendUSD.div(bond?.principalTokenPrice ?? '0')\n\n const isWrap =\n inputCurrency === 'NATIVE' &&\n bond?.lpToken?.address?.[chainId]?.toLowerCase() === WNATIVE[chainId]?.address?.[chainId]?.toLowerCase()\n\n const isPrincipalToken =\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n\n const estimatedDepositAmountToReturn =\n isWrap || isPrincipalToken\n ? new BigNumber(typedValue || '0').times((100 - bond?.tierBoostRate!) / 100).toString()\n : estimatedDepositAmount.toString()\n\n const trueBondPrice: string | undefined = response?.protocolQuote?.trueBondPrice\n\n // DEBUG: log tierOptimization when present\n if (response?.protocolQuote?.tierOptimization) {\n const tier = response.protocolQuote.tierOptimization\n const decimals = principalToken?.decimals?.[chainId] ?? 18\n const cost = new BigNumber(tier.tierCost).div(new BigNumber(10).pow(decimals))\n const input = new BigNumber(tier.bondInput).div(new BigNumber(10).pow(decimals))\n const profit = new BigNumber(tier.profit).div(new BigNumber(10).pow(decimals))\n console.log('[ZAP] tierOptimization:', {\n tier: `${tier.previousTier} → ${tier.newTier}`,\n cost: cost.toFixed(6),\n bondInput: input.toFixed(6),\n profit: profit.toFixed(6),\n })\n }\n\n const zapLoading = isDebouncing || isLoading || isFetching\n if (zapLoading) return [true, undefined, '', false, undefined]\n\n return [zapLoading, response, estimatedDepositAmountToReturn, zapError, trueBondPrice]\n}\n\nexport default useSoulZapBondQuote\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSoulZapBondQuote.js","sources":["../../../src/state/zap/useSoulZapBondQuote.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { BillVersion, ChainId, dexFactories, LiquidityDex, Token, Wrappers } from '@ape.swap/apeswap-lists'\nimport { getChainParam, getLpType } from './getChainParam'\nimport axios from 'axios'\nimport { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport useCurrencyPrice from '../../state/price/useCurrencyPrice'\nimport { BondsData } from '../../types/bonds'\nimport { useSlippage } from '../slippage/useSlippage'\nimport useDebounce from '../../hooks/useDebounce'\nimport { WNATIVE, zapInputTokens } from '../../config/constants/tokens'\nimport { SOUL_ZAP_API, zapSupported, ZapSupportedChainId } from '../../config/constants/variables'\nimport { useSDKConfig } from '../useSDKConfig'\n\nconst useSoulZapBondQuote = (\n typedValue: string,\n inputCurrency: 'NATIVE' | Token | undefined,\n bond: BondsData | undefined,\n account?: string,\n tierProofSig?: string,\n): [loading: boolean, response: any, depositAmount: string, error: boolean, trueBondPrice: string | undefined] => {\n const isZapSupported = zapSupported.includes(bond?.chainId as ZapSupportedChainId)\n const debouncedInput = useDebounce(typedValue, 500)\n const isDebouncing = typedValue !== debouncedInput\n const { evmSlippage: slippage } = useSlippage()\n const SDKConfig = useSDKConfig()\n\n const principalToken = bond?.lpToken as Token\n const bondContractAddress = bond?.contractAddress[bond?.chainId as ChainId]\n const chainId = bond?.chainId as ChainId\n const inputCurrencyString =\n inputCurrency === 'NATIVE' ? '0x0000000000000000000000000000000000000000' : inputCurrency?.address[chainId]\n const inputCurrencyDecimals = inputCurrency === 'NATIVE' ? 18 : inputCurrency?.decimals![chainId]\n const principalContractAddress = principalToken?.address[chainId]\n const chainName = getChainParam(chainId)\n\n const isReserveBond = bond?.billType === 'reserve' || bond?.billType === 'staking'\n const liquidityDex: LiquidityDex | undefined =\n principalToken?.liquiditySource?.[chainId] ?? principalToken?.liquidityDex?.[chainId]\n const protocol = dexFactories[chainId]?.[liquidityDex!]?.protocol\n const lpType = isReserveBond ? 'single' : getLpType(protocol)\n const ichiUnderlyingDex = principalToken?.ichiUnderlyingDex\n const vault = principalToken?.address?.[chainId]\n const router = dexFactories[chainId]?.[liquidityDex!]?.router\n\n // Validates that the user did not pass an amount with 19 decimals or more\n const validated18DecimalAmount = new BigNumber(debouncedInput ?? '0').toFixed(18, 5)\n const bigishInputAmount = new BigNumber(validated18DecimalAmount ?? '0')\n .times(new BigNumber(10).pow(inputCurrencyDecimals ?? 18))\n .toString()\n\n const zapInputData = useMemo(() => {\n if (\n inputCurrencyString &&\n inputCurrencyDecimals &&\n bigishInputAmount !== 'NaN' &&\n bigishInputAmount !== '0' &&\n principalContractAddress &&\n chainName &&\n bondContractAddress &&\n isZapSupported\n ) {\n if (principalToken.liquidityWrapper && principalToken.liquidityWrapper === Wrappers.Steer) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'steer',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n lpAddress: vault,\n periphery: '0xCEBF1A54A9Ce703FC80967760b5A6cbDb4111099',\n slippage,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n }\n // a.k.a if it is principal token\n if (inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'none',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType:\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n ? 'none'\n : lpType,\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n underlyingDex: ichiUnderlyingDex,\n vault: isReserveBond ? undefined : vault,\n slippage: slippage,\n lpAddress: lpType === 'solidly' || lpType === 'univ2' || lpType === 'curve' ? vault : undefined,\n router: lpType === 'solidly' || lpType === 'univ2' ? router : undefined,\n toToken: isReserveBond ? vault : undefined,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else {\n return null\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [\n bigishInputAmount,\n principalContractAddress,\n chainName,\n account,\n ichiUnderlyingDex,\n vault,\n lpType,\n router,\n slippage,\n ])\n\n const queryKey = useMemo(() => {\n if (!zapInputData) return null\n return [\n 'zapBondDetails',\n zapInputData.chain,\n zapInputData.user,\n zapInputData.lpData.lpType,\n zapInputData.lpData.fromToken,\n zapInputData.lpData.fromAmount,\n zapInputData.lpData.underlyingDex ?? '',\n zapInputData.lpData.vault,\n zapInputData.lpData.slippage,\n zapInputData.lpData.lpAddress,\n zapInputData.lpData.router ?? '',\n ]\n }, [zapInputData])\n\n const fetchZapDetails = async () => {\n const response = await axios.post(SOUL_ZAP_API, zapInputData)\n return response.data?.result?.data\n }\n\n const {\n data: response,\n isLoading,\n isFetching,\n error,\n } = useQuery({\n queryKey: [QUERY_KEYS.ZAP_TOKEN_QUOTE, queryKey],\n queryFn: fetchZapDetails,\n refetchInterval: 60000, // i.e. 60 sec\n staleTime: 60000,\n enabled: !!queryKey,\n retry: 1,\n })\n const zapError = !!error\n\n const tokenList = zapInputTokens[chainId] ? zapInputTokens[chainId] : []\n\n // toToken0 data\n const toToken0Estimate: string | undefined = response?.lpQuote?.token0?.fromAmountEstimate\n const toToken0 = [...tokenList, principalToken]?.find(\n (token) => token?.address?.[chainId]?.toLowerCase() === response?.lpQuote?.token0?.address?.toLowerCase(),\n )\n const toToken0Price = useCurrencyPrice(toToken0 ?? null, chainId)\n\n // toToken1 data\n const toToken1Estimate: string | undefined = response?.lpQuote?.token1?.fromAmountEstimate\n const toToken1 = zapInputTokens[chainId]?.find(\n (token) => token.address[chainId]?.toLowerCase() === response?.lpQuote?.token1?.address?.toLowerCase(),\n )\n const toToken1Price = useCurrencyPrice(toToken1 ?? null, chainId)\n\n let toToken0USD = new BigNumber(toToken0Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken0?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken0Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token0?.fromAmountUSD) {\n toToken0USD = new BigNumber(response?.lpQuote?.token0?.fromAmountUSD)\n }\n\n let toToken1USD = new BigNumber(toToken1Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken1?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken1Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token1?.fromAmountUSD) {\n toToken1USD = new BigNumber(response?.lpQuote?.token1?.fromAmountUSD)\n }\n\n const youSpendUSD = toToken0USD.plus(toToken1USD) // youSpendUSD\n const estimatedDepositAmount = youSpendUSD.div(bond?.principalTokenPrice ?? '0')\n\n const isWrap =\n inputCurrency === 'NATIVE' &&\n bond?.lpToken?.address?.[chainId]?.toLowerCase() === WNATIVE[chainId]?.address?.[chainId]?.toLowerCase()\n\n const isPrincipalToken =\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n\n const estimatedDepositAmountToReturn =\n isWrap || isPrincipalToken\n ? new BigNumber(typedValue || '0').times((100 - bond?.tierBoostRate!) / 100).toString()\n : estimatedDepositAmount.toString()\n\n const trueBondPrice: string | undefined = response?.protocolQuote?.trueBondPrice\n\n // DEBUG: log tierOptimization when present\n if (response?.protocolQuote?.tierOptimization) {\n const tier = response.protocolQuote.tierOptimization\n const decimals = principalToken?.decimals?.[chainId] ?? 18\n const cost = new BigNumber(tier.tierCost).div(new BigNumber(10).pow(decimals))\n const input = new BigNumber(tier.bondInput).div(new BigNumber(10).pow(decimals))\n const profit = new BigNumber(tier.profit).div(new BigNumber(10).pow(decimals))\n console.log('[ZAP] tierOptimization:', {\n tier: `${tier.previousTier} → ${tier.newTier}`,\n cost: cost.toFixed(6),\n bondInput: input.toFixed(6),\n profit: profit.toFixed(6),\n })\n }\n\n const zapLoading = isDebouncing || isLoading || isFetching\n if (zapLoading) return [true, undefined, '', false, undefined]\n\n return [zapLoading, response, estimatedDepositAmountToReturn, zapError, trueBondPrice]\n}\n\nexport default useSoulZapBondQuote\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import React from 'react';
2
2
  import { TrueBondPrices } from '../../../../types/bonds';
3
3
  import { LaunchBondTiers } from '@ape.swap/apeswap-lists';
4
- declare const BonusComponent: ({ trueBondPrices, minTier, bonus, airdropTooltip, tooltipPosition, hideTooltip, isIREET, }: {
4
+ declare const BonusComponent: ({ trueBondPrices, minTier, bonus, airdropTooltip, tooltipPosition, hideTooltip, }: {
5
5
  trueBondPrices?: TrueBondPrices[];
6
6
  minTier?: LaunchBondTiers;
7
7
  bonus?: string;
8
8
  airdropTooltip?: string;
9
9
  tooltipPosition?: "bottomRight" | "bottomLeft";
10
10
  hideTooltip?: boolean;
11
- isIREET?: boolean;
12
11
  }) => React.JSX.Element;
13
12
  export default BonusComponent;
@@ -9,35 +9,14 @@ import Flex from '../../../../components/uikit-sdk/Flex/index.js';
9
9
  import TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble/index.js';
10
10
  import Svg from '../../../../components/uikit-sdk/Svg/index.js';
11
11
 
12
- const BonusComponent = ({ trueBondPrices, minTier, bonus, airdropTooltip, tooltipPosition, hideTooltip, isIREET, }) => {
12
+ const BonusComponent = ({ trueBondPrices, minTier, bonus, airdropTooltip, tooltipPosition, hideTooltip, }) => {
13
13
  const SDKConfig = useSDKConfig();
14
14
  const isMobile = useIsMobile();
15
15
  const highestPointsElement = trueBondPrices?.reduce((max, current) => {
16
16
  return new BigNumber(current.points).isGreaterThan(new BigNumber(max.points)) ? current : max;
17
17
  }, trueBondPrices[0]);
18
18
  const baseTrueBondPrice = findHighestTrueBondPrice('0', trueBondPrices);
19
- return (jsx(Flex, { children: isIREET ? (jsx(TooltipBubble, { width: "260px", placement: tooltipPosition, transformTip: tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)', body: jsx(BonusTable, { trueBondPrices: trueBondPrices, minTier: minTier, isIREET: true }), sx: { display: hideTooltip ? 'none' : 'block' }, children: jsxs(Flex, { sx: {
20
- p: '3px 6px',
21
- border: '1px solid #9960C5',
22
- borderRadius: 'normal',
23
- background: 'transparent',
24
- position: 'relative',
25
- overflow: 'hidden',
26
- cursor: 'pointer',
27
- width: ['130px', '130px', '150px', '150px'],
28
- }, children: [jsx(Flex, { sx: {
29
- position: 'absolute',
30
- width: '100%',
31
- height: '100%',
32
- top: 0,
33
- left: 0,
34
- zIndex: 1,
35
- background: '#9960C5',
36
- opacity: 0.2,
37
- } }), jsxs(Flex, { sx: { width: '100%', zIndex: 2, alignItems: 'center', justifyContent: 'center' }, children: [isIREET ? ('🤖') : (jsx("img", { src: `https://ape.bond/images/launch/mythical.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } })), jsx(Flex, { sx: { fontSize: ['12px', '12px', '14px', '14px'], mr: '3px' }, children: "Up to" }), jsx(Flex, { sx: {
38
- color: highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? 'success' : 'error',
39
- fontSize: ['14px', '14px', '16px', '16px'],
40
- }, children: "7.00%" })] })] }) })) : trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (jsx(Flex, { sx: { alignItems: 'center', minWidth: '20px' }, children: highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (jsx(TooltipBubble, { width: "280px", placement: tooltipPosition, transformTip: tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)', body: jsx(BonusTable, { trueBondPrices: trueBondPrices, minTier: minTier }), sx: { display: hideTooltip ? 'none' : 'block' }, children: jsxs(Flex, { sx: {
19
+ return (jsx(Flex, { children: trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (jsx(Flex, { sx: { alignItems: 'center', minWidth: '20px' }, children: highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (jsx(TooltipBubble, { width: "280px", placement: tooltipPosition, transformTip: tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)', body: jsx(BonusTable, { trueBondPrices: trueBondPrices, minTier: minTier }), sx: { display: hideTooltip ? 'none' : 'block' }, children: jsxs(Flex, { sx: {
41
20
  p: '3px 6px',
42
21
  border: '1px solid #9960C5',
43
22
  borderRadius: 'normal',
@@ -1 +1 @@
1
- {"version":3,"file":"BonusComponent.js","sources":["../../../../../src/views/Bonds/components/BonusComponents/BonusComponent.tsx"],"sourcesContent":["import React from 'react'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport { BigNumber } from 'bignumber.js'\nimport BonusTable from './BonusTable'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { getDiscountColor } from '../../utils'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../../components/uikit-sdk/Svg'\n\nconst BonusComponent = ({\n trueBondPrices,\n minTier,\n bonus,\n airdropTooltip,\n tooltipPosition,\n hideTooltip,\n isIREET,\n}: {\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n bonus?: string\n airdropTooltip?: string\n tooltipPosition?: 'bottomRight' | 'bottomLeft'\n hideTooltip?: boolean\n isIREET?: boolean\n}) => {\n const SDKConfig = useSDKConfig()\n const isMobile = useIsMobile()\n const highestPointsElement = trueBondPrices?.reduce((max, current) => {\n return new BigNumber(current.points).isGreaterThan(new BigNumber(max.points)) ? current : max\n }, trueBondPrices[0])\n\n const baseTrueBondPrice = findHighestTrueBondPrice('0', trueBondPrices)\n\n return (\n <Flex>\n {isIREET ? (\n <TooltipBubble\n width=\"260px\"\n placement={tooltipPosition}\n transformTip={tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)'}\n body={<BonusTable trueBondPrices={trueBondPrices} minTier={minTier} isIREET />}\n sx={{ display: hideTooltip ? 'none' : 'block' }}\n >\n <Flex\n sx={{\n p: '3px 6px',\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n background: 'transparent',\n position: 'relative',\n overflow: 'hidden',\n cursor: 'pointer',\n width: ['130px', '130px', '150px', '150px'],\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 1,\n background: '#9960C5',\n opacity: 0.2,\n }}\n />\n <Flex sx={{ width: '100%', zIndex: 2, alignItems: 'center', justifyContent: 'center' }}>\n {isIREET ? (\n '🤖'\n ) : (\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n )}\n <Flex sx={{ fontSize: ['12px', '12px', '14px', '14px'], mr: '3px' }}>Up to</Flex>\n <Flex\n sx={{\n color:\n highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? 'success' : 'error',\n fontSize: ['14px', '14px', '16px', '16px'],\n }}\n >\n 7.00%\n </Flex>\n </Flex>\n </Flex>\n </TooltipBubble>\n ) : trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (\n <Flex sx={{ alignItems: 'center', minWidth: '20px' }}>\n {highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (\n <TooltipBubble\n width=\"280px\"\n placement={tooltipPosition}\n transformTip={tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)'}\n body={<BonusTable trueBondPrices={trueBondPrices} minTier={minTier} />}\n sx={{ display: hideTooltip ? 'none' : 'block' }}\n >\n <Flex\n sx={{\n p: '3px 6px',\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n background: 'transparent',\n position: 'relative',\n overflow: 'hidden',\n cursor: 'pointer',\n width: ['130px', '130px', '150px', '150px'],\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 1,\n background: '#9960C5',\n opacity: 0.2,\n }}\n />\n <Flex sx={{ width: '100%', zIndex: 2, alignItems: 'center', justifyContent: 'center' }}>\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n <Flex sx={{ fontSize: ['12px', '12px', '14px', '14px'], mr: '3px' }}>Up to</Flex>\n <Flex\n sx={{\n color:\n highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0\n ? 'success'\n : 'error',\n fontSize: ['14px', '14px', '16px', '16px'],\n }}\n >\n {highestPointsElement?.bonusWithFee?.toFixed(2)}%\n </Flex>\n </Flex>\n </Flex>\n </TooltipBubble>\n ) : (\n <Flex sx={{ height: '20px', width: '20px' }}>\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(10%, 0%)\"\n >\n <Svg icon=\"Timer\" width=\"20px\" color=\"#81CFEA\" />\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n ) : baseTrueBondPrice ? (\n <Flex\n sx={{ alignItems: 'center', minWidth: '20px' }}\n className={`${getDiscountColor(+baseTrueBondPrice?.bonusWithFee)}`}\n >\n {baseTrueBondPrice?.bonusWithFee > 0 ? (\n `${baseTrueBondPrice?.bonusWithFee?.toFixed(2)}%`\n ) : (\n <Flex sx={{ height: '20px', width: '20px' }}>\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(10%, 0%)\"\n >\n <Svg icon=\"Timer\" width=\"20px\" color=\"#81CFEA\" />\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n ) : (\n <Flex sx={{ color: bonus && 'success', alignItems: 'center', minWidth: '20px' }}>\n {bonus || '-'}\n {airdropTooltip && (\n <TooltipBubble\n body={<>{airdropTooltip}</>}\n width=\"230px\"\n placement={isMobile ? 'bottomRight' : 'bottomLeft'}\n transformTip={isMobile ? 'translate(9%, 6%)' : 'translate(-3%, 6%)'}\n >\n <Flex sx={{ width: '20px', height: '20px', alignItems: 'center', ml: '5px' }}>\n <img\n src=\"https://res.cloudinary.com/dswmrqgwy/image/upload/v1750345773/airdrop_qvh4ow.png\"\n alt=\"airdrop-img\"\n style={{ width: '20px', height: '20px' }}\n />\n </Flex>\n </TooltipBubble>\n )}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default BonusComponent\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"BonusComponent.js","sources":["../../../../../src/views/Bonds/components/BonusComponents/BonusComponent.tsx"],"sourcesContent":["import React from 'react'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport { BigNumber } from 'bignumber.js'\nimport BonusTable from './BonusTable'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { getDiscountColor } from '../../utils'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../../components/uikit-sdk/Svg'\n\nconst BonusComponent = ({\n trueBondPrices,\n minTier,\n bonus,\n airdropTooltip,\n tooltipPosition,\n hideTooltip,\n}: {\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n bonus?: string\n airdropTooltip?: string\n tooltipPosition?: 'bottomRight' | 'bottomLeft'\n hideTooltip?: boolean\n}) => {\n const SDKConfig = useSDKConfig()\n const isMobile = useIsMobile()\n const highestPointsElement = trueBondPrices?.reduce((max, current) => {\n return new BigNumber(current.points).isGreaterThan(new BigNumber(max.points)) ? current : max\n }, trueBondPrices[0])\n\n const baseTrueBondPrice = findHighestTrueBondPrice('0', trueBondPrices)\n\n return (\n <Flex>\n {trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (\n <Flex sx={{ alignItems: 'center', minWidth: '20px' }}>\n {highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (\n <TooltipBubble\n width=\"280px\"\n placement={tooltipPosition}\n transformTip={tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)'}\n body={<BonusTable trueBondPrices={trueBondPrices} minTier={minTier} />}\n sx={{ display: hideTooltip ? 'none' : 'block' }}\n >\n <Flex\n sx={{\n p: '3px 6px',\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n background: 'transparent',\n position: 'relative',\n overflow: 'hidden',\n cursor: 'pointer',\n width: ['130px', '130px', '150px', '150px'],\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 1,\n background: '#9960C5',\n opacity: 0.2,\n }}\n />\n <Flex sx={{ width: '100%', zIndex: 2, alignItems: 'center', justifyContent: 'center' }}>\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n <Flex sx={{ fontSize: ['12px', '12px', '14px', '14px'], mr: '3px' }}>Up to</Flex>\n <Flex\n sx={{\n color:\n highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0\n ? 'success'\n : 'error',\n fontSize: ['14px', '14px', '16px', '16px'],\n }}\n >\n {highestPointsElement?.bonusWithFee?.toFixed(2)}%\n </Flex>\n </Flex>\n </Flex>\n </TooltipBubble>\n ) : (\n <Flex sx={{ height: '20px', width: '20px' }}>\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(10%, 0%)\"\n >\n <Svg icon=\"Timer\" width=\"20px\" color=\"#81CFEA\" />\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n ) : baseTrueBondPrice ? (\n <Flex\n sx={{ alignItems: 'center', minWidth: '20px' }}\n className={`${getDiscountColor(+baseTrueBondPrice?.bonusWithFee)}`}\n >\n {baseTrueBondPrice?.bonusWithFee > 0 ? (\n `${baseTrueBondPrice?.bonusWithFee?.toFixed(2)}%`\n ) : (\n <Flex sx={{ height: '20px', width: '20px' }}>\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(10%, 0%)\"\n >\n <Svg icon=\"Timer\" width=\"20px\" color=\"#81CFEA\" />\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n ) : (\n <Flex sx={{ color: bonus && 'success', alignItems: 'center', minWidth: '20px' }}>\n {bonus || '-'}\n {airdropTooltip && (\n <TooltipBubble\n body={<>{airdropTooltip}</>}\n width=\"230px\"\n placement={isMobile ? 'bottomRight' : 'bottomLeft'}\n transformTip={isMobile ? 'translate(9%, 6%)' : 'translate(-3%, 6%)'}\n >\n <Flex sx={{ width: '20px', height: '20px', alignItems: 'center', ml: '5px' }}>\n <img\n src=\"https://res.cloudinary.com/dswmrqgwy/image/upload/v1750345773/airdrop_qvh4ow.png\"\n alt=\"airdrop-img\"\n style={{ width: '20px', height: '20px' }}\n />\n </Flex>\n </TooltipBubble>\n )}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default BonusComponent\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
2
  import { TrueBondPrices } from '../../../../types/bonds';
3
3
  import { LaunchBondTiers } from '@ape.swap/apeswap-lists';
4
- declare const BonusTable: ({ trueBondPrices, minTier, hideTitle, isIREET, }: {
4
+ declare const BonusTable: ({ trueBondPrices, minTier, hideTitle, }: {
5
5
  trueBondPrices?: TrueBondPrices[];
6
6
  minTier?: LaunchBondTiers;
7
7
  hideTitle?: boolean;
8
- isIREET?: boolean;
9
8
  }) => React.JSX.Element;
10
9
  export default BonusTable;
@@ -5,57 +5,12 @@ import useTierPoints, { getUserTier, TIERS_BG, TIERS_NAMES } from '../../../../s
5
5
  import { BigNumber } from 'bignumber.js';
6
6
  import YouTooltip from '../../../../components/YouTooltip/YouTooltip.js';
7
7
  import { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers.js';
8
- import TokenImage from '../../../../components/uikit-sdk/TokenImage/index.js';
9
8
 
10
- const BonusTable = ({ trueBondPrices, minTier, hideTitle, isIREET, }) => {
9
+ const BonusTable = ({ trueBondPrices, minTier, hideTitle, }) => {
11
10
  const { data: tierPointsState } = useTierPoints();
12
- const { promotionalPoints } = tierPointsState || {};
13
- const usersTrueBondPrices = findHighestTrueBondPrice(promotionalPoints, trueBondPrices);
14
- return isIREET ? (jsxs(Flex, { sx: { width: '100%', flexDirection: 'column' }, children: [jsx(Flex, { sx: { width: '100%', justifyContent: 'center', mb: '10px' }, children: "Bonus Breakdown" }), jsxs(Flex, { sx: {
15
- width: '100%',
16
- flexDirection: 'column',
17
- borderRadius: 'normal',
18
- overflow: 'hidden',
19
- fontWeight: 400,
20
- // color: 'textDisabledButton',
21
- '& > :nth-of-type(even)': {
22
- background: 'white3',
23
- },
24
- '& > :nth-of-type(odd)': {
25
- background: 'white4',
26
- },
27
- }, children: [jsxs(Flex, { sx: { width: '100%', justifyContent: 'space-between', p: '5px' }, children: [jsxs(Flex, { sx: { alignItems: 'center', gap: '3px' }, children: ["Base ", jsx(TokenImage, { symbol: 'ireet', size: 15 }), "iREET Bonus"] }), jsx(Flex, { sx: {
28
- color: 'success',
29
- fontWeight: 700,
30
- border: '1px solid var(--theme-ui-colors-success)',
31
- borderRadius: 'normal',
32
- px: '4px',
33
- alignItems: 'center',
34
- }, children: "+3%" })] }), jsx(Flex, { sx: { width: '100%', justifyContent: 'space-between', p: '5px' }, children: jsx(Flex, { sx: { alignItems: 'center', gap: '3px' }, children: "If Bond sells out by April 21st:" }) }), jsxs(Flex, { sx: { flex: 1, justifyContent: 'space-between', p: '5px' }, children: [jsxs("div", { style: { flex: 1 }, children: ["Extra", ' ', jsx("span", { style: { display: 'inline-block', verticalAlign: 'middle' }, children: jsx(TokenImage, { symbol: 'pmusd', size: 15 }) }), ' ', "pmUSD Bonus for non-RAAC Bot holders*"] }), jsx(Flex, { sx: {
35
- color: 'success',
36
- fontWeight: 700,
37
- border: '1px solid var(--theme-ui-colors-success)',
38
- borderRadius: 'normal',
39
- px: '4px',
40
- alignItems: 'center',
41
- height: '19px',
42
- }, children: "+2%" })] }), jsxs(Flex, { sx: { width: '100%', justifyContent: 'space-between', p: '5px' }, children: [jsxs("div", { style: { flex: 1 }, children: ["Extra", ' ', jsx("span", { style: { display: 'inline-block', verticalAlign: 'middle' }, children: jsx(TokenImage, { symbol: 'pmusd', size: 15 }) }), ' ', "pmUSD Bonus for RAAC Bot holders*"] }), jsx(Flex, { sx: {
43
- color: 'success',
44
- fontWeight: 700,
45
- border: '1px solid var(--theme-ui-colors-success)',
46
- borderRadius: 'normal',
47
- px: '4px',
48
- alignItems: 'center',
49
- height: '19px',
50
- minWidth: '35px',
51
- }, children: "+4%" })] })] }), jsx("div", { sx: {
52
- flex: 1,
53
- alignItems: 'center',
54
- fontWeight: 500,
55
- color: 'textDisabledButton',
56
- fontStyle: 'italic',
57
- mt: '10px',
58
- }, children: "* Extra rewards to be distributed in pmUSD by RAAC at bond maturity." })] })) : (jsxs(Flex, { sx: { width: '100%', flexDirection: 'column' }, children: [!hideTitle && jsx(Flex, { sx: { width: '100%', justifyContent: 'center', mb: '10px' }, children: "Ape Tier Bonuses" }), trueBondPrices
11
+ const { onChainPoints } = tierPointsState || {};
12
+ const usersTrueBondPrices = findHighestTrueBondPrice(onChainPoints, trueBondPrices);
13
+ return (jsxs(Flex, { sx: { width: '100%', flexDirection: 'column' }, children: [!hideTitle && jsx(Flex, { sx: { width: '100%', justifyContent: 'center', mb: '10px' }, children: "Ape Tier Bonuses" }), trueBondPrices
59
14
  ?.sort((a, b) => new BigNumber(b.points).minus(new BigNumber(a.points)).toNumber())
60
15
  .map((tier) => {
61
16
  const tierToUse = getUserTier(tier.points);