@b3dotfun/sdk 0.0.49 → 0.0.50-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.
Files changed (164) hide show
  1. package/dist/cjs/anyspend/constants/index.d.ts +1 -0
  2. package/dist/cjs/anyspend/constants/index.js +12 -2
  3. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +2 -1
  4. package/dist/cjs/anyspend/react/components/AnySpend.js +18 -5
  5. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +12 -3
  6. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +11 -4
  7. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.d.ts +3 -1
  8. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +2 -2
  9. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.d.ts +3 -1
  10. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.js +17 -11
  11. package/dist/cjs/anyspend/react/components/common/FeeBreakDown.d.ts +12 -0
  12. package/dist/cjs/anyspend/react/components/common/FeeBreakDown.js +19 -0
  13. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.d.ts +8 -0
  14. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +116 -0
  15. package/dist/cjs/anyspend/react/components/common/OrderDetails.d.ts +1 -0
  16. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +6 -6
  17. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.d.ts +1 -0
  18. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +3 -2
  19. package/dist/cjs/anyspend/react/components/common/OrderToken.js +1 -1
  20. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +1 -1
  21. package/dist/cjs/anyspend/react/components/common/OrderTokenAmountFiat.js +1 -1
  22. package/dist/cjs/anyspend/react/components/common/OrderTokenAmountNew.js +1 -1
  23. package/dist/cjs/anyspend/react/components/common/PanelOnramp.d.ts +2 -1
  24. package/dist/cjs/anyspend/react/components/common/PanelOnramp.js +36 -21
  25. package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +2 -1
  26. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -2
  27. package/dist/cjs/anyspend/react/contexts/FeatureFlagsContext.js +1 -1
  28. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +3 -1
  29. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +1 -0
  30. package/dist/cjs/anyspend/react/hooks/useAnyspendOrderHistory.d.ts +48 -12
  31. package/dist/cjs/anyspend/types/api.d.ts +133 -178
  32. package/dist/cjs/anyspend/utils/chain.js +4 -4
  33. package/dist/cjs/bondkit/bondkitToken.d.ts +3 -1
  34. package/dist/cjs/bondkit/bondkitToken.js +19 -0
  35. package/dist/cjs/bondkit/components/TradingView.d.ts +1 -1
  36. package/dist/cjs/bondkit/components/TradingView.js +14 -3
  37. package/dist/cjs/bondkit/components/index.d.ts +1 -1
  38. package/dist/cjs/bondkit/components/index.js +1 -1
  39. package/dist/cjs/bondkit/components/types.d.ts +1 -0
  40. package/dist/cjs/bondkit/config.d.ts +1 -0
  41. package/dist/cjs/bondkit/config.js +1 -0
  42. package/dist/cjs/bondkit/index.d.ts +1 -1
  43. package/dist/cjs/bondkit/index.js +2 -6
  44. package/dist/cjs/bondkit/types.d.ts +15 -0
  45. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +1 -1
  46. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +1 -1
  47. package/dist/cjs/global-account/react/components/B3Provider/RelayKitProviderWrapper.js +2 -2
  48. package/dist/cjs/global-account/react/components/ui/tooltip.js +1 -1
  49. package/dist/cjs/global-account/react/hooks/useAuthentication.js +11 -0
  50. package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +7670 -1
  51. package/dist/cjs/global-account/react/hooks/useFirstEOA.js +21 -1
  52. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +9 -3
  53. package/dist/cjs/shared/generated/chain-networks.json +40 -7
  54. package/dist/esm/anyspend/constants/index.d.ts +1 -0
  55. package/dist/esm/anyspend/constants/index.js +11 -1
  56. package/dist/esm/anyspend/react/components/AnySpend.d.ts +2 -1
  57. package/dist/esm/anyspend/react/components/AnySpend.js +18 -5
  58. package/dist/esm/anyspend/react/components/AnySpendCustom.js +14 -5
  59. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +11 -4
  60. package/dist/esm/anyspend/react/components/common/CryptoPaySection.d.ts +3 -1
  61. package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +4 -4
  62. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.d.ts +3 -1
  63. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.js +19 -13
  64. package/dist/esm/anyspend/react/components/common/FeeBreakDown.d.ts +12 -0
  65. package/dist/esm/anyspend/react/components/common/FeeBreakDown.js +16 -0
  66. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.d.ts +8 -0
  67. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +113 -0
  68. package/dist/esm/anyspend/react/components/common/OrderDetails.d.ts +1 -0
  69. package/dist/esm/anyspend/react/components/common/OrderDetails.js +6 -6
  70. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.d.ts +1 -0
  71. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +4 -3
  72. package/dist/esm/anyspend/react/components/common/OrderToken.js +1 -1
  73. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +1 -1
  74. package/dist/esm/anyspend/react/components/common/OrderTokenAmountFiat.js +1 -1
  75. package/dist/esm/anyspend/react/components/common/OrderTokenAmountNew.js +1 -1
  76. package/dist/esm/anyspend/react/components/common/PanelOnramp.d.ts +2 -1
  77. package/dist/esm/anyspend/react/components/common/PanelOnramp.js +38 -23
  78. package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +2 -1
  79. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +2 -3
  80. package/dist/esm/anyspend/react/contexts/FeatureFlagsContext.js +1 -1
  81. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +3 -1
  82. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +1 -0
  83. package/dist/esm/anyspend/react/hooks/useAnyspendOrderHistory.d.ts +48 -12
  84. package/dist/esm/anyspend/types/api.d.ts +133 -178
  85. package/dist/esm/anyspend/utils/chain.js +4 -4
  86. package/dist/esm/bondkit/bondkitToken.d.ts +3 -1
  87. package/dist/esm/bondkit/bondkitToken.js +19 -0
  88. package/dist/esm/bondkit/components/TradingView.d.ts +1 -1
  89. package/dist/esm/bondkit/components/TradingView.js +14 -3
  90. package/dist/esm/bondkit/components/index.d.ts +1 -1
  91. package/dist/esm/bondkit/components/index.js +1 -1
  92. package/dist/esm/bondkit/components/types.d.ts +1 -0
  93. package/dist/esm/bondkit/config.d.ts +1 -0
  94. package/dist/esm/bondkit/config.js +1 -0
  95. package/dist/esm/bondkit/index.d.ts +1 -1
  96. package/dist/esm/bondkit/index.js +1 -1
  97. package/dist/esm/bondkit/types.d.ts +15 -0
  98. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +1 -1
  99. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +1 -1
  100. package/dist/esm/global-account/react/components/B3Provider/RelayKitProviderWrapper.js +2 -2
  101. package/dist/esm/global-account/react/components/ui/tooltip.js +1 -1
  102. package/dist/esm/global-account/react/hooks/useAuthentication.js +11 -0
  103. package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +7670 -1
  104. package/dist/esm/global-account/react/hooks/useFirstEOA.js +22 -2
  105. package/dist/esm/shared/constants/chains/b3Chain.d.ts +9 -3
  106. package/dist/esm/shared/generated/chain-networks.json +40 -7
  107. package/dist/styles/index.css +1 -1
  108. package/dist/types/anyspend/constants/index.d.ts +1 -0
  109. package/dist/types/anyspend/react/components/AnySpend.d.ts +2 -1
  110. package/dist/types/anyspend/react/components/common/CryptoPaySection.d.ts +3 -1
  111. package/dist/types/anyspend/react/components/common/CryptoReceiveSection.d.ts +3 -1
  112. package/dist/types/anyspend/react/components/common/FeeBreakDown.d.ts +12 -0
  113. package/dist/types/anyspend/react/components/common/FeeDetailPanel.d.ts +8 -0
  114. package/dist/types/anyspend/react/components/common/OrderDetails.d.ts +1 -0
  115. package/dist/types/anyspend/react/components/common/OrderDetailsCollapsible.d.ts +1 -0
  116. package/dist/types/anyspend/react/components/common/PanelOnramp.d.ts +2 -1
  117. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +3 -1
  118. package/dist/types/anyspend/react/hooks/useAnyspendOrderHistory.d.ts +48 -12
  119. package/dist/types/anyspend/types/api.d.ts +133 -178
  120. package/dist/types/bondkit/bondkitToken.d.ts +3 -1
  121. package/dist/types/bondkit/components/TradingView.d.ts +1 -1
  122. package/dist/types/bondkit/components/index.d.ts +1 -1
  123. package/dist/types/bondkit/components/types.d.ts +1 -0
  124. package/dist/types/bondkit/config.d.ts +1 -0
  125. package/dist/types/bondkit/index.d.ts +1 -1
  126. package/dist/types/bondkit/types.d.ts +15 -0
  127. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +1 -1
  128. package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +7670 -1
  129. package/dist/types/shared/constants/chains/b3Chain.d.ts +9 -3
  130. package/package.json +5 -5
  131. package/src/anyspend/constants/index.ts +12 -1
  132. package/src/anyspend/react/components/AnySpend.tsx +33 -0
  133. package/src/anyspend/react/components/AnySpendCustom.tsx +69 -7
  134. package/src/anyspend/react/components/AnyspendDepositHype.tsx +24 -0
  135. package/src/anyspend/react/components/common/CryptoPaySection.tsx +14 -2
  136. package/src/anyspend/react/components/common/CryptoReceiveSection.tsx +31 -11
  137. package/src/anyspend/react/components/common/FeeBreakDown.tsx +105 -0
  138. package/src/anyspend/react/components/common/FeeDetailPanel.tsx +334 -0
  139. package/src/anyspend/react/components/common/OrderDetails.tsx +7 -0
  140. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +16 -0
  141. package/src/anyspend/react/components/common/OrderToken.tsx +1 -1
  142. package/src/anyspend/react/components/common/OrderTokenAmount.tsx +1 -1
  143. package/src/anyspend/react/components/common/OrderTokenAmountFiat.tsx +1 -1
  144. package/src/anyspend/react/components/common/OrderTokenAmountNew.tsx +1 -1
  145. package/src/anyspend/react/components/common/PanelOnramp.tsx +58 -27
  146. package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +18 -6
  147. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -13
  148. package/src/anyspend/react/contexts/FeatureFlagsContext.tsx +2 -2
  149. package/src/anyspend/react/hooks/useAnyspendFlow.ts +1 -0
  150. package/src/anyspend/types/api.ts +135 -178
  151. package/src/anyspend/utils/chain.ts +4 -4
  152. package/src/bondkit/bondkitToken.ts +24 -0
  153. package/src/bondkit/components/TradingView.tsx +15 -3
  154. package/src/bondkit/components/index.ts +1 -1
  155. package/src/bondkit/components/types.ts +1 -0
  156. package/src/bondkit/config.ts +2 -0
  157. package/src/bondkit/index.ts +1 -1
  158. package/src/bondkit/types.ts +19 -0
  159. package/src/global-account/react/components/B3Provider/B3Provider.tsx +1 -1
  160. package/src/global-account/react/components/B3Provider/RelayKitProviderWrapper.tsx +2 -2
  161. package/src/global-account/react/components/ui/tooltip.tsx +11 -9
  162. package/src/global-account/react/hooks/useAuthentication.ts +13 -1
  163. package/src/global-account/react/hooks/useFirstEOA.tsx +20 -2
  164. package/src/shared/generated/chain-networks.json +40 -7
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useFirstEOA = useFirstEOA;
4
4
  const react_1 = require("../../../global-account/react");
