thirdweb 5.87.3 → 5.88.0-nightly-e50d77d28fd866efdfce706b73320541d260728d-20250208000322

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 (169) hide show
  1. package/dist/cjs/client/client.js +2 -1
  2. package/dist/cjs/client/client.js.map +1 -1
  3. package/dist/cjs/contract/deployment/zksync/implementations.js +3 -0
  4. package/dist/cjs/contract/deployment/zksync/implementations.js.map +1 -1
  5. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js +4 -2
  6. package/dist/cjs/contract/deployment/zksync/zkDeployContract.js.map +1 -1
  7. package/dist/cjs/pay/buyWithCrypto/getQuote.js +4 -14
  8. package/dist/cjs/pay/buyWithCrypto/getQuote.js.map +1 -1
  9. package/dist/cjs/pay/buyWithCrypto/getTransfer.js +1 -13
  10. package/dist/cjs/pay/buyWithCrypto/getTransfer.js.map +1 -1
  11. package/dist/cjs/pay/buyWithFiat/getQuote.js.map +1 -1
  12. package/dist/cjs/pay/utils/commonTypes.js +2 -0
  13. package/dist/cjs/pay/utils/commonTypes.js.map +1 -1
  14. package/dist/cjs/react/core/utils/storage.js +2 -1
  15. package/dist/cjs/react/core/utils/storage.js.map +1 -1
  16. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +50 -223
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js +111 -0
  19. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js.map +1 -0
  20. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +1 -1
  21. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
  22. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +30 -2
  23. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
  24. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.js +24 -0
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.js.map +1 -0
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +2 -1
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +19 -16
  29. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  30. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +37 -0
  31. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -0
  32. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
  34. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +165 -0
  35. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -0
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
  37. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
  38. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +33 -6
  39. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  40. package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js +8 -0
  41. package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
  42. package/dist/cjs/react/web/utils/errors.js +16 -0
  43. package/dist/cjs/react/web/utils/errors.js.map +1 -0
  44. package/dist/cjs/version.js +1 -1
  45. package/dist/cjs/version.js.map +1 -1
  46. package/dist/cjs/wallets/smart/index.js +27 -0
  47. package/dist/cjs/wallets/smart/index.js.map +1 -1
  48. package/dist/cjs/wallets/smart/types.js.map +1 -1
  49. package/dist/esm/client/client.js +2 -1
  50. package/dist/esm/client/client.js.map +1 -1
  51. package/dist/esm/contract/deployment/zksync/implementations.js +3 -0
  52. package/dist/esm/contract/deployment/zksync/implementations.js.map +1 -1
  53. package/dist/esm/contract/deployment/zksync/zkDeployContract.js +4 -2
  54. package/dist/esm/contract/deployment/zksync/zkDeployContract.js.map +1 -1
  55. package/dist/esm/pay/buyWithCrypto/getQuote.js +4 -14
  56. package/dist/esm/pay/buyWithCrypto/getQuote.js.map +1 -1
  57. package/dist/esm/pay/buyWithCrypto/getTransfer.js +1 -13
  58. package/dist/esm/pay/buyWithCrypto/getTransfer.js.map +1 -1
  59. package/dist/esm/pay/buyWithFiat/getQuote.js.map +1 -1
  60. package/dist/esm/pay/utils/commonTypes.js +1 -1
  61. package/dist/esm/pay/utils/commonTypes.js.map +1 -1
  62. package/dist/esm/react/core/utils/storage.js +1 -0
  63. package/dist/esm/react/core/utils/storage.js.map +1 -1
  64. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +50 -223
  65. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  66. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js +108 -0
  67. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js.map +1 -0
  68. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +1 -1
  69. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
  70. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +30 -2
  71. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
  72. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.js +21 -0
  73. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.js.map +1 -0
  74. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +2 -1
  75. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  76. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +19 -16
  77. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  78. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +34 -0
  79. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -0
  80. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
  81. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
  82. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +162 -0
  83. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -0
  84. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
  85. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
  86. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +33 -6
  87. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  88. package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js +7 -0
  89. package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
  90. package/dist/esm/react/web/utils/errors.js +12 -0
  91. package/dist/esm/react/web/utils/errors.js.map +1 -0
  92. package/dist/esm/version.js +1 -1
  93. package/dist/esm/version.js.map +1 -1
  94. package/dist/esm/wallets/smart/index.js +27 -0
  95. package/dist/esm/wallets/smart/index.js.map +1 -1
  96. package/dist/esm/wallets/smart/types.js.map +1 -1
  97. package/dist/types/client/client.d.ts.map +1 -1
  98. package/dist/types/contract/deployment/zksync/implementations.d.ts.map +1 -1
  99. package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts.map +1 -1
  100. package/dist/types/pay/buyWithCrypto/getQuote.d.ts +2 -2
  101. package/dist/types/pay/buyWithCrypto/getQuote.d.ts.map +1 -1
  102. package/dist/types/pay/buyWithCrypto/getTransfer.d.ts +2 -2
  103. package/dist/types/pay/buyWithCrypto/getTransfer.d.ts.map +1 -1
  104. package/dist/types/pay/buyWithFiat/getQuote.d.ts +4 -0
  105. package/dist/types/pay/buyWithFiat/getQuote.d.ts.map +1 -1
  106. package/dist/types/pay/utils/commonTypes.d.ts +2 -1
  107. package/dist/types/pay/utils/commonTypes.d.ts.map +1 -1
  108. package/dist/types/react/core/utils/storage.d.ts +1 -0
  109. package/dist/types/react/core/utils/storage.d.ts.map +1 -1
  110. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  111. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.d.ts +25 -0
  112. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.d.ts.map +1 -0
  113. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts.map +1 -1
  114. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.d.ts +9 -0
  115. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.d.ts.map +1 -0
  116. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts +1 -0
  117. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts.map +1 -1
  118. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.d.ts.map +1 -1
  119. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts +1 -0
  120. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
  121. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.d.ts +11 -0
  122. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.d.ts.map +1 -0
  123. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts +1 -0
  124. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts.map +1 -1
  125. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.d.ts +31 -0
  126. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.d.ts.map +1 -0
  127. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts.map +1 -1
  128. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
  129. package/dist/types/react/web/ui/ConnectWallet/screens/nativeToken.d.ts +2 -0
  130. package/dist/types/react/web/ui/ConnectWallet/screens/nativeToken.d.ts.map +1 -1
  131. package/dist/types/react/web/ui/components/text.d.ts +1 -1
  132. package/dist/types/react/web/ui/components/text.d.ts.map +1 -1
  133. package/dist/types/react/web/utils/errors.d.ts +14 -0
  134. package/dist/types/react/web/utils/errors.d.ts.map +1 -0
  135. package/dist/types/version.d.ts +1 -1
  136. package/dist/types/version.d.ts.map +1 -1
  137. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  138. package/dist/types/wallets/smart/types.d.ts +5 -0
  139. package/dist/types/wallets/smart/types.d.ts.map +1 -1
  140. package/package.json +2 -2
  141. package/src/client/client.test.ts +2 -2
  142. package/src/client/client.ts +2 -1
  143. package/src/contract/deployment/zksync/implementations.ts +3 -0
  144. package/src/contract/deployment/zksync/zkDeployContract.ts +5 -2
  145. package/src/pay/buyWithCrypto/getQuote.ts +6 -15
  146. package/src/pay/buyWithCrypto/getTransfer.ts +2 -14
  147. package/src/pay/buyWithFiat/getQuote.ts +5 -0
  148. package/src/pay/utils/commonTypes.ts +3 -1
  149. package/src/react/core/utils/storage.ts +1 -0
  150. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +70 -556
  151. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.tsx +307 -0
  152. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.tsx +3 -5
  153. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.tsx +33 -1
  154. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/Providers.tsx +57 -0
  155. package/src/react/web/ui/ConnectWallet/screens/Buy/main/types.ts +1 -0
  156. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.tsx +12 -2
  157. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +22 -19
  158. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.tsx +51 -0
  159. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.tsx +2 -0
  160. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.tsx +353 -0
  161. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.tsx +3 -5
  162. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +43 -6
  163. package/src/react/web/ui/ConnectWallet/screens/nativeToken.ts +8 -0
  164. package/src/react/web/ui/components/text.tsx +1 -1
  165. package/src/react/web/utils/errors.ts +22 -0
  166. package/src/version.ts +1 -1
  167. package/src/wallets/smart/index.ts +28 -0
  168. package/src/wallets/smart/smart-wallet-integration.test.ts +25 -0
  169. package/src/wallets/smart/types.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"implementations.js","sourceRoot":"","sources":["../../../../../src/contract/deployment/zksync/implementations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAA2C;IAC5E,CAAC,GAAG,CAAC,EAAE;QACL,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,GAAG,CAAC,EAAE;QACL,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,GAAG,CAAC,EAAE;QACL,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,MAAM,CAAC,EAAE;QACR,aAAa,EAAE,4CAA4C;KAC5D;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,CAAC,GAAG,CAAC,EAAE,4CAA4C;IACnD,CAAC,GAAG,CAAC,EAAE,4CAA4C;IACnD,CAAC,KAAK,CAAC,EAAE,4CAA4C;IACrD,CAAC,KAAK,CAAC,EAAE,4CAA4C;IACrD,CAAC,MAAM,CAAC,EAAE,4CAA4C;IACtD,CAAC,IAAI,CAAC,EAAE,4CAA4C;CACrD,CAAC"}
