@b3dotfun/sdk 0.0.40-test.6 → 0.0.41-alpha.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 (264) hide show
  1. package/dist/cjs/anyspend/constants/index.d.ts +0 -1
  2. package/dist/cjs/anyspend/constants/index.js +1 -2
  3. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +11 -1
  4. package/dist/cjs/anyspend/react/components/AnySpend.js +22 -10
  5. package/dist/cjs/anyspend/react/components/AnySpendBondKit.js +0 -1
  6. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.js +0 -1
  7. package/dist/cjs/anyspend/react/components/AnySpendCustom.d.ts +1 -0
  8. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +41 -20
  9. package/dist/cjs/anyspend/react/components/AnySpendNFT.d.ts +2 -1
  10. package/dist/cjs/anyspend/react/components/AnySpendNFT.js +2 -2
  11. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +0 -1
  12. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +8 -0
  13. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +10 -8
  14. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.js +1 -2
  15. package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.d.ts +2 -1
  16. package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.js +7 -4
  17. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.d.ts +4 -1
  18. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +9 -9
  19. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +80 -10
  20. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.d.ts +2 -1
  21. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.js +40 -37
  22. package/dist/cjs/anyspend/react/components/common/OrderDetails.d.ts +2 -0
  23. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +24 -23
  24. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +9 -8
  25. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.d.ts +4 -1
  26. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +23 -9
  27. package/dist/cjs/anyspend/react/components/common/PanelOnramp.d.ts +4 -1
  28. package/dist/cjs/anyspend/react/components/common/PanelOnramp.js +10 -6
  29. package/dist/cjs/anyspend/react/components/common/PaymentMethodSwitch.d.ts +7 -0
  30. package/dist/cjs/anyspend/react/components/common/PaymentMethodSwitch.js +24 -0
  31. package/dist/cjs/anyspend/react/components/common/PointsBadge.d.ts +7 -0
  32. package/dist/cjs/anyspend/react/components/common/PointsBadge.js +7 -0
  33. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.d.ts +6 -0
  34. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +14 -0
  35. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.d.ts +2 -0
  36. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +6 -4
  37. package/dist/cjs/anyspend/react/contexts/FeatureFlagsContext.d.ts +11 -0
  38. package/dist/cjs/anyspend/react/contexts/FeatureFlagsContext.js +21 -0
  39. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -1
  40. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +18 -8
  41. package/dist/cjs/anyspend/react/providers/AnyspendProvider.d.ts +5 -2
  42. package/dist/cjs/anyspend/react/providers/AnyspendProvider.js +5 -3
  43. package/dist/cjs/anyspend/react/providers/index.d.ts +1 -0
  44. package/dist/cjs/anyspend/react/providers/index.js +3 -0
  45. package/dist/cjs/anyspend/services/anyspend.d.ts +1 -1
  46. package/dist/cjs/anyspend/services/anyspend.js +2 -0
  47. package/dist/cjs/anyspend/types/api.d.ts +51 -1
  48. package/dist/cjs/anyspend/utils/chain.js +1 -1
  49. package/dist/cjs/anyspend/utils/orderPayload.js +3 -0
  50. package/dist/cjs/bondkit/bondkitToken.d.ts +37 -2
  51. package/dist/cjs/bondkit/bondkitToken.js +268 -2
  52. package/dist/cjs/bondkit/bondkitTokenFactory.d.ts +1 -1
  53. package/dist/cjs/bondkit/bondkitTokenFactory.js +2 -2
  54. package/dist/cjs/bondkit/components/TradingView.js +3 -4
  55. package/dist/cjs/bondkit/config.d.ts +1 -1
  56. package/dist/cjs/bondkit/config.js +5 -2
  57. package/dist/cjs/bondkit/constants.d.ts +4 -0
  58. package/dist/cjs/bondkit/constants.js +6 -1
  59. package/dist/cjs/bondkit/index.d.ts +1 -0
  60. package/dist/cjs/bondkit/index.js +4 -1
  61. package/dist/cjs/bondkit/swapService.d.ts +43 -0
  62. package/dist/cjs/bondkit/swapService.js +376 -0
  63. package/dist/cjs/bondkit/types.d.ts +10 -4
  64. package/dist/cjs/bondkit/types.js +4 -5
  65. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
  66. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +27 -28
  67. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +63 -3
  68. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +35 -2
  69. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +4 -3
  70. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -0
  71. package/dist/cjs/global-account/react/hooks/index.js +3 -1
  72. package/dist/cjs/global-account/react/hooks/useAccountAssets.js +5 -2
  73. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +0 -12
  74. package/dist/cjs/global-account/react/hooks/useAuthentication.js +2 -3
  75. package/dist/cjs/global-account/react/hooks/useGlobalAccount.d.ts +6 -0
  76. package/dist/cjs/global-account/react/hooks/useGlobalAccount.js +32 -0
  77. package/dist/cjs/global-account/react/hooks/useQueryB3.js +5 -2
  78. package/dist/cjs/global-account/react/hooks/useQueryBSMNT.js +5 -2
  79. package/dist/cjs/global-account/react/hooks/useSimBalance.js +2 -2
  80. package/dist/cjs/global-account/react/hooks/useTokenBalancesByChain.js +7 -1
  81. package/dist/cjs/global-account/react/hooks/useTokenFromUrl.js +2 -2
  82. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +28 -24
  83. package/dist/cjs/shared/utils/fetchBalances.d.ts +1 -1
  84. package/dist/esm/anyspend/constants/index.d.ts +0 -1
  85. package/dist/esm/anyspend/constants/index.js +0 -1
  86. package/dist/esm/anyspend/react/components/AnySpend.d.ts +11 -1
  87. package/dist/esm/anyspend/react/components/AnySpend.js +23 -11
  88. package/dist/esm/anyspend/react/components/AnySpendBondKit.js +0 -1
  89. package/dist/esm/anyspend/react/components/AnySpendBuySpin.js +0 -1
  90. package/dist/esm/anyspend/react/components/AnySpendCustom.d.ts +1 -0
  91. package/dist/esm/anyspend/react/components/AnySpendCustom.js +41 -20
  92. package/dist/esm/anyspend/react/components/AnySpendNFT.d.ts +2 -1
  93. package/dist/esm/anyspend/react/components/AnySpendNFT.js +2 -2
  94. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +0 -1
  95. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +8 -0
  96. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +11 -9
  97. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.js +1 -2
  98. package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.d.ts +2 -1
  99. package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.js +8 -5
  100. package/dist/esm/anyspend/react/components/common/CryptoPaySection.d.ts +4 -1
  101. package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +9 -9
  102. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +80 -10
  103. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.d.ts +2 -1
  104. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.js +40 -37
  105. package/dist/esm/anyspend/react/components/common/OrderDetails.d.ts +2 -0
  106. package/dist/esm/anyspend/react/components/common/OrderDetails.js +25 -24
  107. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +10 -9
  108. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.d.ts +4 -1
  109. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +23 -9
  110. package/dist/esm/anyspend/react/components/common/PanelOnramp.d.ts +4 -1
  111. package/dist/esm/anyspend/react/components/common/PanelOnramp.js +10 -6
  112. package/dist/esm/anyspend/react/components/common/PaymentMethodSwitch.d.ts +7 -0
  113. package/dist/esm/anyspend/react/components/common/PaymentMethodSwitch.js +21 -0
  114. package/dist/esm/anyspend/react/components/common/PointsBadge.d.ts +7 -0
  115. package/dist/esm/anyspend/react/components/common/PointsBadge.js +4 -0
  116. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.d.ts +6 -0
  117. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +8 -0
  118. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.d.ts +2 -0
  119. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +6 -4
  120. package/dist/esm/anyspend/react/contexts/FeatureFlagsContext.d.ts +11 -0
  121. package/dist/esm/anyspend/react/contexts/FeatureFlagsContext.js +17 -0
  122. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -1
  123. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +18 -8
  124. package/dist/esm/anyspend/react/providers/AnyspendProvider.d.ts +5 -2
  125. package/dist/esm/anyspend/react/providers/AnyspendProvider.js +5 -3
  126. package/dist/esm/anyspend/react/providers/index.d.ts +1 -0
  127. package/dist/esm/anyspend/react/providers/index.js +1 -0
  128. package/dist/esm/anyspend/services/anyspend.d.ts +1 -1
  129. package/dist/esm/anyspend/services/anyspend.js +2 -0
  130. package/dist/esm/anyspend/types/api.d.ts +51 -1
  131. package/dist/esm/anyspend/utils/chain.js +1 -1
  132. package/dist/esm/anyspend/utils/orderPayload.js +3 -0
  133. package/dist/esm/bondkit/bondkitToken.d.ts +37 -2
  134. package/dist/esm/bondkit/bondkitToken.js +268 -2
  135. package/dist/esm/bondkit/bondkitTokenFactory.d.ts +1 -1
  136. package/dist/esm/bondkit/bondkitTokenFactory.js +2 -2
  137. package/dist/esm/bondkit/components/TradingView.js +3 -4
  138. package/dist/esm/bondkit/config.d.ts +1 -1
  139. package/dist/esm/bondkit/config.js +5 -2
  140. package/dist/esm/bondkit/constants.d.ts +4 -0
  141. package/dist/esm/bondkit/constants.js +5 -0
  142. package/dist/esm/bondkit/index.d.ts +1 -0
  143. package/dist/esm/bondkit/index.js +2 -0
  144. package/dist/esm/bondkit/swapService.d.ts +43 -0
  145. package/dist/esm/bondkit/swapService.js +372 -0
  146. package/dist/esm/bondkit/types.d.ts +10 -4
  147. package/dist/esm/bondkit/types.js +4 -5
  148. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
  149. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +27 -28
  150. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +65 -5
  151. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +35 -2
  152. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +3 -2
  153. package/dist/esm/global-account/react/hooks/index.d.ts +1 -0
  154. package/dist/esm/global-account/react/hooks/index.js +1 -0
  155. package/dist/esm/global-account/react/hooks/useAccountAssets.js +2 -2
  156. package/dist/esm/global-account/react/hooks/useAccountWallet.js +0 -12
  157. package/dist/esm/global-account/react/hooks/useAuthentication.js +2 -3
  158. package/dist/esm/global-account/react/hooks/useGlobalAccount.d.ts +6 -0
  159. package/dist/esm/global-account/react/hooks/useGlobalAccount.js +29 -0
  160. package/dist/esm/global-account/react/hooks/useQueryB3.js +5 -2
  161. package/dist/esm/global-account/react/hooks/useQueryBSMNT.js +5 -2
  162. package/dist/esm/global-account/react/hooks/useSimBalance.js +2 -2
  163. package/dist/esm/global-account/react/hooks/useTokenBalancesByChain.js +4 -1
  164. package/dist/esm/global-account/react/hooks/useTokenFromUrl.js +2 -2
  165. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +29 -25
  166. package/dist/esm/shared/utils/fetchBalances.d.ts +1 -1
  167. package/dist/styles/index.css +1 -1
  168. package/dist/types/anyspend/constants/index.d.ts +0 -1
  169. package/dist/types/anyspend/react/components/AnySpend.d.ts +11 -1
  170. package/dist/types/anyspend/react/components/AnySpendCustom.d.ts +1 -0
  171. package/dist/types/anyspend/react/components/AnySpendNFT.d.ts +2 -1
  172. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +8 -0
  173. package/dist/types/anyspend/react/components/common/ConnectWalletPayment.d.ts +2 -1
  174. package/dist/types/anyspend/react/components/common/CryptoPaySection.d.ts +4 -1
  175. package/dist/types/anyspend/react/components/common/CryptoReceiveSection.d.ts +2 -1
  176. package/dist/types/anyspend/react/components/common/OrderDetails.d.ts +2 -0
  177. package/dist/types/anyspend/react/components/common/OrderTokenAmount.d.ts +4 -1
  178. package/dist/types/anyspend/react/components/common/PanelOnramp.d.ts +4 -1
  179. package/dist/types/anyspend/react/components/common/PaymentMethodSwitch.d.ts +7 -0
  180. package/dist/types/anyspend/react/components/common/PointsBadge.d.ts +7 -0
  181. package/dist/types/anyspend/react/components/common/PointsDetailPanel.d.ts +6 -0
  182. package/dist/types/anyspend/react/components/common/TransferCryptoDetails.d.ts +2 -0
  183. package/dist/types/anyspend/react/contexts/FeatureFlagsContext.d.ts +11 -0
  184. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -1
  185. package/dist/types/anyspend/react/providers/AnyspendProvider.d.ts +5 -2
  186. package/dist/types/anyspend/react/providers/index.d.ts +1 -0
  187. package/dist/types/anyspend/services/anyspend.d.ts +1 -1
  188. package/dist/types/anyspend/types/api.d.ts +51 -1
  189. package/dist/types/bondkit/bondkitToken.d.ts +37 -2
  190. package/dist/types/bondkit/bondkitTokenFactory.d.ts +1 -1
  191. package/dist/types/bondkit/config.d.ts +1 -1
  192. package/dist/types/bondkit/constants.d.ts +4 -0
  193. package/dist/types/bondkit/index.d.ts +1 -0
  194. package/dist/types/bondkit/swapService.d.ts +43 -0
  195. package/dist/types/bondkit/types.d.ts +10 -4
  196. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
  197. package/dist/types/global-account/react/hooks/index.d.ts +1 -0
  198. package/dist/types/global-account/react/hooks/useGlobalAccount.d.ts +6 -0
  199. package/dist/types/shared/utils/fetchBalances.d.ts +1 -1
  200. package/package.json +1 -1
  201. package/src/anyspend/constants/index.ts +0 -2
  202. package/src/anyspend/react/components/AnySpend.tsx +52 -18
  203. package/src/anyspend/react/components/AnySpendBondKit.tsx +0 -1
  204. package/src/anyspend/react/components/AnySpendBuySpin.tsx +0 -1
  205. package/src/anyspend/react/components/AnySpendCustom.tsx +82 -34
  206. package/src/anyspend/react/components/AnySpendNFT.tsx +3 -0
  207. package/src/anyspend/react/components/AnySpendStakeB3.tsx +0 -1
  208. package/src/anyspend/react/components/AnyspendDepositHype.tsx +38 -18
  209. package/src/anyspend/react/components/AnyspendSignatureMint.tsx +1 -2
  210. package/src/anyspend/react/components/common/ConnectWalletPayment.tsx +12 -4
  211. package/src/anyspend/react/components/common/CryptoPaySection.tsx +13 -8
  212. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +170 -44
  213. package/src/anyspend/react/components/common/CryptoReceiveSection.tsx +61 -45
  214. package/src/anyspend/react/components/common/OrderDetails.tsx +60 -47
  215. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +62 -41
  216. package/src/anyspend/react/components/common/OrderTokenAmount.tsx +28 -8
  217. package/src/anyspend/react/components/common/PanelOnramp.tsx +28 -15
  218. package/src/anyspend/react/components/common/PaymentMethodSwitch.tsx +38 -0
  219. package/src/anyspend/react/components/common/PointsBadge.tsx +20 -0
  220. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +55 -0
  221. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +65 -43
  222. package/src/anyspend/react/contexts/FeatureFlagsContext.tsx +34 -0
  223. package/src/anyspend/react/hooks/useAnyspendFlow.ts +18 -8
  224. package/src/anyspend/react/hooks/useAnyspendOrderAndTransactions.ts +1 -1
  225. package/src/anyspend/react/hooks/useCoinbaseOnrampOptions.ts +1 -1
  226. package/src/anyspend/react/providers/AnyspendProvider.tsx +11 -6
  227. package/src/anyspend/react/providers/index.ts +1 -0
  228. package/src/anyspend/services/anyspend.ts +3 -1
  229. package/src/anyspend/types/api.ts +51 -1
  230. package/src/anyspend/types/api_req_res.ts +6 -10
  231. package/src/anyspend/utils/chain.ts +1 -1
  232. package/src/anyspend/utils/orderPayload.ts +3 -0
  233. package/src/bondkit/bondkitToken.ts +323 -3
  234. package/src/bondkit/bondkitTokenFactory.ts +2 -2
  235. package/src/bondkit/components/TradingView.tsx +3 -5
  236. package/src/bondkit/config.ts +5 -2
  237. package/src/bondkit/constants.ts +7 -0
  238. package/src/bondkit/index.ts +3 -0
  239. package/src/bondkit/swapService.ts +464 -0
  240. package/src/bondkit/types.ts +12 -5
  241. package/src/global-account/react/components/B3Provider/B3Provider.tsx +31 -32
  242. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +106 -32
  243. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +60 -5
  244. package/src/global-account/react/components/SignInWithB3/steps/LoginStepCustom.tsx +4 -2
  245. package/src/global-account/react/hooks/index.ts +1 -0
  246. package/src/global-account/react/hooks/useAccountAssets.ts +4 -3
  247. package/src/global-account/react/hooks/useAccountWallet.tsx +0 -13
  248. package/src/global-account/react/hooks/useAuthentication.ts +2 -3
  249. package/src/global-account/react/hooks/useGlobalAccount.tsx +36 -0
  250. package/src/global-account/react/hooks/useOneBalance.tsx +1 -1
  251. package/src/global-account/react/hooks/useQueryB3.ts +22 -15
  252. package/src/global-account/react/hooks/useQueryBSMNT.ts +22 -15
  253. package/src/global-account/react/hooks/useSimBalance.ts +2 -2
  254. package/src/global-account/react/hooks/useTokenBalancesByChain.tsx +4 -1
  255. package/src/global-account/react/hooks/useTokenFromUrl.tsx +2 -2
  256. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +30 -26
  257. package/src/shared/utils/fetchBalances.ts +1 -1
  258. package/dist/cjs/global-account/examples/client-selection-example.d.ts +0 -5
  259. package/dist/cjs/global-account/examples/client-selection-example.js +0 -96
  260. package/dist/esm/global-account/examples/client-selection-example.d.ts +0 -5
  261. package/dist/esm/global-account/examples/client-selection-example.js +0 -93
  262. package/dist/types/global-account/examples/client-selection-example.d.ts +0 -5
  263. package/src/global-account/docs/client-selection.md +0 -292
  264. package/src/global-account/examples/client-selection-example.tsx +0 -197
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BondkitSwapService = void 0;
4
+ const viem_1 = require("viem");
5
+ const chains_1 = require("viem/chains");
6
+ const constants_1 = require("./constants");
7
+ // Minimal ABIs needed for swap functionality
8
+ const UNIVERSAL_ROUTER_ABI = [
9
+ {
10
+ inputs: [
11
+ { name: "commands", type: "bytes" },
12
+ { name: "inputs", type: "bytes[]" },
13
+ { name: "deadline", type: "uint256" },
14
+ ],
15
+ name: "execute",
16
+ outputs: [],
17
+ stateMutability: "payable",
18
+ type: "function",
19
+ },
20
+ ];
21
+ const QUOTER_ABI = [
22
+ {
23
+ inputs: [
24
+ {
25
+ components: [
26
+ {
27
+ components: [
28
+ { internalType: "Currency", name: "currency0", type: "address" },
29
+ { internalType: "Currency", name: "currency1", type: "address" },
30
+ { internalType: "uint24", name: "fee", type: "uint24" },
31
+ { internalType: "int24", name: "tickSpacing", type: "int24" },
32
+ { internalType: "contract IHooks", name: "hooks", type: "address" },
33
+ ],
34
+ internalType: "struct PoolKey",
35
+ name: "poolKey",
36
+ type: "tuple",
37
+ },
38
+ { internalType: "bool", name: "zeroForOne", type: "bool" },
39
+ { internalType: "uint128", name: "exactAmount", type: "uint128" },
40
+ { internalType: "bytes", name: "hookData", type: "bytes" },
41
+ ],
42
+ internalType: "struct IV4Quoter.QuoteExactSingleParams",
43
+ name: "params",
44
+ type: "tuple",
45
+ },
46
+ ],
47
+ name: "quoteExactInputSingle",
48
+ outputs: [
49
+ { internalType: "uint256", name: "amountOut", type: "uint256" },
50
+ { internalType: "uint256", name: "gasEstimate", type: "uint256" },
51
+ ],
52
+ stateMutability: "nonpayable",
53
+ type: "function",
54
+ },
55
+ ];
56
+ const ERC20_ABI = [
57
+ {
58
+ inputs: [
59
+ { name: "spender", type: "address" },
60
+ { name: "amount", type: "uint256" },
61
+ ],
62
+ name: "approve",
63
+ outputs: [{ name: "", type: "bool" }],
64
+ stateMutability: "nonpayable",
65
+ type: "function",
66
+ },
67
+ {
68
+ inputs: [
69
+ { name: "owner", type: "address" },
70
+ { name: "spender", type: "address" },
71
+ ],
72
+ name: "allowance",
73
+ outputs: [{ name: "", type: "uint256" }],
74
+ stateMutability: "view",
75
+ type: "function",
76
+ },
77
+ ];
78
+ const PERMIT2_ABI = [
79
+ {
80
+ inputs: [
81
+ { name: "token", type: "address" },
82
+ { name: "spender", type: "address" },
83
+ { name: "amount", type: "uint160" },
84
+ { name: "expiration", type: "uint48" },
85
+ ],
86
+ name: "approve",
87
+ outputs: [],
88
+ stateMutability: "nonpayable",
89
+ type: "function",
90
+ },
91
+ {
92
+ inputs: [
93
+ { name: "owner", type: "address" },
94
+ { name: "token", type: "address" },
95
+ { name: "spender", type: "address" },
96
+ ],
97
+ name: "allowance",
98
+ outputs: [
99
+ { name: "amount", type: "uint160" },
100
+ { name: "expiration", type: "uint48" },
101
+ { name: "nonce", type: "uint48" },
102
+ ],
103
+ stateMutability: "view",
104
+ type: "function",
105
+ },
106
+ ];
107
+ const TOKEN_V4_CONFIG_ABI = [
108
+ {
109
+ inputs: [],
110
+ name: "v4Hook",
111
+ outputs: [{ internalType: "address", name: "", type: "address" }],
112
+ stateMutability: "view",
113
+ type: "function",
114
+ },
115
+ {
116
+ inputs: [],
117
+ name: "v4PoolFee",
118
+ outputs: [{ internalType: "uint24", name: "", type: "uint24" }],
119
+ stateMutability: "view",
120
+ type: "function",
121
+ },
122
+ {
123
+ inputs: [],
124
+ name: "v4TickSpacing",
125
+ outputs: [{ internalType: "int24", name: "", type: "int24" }],
126
+ stateMutability: "view",
127
+ type: "function",
128
+ },
129
+ ];
130
+ // Command and action constants
131
+ const COMMANDS = {
132
+ V4_SWAP: "0x10",
133
+ };
134
+ const V4_ACTIONS = {
135
+ SWAP_EXACT_IN_SINGLE: 6,
136
+ TAKE_ALL: 15,
137
+ SETTLE_ALL: 12,
138
+ };
139
+ /**
140
+ * Internal swap service for handling Uniswap V4 swaps between trading token and bondkit token
141
+ */
142
+ class BondkitSwapService {
143
+ constructor(bondkitTokenAddress) {
144
+ this.v4Config = null;
145
+ this.configInitialized = false;
146
+ this.bondkitTokenAddress = bondkitTokenAddress;
147
+ this.publicClient = (0, viem_1.createPublicClient)({
148
+ chain: chains_1.base,
149
+ transport: (0, viem_1.http)(constants_1.BaseMainnetRpcUrl),
150
+ });
151
+ }
152
+ /**
153
+ * Initialize V4 pool configuration from bondkit token contract
154
+ */
155
+ async initializeV4Config() {
156
+ if (this.configInitialized) {
157
+ return;
158
+ }
159
+ try {
160
+ const tokenContract = (0, viem_1.getContract)({
161
+ address: this.bondkitTokenAddress,
162
+ abi: TOKEN_V4_CONFIG_ABI,
163
+ client: this.publicClient,
164
+ });
165
+ const [hook, fee, tickSpacing] = await Promise.all([
166
+ tokenContract.read.v4Hook(),
167
+ tokenContract.read.v4PoolFee(),
168
+ tokenContract.read.v4TickSpacing(),
169
+ ]);
170
+ this.v4Config = {
171
+ hook: hook,
172
+ fee: Number(fee),
173
+ tickSpacing: Number(tickSpacing),
174
+ };
175
+ this.configInitialized = true;
176
+ }
177
+ catch (error) {
178
+ console.warn("Failed to initialize V4 configuration:", error);
179
+ // Use fallback configuration
180
+ this.v4Config = {
181
+ hook: "0xB36f4A2FB18b745ef8eD31452781a463d2B3f0cC",
182
+ fee: 30000,
183
+ tickSpacing: 60,
184
+ };
185
+ this.configInitialized = true;
186
+ }
187
+ }
188
+ /**
189
+ * Get V4 pool configuration
190
+ */
191
+ async getV4Config() {
192
+ await this.initializeV4Config();
193
+ if (!this.v4Config) {
194
+ throw new Error("Failed to initialize V4 configuration");
195
+ }
196
+ return this.v4Config;
197
+ }
198
+ /**
199
+ * Handle token approvals for swap
200
+ */
201
+ async handleTokenApprovals(tokenAddress, amountIn, walletClient, deadline) {
202
+ // Skip approvals for ETH
203
+ if (tokenAddress === "0x0000000000000000000000000000000000000000") {
204
+ return;
205
+ }
206
+ const userAddress = walletClient.account?.address;
207
+ if (!userAddress) {
208
+ throw new Error("No user address found");
209
+ }
210
+ const erc20Contract = (0, viem_1.getContract)({
211
+ address: tokenAddress,
212
+ abi: ERC20_ABI,
213
+ client: walletClient,
214
+ });
215
+ const permit2Contract = (0, viem_1.getContract)({
216
+ address: constants_1.Permit2Address,
217
+ abi: PERMIT2_ABI,
218
+ client: walletClient,
219
+ });
220
+ // Check ERC20 allowance to Permit2
221
+ const currentAllowance = (await erc20Contract.read.allowance([userAddress, constants_1.Permit2Address]));
222
+ const requiredAmount = BigInt(amountIn);
223
+ if (currentAllowance < requiredAmount) {
224
+ await erc20Contract.write.approve([constants_1.Permit2Address, BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")], {
225
+ account: userAddress,
226
+ chain: chains_1.base,
227
+ });
228
+ }
229
+ // Check Permit2 allowance for Universal Router
230
+ const permit2Allowance = (await permit2Contract.read.allowance([
231
+ userAddress,
232
+ tokenAddress,
233
+ constants_1.UniversalRouterAddress,
234
+ ]));
235
+ const [currentPermit2Amount, expiration] = permit2Allowance;
236
+ const currentTime = Math.floor(Date.now() / 1000);
237
+ const isExpired = expiration <= currentTime;
238
+ if (currentPermit2Amount < requiredAmount || isExpired) {
239
+ await permit2Contract.write.approve([tokenAddress, constants_1.UniversalRouterAddress, BigInt("0xffffffffffffffffffffffffffffffffffffff"), Number(deadline)], {
240
+ account: userAddress,
241
+ chain: chains_1.base,
242
+ });
243
+ }
244
+ }
245
+ /**
246
+ * Get swap quote
247
+ */
248
+ async getSwapQuote(params) {
249
+ try {
250
+ const { tokenIn, tokenOut, amountIn, tokenInDecimals, tokenOutDecimals, slippageTolerance } = params;
251
+ const v4Config = await this.getV4Config();
252
+ const amountInWei = (0, viem_1.parseUnits)(amountIn, tokenInDecimals);
253
+ // Determine token order for pool
254
+ const currency0 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenIn : tokenOut;
255
+ const currency1 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenOut : tokenIn;
256
+ const zeroForOne = tokenIn.toLowerCase() === currency0.toLowerCase();
257
+ const poolKey = {
258
+ currency0: currency0,
259
+ currency1: currency1,
260
+ fee: v4Config.fee,
261
+ tickSpacing: v4Config.tickSpacing,
262
+ hooks: v4Config.hook,
263
+ };
264
+ const quoteParams = {
265
+ poolKey,
266
+ zeroForOne,
267
+ exactAmount: BigInt(amountInWei.toString()),
268
+ hookData: "0x",
269
+ };
270
+ const { result } = await this.publicClient.simulateContract({
271
+ address: constants_1.QuoterAddress,
272
+ abi: QUOTER_ABI,
273
+ functionName: "quoteExactInputSingle",
274
+ args: [quoteParams],
275
+ });
276
+ const [amountOut] = result;
277
+ const amountOutRaw = (0, viem_1.formatUnits)(amountOut, tokenOutDecimals);
278
+ const amountOutFormatted = parseFloat(amountOutRaw).toFixed(Math.min(6, tokenOutDecimals));
279
+ // Calculate minimum amount out with slippage
280
+ const slippageMultiplier = (100 - slippageTolerance) / 100;
281
+ const amountOutMinRaw = parseFloat(amountOutFormatted) * slippageMultiplier;
282
+ const amountOutMin = amountOutMinRaw.toFixed(tokenOutDecimals);
283
+ // Simple execution price calculation
284
+ const rate = parseFloat(amountOutFormatted) / parseFloat(amountIn);
285
+ const executionPrice = `1 = ${rate.toFixed(6)}`;
286
+ return {
287
+ amountOut: amountOutFormatted,
288
+ amountOutMin,
289
+ priceImpact: "0.0", // Simplified
290
+ executionPrice,
291
+ fee: (v4Config.fee / 10000).toString(),
292
+ };
293
+ }
294
+ catch (error) {
295
+ console.warn("Error getting swap quote:", error);
296
+ return null;
297
+ }
298
+ }
299
+ /**
300
+ * Execute swap transaction
301
+ */
302
+ async executeSwap(params, walletClient) {
303
+ try {
304
+ const { tokenIn, tokenOut, amountIn, tokenInDecimals, tokenOutDecimals, deadline } = params;
305
+ const swapDeadline = deadline || Math.floor(Date.now() / 1000) + 3600;
306
+ if (!walletClient.account) {
307
+ throw new Error("Wallet client must have an account");
308
+ }
309
+ const amountInWei = (0, viem_1.parseUnits)(amountIn, tokenInDecimals);
310
+ // Handle token approvals
311
+ await this.handleTokenApprovals(tokenIn, amountInWei.toString(), walletClient, swapDeadline);
312
+ // Get quote for minimum amount out
313
+ const quote = await this.getSwapQuote(params);
314
+ if (!quote) {
315
+ throw new Error("Unable to get swap quote");
316
+ }
317
+ const amountOutMinimum = (0, viem_1.parseUnits)(quote.amountOutMin, tokenOutDecimals);
318
+ const v4Config = await this.getV4Config();
319
+ // Determine token order
320
+ const currency0 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenIn : tokenOut;
321
+ const currency1 = tokenIn.toLowerCase() < tokenOut.toLowerCase() ? tokenOut : tokenIn;
322
+ const zeroForOne = tokenIn.toLowerCase() === currency0.toLowerCase();
323
+ const poolKey = [currency0, currency1, v4Config.fee, v4Config.tickSpacing, v4Config.hook];
324
+ // Encode V4 actions
325
+ const actions = [
326
+ {
327
+ type: V4_ACTIONS.SWAP_EXACT_IN_SINGLE,
328
+ params: [poolKey, zeroForOne, amountInWei, amountOutMinimum, "0x"],
329
+ },
330
+ {
331
+ type: V4_ACTIONS.TAKE_ALL,
332
+ params: [(zeroForOne ? currency1 : currency0), BigInt(0)],
333
+ },
334
+ {
335
+ type: V4_ACTIONS.SETTLE_ALL,
336
+ params: [(zeroForOne ? currency0 : currency1), amountInWei],
337
+ },
338
+ ];
339
+ // Encode actions
340
+ const actionTypes = actions.map(action => action.type);
341
+ const actionsBytes = ("0x" + actionTypes.map(type => type.toString(16).padStart(2, "0")).join(""));
342
+ const actionParams = actions.map(action => {
343
+ switch (action.type) {
344
+ case V4_ACTIONS.SWAP_EXACT_IN_SINGLE:
345
+ return (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("((address,address,uint24,int24,address),bool,uint128,uint128,bytes)"), [action.params]);
346
+ case V4_ACTIONS.TAKE_ALL:
347
+ return (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("address,uint256"), action.params);
348
+ case V4_ACTIONS.SETTLE_ALL:
349
+ return (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("address,uint256"), action.params);
350
+ default:
351
+ return "0x00";
352
+ }
353
+ });
354
+ const v4SwapInput = (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("bytes,bytes[]"), [actionsBytes, actionParams]);
355
+ const commands = COMMANDS.V4_SWAP;
356
+ const inputs = [v4SwapInput];
357
+ // Execute swap
358
+ const universalRouter = (0, viem_1.getContract)({
359
+ address: constants_1.UniversalRouterAddress,
360
+ abi: UNIVERSAL_ROUTER_ABI,
361
+ client: walletClient,
362
+ });
363
+ const txHash = await universalRouter.write.execute([commands, inputs, BigInt(swapDeadline)], {
364
+ account: walletClient.account,
365
+ chain: chains_1.base,
366
+ value: tokenIn === "0x0000000000000000000000000000000000000000" ? amountInWei : BigInt(0),
367
+ });
368
+ return txHash;
369
+ }
370
+ catch (error) {
371
+ console.warn("Error executing swap:", error);
372
+ return null;
373
+ }
374
+ }
375
+ }
376
+ exports.BondkitSwapService = BondkitSwapService;
@@ -49,10 +49,9 @@ export type DexMigrationEventArgs = {
49
49
  ethForFeeRecipient: bigint;
50
50
  };