5
5
  const debug_1 = require("../../../shared/utils/debug");
6
+ const thirdweb_1 = require("../../../shared/utils/thirdweb");
6
7
  const react_2 = require("react");
8
+ const viem_1 = require("thirdweb/adapters/viem");
7
9
  const react_3 = require("thirdweb/react");
8
10
  const debug = (0, debug_1.debugB3React)("useFirstEOA");
9
- function useFirstEOA() {
11
+ function useFirstEOA(chain) {
10
12
  const wallets = (0, react_3.useConnectedWallets)();
11
13
  const isConnected = (0, react_1.useAuthStore)(state => state.isConnected);
12
14
  const [firstEOA, setFirstEOA] = (0, react_2.useState)(undefined);
@@ -33,9 +35,27 @@ function useFirstEOA() {
33
35
  };
34
36
  autoSelectFirstEOAWallet();
35
37
  }, [isConnected, wallets]);
38
+ const walletClient = (0, react_2.useMemo)(() => {
39
+ if (!firstEOA)
40
+ return undefined;
41
+ if (!chain)
42
+ return undefined;
43
+ try {
44
+ const viemClientWallet = viem_1.viemAdapter.wallet.toViem({
45
+ client: thirdweb_1.client,
46
+ chain,
47
+ wallet: firstEOA,
48
+ });
49
+ return viemClientWallet;
50
+ }
51
+ catch (err) {
52
+ console.error("Error setting wallet client", err);
53
+ }
54
+ }, [firstEOA, chain]);
36
55
  return {
37
56
  account: firstEOA,
38
57
  address,
39
58
  info: walletInfo,
59
+ walletClient,
40
60
  };
41
61
  }
@@ -12,6 +12,7 @@ export declare const b3Mainnet: {
12
12
  readonly url: "https://explorer.b3.fun";
13
13
  };
14
14
  };