1
+ {"version":3,"file":"implementations.js","sourceRoot":"","sources":["../../../../../src/contract/deployment/zksync/implementations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAA2C;IAC5E,CAAC,GAAG,CAAC,EAAE;QACL,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,GAAG,CAAC,EAAE;QACL,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,GAAG,CAAC,EAAE;QACL,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,MAAM,CAAC,EAAE;QACR,aAAa,EAAE,4CAA4C;KAC5D;IACD,CAAC,IAAI,CAAC,EAAE;QACN,aAAa,EAAE,4CAA4C;KAC5D;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,CAAC,GAAG,CAAC,EAAE,4CAA4C;IACnD,CAAC,GAAG,CAAC,EAAE,4CAA4C;IACnD,CAAC,KAAK,CAAC,EAAE,4CAA4C;IACrD,CAAC,KAAK,CAAC,EAAE,4CAA4C;IACrD,CAAC,MAAM,CAAC,EAAE,4CAA4C;IACtD,CAAC,IAAI,CAAC,EAAE,4CAA4C;CACrD,CAAC"}
@@ -5,18 +5,20 @@ import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and
5
5
  import { prepareTransaction } from "../../../transaction/prepare-transaction.js";
6
6
  import { normalizeFunctionParams } from "../../../utils/abi/normalizeFunctionParams.js";
7
7
  import { CONTRACT_DEPLOYER_ADDRESS } from "../../../utils/any-evm/zksync/constants.js";
8
+ import { ensureBytecodePrefix } from "../../../utils/bytecode/prefix.js";
8
9
  import { zkDeployContractDeterministic } from "./zkDeployDeterministic.js";
9
10
  /**
10
11
  * @internal
11
12
  */
12
13
  export async function zkDeployContract(options) {
14
+ const bytecode = ensureBytecodePrefix(options.bytecode);
13
15
  if (options.salt !== undefined) {
14
16
  // if a salt is provided, use the deterministic deployer
15
17
  return zkDeployContractDeterministic(options);
16
18
  }
17
19
  const data = encodeDeployData({
18
20
  abi: options.abi,
19
- bytecode: options.bytecode,
21
+ bytecode,
20
22
  deploymentType: options.deploymentType ?? "create",
21
23
  args: normalizeFunctionParams(options.abi.find((abi) => abi.type === "constructor"), options.params),
22
24
  });
@@ -28,7 +30,7 @@ export async function zkDeployContract(options) {
28
30
  to: CONTRACT_DEPLOYER_ADDRESS,
29
31
  data,
30
32
  eip712: {
31
- factoryDeps: [options.bytecode],
33
+ factoryDeps: [bytecode],
32
34
  // TODO (zksync): allow passing in a paymaster
33
35
  },
34
36
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"zkDeployContract.js","sourceRoot":"","sources":["../../../../../src/contract/deployment/zksync/zkDeployContract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sFAAsF,CAAC;AAC7H,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAGvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAMC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,wDAAwD;QACxD,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ;QAClD,IAAI,EAAE,uBAAuB,CAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,EACrD,OAAO,CAAC,MAAM,CACf;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC;QAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,kBAAkB,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,EAAE,EAAE,yBAAyB;YAC7B,IAAI;YACJ,MAAM,EAAE;gBACN,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC/B,8CAA8C;aAC/C;SACF,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,cAAc,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,CAAC,qBAAqB,EAAE,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;IAExD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"zkDeployContract.js","sourceRoot":"","sources":["../../../../../src/contract/deployment/zksync/zkDeployContract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sFAAsF,CAAC;AAC7H,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAMC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,wDAAwD;QACxD,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ;QACR,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ;QAClD,IAAI,EAAE,uBAAuB,CAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,EACrD,OAAO,CAAC,MAAM,CACf;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC;QAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,kBAAkB,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,EAAE,EAAE,yBAAyB;YAC7B,IAAI;YACJ,MAAM,EAAE;gBACN,WAAW,EAAE,CAAC,QAAQ,CAAC;gBACvB,8CAA8C;aAC/C;SACF,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,cAAc,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,CAAC,qBAAqB,EAAE,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;IAExD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -1,6 +1,4 @@
1
1
  import { getCachedChain } from "../../chains/utils.js";
2
- import { getContract } from "../../contract/contract.js";
3
- import { approve } from "../../extensions/erc20/write/approve.js";
4
2
  import { getClientFetch } from "../../utils/fetch.js";
5
3
  import { stringify } from "../../utils/json.js";
6
4
  import { getPayBuyWithCryptoQuoteEndpoint } from "../utils/definitions.js";
@@ -64,6 +62,8 @@ export async function getBuyWithCryptoQuote(params) {
64
62
  }
65
63
  const data = (await response.json())
66
64
  .result;
65
+ // check if the fromAddress already has approval for the given amount
66
+ const approvalData = data.approval;
67
67
  const swapRoute = {
68
68
  transactionRequest: {
69
69
  chain: getCachedChain(data.transactionRequest.chainId),
@@ -72,19 +72,9 @@ export async function getBuyWithCryptoQuote(params) {
72
72
  to: data.transactionRequest.to,
73
73
  value: BigInt(data.transactionRequest.value),
74
74
  gas: BigInt(data.transactionRequest.gasLimit),
75
- gasPrice: BigInt(data.transactionRequest.gasPrice),
75
+ gasPrice: undefined, // ignore gas price returned by the quote, we handle it ourselves
76
76
  },
77
- approval: data.approval
78
- ? approve({
79
- contract: getContract({
80
- client: params.client,
81
- address: data.approval.tokenAddress,
82
- chain: getCachedChain(data.approval.chainId),
83
- }),
84
- spender: data.approval?.spenderAddress,
85
- amountWei: BigInt(data.approval.amountWei),
86
- })
87
- : undefined,
77
+ approvalData,
88
78
  swapDetails: {
89
79
  fromAddress: data.fromAddress,
90
80
  toAddress: data.toAddress,
@@ -1 +1 @@
1
- {"version":3,"file":"getQuote.js","sourceRoot":"","sources":["../../../../src/pay/buyWithCrypto/getQuote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getQuote.js","sourceRoot":"","sources":["../../../../src/pay/buyWithCrypto/getQuote.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import { getCachedChain } from "../../chains/utils.js";
2
- import { getContract } from "../../contract/contract.js";
3
- import { approve } from "../../extensions/erc20/write/approve.js";
4
2
  import { getClientFetch } from "../../utils/fetch.js";
5
3
  import { stringify } from "../../utils/json.js";
6
4
  import { getPayBuyWithCryptoTransferEndpoint } from "../utils/definitions.js";
@@ -65,17 +63,7 @@ export async function getBuyWithCryptoTransfer(params) {
65
63
  value: BigInt(data.transactionRequest.value),
66
64
  gas: BigInt(data.transactionRequest.gasLimit),
67
65
  },
68
- approval: data.approval
69
- ? approve({
70
- contract: getContract({
71
- client: params.client,
72
- address: data.approval.tokenAddress,
73
- chain: getCachedChain(data.approval.chainId),
74
- }),
75
- spender: data.approval.spenderAddress,
76
- amountWei: BigInt(data.approval.amountWei),
77
- })
78
- : undefined,
66
+ approvalData: data.approval,
79
67
  fromAddress: data.fromAddress,
80
68
  toAddress: data.toAddress,
81
69
  paymentToken: data.paymentToken,
@@ -1 +1 @@
1
- {"version":3,"file":"getTransfer.js","sourceRoot":"","sources":["../../../../src/pay/buyWithCrypto/getTransfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getTransfer.js","sourceRoot":"","sources":["../../../../src/pay/buyWithCrypto/getTransfer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAC;AAqF9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAsC;IAEtC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,mCAAmC,EAAE,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,SAAS,CAAC;gBACd,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACpC,MAAM,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAkC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAE3E,MAAM,QAAQ,GAA0B;YACtC,kBAAkB,EAAE;gBAClB,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBACtD,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAY;gBAC1C,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAa;gBACzC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAC5C,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;aAC9C;YACD,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getQuote.js","sourceRoot":"","sources":["../../../../src/pay/buyWithFiat/getQuote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AA8OzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC;IAEjC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,8BAA8B,EAAE,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,SAAS,CAAC;gBACd,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACtC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC5C,CAAC;SACH,CAAC,CAAC;QAEH,oEAAoE;QACpE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACpC,MAAM,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"getQuote.js","sourceRoot":"","sources":["../../../../src/pay/buyWithFiat/getQuote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAmPzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC;IAEjC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,8BAA8B,EAAE,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,SAAS,CAAC;gBACd,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACtC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC5C,CAAC;SACH,CAAC,CAAC;QAEH,oEAAoE;QACpE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACpC,MAAM,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export const FiatProviders = ["COINBASE", "STRIPE", "TRANSAK", "KADO"];
2
2
  //# sourceMappingURL=commonTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commonTypes.js","sourceRoot":"","sources":["../../../../src/pay/utils/commonTypes.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"commonTypes.js","sourceRoot":"","sources":["../../../../src/pay/utils/commonTypes.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export const LAST_AUTH_PROVIDER_STORAGE_KEY = "lastAuthProvider";
2
+ export const PREFERRED_FIAT_PROVIDER_STORAGE_KEY = "preferredFiatProvider";
2
3
  export async function setLastAuthProvider(authProvider, storage) {
3
4
  await storage.setItem(LAST_AUTH_PROVIDER_STORAGE_KEY, authProvider);
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/storage.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,8BAA8B,GAAG,kBAAkB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAsC,EACtC,OAAqB;IAErB,MAAM,OAAO,CAAC,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAqB;IAC7D,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAErD,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/storage.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,8BAA8B,GAAG,kBAAkB,CAAC;AACjE,MAAM,CAAC,MAAM,mCAAmC,GAAG,uBAAuB,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAsC,EACtC,OAAqB;IAErB,MAAM,OAAO,CAAC,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAqB;IAC7D,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAErD,CAAC;AACX,CAAC"}
@@ -1,24 +1,17 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useQueryClient } from "@tanstack/react-query";
3
3
  import { useCallback, useMemo, useState } from "react";
4
4
  import { NATIVE_TOKEN_ADDRESS } from "../../../../../../constants/addresses.js";
5
- import { isSwapRequiredPostOnramp } from "../../../../../../pay/buyWithFiat/isSwapRequiredPostOnramp.js";
6
- import { formatNumber } from "../../../../../../utils/formatNumber.js";
7
- import { spacing, } from "../../../../../core/design-system/index.js";
8
- import { useWalletBalance } from "../../../../../core/hooks/others/useWalletBalance.js";
9
- import { useBuyWithCryptoQuote } from "../../../../../core/hooks/pay/useBuyWithCryptoQuote.js";
10
- import { useBuyWithFiatQuote } from "../../../../../core/hooks/pay/useBuyWithFiatQuote.js";
5
+ import { fontSize, spacing, } from "../../../../../core/design-system/index.js";
11
6
  import { useActiveAccount } from "../../../../../core/hooks/wallets/useActiveAccount.js";
12
7
  import { invalidateWalletBalance } from "../../../../../core/providers/invalidateWalletBalance.js";
13
8
  import { ErrorState } from "../../../../wallets/shared/ErrorState.js";
14
9
  import { LoadingScreen } from "../../../../wallets/shared/LoadingScreen.js";
15
10
  import { ChainName } from "../../../components/ChainName.js";
16
- import { Drawer, DrawerOverlay, useDrawer, } from "../../../components/Drawer.js";
17
11
  import { Spacer } from "../../../components/Spacer.js";
18
- import { Spinner } from "../../../components/Spinner.js";
19
- import { SwitchNetworkButton } from "../../../components/SwitchNetwork.js";
20
12
  import { Container, Line, ModalHeader } from "../../../components/basic.js";
21
13
  import { Button } from "../../../components/buttons.js";
14
+ import { Input } from "../../../components/formElements.js";
22
15
  import { Text } from "../../../components/text.js";
23
16
  import { TokenSymbol } from "../../../components/token/TokenSymbol.js";
24
17
  import { ConnectButton } from "../../ConnectButton.js";
@@ -27,22 +20,18 @@ import { TokenSelector } from "../TokenSelector.js";
27
20
  import { WalletSwitcherConnectionScreen } from "../WalletSwitcherConnectionScreen.js";
28
21
  import { isNativeToken } from "../nativeToken.js";
29
22
  import { DirectPaymentModeScreen } from "./DirectPaymentModeScreen.js";
30
- import { EstimatedTimeAndFees } from "./EstimatedTimeAndFees.js";
31
23
  import { PayTokenIcon } from "./PayTokenIcon.js";
32
- import { PayWithCreditCard } from "./PayWIthCreditCard.js";
33
24
  import { TransactionModeScreen } from "./TransactionModeScreen.js";
34
25
  import { CurrencySelection } from "./fiat/CurrencySelection.js";
35
26
  import { FiatFlow } from "./fiat/FiatFlow.js";
27
+ import { FiatScreenContent } from "./fiat/FiatScreenContent.js";
36
28
  import { useEnabledPaymentMethods, } from "./main/useEnabledPaymentMethods.js";
37
29
  import { useFiatCurrencySelectionStates, useFromTokenSelectionStates, useToTokenSelectionStates, } from "./main/useUISelectionStates.js";
38
- import { openOnrampPopup } from "./openOnRamppopup.js";
39
30
  import { BuyTokenInput } from "./swap/BuyTokenInput.js";
40
- import { FiatFees, SwapFees } from "./swap/Fees.js";
41
- import { PayWithCryptoQuoteInfo } from "./swap/PayWithCrypto.js";
42
31
  import { PaymentSelectionScreen } from "./swap/PaymentSelectionScreen.js";
43
32
  import { SwapFlow } from "./swap/SwapFlow.js";
33
+ import { SwapScreenContent } from "./swap/SwapScreenContent.js";
44
34
  import { TransferFlow } from "./swap/TransferFlow.js";
45
- import { addPendingTx } from "./swap/pendingSwapTx.js";
46
35
  import { useBuySupportedDestinations, useBuySupportedSources, } from "./swap/useSwapSupportedChains.js";
47
36
  import { usePayerSetup } from "./usePayerSetup.js";
48
37
  /**
@@ -156,7 +145,7 @@ function BuyScreenContent(props) {
156
145
  setScreen({
157
146
  id: "buy-with-crypto",
158
147
  });
159
- }, onSuccess: onSwapSuccess }));
148
+ }, onSuccess: onSwapSuccess, approvalAmount: screen.approvalAmount }));
160
149
  }
161
150
  if (screen.id === "fiat-flow" && payer) {
162
151
  return (_jsx(FiatFlow, { title: props.title, transactionMode: payOptions.mode === "transaction", quote: screen.quote, onBack: () => {
@@ -235,7 +224,7 @@ function BuyScreenContent(props) {
235
224
  return (_jsx(Container, { animate: "fadein", children: _jsxs("div", { children: [screen.id === "main" && (_jsx(MainScreen, { title: props.title, payerAccount: payer?.account, client: client, onSelectBuyToken: () => setScreen({ id: "select-to-token", backScreen: screen }), payOptions: payOptions, setTokenAmount: setTokenAmount, setToChain: setToChain, setToToken: setToToken, setFromChain: setFromChain, setFromToken: setFromToken, toChain: toChain, toToken: toToken, tokenAmount: tokenAmount, connectOptions: props.connectOptions, setScreen: setScreen, supportedDestinations: supportedDestinations, onBack: props.onBack, theme: props.theme, hasEditedAmount: hasEditedAmount, setHasEditedAmount: setHasEditedAmount, enabledPaymentMethods: enabledPaymentMethods })), (screen.id === "select-payment-method" ||
236
225
  screen.id === "buy-with-crypto" ||
237
226
  screen.id === "buy-with-fiat") &&
238
- payer && (_jsxs(TokenSelectedLayout, { title: props.title, selectedChain: toChain, selectedToken: toToken, tokenAmount: tokenAmount, client: client, onBack: () => {
227
+ payer && (_jsxs(TokenSelectedLayout, { title: props.title, selectedChain: toChain, selectedToken: toToken, tokenAmount: tokenAmount, setTokenAmount: setTokenAmount, client: client, onBack: () => {
239
228
  if (enabledPaymentMethods.buyWithCryptoEnabled &&
240
229
  screen.id === "buy-with-fiat") {
241
230
  setScreen({ id: "select-payment-method" });
@@ -289,9 +278,50 @@ function BuyScreenContent(props) {
289
278
  }, payer: payer, setTokenAmount: setTokenAmount, setHasEditedAmount: setHasEditedAmount }))] }))] }) }));
290
279
  }
291
280
  function SelectedTokenInfo(props) {
281
+ const getWidth = () => {
282
+ let chars = props.tokenAmount.replace(".", "").length;
283
+ const hasDot = props.tokenAmount.includes(".");
284
+ if (hasDot) {
285
+ chars += 0.3;
286
+ }
287
+ return `calc(${`${Math.max(1, chars)}ch + 2px`})`;
288
+ };
292
289
  return (_jsx("div", { children: _jsxs(Container, { flex: "row", gap: "sm", center: "y", style: {
293
290
  justifyContent: "space-between",
294
- }, children: [_jsxs(Container, { flex: "row", gap: "xs", center: "y", children: [_jsx(Text, { color: "primaryText", "data-testid": "tokenAmount", size: "xl", children: formatNumber(Number(props.tokenAmount), 6) }), _jsxs(Container, { flex: "row", gap: "xxs", center: "y", children: [_jsx(TokenSymbol, { token: props.selectedToken, chain: props.selectedChain, size: "md", color: "secondaryText" }), _jsx(PayTokenIcon, { chain: props.selectedChain, client: props.client, size: "sm", token: props.selectedToken })] })] }), _jsx(ChainName, { chain: props.selectedChain, client: props.client, size: "sm", short: true })] }) }));
291
+ }, children: [_jsxs(Container, { flex: "row", gap: "xs", center: "y", children: [_jsx(Input, { variant: "outline", pattern: "^[0-9]*[.,]?[0-9]*$", inputMode: "decimal", tabIndex: -1, placeholder: "0", type: "text", "data-placeholder": props.tokenAmount === "", value: props.tokenAmount || "0", disabled: false, onClick: (e) => {
292
+ // put cursor at the end of the input
293
+ if (props.tokenAmount === "") {
294
+ e.currentTarget.setSelectionRange(e.currentTarget.value.length, e.currentTarget.value.length);
295
+ }
296
+ }, onChange: (e) => {
297
+ let value = e.target.value;
298
+ if (value.startsWith(".")) {
299
+ value = `0${value}`;
300
+ }
301
+ if (value.length > 10) {
302
+ return;
303
+ }
304
+ const numValue = Number(value);
305
+ if (Number.isNaN(numValue)) {
306
+ return;
307
+ }
308
+ if (value.startsWith("0") && !value.startsWith("0.")) {
309
+ props.setTokenAmount(value.slice(1));
310
+ }
311
+ else {
312
+ props.setTokenAmount(value);
313
+ }
314
+ }, style: {
315
+ border: "none",
316
+ fontSize: fontSize.lg,
317
+ boxShadow: "none",
318
+ borderRadius: "0",
319
+ padding: "0",
320
+ paddingBlock: "2px",
321
+ fontWeight: 600,
322
+ textAlign: "left",
323
+ width: getWidth(),
324
+ } }), _jsxs(Container, { flex: "row", gap: "xxs", center: "y", children: [_jsx(TokenSymbol, { token: props.selectedToken, chain: props.selectedChain, size: "md", color: "secondaryText" }), _jsx(PayTokenIcon, { chain: props.selectedChain, client: props.client, size: "sm", token: props.selectedToken })] })] }), _jsx(ChainName, { chain: props.selectedChain, client: props.client, size: "sm", short: true })] }) }));
295
325
  }
296
326
  function MainScreen(props) {
297
327
  const { setTokenAmount, setToChain, setToToken, setFromChain, setFromToken, payerAccount, client, tokenAmount, payOptions, toToken, toChain, supportedDestinations, enabledPaymentMethods, } = props;
@@ -351,210 +381,7 @@ function MainScreen(props) {
351
381
  function TokenSelectedLayout(props) {
352
382
  return (_jsxs(Container, { children: [_jsx(Container, { p: "lg", children: _jsx(ModalHeader, { title: props.title, onBack: props.onBack }) }), _jsxs(Container, { px: "lg", style: {
353
383
  paddingBottom: spacing.lg,
354
- }, children: [_jsx(Spacer, { y: "xs" }), _jsx(SelectedTokenInfo, { selectedToken: props.selectedToken, selectedChain: props.selectedChain, tokenAmount: props.tokenAmount, client: props.client }), _jsx(Spacer, { y: "md" }), _jsx(Line, {}), _jsx(Spacer, { y: "lg" }), _jsx(Text, { size: "sm", children: " Pay with " }), _jsx(Spacer, { y: "sm" }), props.children] })] }));
355
- }
356
- function SwapScreenContent(props) {
357
- const { setScreen, payer, client, toChain, tokenAmount, toToken, fromChain, fromToken, payOptions, disableTokenSelection, } = props;
358
- const defaultRecipientAddress = props.payOptions?.paymentInfo?.sellerAddress;
359
- const receiverAddress = defaultRecipientAddress || props.activeAccount.address;
360
- const { drawerRef, drawerOverlayRef, isOpen, setIsOpen } = useDrawer();
361
- const [drawerScreen, setDrawerScreen] = useState("fees");
362
- const fromTokenBalanceQuery = useWalletBalance({
363
- address: payer.account.address,
364
- chain: fromChain,
365
- tokenAddress: isNativeToken(fromToken) ? undefined : fromToken.address,
366
- client,
367
- });
368
- const fromTokenId = isNativeToken(fromToken)
369
- ? NATIVE_TOKEN_ADDRESS
370
- : fromToken.address.toLowerCase();
371
- const toTokenId = isNativeToken(toToken)
372
- ? NATIVE_TOKEN_ADDRESS
373
- : toToken.address.toLowerCase();
374
- const swapRequired = !!tokenAmount &&
375
- !(fromChain.id === toChain.id && fromTokenId === toTokenId);
376
- const quoteParams = swapRequired
377
- ? {
378
- // wallets
379
- fromAddress: payer.account.address,
380
- toAddress: receiverAddress,
381
- // from
382
- fromChainId: fromChain.id,
383
- fromTokenAddress: isNativeToken(fromToken)
384
- ? NATIVE_TOKEN_ADDRESS
385
- : fromToken.address,
386
- // to
387
- toChainId: toChain.id,
388
- toTokenAddress: isNativeToken(toToken)
389
- ? NATIVE_TOKEN_ADDRESS
390
- : toToken.address,
391
- toAmount: tokenAmount,
392
- client,
393
- purchaseData: payOptions.purchaseData,
394
- }
395
- : undefined;
396
- const quoteQuery = useBuyWithCryptoQuote(quoteParams, {
397
- // refetch every 30 seconds
398
- staleTime: 30 * 1000,
399
- refetchInterval: 30 * 1000,
400
- gcTime: 30 * 1000,
401
- });
402
- const sourceTokenAmount = swapRequired
403
- ? quoteQuery.data?.swapDetails.fromAmount
404
- : tokenAmount;
405
- const isNotEnoughBalance = !!sourceTokenAmount &&
406
- !!fromTokenBalanceQuery.data &&
407
- Number(fromTokenBalanceQuery.data.displayValue) < Number(sourceTokenAmount);
408
- const disableContinue = (swapRequired && !quoteQuery.data) || isNotEnoughBalance;
409
- const switchChainRequired = props.payer.wallet.getChain()?.id !== fromChain.id;
410
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
411
- function getErrorMessage(err) {
412
- const defaultMessage = "Unable to get price quote";
413
- try {
414
- if (err.error.code === "MINIMUM_PURCHASE_AMOUNT") {
415
- const obj = err.error;
416
- const minAmountToken = obj.data.minimumAmountEth;
417
- return {
418
- minAmount: formatNumber(Number(minAmountToken), 6),
419
- };
420
- }
421
- }
422
- catch { }
423
- return {
424
- msg: [defaultMessage],
425
- };
426
- }
427
- const errorMsg = !quoteQuery.isLoading && quoteQuery.error
428
- ? getErrorMessage(quoteQuery.error)
429
- : undefined;
430
- function showSwapFlow() {
431
- if ((props.payOptions.mode === "direct_payment" ||
432
- props.payOptions.mode === "fund_wallet") &&
433
- !isNotEnoughBalance &&
434
- !swapRequired) {
435
- // same currency, just direct transfer
436
- setScreen({
437
- id: "transfer-flow",
438
- });
439
- }
440
- else if (props.payOptions.mode === "transaction" &&
441
- !isNotEnoughBalance &&
442
- !swapRequired) {
443
- if (payer.account.address !== receiverAddress) {
444
- // needs transfer from another wallet before executing the transaction
445
- setScreen({
446
- id: "transfer-flow",
447
- });
448
- }
449
- else {
450
- // has enough balance to just do the transaction directly
451
- props.onDone();
452
- }
453
- return;
454
- }
455
- if (!quoteQuery.data) {
456
- return;
457
- }
458
- setScreen({
459
- id: "swap-flow",
460
- quote: quoteQuery.data,
461
- });
462
- }
463
- function showFees() {
464
- if (!quoteQuery.data) {
465
- return;
466
- }
467
- setIsOpen(true);
468
- setDrawerScreen("fees");
469
- }
470
- return (_jsxs(Container, { flex: "column", gap: "md", animate: "fadein", children: [isOpen && (_jsxs(_Fragment, { children: [_jsx(DrawerOverlay, { ref: drawerOverlayRef }), _jsx(Drawer, { ref: drawerRef, close: () => setIsOpen(false), children: drawerScreen === "fees" && quoteQuery.data && (_jsxs("div", { children: [_jsx(Text, { size: "lg", color: "primaryText", children: "Fees" }), _jsx(Spacer, { y: "lg" }), _jsx(SwapFees, { quote: quoteQuery.data })] })) })] })), _jsxs("div", { children: [_jsx(PayWithCryptoQuoteInfo, { value: sourceTokenAmount || "", chain: fromChain, token: fromToken, isLoading: quoteQuery.isLoading && !sourceTokenAmount, client: client, freezeChainAndTokenSelection: disableTokenSelection, payerAccount: props.payer.account, swapRequired: swapRequired }), swapRequired && (_jsx(EstimatedTimeAndFees, { quoteIsLoading: quoteQuery.isLoading, estimatedSeconds: quoteQuery.data?.swapDetails.estimated.durationSeconds, onViewFees: showFees })), _jsx(Spacer, { y: "md" })] }), errorMsg && (_jsxs("div", { children: [errorMsg.minAmount && (_jsxs(Text, { color: "danger", size: "sm", center: true, multiline: true, children: ["Minimum amount is ", errorMsg.minAmount, " ", _jsx(TokenSymbol, { token: toToken, chain: toChain, size: "sm", inline: true, color: "danger" })] })), errorMsg.msg?.map((msg) => (_jsx(Text, { color: "danger", size: "sm", center: true, multiline: true, children: msg }, msg)))] })), !errorMsg && isNotEnoughBalance && (_jsxs("div", { children: [_jsx(Text, { color: "danger", size: "sm", center: true, multiline: true, children: "Not enough funds." }), _jsx(Text, { color: "danger", size: "sm", center: true, multiline: true, children: "Try a different wallet or token." })] })), errorMsg?.minAmount ? (_jsx(Button, { variant: "accent", fullWidth: true, onClick: () => {
471
- props.setTokenAmount(String(errorMsg.minAmount));
472
- props.setHasEditedAmount(true);
473
- }, children: "Set Minimum" })) : switchChainRequired &&
474
- !quoteQuery.isLoading &&
475
- !isNotEnoughBalance &&
476
- !quoteQuery.error ? (_jsx(SwitchNetworkButton, { variant: "accent", fullWidth: true, switchChain: async () => {
477
- await props.payer.wallet.switchChain(fromChain);
478
- } })) : (_jsx(Button, { variant: disableContinue ? "outline" : "accent", fullWidth: true, "data-disabled": disableContinue, disabled: disableContinue, onClick: async () => {
479
- if (!disableContinue) {
480
- showSwapFlow();
481
- }
482
- }, gap: "xs", children: quoteQuery.isLoading ? (_jsxs(_Fragment, { children: ["Getting price quote", _jsx(Spinner, { size: "sm", color: "accentText" })] })) : ("Continue") }))] }));
483
- }
484
- function FiatScreenContent(props) {
485
- const { toToken, tokenAmount, payer, client, setScreen, toChain, showCurrencySelector, selectedCurrency, } = props;
486
- const defaultRecipientAddress = props.payOptions?.paymentInfo?.sellerAddress;
487
- const receiverAddress = defaultRecipientAddress || props.payer.account.address;
488
- const { drawerRef, drawerOverlayRef, isOpen, setIsOpen } = useDrawer();
489
- const [drawerScreen, setDrawerScreen] = useState("fees");
490
- const buyWithFiatOptions = props.payOptions.buyWithFiat;
491
- const fiatQuoteQuery = useBuyWithFiatQuote(buyWithFiatOptions !== false && tokenAmount
492
- ? {
493
- fromCurrencySymbol: selectedCurrency.shorthand,
494
- toChainId: toChain.id,
495
- toAddress: receiverAddress,
496
- toTokenAddress: isNativeToken(toToken)
497
- ? NATIVE_TOKEN_ADDRESS
498
- : toToken.address,
499
- toAmount: tokenAmount,
500
- client,
501
- isTestMode: buyWithFiatOptions?.testMode,
502
- purchaseData: props.payOptions.purchaseData,
503
- fromAddress: payer.account.address,
504
- preferredProvider: buyWithFiatOptions?.preferredProvider,
505
- }
506
- : undefined);
507
- function handleSubmit() {
508
- if (!fiatQuoteQuery.data) {
509
- return;
510
- }
511
- const hasTwoSteps = isSwapRequiredPostOnramp(fiatQuoteQuery.data);
512
- let openedWindow = null;
513
- if (!hasTwoSteps) {
514
- openedWindow = openOnrampPopup(fiatQuoteQuery.data.onRampLink, typeof props.theme === "string" ? props.theme : props.theme.type);
515
- addPendingTx({
516
- type: "fiat",
517
- intentId: fiatQuoteQuery.data.intentId,
518
- });
519
- }
520
- setScreen({
521
- id: "fiat-flow",
522
- quote: fiatQuoteQuery.data,
523
- openedWindow,
524
- });
525
- }
526
- function showFees() {
527
- if (!fiatQuoteQuery.data) {
528
- return;
529
- }
530
- setDrawerScreen("fees");
531
- setIsOpen(true);
532
- }
533
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
534
- function getErrorMessage(err) {
535
- const defaultMessage = "Unable to get price quote";
536
- try {
537
- if (err.error.code === "MINIMUM_PURCHASE_AMOUNT") {
538
- const obj = err.error;
539
- const minAmountToken = obj.data.minimumAmountEth;
540
- return {
541
- minAmount: formatNumber(Number(minAmountToken), 6),
542
- };
543
- }
544
- }
545
- catch { }
546
- return {
547
- msg: [defaultMessage],
548
- };
549
- }
550
- const disableSubmit = !fiatQuoteQuery.data;
551
- const errorMsg = !fiatQuoteQuery.isLoading && fiatQuoteQuery.error
552
- ? getErrorMessage(fiatQuoteQuery.error)
553
- : undefined;
554
- return (_jsxs(Container, { flex: "column", gap: "md", animate: "fadein", children: [isOpen && (_jsxs(_Fragment, { children: [_jsx(DrawerOverlay, { ref: drawerOverlayRef }), _jsx(Drawer, { ref: drawerRef, close: () => setIsOpen(false), children: drawerScreen === "fees" && fiatQuoteQuery.data && (_jsxs("div", { children: [_jsx(Text, { size: "lg", color: "primaryText", children: "Fees" }), _jsx(Spacer, { y: "lg" }), _jsx(FiatFees, { quote: fiatQuoteQuery.data })] })) })] })), _jsxs("div", { children: [_jsx(PayWithCreditCard, { isLoading: fiatQuoteQuery.isLoading, value: fiatQuoteQuery.data?.fromCurrencyWithFees.amount, client: client, currency: selectedCurrency, onSelectCurrency: showCurrencySelector }), _jsx(EstimatedTimeAndFees, { quoteIsLoading: fiatQuoteQuery.isLoading, estimatedSeconds: fiatQuoteQuery.data?.estimatedDurationSeconds, onViewFees: showFees }), _jsx(Spacer, { y: "md" })] }), errorMsg && (_jsxs("div", { children: [errorMsg.minAmount && (_jsxs(Text, { color: "danger", size: "sm", center: true, multiline: true, children: ["Minimum amount is ", errorMsg.minAmount, " ", _jsx(TokenSymbol, { token: toToken, chain: toChain, size: "sm", inline: true, color: "danger" })] })), errorMsg.msg?.map((msg) => (_jsx(Text, { color: "danger", size: "sm", center: true, multiline: true, children: msg }, msg)))] })), errorMsg?.minAmount ? (_jsx(Button, { variant: "accent", fullWidth: true, onClick: () => {
555
- props.setTokenAmount(String(errorMsg.minAmount));
556
- props.setHasEditedAmount(true);
557
- }, children: "Set Minimum" })) : (_jsx(Button, { variant: disableSubmit ? "outline" : "accent", "data-disabled": disableSubmit, disabled: disableSubmit, fullWidth: true, onClick: handleSubmit, gap: "xs", children: fiatQuoteQuery.isLoading ? (_jsxs(_Fragment, { children: ["Getting price quote", _jsx(Spinner, { size: "sm", color: "accentText" })] })) : ("Continue") }))] }));
384
+ }, children: [_jsx(Spacer, { y: "xs" }), _jsx(SelectedTokenInfo, { selectedToken: props.selectedToken, selectedChain: props.selectedChain, tokenAmount: props.tokenAmount, setTokenAmount: props.setTokenAmount, client: props.client }), _jsx(Spacer, { y: "md" }), _jsx(Line, {}), _jsx(Spacer, { y: "lg" }), _jsx(Text, { size: "sm", children: " Pay with " }), _jsx(Spacer, { y: "sm" }), props.children] })] }));
558
385
  }
559
386
  function createSupportedTokens(data, payOptions, supportedTokensOverrides) {
560
387
  const tokens = {};