51
51
  export declare enum TokenStatus {
52
- Inactive = 0,// Assuming mapping from ABI, verify actual enum values if specified elsewhere
53
- BondingPhase = 1,
54
- DexPhase = 2,
55
- Migrated = 3
52
+ Uninitialized = 0,
53
+ Bonding = 1,
54
+ Dex = 2
56
55
  }
57
56
  export interface GetTransactionHistoryOptions {
58
57
  userAddress?: Address;
@@ -80,3 +79,10 @@ export interface TransactionResponse {
80
79
  skip: number;
81
80
  data: Transaction[];
82
81
  }
82
+ export interface SwapQuote {
83
+ amountOut: string;
84
+ amountOutMin: string;
85
+ priceImpact: string;
86
+ executionPrice: string;
87
+ fee: string;
88
+ }
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TokenStatus = void 0;
4
- // Enum for Status (used in BondkitToken ABI)
4
+ // Enum for Status (matches contract Status enum exactly)
5
5
  var TokenStatus;
6
6
  (function (TokenStatus) {
7
- TokenStatus[TokenStatus["Inactive"] = 0] = "Inactive";
8
- TokenStatus[TokenStatus["BondingPhase"] = 1] = "BondingPhase";
9
- TokenStatus[TokenStatus["DexPhase"] = 2] = "DexPhase";
10
- TokenStatus[TokenStatus["Migrated"] = 3] = "Migrated";
7
+ TokenStatus[TokenStatus["Uninitialized"] = 0] = "Uninitialized";
8
+ TokenStatus[TokenStatus["Bonding"] = 1] = "Bonding";
9
+ TokenStatus[TokenStatus["Dex"] = 2] = "Dex";
11
10
  })(TokenStatus || (exports.TokenStatus = TokenStatus = {}));
@@ -6,7 +6,7 @@ import { B3ContextType } from "./types";
6
6
  /**
7
7
  * Main B3Provider component
8
8
  */
9
- export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster, clientType, partnerId, }: {
9
+ export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster, clientType, rpcUrls, partnerId, }: {
10
10
  theme: "light" | "dark";
11
11
  children: React.ReactNode;
12
12
  accountOverride?: Account;
@@ -18,6 +18,7 @@ export declare function B3Provider({ theme, children, accountOverride, environme
18
18
  style?: React.CSSProperties;
19
19
  };
20
20
  clientType?: ClientType;
21
+ rpcUrls?: Record<number, string>;
21
22
  partnerId?: string;
22
23
  }): import("react/jsx-runtime").JSX.Element;