15
+ blockTime?: number | undefined | undefined;
15
16
  contracts?: {
16
17
  [x: string]: import("viem").ChainContract | {
17
18
  [sourceId: number]: import("viem").ChainContract | undefined;
@@ -19,7 +20,7 @@ export declare const b3Mainnet: {
19
20
  ensRegistry?: import("viem").ChainContract | undefined;
20
21
  ensUniversalResolver?: import("viem").ChainContract | undefined;
21
22
  multicall3?: import("viem").ChainContract | undefined;
22
- universalSignatureVerifier?: import("viem").ChainContract | undefined;
23
+ erc6492Verifier?: import("viem").ChainContract | undefined;
23
24
  } | undefined;
24
25
  ensTlds?: readonly string[] | undefined;
25
26
  id: 8333;
@@ -29,6 +30,7 @@ export declare const b3Mainnet: {
29
30
  readonly symbol: "ETH";
30
31
  readonly decimals: 18;
31
32
  };
33
+ experimental_preconfirmationTime?: number | undefined | undefined;
32
34
  rpcUrls: {
33
35
  readonly default: {
34
36
  readonly http: readonly ["https://mainnet-rpc.b3.fun"];
@@ -56,6 +58,7 @@ export declare const getViemChainConfig: (config: ChainNetworks) => {
56
58
  readonly url: string;
57
59
  };
58
60
  };
61
+ blockTime?: number | undefined | undefined;
59
62
  contracts?: {
60
63
  [x: string]: import("viem").ChainContract | {
61
64
  [sourceId: number]: import("viem").ChainContract | undefined;
@@ -63,7 +66,7 @@ export declare const getViemChainConfig: (config: ChainNetworks) => {
63
66
  ensRegistry?: import("viem").ChainContract | undefined;
64
67
  ensUniversalResolver?: import("viem").ChainContract | undefined;
65
68
  multicall3?: import("viem").ChainContract | undefined;
66
- universalSignatureVerifier?: import("viem").ChainContract | undefined;
69
+ erc6492Verifier?: import("viem").ChainContract | undefined;
67
70
  } | undefined;
68
71
  ensTlds?: readonly string[] | undefined;
69
72
  id: number;
@@ -73,6 +76,7 @@ export declare const getViemChainConfig: (config: ChainNetworks) => {
73
76
  name: string;
74
77
  decimals: number;
75
78
  };
79
+ experimental_preconfirmationTime?: number | undefined | undefined;
76
80
  rpcUrls: {
77
81
  readonly default: {
78
82
  readonly http: readonly [string];
@@ -103,6 +107,7 @@ export declare const b3Chain: Chain | {
103
107
  readonly url: "https://explorer.b3.fun";
104
108
  };
105
109
  };
110
+ blockTime?: number | undefined | undefined;
106
111
  contracts?: {
107
112
  [x: string]: import("viem").ChainContract | {
108
113
  [sourceId: number]: import("viem").ChainContract | undefined;
@@ -110,7 +115,7 @@ export declare const b3Chain: Chain | {
110
115
  ensRegistry?: import("viem").ChainContract | undefined;
111
116
  ensUniversalResolver?: import("viem").ChainContract | undefined;
112
117
  multicall3?: import("viem").ChainContract | undefined;
113
- universalSignatureVerifier?: import("viem").ChainContract | undefined;
118
+ erc6492Verifier?: import("viem").ChainContract | undefined;
114
119
  } | undefined;
115
120
  ensTlds?: readonly string[] | undefined;
116
121
  id: 8333;
@@ -120,6 +125,7 @@ export declare const b3Chain: Chain | {
120
125
  readonly symbol: "ETH";
121
126
  readonly decimals: 18;
122
127
  };
128
+ experimental_preconfirmationTime?: number | undefined | undefined;
123
129
  rpcUrls: {
124
130
  readonly default: {
125
131
  readonly http: readonly ["https://mainnet-rpc.b3.fun"];
@@ -65,7 +65,7 @@
65
65
  {
66
66
  "_id": "66f2044afe5a3ac32a1de9ff",
67
67
  "id": 8453,
68
- "name": "Base Mainnet",
68
+ "name": "Base",
69
69
  "rpcUrls": {
70
70
  "default": {
71
71
  "http": "https://base-rpc.publicnode.com",
@@ -524,7 +524,7 @@
524
524
  "testnet": true,
525
525
  "badge": "https://cdn.b3.fun/b4-logo.png",
526
526
  "color": "#3368ef",
527
- "enabledFeatures": ["explorer"]
527
+ "enabledFeatures": ["explorer", "basement"]
528
528
  },
529
529
  {
530
530
  "_id": "684afdec4a478ffb44a4f83f",
@@ -620,7 +620,7 @@
620
620
  "enabledFeatures": ["explorer"]
621
621
  },
622
622
  {
623
- "_id": "68a351c603e65c07b7645581",
623
+ "_id": "68aefec4130155af4cf50711",
624
624
  "id": 1448000,
625
625
  "name": "XRPLT",
626
626
  "rpcUrls": {
@@ -631,21 +631,54 @@
631
631
  "backups": []
632
632
  },
633
633
  "icon": {
634
- "url": "https://cdn.b3.fun/xrpl_logo.svg",
634
+ "url": "https://cdn.b3.fun/xrpl-black.svg",
635
635
  "width": 32,
636
636
  "height": 32,
637
637
  "format": "svg"
638
638
  },
639
639
  "blockExplorers": {
640
- "default": "https://xrplt.explorer.caldera.xyz/",
640
+ "default": "https://xrplt.explorer.caldera.xyz",
641
641
  "explorerTitle": "XRPLT Explorer"
642
642
  },
643
643
  "nativeCurrency": {
644
644
  "name": "XRP",
645
645
  "symbol": "XRP",
646
- "decimals": 18
646
+ "decimals": 6
647
647
  },
648
648
  "testnet": true,
649
- "enabledFeatures": ["xcade", "explorer"]
649
+ "badge": "https://cdn.b3.fun/xrpl-black.svg",
650
+ "color": "#000000",
651
+ "enabledFeatures": ["basement", "explorer"]
652
+ },
653
+ {
654
+ "_id": "68eabd8a234b8958b152d6e0",
655
+ "id": 2741,
656
+ "name": "Abstract",
657
+ "rpcUrls": {
658
+ "default": {
659
+ "http": "https://cosmopolitan-nameless-mountain.abstract-mainnet.quiknode.pro/863853304b986b582bdacf625ce3350397c560f8/",
660
+ "ws": "wss://cosmopolitan-nameless-mountain.abstract-mainnet.quiknode.pro/863853304b986b582bdacf625ce3350397c560f8/"
661
+ },
662
+ "backups": []
663
+ },
664
+ "icon": {
665
+ "url": "https://assets.relay.link/icons/square/2741/light.png",
666
+ "width": 261,
667
+ "height": 261,
668
+ "format": "png"
669
+ },
670
+ "blockExplorers": {
671
+ "default": "https://abscan.org",
672
+ "explorerTitle": "Abscan"
673
+ },
674
+ "nativeCurrency": {
675
+ "name": "ETH",
676
+ "symbol": "ETH",
677
+ "decimals": 18
678
+ },
679
+ "testnet": false,
680
+ "badge": "https://assets.relay.link/icons/square/2741/light.png",
681
+ "color": "#6eb998",
682
+ "enabledFeatures": ["basement"]
650
683
  }
651
684
  ]
@@ -6,6 +6,7 @@ export declare const RELAY_SOLANA_MAINNET_CHAIN_ID = 792703809;
6
6
  export declare const SOLANA_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
7
7
  export declare const SOLANA_TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
8
8
  export declare const B3_TOKEN: components["schemas"]["Token"];
9
+ export declare const ANYSPEND_TOKEN: components["schemas"]["Token"];
9
10
  export declare const USDC_BASE: components["schemas"]["Token"];
10
11
  export declare const ETH_BASE: components["schemas"]["Token"];
11
12
  export declare const NFT_CONTRACTS: components["schemas"]["NftContract"][];
@@ -6,7 +6,7 @@ export const RELAY_SOLANA_MAINNET_CHAIN_ID = 792703809;
6
6
  export const SOLANA_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
7
7
  export const SOLANA_TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
8
8
  export const B3_TOKEN = {
9
- chainId: 8453,
9
+ chainId: base.id,
10
10
  address: "0xb3b32f9f8827d4634fe7d973fa1034ec9fddb3b3",
11
11
  decimals: 18,
12
12
  name: "B3",
@@ -15,6 +15,16 @@ export const B3_TOKEN = {
15
15
  logoURI: "https://s2.coinmarketcap.com/static/img/coins/64x64/35690.png",
16
16
  },
17
17
  };
18
+ export const ANYSPEND_TOKEN = {
19
+ chainId: base.id,
20
+ address: "0xc17dda248e2d50fc006d8febb5a406dd31972712",
21
+ decimals: 18,
22
+ name: "Anyspend",
23
+ symbol: "ANY",
24
+ metadata: {
25
+ logoURI: "https://cdn.b3.fun/anyspend_64x64.png",
26
+ },
27
+ };
18
28
  export const USDC_BASE = {
19
29
  symbol: "USDC",
20
30
  chainId: base.id,
@@ -14,7 +14,8 @@ export declare enum PanelView {
14
14
  RECIPIENT_SELECTION = 5,
15
15
  CRYPTO_PAYMENT_METHOD = 6,
16
16
  FIAT_PAYMENT_METHOD = 7,
17
- POINTS_DETAIL = 8
17
+ POINTS_DETAIL = 8,
18
+ FEE_DETAIL = 9
18
19
  }
19
20
  export declare function AnySpend(props: {
20
21
  mode?: "page" | "modal";
@@ -22,6 +22,7 @@ import { OrderHistory } from "./common/OrderHistory.js";
22
22
  import { PanelOnramp } from "./common/PanelOnramp.js";
23
23
  import { PanelOnrampPayment } from "./common/PanelOnrampPayment.js";
24
24
  import { PointsDetailPanel } from "./common/PointsDetailPanel.js";
25
+ import { FeeDetailPanel } from "./common/FeeDetailPanel.js";
25
26
  import { RecipientSelection } from "./common/RecipientSelection.js";
26
27
  import { TabSection } from "./common/TabSection.js";
27
28
  export var PanelView;
@@ -35,6 +36,7 @@ export var PanelView;
35
36
  PanelView[PanelView["CRYPTO_PAYMENT_METHOD"] = 6] = "CRYPTO_PAYMENT_METHOD";
36
37
  PanelView[PanelView["FIAT_PAYMENT_METHOD"] = 7] = "FIAT_PAYMENT_METHOD";
37
38
  PanelView[PanelView["POINTS_DETAIL"] = 8] = "POINTS_DETAIL";
39
+ PanelView[PanelView["FEE_DETAIL"] = 9] = "FEE_DETAIL";
38
40
  })(PanelView || (PanelView = {}));
39
41
  const ANYSPEND_RECIPIENTS_KEY = "anyspend_recipients";
40
42
  export function AnySpend(props) {
@@ -458,10 +460,18 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
458
460
  toast.error("Failed to create order: " + error.message);
459
461
  },
460
462
  });
463
+ // Check if it's a same-chain same-token swap
464
+ const isSameChainSameToken = useMemo(() => {
465
+ return (activeTab === "crypto" &&
466
+ selectedSrcChainId === selectedDstChainId &&
467
+ selectedSrcToken.address.toLowerCase() === selectedDstToken.address.toLowerCase());
468
+ }, [activeTab, selectedSrcChainId, selectedDstChainId, selectedSrcToken.address, selectedDstToken.address]);
461
469
  // Determine button state and text
462
470
  const btnInfo = useMemo(() => {
463
471
  if (activeInputAmountInWei === "0")
464
472
  return { text: "Enter an amount", disable: true, error: false, loading: false };
473
+ if (isSameChainSameToken)
474
+ return { text: "Select a different token or chain", disable: true, error: false, loading: false };
465
475
  if (isLoadingAnyspendQuote)
466
476
  return { text: "Loading quote...", disable: true, error: false, loading: true };
467
477
  if (!recipientAddress)
@@ -495,6 +505,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
495
505
  return { text: "Buy", disable: false, error: false, loading: false };
496
506
  }, [
497
507
  activeInputAmountInWei,
508
+ isSameChainSameToken,
498
509
  isLoadingAnyspendQuote,
499
510
  recipientAddress,
500
511
  isCreatingOrder,
@@ -711,12 +722,12 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
711
722
  };
712
723
  }, [activePanel, navigateBack]);
713
724
  const historyView = (_jsx("div", { className: "mx-auto flex w-[560px] max-w-full flex-col items-center", children: _jsx(OrderHistory, { mode: mode, onBack: navigateBack, onSelectOrder: onSelectOrder }) }));
714
- const orderDetailsView = (_jsx("div", { className: "mx-auto w-[460px] max-w-full", children: _jsx("div", { className: "relative flex flex-col gap-4", children: oat && (_jsx(OrderDetails, { mode: mode, order: oat.data.order, depositTxs: oat.data.depositTxs, relayTxs: oat.data.relayTxs, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onPaymentMethodChange: setSelectedCryptoPaymentMethod, onBack: () => {
725
+ const orderDetailsView = (_jsx("div", { className: "mx-auto w-[460px] max-w-full", children: _jsx("div", { className: "relative flex flex-col gap-4", children: oat && (_jsx(OrderDetails, { mode: mode, order: oat.data.order, depositTxs: oat.data.depositTxs, relayTxs: oat.data.relayTxs, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onPaymentMethodChange: setSelectedCryptoPaymentMethod, points: oat.data.points || undefined, onBack: () => {
715
726
  setOrderId(undefined);
716
727
  navigateBack();
717
728
  setSelectedCryptoPaymentMethod(CryptoPaymentMethodType.NONE); // Reset payment method when going back
718
729
  } })) }) }));
719
- const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [isBuyMode && (_jsxs("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: [selectedDstToken.metadata?.logoURI && (_jsx("div", { className: "relative", children: _jsx("img", { src: selectedDstToken.metadata.logoURI, alt: selectedDstToken.symbol, className: "border-as-stroke h-12 w-12 rounded-full border-2 shadow-md" }) })), _jsx("div", { children: _jsxs("h1", { className: "text-as-primary text-xl font-bold", children: ["Buy ", selectedDstToken.symbol] }) })] })), _jsx(TabSection, { activeTab: activeTab, setActiveTab: setActiveTab, setSelectedCryptoPaymentMethod: setSelectedCryptoPaymentMethod, setSelectedFiatPaymentMethod: setSelectedFiatPaymentMethod }), _jsxs("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [activeTab === "crypto" ? (_jsx(CryptoPaySection, { selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod: () => navigateToPanel(PanelView.CRYPTO_PAYMENT_METHOD, "forward"), anyspendQuote: anyspendQuote, onTokenSelect: onTokenSelect })) : (_jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, children: _jsx(PanelOnramp, { srcAmountOnRamp: srcAmountOnRamp, setSrcAmountOnRamp: setSrcAmountOnRamp, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: (panelIndex) => {
730
+ const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [isBuyMode && (_jsxs("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: [selectedDstToken.metadata?.logoURI && (_jsx("div", { className: "relative", children: _jsx("img", { src: selectedDstToken.metadata.logoURI, alt: selectedDstToken.symbol, className: "border-as-stroke h-12 w-12 rounded-full border-2 shadow-md" }) })), _jsx("div", { children: _jsxs("h1", { className: "text-as-primary text-xl font-bold", children: ["Buy ", selectedDstToken.symbol] }) })] })), _jsx(TabSection, { activeTab: activeTab, setActiveTab: setActiveTab, setSelectedCryptoPaymentMethod: setSelectedCryptoPaymentMethod, setSelectedFiatPaymentMethod: setSelectedFiatPaymentMethod }), _jsxs("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [activeTab === "crypto" ? (_jsx(CryptoPaySection, { selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, isSrcInputDirty: isSrcInputDirty, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod: () => navigateToPanel(PanelView.CRYPTO_PAYMENT_METHOD, "forward"), anyspendQuote: anyspendQuote, onTokenSelect: onTokenSelect, onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward") })) : (_jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, children: _jsx(PanelOnramp, { srcAmountOnRamp: srcAmountOnRamp, setSrcAmountOnRamp: setSrcAmountOnRamp, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: (panelIndex) => {
720
731
  // Map panel index to navigation with direction
721
732
  const panelsWithForwardNav = [PanelView.FIAT_PAYMENT_METHOD, PanelView.RECIPIENT_SELECTION];
722
733
  if (panelsWithForwardNav.includes(panelIndex)) {
@@ -725,7 +736,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
725
736
  else {
726
737
  setActivePanel(panelIndex);
727
738
  }
728
- }, _recipientAddress: recipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), customUsdInputValues: customUsdInputValues }) })), _jsx(Button, { variant: "ghost", className: cn("border-as-stroke bg-as-surface-primary absolute left-1/2 top-1/2 z-10 h-10 w-10 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "top-[calc(50%+56px)] cursor-default", activeTab === "fiat" && "hidden"), onClick: () => {
739
+ }, _recipientAddress: recipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward"), customUsdInputValues: customUsdInputValues }) })), _jsx(Button, { variant: "ghost", className: cn("border-as-stroke bg-as-surface-primary absolute left-1/2 top-1/2 z-10 h-10 w-10 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "top-[calc(50%+56px)] cursor-default", activeTab === "fiat" && "hidden"), onClick: () => {
729
740
  if (activeTab === "fiat" || isBuyMode) {
730
741
  return;
731
742
  }
@@ -744,10 +755,10 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
744
755
  const tempDstAmount = dstAmount;
745
756
  setSrcAmount(tempDstAmount);
746
757
  setDstAmount(tempSrcAmount);
747
- }, children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }), activeTab === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: isBuyMode, selectedRecipientAddress: recipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => navigateToPanel(PanelView.RECIPIENT_SELECTION, "forward"), dstAmount: dstAmount, dstToken: selectedDstToken, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: setSelectedDstChainId, setSelectedDstToken: setSelectedDstToken, onChangeDstAmount: value => {
758
+ }, children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }), activeTab === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: isBuyMode, selectedRecipientAddress: recipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => navigateToPanel(PanelView.RECIPIENT_SELECTION, "forward"), dstAmount: dstAmount, dstToken: selectedDstToken, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: setSelectedDstChainId, setSelectedDstToken: setSelectedDstToken, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
748
759
  setIsSrcInputDirty(false);
749
760
  setDstAmount(value);
750
- }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward") }))] }), _jsxs(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: cn("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: [_jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: cn("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: _jsxs("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }), !hideTransactionHistoryButton && (globalAddress || recipientAddress) ? (_jsxs(Button, { variant: "link", onClick: onClickHistory, className: "text-as-primary/50 hover:text-as-primary flex items-center gap-1 transition-colors", children: [_jsx(HistoryIcon, { className: "h-4 w-4" }), " ", _jsx("span", { className: "pr-4", children: "Transaction History" })] })) : null] })] }));
761
+ }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward") }))] }), _jsxs(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: cn("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: [_jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: cn("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: _jsxs("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }), !hideTransactionHistoryButton && (globalAddress || recipientAddress) ? (_jsxs(Button, { variant: "link", onClick: onClickHistory, className: "text-as-primary/50 hover:text-as-primary flex items-center gap-1 transition-colors", children: [_jsx(HistoryIcon, { className: "h-4 w-4" }), " ", _jsx("span", { className: "pr-4", children: "Transaction History" })] })) : null] })] }));
751
762
  const onrampPaymentView = (_jsx(PanelOnrampPayment, { srcAmountOnRamp: srcAmountOnRamp, recipientName: recipientName || undefined, recipientAddress: recipientAddress, isBuyMode: isBuyMode, destinationTokenChainId: destinationTokenChainId, destinationTokenAddress: destinationTokenAddress, selectedDstChainId: selectedDstChainId, selectedDstToken: selectedDstToken, orderType: "swap", anyspendQuote: anyspendQuote, globalAddress: globalAddress, onOrderCreated: orderId => {
752
763
  setOrderId(orderId);
753
764
  navigateToPanel(PanelView.ORDER_DETAILS, "forward");
@@ -776,6 +787,7 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
776
787
  navigateBack(); // Go back to main panel to show updated pricing
777
788
  }, srcAmountOnRamp: srcAmountOnRamp }));
778
789
  const pointsDetailView = (_jsx(PointsDetailPanel, { pointsAmount: anyspendQuote?.data?.pointsAmount || 0, onBack: navigateBack }));
790
+ const feeDetailView = anyspendQuote?.data?.fee ? (_jsx(FeeDetailPanel, { fee: anyspendQuote.data.fee, transactionAmountUsd: activeTab === "crypto" ? Number(anyspendQuote.data.currencyIn?.amountUsd) : parseFloat(srcAmountOnRamp), onBack: navigateBack })) : null;
779
791
  // Add tabs to the main component when no order is loaded
780
792
  return (_jsx(StyleRoot, { children: _jsx("div", { className: cn("anyspend-container font-inter mx-auto w-full max-w-[460px]", mode === "page" &&
781
793
  "bg-as-surface-primary border-as-border-secondary overflow-hidden rounded-2xl border shadow-xl"), children: _jsx(TransitionPanel, { activeIndex: orderId
@@ -806,5 +818,6 @@ function AnySpendInner({ destinationTokenAddress, destinationTokenChainId, mode
806
818
  _jsx("div", { className: cn(mode === "page" && "p-6"), children: cryptoPaymentMethodView }, "crypto-payment-method-view"),
807
819
  _jsx("div", { className: cn(mode === "page" && "p-6"), children: fiatPaymentMethodView }, "fiat-payment-method-view"),
808
820
  _jsx("div", { className: cn(mode === "page" && "p-6"), children: pointsDetailView }, "points-detail-view"),
821
+ _jsx("div", { className: cn(mode === "page" && "p-6"), children: feeDetailView }, "fee-detail-view"),
809
822
  ] }) }) }));
810
823
  }
@@ -2,13 +2,13 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { eqci, getDefaultToken, roundUpUSDCBaseAmountToNearest } from "../../../anyspend/index.js";
3
3
  import { RELAY_ETH_ADDRESS, USDC_BASE } from "../../../anyspend/constants/index.js";
4
4
  import { useAnyspendCreateOnrampOrder, useAnyspendCreateOrder, useAnyspendOrderAndTransactions, useAnyspendQuote, useAnyspendTokenList, useConnectedUserProfile, useGeoOnrampOptions, } from "../../../anyspend/react/index.js";
5
- import { Badge, ShinyButton, Skeleton, StyleRoot, Tabs, TabsContent, TextShimmer, Tooltip, TooltipContent, TooltipTrigger, TransitionPanel, useAccountWallet, useHasMounted, useProfile, useRouter, useSearchParamsSSR, useTokenBalancesByChain, } from "../../../global-account/react/index.js";
5
+ import { Badge, ShinyButton, Skeleton, StyleRoot, Tabs, TabsContent, TextShimmer, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransitionPanel, useAccountWallet, useHasMounted, useProfile, useRouter, useSearchParamsSSR, useTokenBalancesByChain, } from "../../../global-account/react/index.js";
6
6
  import { cn, formatUsername } from "../../../shared/utils/index.js";
7
7
  import { shortenAddress } from "../../../shared/utils/formatAddress.js";
8
8
  import { formatTokenAmount, formatUnits } from "../../../shared/utils/number.js";
9
9
  import { simpleHashChainToChainName } from "../../../shared/utils/simplehash.js";
10
10
  import invariant from "invariant";
11
- import { ChevronRight, ChevronRightCircle, Loader2 } from "lucide-react";
11
+ import { ChevronRight, ChevronRightCircle, Info, Loader2 } from "lucide-react";
12
12
  import { motion } from "motion/react";
13
13
  import React, { useCallback, useEffect, useMemo, useState } from "react";
14
14
  import { toast } from "sonner";
@@ -16,6 +16,7 @@ import { base } from "viem/chains";
16
16
  import { useFeatureFlags } from "../contexts/FeatureFlagsContext.js";
17
17
  import { AnySpendFingerprintWrapper, getFingerprintConfig } from "./AnySpendFingerprintWrapper.js";
18
18
  import { CryptoPaymentMethod, CryptoPaymentMethodType } from "./common/CryptoPaymentMethod.js";
19
+ import { FeeBreakDown } from "./common/FeeBreakDown.js";
19
20
  import { FiatPaymentMethod, FiatPaymentMethodComponent } from "./common/FiatPaymentMethod.js";
20
21
  import { OrderDetails } from "./common/OrderDetails.js";
21
22
  import { OrderHistory } from "./common/OrderHistory.js";
@@ -34,7 +35,7 @@ var PanelView;
34
35
  PanelView[PanelView["FIAT_PAYMENT_METHOD"] = 6] = "FIAT_PAYMENT_METHOD";
35
36
  PanelView[PanelView["POINTS_DETAIL"] = 7] = "POINTS_DETAIL";
36
37
  })(PanelView || (PanelView = {}));
37
- function generateGetRelayQuoteRequest({ orderType, srcChainId, srcToken, dstChainId, dstToken, recipientAddress, dstAmount, contractAddress, tokenId, contractType, encodedData, spenderAddress, }) {
38
+ function generateGetRelayQuoteRequest({ orderType, srcChainId, srcToken, dstChainId, dstToken, recipientAddress, dstAmount, contractAddress, tokenId, contractType, encodedData, spenderAddress, onrampVendor, }) {
38
39
  switch (orderType) {
39
40
  case "mint_nft": {
40
41
  invariant(contractType, "Contract type is required");
@@ -49,6 +50,7 @@ function generateGetRelayQuoteRequest({ orderType, srcChainId, srcToken, dstChai
49
50
  contractAddress: contractAddress,
50
51
  tokenId: tokenId,
51
52
  contractType: contractType,
53
+ onrampVendor,
52
54
  };
53
55
  }
54
56
  case "join_tournament": {
@@ -61,6 +63,7 @@ function generateGetRelayQuoteRequest({ orderType, srcChainId, srcToken, dstChai
61
63
  recipientAddress,
62
64
  price: dstAmount,
63
65
  contractAddress: contractAddress,
66
+ onrampVendor,
64
67
  };
65
68
  }
66
69
  case "fund_tournament": {
@@ -73,6 +76,7 @@ function generateGetRelayQuoteRequest({ orderType, srcChainId, srcToken, dstChai
73
76
  recipientAddress,
74
77
  fundAmount: dstAmount,
75
78
  contractAddress: contractAddress,
79
+ onrampVendor,
76
80
  };
77
81
  }
78
82
  case "custom": {
@@ -89,6 +93,7 @@ function generateGetRelayQuoteRequest({ orderType, srcChainId, srcToken, dstChai
89
93
  to: contractAddress,
90
94
  spenderAddress: spenderAddress,
91
95
  },
96
+ onrampVendor,
92
97
  };
93
98
  }
94
99
  default: {
@@ -186,6 +191,7 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
186
191
  contractType: orderType === "mint_nft" ? metadata?.nftContract?.type : undefined,
187
192
  encodedData: encodedData,
188
193
  spenderAddress: spenderAddress,
194
+ onrampVendor: selectedFiatPaymentMethod === FiatPaymentMethod.STRIPE ? "stripe-web2" : undefined,
189
195
  });
190
196
  }, [
191
197
  activeTab,
@@ -201,6 +207,7 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
201
207
  spenderAddress,
202
208
  srcChainId,
203
209
  srcToken,
210
+ selectedFiatPaymentMethod,
204
211
  ]);
205
212
  const { anyspendQuote, isLoadingAnyspendQuote } = useAnyspendQuote(getRelayQuoteRequest);
206
213
  const { orderAndTransactions: oat } = useAnyspendOrderAndTransactions(orderId);
@@ -473,7 +480,8 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
473
480
  opacity: hasMounted ? 1 : 0,
474
481
  y: hasMounted ? 0 : 20,
475
482
  filter: hasMounted ? "blur(0px)" : "blur(10px)",
476
- }, transition: { duration: 0.3, delay: 0.1, ease: "easeInOut" }, className: "relative flex w-full items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-as-tertiarry text-sm", children: ["Total ", _jsx("span", { className: "text-as-tertiarry", children: "(with fee)" })] }), renderPointsBadge()] }), _jsxs("span", { className: "text-as-primary font-semibold", children: [formattedSrcAmount || "--", " ", srcToken.symbol] })] })] })] }), _jsx("div", { className: cn("flex w-full flex-col items-center justify-between gap-2"), children: _jsx(motion.div, { initial: false, animate: {
483
+ }, transition: { duration: 0.3, delay: 0.1, ease: "easeInOut" }, className: "relative flex w-full items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-as-tertiarry flex items-center gap-1.5 text-sm", children: ["Total ", _jsx("span", { className: "text-as-tertiarry", children: "(with fee)" }), anyspendQuote?.data?.fee && (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { className: "text-as-primary/40 hover:text-as-primary/60 transition-colors", children: _jsx(Info, { className: "h-4 w-4" }) }) }), _jsx(TooltipContent, { side: "top", children: _jsx(FeeBreakDown, { fee: anyspendQuote.data.fee }) })] }) }))] }), renderPointsBadge()] }), _jsxs("div", { className: "flex flex-col items-end gap-0.5", children: [_jsxs("span", { className: "text-as-primary font-semibold", children: [formattedSrcAmount || "--", " ", srcToken.symbol] }), anyspendQuote?.data?.fee?.type === "standard_fee" && anyspendQuote.data.currencyIn?.amountUsd && (_jsxs("span", { className: "text-as-secondary text-xs", children: ["incl. $", ((Number(anyspendQuote.data.currencyIn.amountUsd) * anyspendQuote.data.fee.finalFeeBps) /
484
+ 10000).toFixed(2), " ", "fee"] }))] })] })] })] }), _jsx("div", { className: cn("flex w-full flex-col items-center justify-between gap-2"), children: _jsx(motion.div, { initial: false, animate: {
477
485
  opacity: hasMounted ? 1 : 0,
478
486
  y: hasMounted ? 0 : 20,
479
487
  filter: hasMounted ? "blur(0px)" : "blur(10px)",
@@ -485,7 +493,8 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
485
493
  opacity: hasMounted ? 1 : 0,
486
494
  y: hasMounted ? 0 : 20,
487
495
  filter: hasMounted ? "blur(0px)" : "blur(10px)",
488
- }, transition: { duration: 0.3, delay: 0.1, ease: "easeInOut" }, className: "relative flex w-full items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-as-tertiarry text-sm", children: ["Total ", _jsx("span", { className: "text-as-tertiarry", children: "(USD)" })] }), renderPointsBadge()] }), _jsxs("span", { className: "text-as-primary text-xl font-semibold", children: ["$", srcFiatAmount || "0.00"] })] })] }), _jsx("div", { className: cn("flex w-full flex-col items-center justify-between gap-2"), children: _jsx(motion.div, { initial: false, animate: {
496
+ }, transition: { duration: 0.3, delay: 0.1, ease: "easeInOut" }, className: "relative flex w-full items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-as-tertiarry flex items-center gap-1.5 text-sm", children: ["Total ", _jsx("span", { className: "text-as-tertiarry", children: "(USD)" }), anyspendQuote?.data?.fee && (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { className: "text-as-primary/40 hover:text-as-primary/60 transition-colors", children: _jsx(Info, { className: "h-4 w-4" }) }) }), _jsx(TooltipContent, { side: "top", children: _jsx(FeeBreakDown, { fee: anyspendQuote.data.fee }) })] }) }))] }), renderPointsBadge()] }), _jsxs("div", { className: "flex flex-col items-end gap-0.5", children: [_jsxs("span", { className: "text-as-primary text-xl font-semibold", children: ["$", srcFiatAmount || "0.00"] }), anyspendQuote?.data?.fee?.type === "stripeweb2_fee" && anyspendQuote.data.fee.originalAmount && (_jsxs("span", { className: "text-as-secondary text-xs", children: ["incl. $", ((Number(anyspendQuote.data.fee.originalAmount) - Number(anyspendQuote.data.fee.finalAmount)) /
497
+ 1e6).toFixed(2), " ", "fee"] }))] })] })] }), _jsx("div", { className: cn("flex w-full flex-col items-center justify-between gap-2"), children: _jsx(motion.div, { initial: false, animate: {
489
498
  opacity: hasMounted ? 1 : 0,
490
499
  y: hasMounted ? 0 : 20,
491
500
  filter: hasMounted ? "blur(0px)" : "blur(10px)",
@@ -12,6 +12,7 @@ import { AnySpendFingerprintWrapper, getFingerprintConfig } from "./AnySpendFing
12
12
  import { CryptoPaySection } from "./common/CryptoPaySection.js";
13
13
  import { CryptoPaymentMethod, CryptoPaymentMethodType } from "./common/CryptoPaymentMethod.js";
14
14
  import { CryptoReceiveSection } from "./common/CryptoReceiveSection.js";
15
+ import { FeeDetailPanel } from "./common/FeeDetailPanel.js";
15
16
  import { FiatPaymentMethod, FiatPaymentMethodComponent } from "./common/FiatPaymentMethod.js";
16
17
  import { OrderDetails } from "./common/OrderDetails.js";
17
18
  import { PointsDetailPanel } from "./common/PointsDetailPanel.js";
@@ -29,7 +30,7 @@ export function AnySpendDepositHype(props) {
29
30
  }
30
31
  function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress, paymentType = "crypto", sourceTokenAddress, sourceTokenChainId, onSuccess, mainFooter, onTokenSelect, customUsdInputValues, }) {
31
32
  // Use shared flow hook
32
- const { activePanel, setActivePanel, orderId, setOrderId, oat, selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, dstAmount, setIsSrcInputDirty, selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod, selectedFiatPaymentMethod, setSelectedFiatPaymentMethod, selectedRecipientAddress, setSelectedRecipientAddress, recipientName, globalAddress, anyspendQuote, isLoadingAnyspendQuote, activeInputAmountInWei, geoData, coinbaseAvailablePaymentMethods, stripeWeb2Support, createOrder, isCreatingOrder, createOnrampOrder, isCreatingOnrampOrder, } = useAnyspendFlow({
33
+ const { activePanel, setActivePanel, orderId, setOrderId, oat, selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, dstAmount, isSrcInputDirty, setIsSrcInputDirty, selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod, selectedFiatPaymentMethod, setSelectedFiatPaymentMethod, selectedRecipientAddress, setSelectedRecipientAddress, recipientName, globalAddress, anyspendQuote, isLoadingAnyspendQuote, activeInputAmountInWei, geoData, coinbaseAvailablePaymentMethods, stripeWeb2Support, createOrder, isCreatingOrder, createOnrampOrder, isCreatingOnrampOrder, } = useAnyspendFlow({
33
34
  paymentType,
34
35
  recipientAddress,
35
36
  loadOrder,
@@ -111,10 +112,10 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
111
112
  await handleFiatOrder();
112
113
  }
113
114
  };
114
- const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [_jsx("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: _jsx("div", { children: _jsx("h1", { className: "text-as-primary text-xl font-bold", children: paymentType === "crypto" ? "Deposit Crypto" : "Fund with Fiat" }) }) }), _jsx("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: _jsxs("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [paymentType === "crypto" ? (_jsx(CryptoPaySection, { selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod: () => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD), anyspendQuote: anyspendQuote, onTokenSelect: onTokenSelect })) : (_jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, children: _jsx(PanelOnramp, { srcAmountOnRamp: srcAmount, setSrcAmountOnRamp: setSrcAmount, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: setActivePanel, _recipientAddress: recipientAddress, destinationToken: B3_TOKEN, destinationChainId: base.id, dstTokenSymbol: HYPE_TOKEN_DETAILS.SYMBOL, hideDstToken: true, destinationAmount: dstAmount, onDestinationTokenChange: () => { }, onDestinationChainChange: () => { }, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL), customUsdInputValues: customUsdInputValues }) })), _jsx("div", { className: cn("relative -my-1 flex h-0 items-center justify-center", paymentType === "fiat" && "hidden"), children: _jsx(Button, { variant: "ghost", className: cn("swap-direction-button border-as-stroke bg-as-surface-primary z-10 h-10 w-10 cursor-default rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl"), children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }) }), paymentType === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: true, selectedRecipientAddress: recipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => setActivePanel(PanelView.RECIPIENT_SELECTION), dstAmount: dstAmount, dstToken: B3_TOKEN, dstTokenSymbol: HYPE_TOKEN_DETAILS.SYMBOL, dstTokenLogoURI: HYPE_TOKEN_DETAILS.LOGO_URI, selectedDstChainId: base.id, setSelectedDstChainId: () => { }, setSelectedDstToken: () => { }, onChangeDstAmount: value => {
115
+ const mainView = (_jsxs("div", { className: "mx-auto flex w-[460px] max-w-full flex-col items-center gap-2", children: [_jsx("div", { className: "mb-4 flex flex-col items-center gap-3 text-center", children: _jsx("div", { children: _jsx("h1", { className: "text-as-primary text-xl font-bold", children: paymentType === "crypto" ? "Deposit Crypto" : "Fund with Fiat" }) }) }), _jsx("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: _jsxs("div", { className: "relative flex w-full max-w-[calc(100vw-32px)] flex-col gap-2", children: [paymentType === "crypto" ? (_jsx(CryptoPaySection, { selectedSrcChainId: selectedSrcChainId, setSelectedSrcChainId: setSelectedSrcChainId, selectedSrcToken: selectedSrcToken, setSelectedSrcToken: setSelectedSrcToken, srcAmount: srcAmount, setSrcAmount: setSrcAmount, isSrcInputDirty: isSrcInputDirty, setIsSrcInputDirty: setIsSrcInputDirty, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod: () => setActivePanel(PanelView.CRYPTO_PAYMENT_METHOD), anyspendQuote: anyspendQuote, onTokenSelect: onTokenSelect })) : (_jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, children: _jsx(PanelOnramp, { srcAmountOnRamp: srcAmount, setSrcAmountOnRamp: setSrcAmount, selectedPaymentMethod: selectedFiatPaymentMethod, setActivePanel: setActivePanel, _recipientAddress: recipientAddress, destinationToken: B3_TOKEN, destinationChainId: base.id, dstTokenSymbol: HYPE_TOKEN_DETAILS.SYMBOL, hideDstToken: true, destinationAmount: dstAmount, onDestinationTokenChange: () => { }, onDestinationChainChange: () => { }, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL), onShowFeeDetail: () => setActivePanel(PanelView.FEE_DETAIL), customUsdInputValues: customUsdInputValues }) })), _jsx("div", { className: cn("relative -my-1 flex h-0 items-center justify-center", paymentType === "fiat" && "hidden"), children: _jsx(Button, { variant: "ghost", className: cn("swap-direction-button border-as-stroke bg-as-surface-primary z-10 h-10 w-10 cursor-default rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl"), children: _jsx("div", { className: "relative flex items-center justify-center transition-opacity", children: _jsx(ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }) }), paymentType === "crypto" && (_jsx(CryptoReceiveSection, { isDepositMode: false, isBuyMode: true, selectedRecipientAddress: recipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => setActivePanel(PanelView.RECIPIENT_SELECTION), dstAmount: dstAmount, dstToken: B3_TOKEN, dstTokenSymbol: HYPE_TOKEN_DETAILS.SYMBOL, dstTokenLogoURI: HYPE_TOKEN_DETAILS.LOGO_URI, selectedDstChainId: base.id, setSelectedDstChainId: () => { }, setSelectedDstToken: () => { }, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
115
116
  setIsSrcInputDirty(false);
116
117
  setSrcAmount(value);
117
- }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL) }))] }) }), _jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: cn("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: _jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: cn("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: _jsxs("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }) }), mainFooter ? mainFooter : null] }));
118
+ }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => setActivePanel(PanelView.POINTS_DETAIL), onShowFeeDetail: () => setActivePanel(PanelView.FEE_DETAIL) }))] }) }), _jsx(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: cn("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: _jsx(ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: cn("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: cn(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: _jsxs("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }) }), mainFooter ? mainFooter : null] }));
118
119
  // Handle crypto order creation
119
120
  const handleCryptoOrder = async () => {
120
121
  try {
@@ -195,7 +196,7 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
195
196
  const orderDetailsView = (_jsx("div", { className: "mx-auto w-[460px] max-w-full", children: _jsx("div", { className: "relative flex flex-col gap-4", children: oat && (_jsx(OrderDetails, { mode: mode, order: oat.data.order, depositTxs: oat.data.depositTxs, relayTxs: oat.data.relayTxs, executeTx: oat.data.executeTx, refundTxs: oat.data.refundTxs, cryptoPaymentMethod: paymentType === "fiat" ? CryptoPaymentMethodType.NONE : selectedCryptoPaymentMethod, selectedCryptoPaymentMethod: selectedCryptoPaymentMethod, onPaymentMethodChange: setSelectedCryptoPaymentMethod, onBack: () => {
196
197
  setOrderId(undefined);
197
198
  setActivePanel(PanelView.MAIN);
198
- }, disableUrlParamManagement: true })) }) }));
199
+ }, disableUrlParamManagement: true, points: oat.data.points || undefined })) }) }));
199
200
  // Loading view
200
201
  const loadingView = (_jsx("div", { className: "mx-auto flex w-full flex-col items-center gap-4 p-5", children: _jsx("div", { className: "text-as-primary", children: "Loading order details..." }) }));
201
202
  // Panel views
@@ -212,6 +213,11 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
212
213
  setActivePanel(PanelView.MAIN);
213
214
  }, srcAmountOnRamp: srcAmount }));
214
215
  const pointsDetailView = (_jsx(PointsDetailPanel, { pointsAmount: anyspendQuote?.data?.pointsAmount || 0, onBack: () => setActivePanel(PanelView.MAIN) }));
216
+ const feeDetailView = anyspendQuote?.data?.fee ? (_jsx(FeeDetailPanel, { fee: anyspendQuote.data.fee, transactionAmountUsd: paymentType === "fiat"
217
+ ? parseFloat(srcAmount)
218
+ : anyspendQuote.data.currencyIn?.amountUsd
219
+ ? Number(anyspendQuote.data.currencyIn.amountUsd)
220
+ : undefined, onBack: () => setActivePanel(PanelView.MAIN) })) : null;
215
221
  // If showing token selection, render with panel transitions
216
222
  return (_jsx(StyleRoot, { children: _jsx("div", { className: cn("anyspend-container font-inter mx-auto w-full max-w-[460px]", mode === "page" &&
217
223
  "bg-as-surface-primary border-as-border-secondary overflow-hidden rounded-2xl border shadow-xl"), children: _jsx(TransitionPanel, { activeIndex: orderId
@@ -234,5 +240,6 @@ function AnySpendDepositHypeInner({ loadOrder, mode = "modal", recipientAddress,
234
240
  _jsx("div", { className: cn(mode === "page" && "p-6"), children: orderDetailsView }, "order-details-view"),
235
241
  _jsx("div", { className: cn(mode === "page" && "p-6"), children: loadingView }, "loading-view"),
236
242
  _jsx("div", { className: cn(mode === "page" && "p-6"), children: pointsDetailView }, "points-detail-view"),
243
+ _jsx("div", { className: cn(mode === "page" && "p-6"), children: feeDetailView }, "fee-detail-view"),
237
244
  ] }) }) }));
238
245
  }