23
24
  /**
@@ -7,6 +7,7 @@ const react_1 = require("../../../../global-account/react");
7
7
  const analytics_1 = require("../../../../global-account/utils/analytics");
8
8
  const constants_1 = require("../../../../shared/constants");
9
9
  const supported_1 = require("../../../../shared/constants/chains/supported");
10
+ const debug_1 = require("../../../../shared/utils/debug");
10
11
  const thirdweb_1 = require("../../../../shared/utils/thirdweb");
11
12
  require("@reservoir0x/relay-kit-ui/styles.css");
12
13
  const react_query_1 = require("@tanstack/react-query");
@@ -18,6 +19,7 @@ const wagmi_1 = require("wagmi");
18
19
  const client_manager_1 = require("../../../client-manager");
19
20
  const StyleRoot_1 = require("../StyleRoot");
20
21
  const types_1 = require("./types");
22
+ const debug = (0, debug_1.debugB3React)("B3Provider");
21
23
  /**
22
24
  * Default permissions configuration for B3 provider
23
25
  */
@@ -32,7 +34,7 @@ const queryClient = new react_query_1.QueryClient();
32
34
  /**
33
35
  * Main B3Provider component
34
36
  */
35
- function B3Provider({ theme = "light", children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster, clientType = "rest", partnerId, }) {
37
+ function B3Provider({ theme = "light", children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster, clientType = "rest", rpcUrls, partnerId, }) {
36
38
  // Initialize Google Analytics on mount
37
39
  (0, react_2.useEffect)(() => {
38
40
  (0, analytics_1.loadGA4Script)();
@@ -50,18 +52,28 @@ function B3Provider({ theme = "light", children, accountOverride, environment, a
50
52
  client: thirdweb_1.client,
51
53
  };
52
54
  }, [partnerId]);
53
- const wagmiConfig = (0, react_2.useMemo)(() => (0, wagmi_1.createConfig)({
54
- chains: [supported_1.supportedChains[0], ...supported_1.supportedChains.slice(1)],
55
- transports: Object.fromEntries(supported_1.supportedChains.map(chain => [chain.id, (0, wagmi_1.http)()])),
56
- connectors: [
57
- (0, wagmi_adapter_1.inAppWalletConnector)({
58
- ...ecocystemConfig,
59
- client: thirdweb_1.client,
60
- }),
61
- // injected(),
62
- // coinbaseWallet({ appName: "HypeDuel" }),
63
- ],
64
- }), [partnerId]);
55
+ // Stringify rpcUrls for stable comparison to prevent wagmiConfig recreation
56
+ // when parent component passes new object references with same content
57
+ const rpcUrlsString = (0, react_2.useMemo)(() => (rpcUrls ? JSON.stringify(rpcUrls) : undefined), [rpcUrls]);
58
+ /**
59
+ * Creates wagmi config with optional custom RPC URLs
60
+ * @param rpcUrls - Optional mapping of chain IDs to RPC URLs
61
+ */
62
+ const wagmiConfig = (0, react_2.useMemo)(() => {
63
+ const parsedRpcUrls = rpcUrlsString ? JSON.parse(rpcUrlsString) : undefined;
64
+ return (0, wagmi_1.createConfig)({
65
+ chains: [supported_1.supportedChains[0], ...supported_1.supportedChains.slice(1)],
66
+ transports: Object.fromEntries(supported_1.supportedChains.map(chain => [chain.id, (0, wagmi_1.http)(parsedRpcUrls?.[chain.id])])),
67
+ connectors: [
68
+ (0, wagmi_adapter_1.inAppWalletConnector)({
69
+ ...(ecocystemConfig || {}),
70
+ client: thirdweb_1.client,
71
+ }),
72
+ // injected(),
73
+ // coinbaseWallet({ appName: "HypeDuel" }),
74
+ ],
75
+ });
76
+ }, [ecocystemConfig, rpcUrlsString]);
65
77
  return ((0, jsx_runtime_1.jsx)(react_3.ThirdwebProvider, { children: (0, jsx_runtime_1.jsx)(wagmi_1.WagmiProvider, { config: wagmiConfig, children: (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: queryClient, children: (0, jsx_runtime_1.jsx)(react_1.TooltipProvider, { children: (0, jsx_runtime_1.jsx)(InnerProvider, { accountOverride: accountOverride, environment: environment, theme: theme, automaticallySetFirstEoa: !!automaticallySetFirstEoa, clientType: clientType, children: (0, jsx_runtime_1.jsxs)(react_1.RelayKitProviderWrapper, { simDuneApiKey: simDuneApiKey, children: [children, (0, jsx_runtime_1.jsx)(StyleRoot_1.StyleRoot, { id: "b3-root" }), (0, jsx_runtime_1.jsx)(sonner_1.Toaster, { theme: theme, position: toaster?.position, style: toaster?.style })] }) }) }) }) }) }));
66
78
  }
67
79
  /**
@@ -73,20 +85,7 @@ function InnerProvider({ children, accountOverride, environment, defaultPermissi
73
85
  const wallets = (0, react_3.useConnectedWallets)();
74
86
  const setActiveWallet = (0, react_3.useSetActiveWallet)();
75
87
  const isAuthenticated = (0, react_1.useAuthStore)(state => state.isAuthenticated);
76
- console.log("@@wallets", wallets);
77
- // Get auth token fro mecosystm wallet
78
- (0, react_2.useEffect)(() => {
79
- async function getEcosystemAccount() {
80
- const ecosystemWallet = wallets.find(wallet => wallet.id === constants_1.ecosystemWalletId);
81
- if (ecosystemWallet) {
82
- const authToken = ecosystemWallet.getAuthToken?.();
83
- const ecosystemAccount = await ecosystemWallet.getAccount();
84
- console.log("@wallets:@authToken", authToken);
85
- console.log("@@wallets:ecosystemAccount", ecosystemAccount);
86
- }
87
- }
88
- getEcosystemAccount();
89
- }, [wallets]);
88
+ debug("@@wallets", wallets);
90
89
  const [user, setUser] = (0, react_2.useState)(() => {
91
90
  // Try to restore user from localStorage on initialization
92
91
  if (typeof window !== "undefined") {
@@ -117,7 +116,7 @@ function InnerProvider({ children, accountOverride, environment, defaultPermissi
117
116
  const setWallet = (0, react_2.useCallback)((wallet) => {
118
117
  setManuallySelectedWallet(wallet);
119
118
  const account = wallet.getAccount();
120
- console.log("@@gio:setWallet", wallet.id, account?.address);
119
+ debug("@@setWallet", wallet.id, account?.address);
121
120
  setActiveWallet(wallet);
122
121
  }, [setManuallySelectedWallet, setActiveWallet]);
123
122
  (0, react_2.useEffect)(() => {
@@ -7,12 +7,14 @@ exports.LinkAccount = LinkAccount;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const app_1 = __importDefault(require("../../../../global-account/app"));
9
9
  const constants_1 = require("../../../../shared/constants");
10
+ const b3Chain_1 = require("../../../../shared/constants/chains/b3Chain");
10
11
  const thirdweb_1 = require("../../../../shared/utils/thirdweb");
11
12
  const lucide_react_1 = require("lucide-react");
12
13
  const react_1 = require("react");
13
14
  const sonner_1 = require("sonner");
14
15
  const react_2 = require("thirdweb/react");
15
16
  const wallets_1 = require("thirdweb/wallets");
17
+ const __1 = require("../..");
16
18
  const useModalStore_1 = require("../../stores/useModalStore");
17
19
  const profileDisplay_1 = require("../../utils/profileDisplay");
18
20
  const useB3_1 = require("../B3Provider/useB3");
@@ -36,6 +38,38 @@ const AUTH_METHODS = [
36
38
  icon: (0, jsx_runtime_1.jsx)(FarcasterIcon_1.FarcasterIcon, { className: "size-6" }),
37
39
  },
38
40
  ];
41
+ const WALLET_METHODS = [
42
+ {
43
+ id: "wallet",
44
+ label: "Wallet",
45
+ enabled: true,
46
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
47
+ walletType: "com.coinbase.wallet",
48
+ },
49
+ { id: "wallet", label: "Wallet", enabled: true, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }), walletType: "io.metamask" },
50
+ {
51
+ id: "wallet",
52
+ label: "Wallet",
53
+ enabled: true,
54
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
55
+ walletType: "me.rainbow",
56
+ },
57
+ {
58
+ id: "wallet",
59
+ label: "Wallet",
60
+ enabled: true,
61
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
62
+ walletType: "app.phantom",
63
+ },
64
+ { id: "wallet", label: "Wallet", enabled: true, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }), walletType: "io.rabby" },
65
+ {
66
+ id: "wallet",
67
+ label: "Wallet",
68
+ enabled: true,
69
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
70
+ walletType: "walletConnect",
71
+ },
72
+ ];
39
73
  function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, partnerId, className, }) {
40
74
  const { isLinking, linkingMethod, setLinkingState, navigateBack, setB3ModalContentType } = (0, useModalStore_1.useModalStore)();
41
75
  const [selectedMethod, setSelectedMethod] = (0, react_1.useState)(null);
@@ -47,12 +81,12 @@ function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, pa
47
81
  const { data: profilesRaw = [] } = (0, react_2.useProfiles)({ client: thirdweb_1.client });
48
82
  // Get connected auth methods
49
83
  const connectedAuthMethods = profilesRaw
50
- .filter((profile) => !["custom_auth_endpoint", "siwe"].includes(profile.type))
84
+ .filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
51
85
  .map((profile) => profile.type);
52
86
  // Filter available auth methods
53
87
  const availableAuthMethods = AUTH_METHODS.filter(method => !connectedAuthMethods.includes(method.id) && method.enabled);
54
88
  const profiles = profilesRaw
55
- .filter((profile) => !["custom_auth_endpoint", "siwe"].includes(profile.type))
89
+ .filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
56
90
  .map((profile) => ({
57
91
  ...(0, profileDisplay_1.getProfileDisplayInfo)(profile),
58
92
  originalProfile: profile,
@@ -182,6 +216,26 @@ function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, pa
182
216
  onError?.(error);
183
217
  }
184
218
  };
219
+ const handleLinkWallet = async (walletType) => {
220
+ setLinkingState(true, "wallet");
221
+ console.log("selectedMethod", walletType);
222
+ try {
223
+ if (!walletType) {
224
+ throw new Error("Wallet type not found");
225
+ }
226
+ await linkProfile({
227
+ client: thirdweb_1.client,
228
+ strategy: "wallet",
229
+ wallet: (0, wallets_1.createWallet)(walletType),
230
+ chain: b3Chain_1.thirdwebB3Mainnet,
231
+ }, mutationOptions);
232
+ }
233
+ catch (error) {
234
+ console.error("Error linking account:", error);
235
+ setError(error instanceof Error ? error.message : "Failed to link account");
236
+ onError?.(error);
237
+ }
238
+ };
185
239
  const handleSocialLink = async (strategy) => {
186
240
  try {
187
241
  console.log("handleSocialLink", strategy);
@@ -262,5 +316,11 @@ function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, pa
262
316
  else {
263
317
  handleSocialLink(method.id);
264
318
  }
265
- }, disabled: linkingMethod === method.id, children: isLinking && linkingMethod === method.id ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-5 w-5 animate-spin" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-method-content flex items-center gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "b3-link-account-method-icon flex items-center justify-center rounded-full", children: method.icon }), (0, jsx_runtime_1.jsx)("span", { className: "b3-link-account-method-label font-medium", children: method.label })] })) }, method.id))), availableAuthMethods.length === 0 && ((0, jsx_runtime_1.jsx)("div", { className: "text-b3-foreground-muted py-8 text-center", children: "All available authentication methods have been connected" }))] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-form space-y-4", children: [selectedMethod === "email" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Email Address" }), (0, jsx_runtime_1.jsx)("input", { type: "email", placeholder: "Enter your email", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: email, onChange: e => setEmail(e.target.value), disabled: otpSent || (isLinking && linkingMethod === "email") })] })), selectedMethod === "phone" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Phone Number" }), (0, jsx_runtime_1.jsx)("input", { type: "tel", placeholder: "Enter your phone number", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: phone, onChange: e => setPhone(e.target.value), disabled: otpSent || (isLinking && linkingMethod === "phone") }), (0, jsx_runtime_1.jsx)("p", { className: "text-b3-foreground-muted font-neue-montreal-medium text-sm", children: "Include country code (e.g., +1 for US)" })] })), error && (0, jsx_runtime_1.jsx)("div", { className: "text-b3-negative font-neue-montreal-medium py-2 text-sm", children: error }), otpSent ? ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Verification Code" }), (0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: "Enter verification code", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: otp, onChange: e => setOtp(e.target.value) })] }), (0, jsx_runtime_1.jsx)(button_1.Button, { className: "bg-b3-primary-blue hover:bg-b3-primary-blue/90 font-neue-montreal-semibold h-12 w-full text-white", onClick: handleLinkAccount, children: "Link Account" })] })) : ((0, jsx_runtime_1.jsx)(button_1.Button, { className: "bg-b3-primary-blue hover:bg-b3-primary-blue/90 font-neue-montreal-semibold h-12 w-full text-white", onClick: handleSendOTP, disabled: (!email && !phone) || (isLinking && linkingMethod === selectedMethod), children: isLinking && linkingMethod === selectedMethod ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "animate-spin" })) : ("Send Verification Code") }))] }))] }));
319
+ }, disabled: linkingMethod === method.id, children: isLinking && linkingMethod === method.id ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-5 w-5 animate-spin" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-method-content flex items-center gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "b3-link-account-method-icon flex items-center justify-center rounded-full", children: method.icon }), (0, jsx_runtime_1.jsx)("span", { className: "b3-link-account-method-label font-medium", children: method.label })] })) }, method.id))), WALLET_METHODS.map(method => {
320
+ if (!method.walletType) {
321
+ return null;
322
+ }
323
+ return ((0, jsx_runtime_1.jsx)(__1.WalletRow, { walletId: method.walletType, onClick: () => handleLinkWallet(method.walletType), isLoading: isLinking }, method.walletType));
324
+ }), availableAuthMethods.length === 0 && ((0, jsx_runtime_1.jsx)("div", { className: "text-b3-foreground-muted py-8 text-center", children: "All available authentication methods have been connected" }))] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-form space-y-4", children: [selectedMethod === "email" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Email Address" }), (0, jsx_runtime_1.jsx)("input", { type: "email", placeholder: "Enter your email", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: email, onChange: e => setEmail(e.target.value), disabled: otpSent || (isLinking && linkingMethod === "email") })] })), selectedMethod === "phone" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Phone Number" }), (0, jsx_runtime_1.jsx)("input", { type: "tel", placeholder: "Enter your phone number", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: phone, onChange: e => setPhone(e.target.value), disabled: otpSent || (isLinking && linkingMethod === "phone") }), (0, jsx_runtime_1.jsx)("p", { className: "text-b3-foreground-muted font-neue-montreal-medium text-sm", children: "Include country code (e.g., +1 for US)" })] })), error && (0, jsx_runtime_1.jsx)("div", { className: "text-b3-negative font-neue-montreal-medium py-2 text-sm", children: error }), (selectedMethod === "email" || selectedMethod === "phone") &&
325
+ (otpSent ? ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Verification Code" }), (0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: "Enter verification code", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: otp, onChange: e => setOtp(e.target.value) })] }), (0, jsx_runtime_1.jsx)(button_1.Button, { className: "bg-b3-primary-blue hover:bg-b3-primary-blue/90 font-neue-montreal-semibold h-12 w-full text-white", onClick: handleLinkAccount, children: "Link Account" })] })) : ((0, jsx_runtime_1.jsx)(button_1.Button, { className: "bg-b3-primary-blue hover:bg-b3-primary-blue/90 font-neue-montreal-semibold h-12 w-full text-white", onClick: handleSendOTP, disabled: (!email && !phone) || (isLinking && linkingMethod === selectedMethod), children: isLinking && linkingMethod === selectedMethod ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "animate-spin" })) : ("Send Verification Code") })))] }))] }));
266
326
  }