@@ -7,6 +7,7 @@ interface CryptoPaySectionProps {
7
7
  setSelectedSrcToken: (token: components["schemas"]["Token"]) => void;
8
8
  srcAmount: string;
9
9
  setSrcAmount: (amount: string) => void;
10
+ isSrcInputDirty: boolean;
10
11
  setIsSrcInputDirty: (dirty: boolean) => void;
11
12
  selectedCryptoPaymentMethod: CryptoPaymentMethodType;
12
13
  onSelectCryptoPaymentMethod: () => void;
@@ -14,6 +15,7 @@ interface CryptoPaySectionProps {
14
15
  onTokenSelect?: (token: components["schemas"]["Token"], event: {
15
16
  preventDefault: () => void;
16
17
  }) => void;
18
+ onShowFeeDetail?: () => void;
17
19
  }
18
- export declare function CryptoPaySection({ selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, setIsSrcInputDirty, selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod, anyspendQuote, onTokenSelect, }: CryptoPaySectionProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function CryptoPaySection({ selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, isSrcInputDirty, setIsSrcInputDirty, selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod, anyspendQuote, onTokenSelect, onShowFeeDetail, }: CryptoPaySectionProps): import("react/jsx-runtime").JSX.Element;
19
21
  export {};
@@ -1,15 +1,15 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useAccountWallet, useProfile, useTokenData } from "../../../../global-account/react/index.js";
3
3
  import { formatUsername } from "../../../../shared/utils/index.js";
4
4
  import { shortenAddress } from "../../../../shared/utils/formatAddress.js";
5
5
  import { formatDisplayNumber } from "../../../../shared/utils/number.js";
6
- import { ChevronRight } from "lucide-react";
6
+ import { ChevronRight, Info } from "lucide-react";
7
7
  import { motion } from "motion/react";
8
8
  import { useEffect, useRef } from "react";
9
9
  import { CryptoPaymentMethodType } from "./CryptoPaymentMethod.js";
10
10
  import { OrderTokenAmount } from "./OrderTokenAmount.js";
11
11
  import { TokenBalance } from "./TokenBalance.js";
12
- export function CryptoPaySection({ selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, setIsSrcInputDirty, selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod, anyspendQuote, onTokenSelect, }) {
12
+ export function CryptoPaySection({ selectedSrcChainId, setSelectedSrcChainId, selectedSrcToken, setSelectedSrcToken, srcAmount, setSrcAmount, isSrcInputDirty, setIsSrcInputDirty, selectedCryptoPaymentMethod, onSelectCryptoPaymentMethod, anyspendQuote, onTokenSelect, onShowFeeDetail, }) {
13
13
  const { connectedSmartWallet, connectedEOAWallet } = useAccountWallet();
14
14
  const { data: srcTokenMetadata } = useTokenData(selectedSrcToken?.chainId, selectedSrcToken?.address);
15
15
  // Determine which address to use based on payment method
@@ -42,7 +42,7 @@ export function CryptoPaySection({ selectedSrcChainId, setSelectedSrcChainId, se
42
42
  useEffect(() => {
43
43
  appliedSrcMetadataRef.current = false;
44
44
  }, [selectedSrcToken.address, selectedSrcToken.chainId]);
45
- return (_jsxs(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, className: "pay-section bg-as-surface-secondary border-as-border-secondary relative flex w-full flex-col gap-2 rounded-2xl border p-4 sm:p-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-as-primary/50 flex h-7 items-center text-sm", children: "Pay" }), _jsx("button", { className: "text-as-tertiarry flex h-7 items-center gap-2 text-sm transition-colors focus:!outline-none", onClick: onSelectCryptoPaymentMethod, children: selectedCryptoPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET ? (_jsxs(_Fragment, { children: [walletAddress ? (_jsx("div", { className: "flex items-center gap-1", children: connectedName ? formatUsername(connectedName) : shortenAddress(walletAddress || "") })) : ("Connect wallet"), _jsx(ChevronRight, { className: "h-4 w-4" })] })) : selectedCryptoPaymentMethod === CryptoPaymentMethodType.GLOBAL_WALLET ? (_jsxs(_Fragment, { children: ["Global Account", _jsx(ChevronRight, { className: "h-4 w-4" })] })) : selectedCryptoPaymentMethod === CryptoPaymentMethodType.TRANSFER_CRYPTO ? (_jsxs(_Fragment, { children: ["Transfer crypto", _jsx(ChevronRight, { className: "h-4 w-4" })] })) : (_jsxs(_Fragment, { children: ["Select payment method", _jsx(ChevronRight, { className: "h-4 w-4" })] })) })] }), _jsx(OrderTokenAmount, { address: walletAddress, context: "from", inputValue: srcAmount, onChangeInput: value => {
45
+ return (_jsxs(motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0, ease: "easeInOut" }, className: "pay-section bg-as-surface-secondary border-as-border-secondary relative flex w-full flex-col gap-2 rounded-2xl border p-4 sm:p-6", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "text-as-primary/50 flex h-7 items-center gap-1.5 text-sm", children: ["Pay", !isSrcInputDirty && anyspendQuote?.data?.fee && onShowFeeDetail && (_jsx("button", { onClick: onShowFeeDetail, className: "text-as-primary/40 hover:text-as-primary/60 transition-colors", children: _jsx(Info, { className: "h-4 w-4" }) }))] }), _jsx("button", { className: "text-as-tertiarry flex h-7 items-center gap-2 text-sm transition-colors focus:!outline-none", onClick: onSelectCryptoPaymentMethod, children: selectedCryptoPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET ? (_jsxs(_Fragment, { children: [walletAddress ? (_jsx("div", { className: "flex items-center gap-1", children: connectedName ? formatUsername(connectedName) : shortenAddress(walletAddress || "") })) : ("Connect wallet"), _jsx(ChevronRight, { className: "h-4 w-4" })] })) : selectedCryptoPaymentMethod === CryptoPaymentMethodType.GLOBAL_WALLET ? (_jsxs(_Fragment, { children: ["Global Account", _jsx(ChevronRight, { className: "h-4 w-4" })] })) : selectedCryptoPaymentMethod === CryptoPaymentMethodType.TRANSFER_CRYPTO ? (_jsxs(_Fragment, { children: ["Transfer crypto", _jsx(ChevronRight, { className: "h-4 w-4" })] })) : (_jsxs(_Fragment, { children: ["Select payment method", _jsx(ChevronRight, { className: "h-4 w-4" })] })) })] }), _jsx(OrderTokenAmount, { address: walletAddress, context: "from", inputValue: srcAmount, onChangeInput: value => {
46
46
  setIsSrcInputDirty(true);
47
47
  setSrcAmount(value);
48
48
  }, chainId: selectedSrcChainId, setChainId: setSelectedSrcChainId, token: selectedSrcToken, setToken: setSelectedSrcToken, onTokenSelect: onTokenSelect }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-as-primary/50 flex h-5 items-center text-sm", children: formatDisplayNumber(anyspendQuote?.data?.currencyIn?.amountUsd, {
@@ -10,11 +10,13 @@ interface CryptoReceiveSectionProps {
10
10
  selectedDstChainId?: number;
11
11
  setSelectedDstChainId?: (chainId: number) => void;
12
12
  setSelectedDstToken?: (token: components["schemas"]["Token"]) => void;
13
+ isSrcInputDirty: boolean;
13
14
  onChangeDstAmount?: (value: string) => void;
14
15
  anyspendQuote?: any;
15
16
  dstTokenSymbol?: string;
16
17
  dstTokenLogoURI?: string;
17
18
  onShowPointsDetail?: () => void;
19
+ onShowFeeDetail?: () => void;
18
20
  }
19
- export declare function CryptoReceiveSection({ isDepositMode, isBuyMode, selectedRecipientAddress, recipientName, onSelectRecipient, dstAmount, dstToken, selectedDstChainId, setSelectedDstChainId, setSelectedDstToken, onChangeDstAmount, anyspendQuote, dstTokenSymbol, dstTokenLogoURI, onShowPointsDetail, }: CryptoReceiveSectionProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function CryptoReceiveSection({ isDepositMode, isBuyMode, selectedRecipientAddress, recipientName, onSelectRecipient, dstAmount, dstToken, selectedDstChainId, setSelectedDstChainId, setSelectedDstToken, isSrcInputDirty, onChangeDstAmount, anyspendQuote, dstTokenSymbol, dstTokenLogoURI, onShowPointsDetail, onShowFeeDetail, }: CryptoReceiveSectionProps): import("react/jsx-runtime").JSX.Element;
20
22
  export {};