@0xsequence/checkout 5.1.1 → 5.2.1

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 (96) hide show
  1. package/README.md +53 -0
  2. package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.d.ts.map +1 -1
  3. package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js +2 -0
  4. package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js.map +1 -1
  5. package/dist/cjs/contexts/AddFundsModal.d.ts +1 -0
  6. package/dist/cjs/contexts/AddFundsModal.d.ts.map +1 -1
  7. package/dist/cjs/contexts/AddFundsModal.js.map +1 -1
  8. package/dist/cjs/contexts/SwapModal.d.ts +1 -0
  9. package/dist/cjs/contexts/SwapModal.d.ts.map +1 -1
  10. package/dist/cjs/contexts/SwapModal.js.map +1 -1
  11. package/dist/cjs/hooks/useAddFundsModal.d.ts +1 -0
  12. package/dist/cjs/hooks/useAddFundsModal.d.ts.map +1 -1
  13. package/dist/cjs/hooks/useAddFundsModal.js +2 -2
  14. package/dist/cjs/hooks/useAddFundsModal.js.map +1 -1
  15. package/dist/cjs/hooks/useCheckoutUI/index.d.ts +29 -0
  16. package/dist/cjs/hooks/useCheckoutUI/index.d.ts.map +1 -0
  17. package/dist/cjs/hooks/useCheckoutUI/index.js +93 -0
  18. package/dist/cjs/hooks/useCheckoutUI/index.js.map +1 -0
  19. package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.d.ts +42 -0
  20. package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.d.ts.map +1 -0
  21. package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.js +202 -0
  22. package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.js.map +1 -0
  23. package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.d.ts +53 -0
  24. package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.d.ts.map +1 -0
  25. package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.js +273 -0
  26. package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.js.map +1 -0
  27. package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.d.ts +45 -0
  28. package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.d.ts.map +1 -0
  29. package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.js +57 -0
  30. package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.js.map +1 -0
  31. package/dist/cjs/hooks/useSwapModal.d.ts +1 -0
  32. package/dist/cjs/hooks/useSwapModal.d.ts.map +1 -1
  33. package/dist/cjs/hooks/useSwapModal.js +2 -2
  34. package/dist/cjs/hooks/useSwapModal.js.map +1 -1
  35. package/dist/cjs/index.d.ts +2 -0
  36. package/dist/cjs/index.d.ts.map +1 -1
  37. package/dist/cjs/index.js +3 -1
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/views/CheckoutSelection/component/OrderSummaryItem.js +4 -4
  40. package/dist/cjs/views/CheckoutSelection/index.d.ts.map +1 -1
  41. package/dist/cjs/views/CheckoutSelection/index.js +15 -6
  42. package/dist/cjs/views/CheckoutSelection/index.js.map +1 -1
  43. package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.d.ts.map +1 -1
  44. package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.js +12 -4
  45. package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.js.map +1 -1
  46. package/dist/cjs/views/PaymentSelection/index.d.ts.map +1 -1
  47. package/dist/cjs/views/PaymentSelection/index.js +2 -17
  48. package/dist/cjs/views/PaymentSelection/index.js.map +1 -1
  49. package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.d.ts.map +1 -1
  50. package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js +2 -0
  51. package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js.map +1 -1
  52. package/dist/esm/contexts/AddFundsModal.d.ts +1 -0
  53. package/dist/esm/contexts/AddFundsModal.d.ts.map +1 -1
  54. package/dist/esm/contexts/AddFundsModal.js.map +1 -1
  55. package/dist/esm/contexts/SwapModal.d.ts +1 -0
  56. package/dist/esm/contexts/SwapModal.d.ts.map +1 -1
  57. package/dist/esm/contexts/SwapModal.js.map +1 -1
  58. package/dist/esm/hooks/useAddFundsModal.d.ts +1 -0
  59. package/dist/esm/hooks/useAddFundsModal.d.ts.map +1 -1
  60. package/dist/esm/hooks/useAddFundsModal.js +2 -2
  61. package/dist/esm/hooks/useAddFundsModal.js.map +1 -1
  62. package/dist/esm/hooks/useCheckoutUI/index.d.ts +29 -0
  63. package/dist/esm/hooks/useCheckoutUI/index.d.ts.map +1 -0
  64. package/dist/esm/hooks/useCheckoutUI/index.js +89 -0
  65. package/dist/esm/hooks/useCheckoutUI/index.js.map +1 -0
  66. package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.d.ts +42 -0
  67. package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.d.ts.map +1 -0
  68. package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.js +195 -0
  69. package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.js.map +1 -0
  70. package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.d.ts +53 -0
  71. package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.d.ts.map +1 -0
  72. package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.js +269 -0
  73. package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.js.map +1 -0
  74. package/dist/esm/hooks/useCheckoutUI/useOrderSummary.d.ts +45 -0
  75. package/dist/esm/hooks/useCheckoutUI/useOrderSummary.d.ts.map +1 -0
  76. package/dist/esm/hooks/useCheckoutUI/useOrderSummary.js +53 -0
  77. package/dist/esm/hooks/useCheckoutUI/useOrderSummary.js.map +1 -0
  78. package/dist/esm/hooks/useSwapModal.d.ts +1 -0
  79. package/dist/esm/hooks/useSwapModal.d.ts.map +1 -1
  80. package/dist/esm/hooks/useSwapModal.js +2 -2
  81. package/dist/esm/hooks/useSwapModal.js.map +1 -1
  82. package/dist/esm/index.d.ts +2 -0
  83. package/dist/esm/index.d.ts.map +1 -1
  84. package/dist/esm/index.js +1 -0
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/views/CheckoutSelection/component/OrderSummaryItem.js +4 -4
  87. package/dist/esm/views/CheckoutSelection/index.d.ts.map +1 -1
  88. package/dist/esm/views/CheckoutSelection/index.js +15 -6
  89. package/dist/esm/views/CheckoutSelection/index.js.map +1 -1
  90. package/dist/esm/views/PaymentSelection/PayWithCrypto/index.d.ts.map +1 -1
  91. package/dist/esm/views/PaymentSelection/PayWithCrypto/index.js +12 -4
  92. package/dist/esm/views/PaymentSelection/PayWithCrypto/index.js.map +1 -1
  93. package/dist/esm/views/PaymentSelection/index.d.ts.map +1 -1
  94. package/dist/esm/views/PaymentSelection/index.js +4 -19
  95. package/dist/esm/views/PaymentSelection/index.js.map +1 -1
  96. package/package.json +15 -15
@@ -0,0 +1,195 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useProjectAccessKey } from '@0xsequence/connect';
3
+ import { compareAddress } from '@0xsequence/connect';
4
+ import { useConfig } from '@0xsequence/hooks';
5
+ import { findSupportedNetwork } from '@0xsequence/network';
6
+ import pako from 'pako';
7
+ import { useEffect, useRef } from 'react';
8
+ import { formatUnits, zeroAddress } from 'viem';
9
+ import { fetchSardineOrderStatus } from '../../api';
10
+ import { useEnvironmentContext } from '../../contexts';
11
+ import { TRANSAK_PROXY_ADDRESS } from '../../utils/transak';
12
+ import { useSardineClientToken } from '../useSardineClientToken';
13
+ const POLLING_TIME = 10 * 1000;
14
+ const TRANSAK_IFRAME_ID = 'credit-card-payment-transak-iframe';
15
+ const SARDINE_IFRAME_ID = 'credit-card-payment-sardine-iframe';
16
+ export const useCreditCardPayment = ({ chain, currencyAddress, totalPriceRaw, collectible, collectionAddress, recipientAddress, targetContractAddress, txData, creditCardProvider, transakConfig, onSuccess, onError, currencyInfo, tokenMetadatas, dataCollectionInfo, isLoadingCollectionInfo, errorCollectionInfo, isLoadingTokenMetadatas, errorTokenMetadata, isLoadingCurrencyInfo, errorCurrencyInfo }) => {
17
+ const projectAccessKey = useProjectAccessKey();
18
+ const { env } = useConfig();
19
+ const disableSardineClientTokenFetch = isLoadingTokenMetadatas || isLoadingCurrencyInfo || isLoadingCollectionInfo || creditCardProvider !== 'sardine';
20
+ const { transakApiUrl, sardineCheckoutUrl: sardineProxyUrl } = useEnvironmentContext();
21
+ const network = findSupportedNetwork(chain);
22
+ const error = errorCollectionInfo || errorTokenMetadata || errorCurrencyInfo;
23
+ const isLoading = isLoadingCollectionInfo || isLoadingTokenMetadatas || isLoadingCurrencyInfo;
24
+ const isNativeCurrency = compareAddress(currencyAddress, zeroAddress);
25
+ const currencySymbol = isNativeCurrency ? network?.nativeToken.symbol : currencyInfo?.symbol || 'POL';
26
+ const currencyDecimals = isNativeCurrency ? network?.nativeToken.decimals : currencyInfo?.decimals || 18;
27
+ const iframeRef = useRef(null);
28
+ const tokenMetadata = tokenMetadatas?.[0];
29
+ const { data: dataClientToken, isLoading: isLoadingClientToken, error: errorClientToken } = useSardineClientToken({
30
+ order: {
31
+ chainId: network?.chainId || 137,
32
+ contractAddress: targetContractAddress,
33
+ recipientAddress,
34
+ currencyQuantity: totalPriceRaw,
35
+ currencySymbol: currencyInfo?.symbol || 'POL',
36
+ currencyDecimals: String(currencyDecimals || 18),
37
+ currencyAddress,
38
+ nftId: collectible.tokenId,
39
+ nftAddress: collectionAddress,
40
+ nftQuantity: collectible.quantity,
41
+ nftDecimals: String(dataCollectionInfo?.decimals || 18),
42
+ calldata: txData
43
+ },
44
+ projectAccessKey: projectAccessKey,
45
+ apiClientUrl: env.apiUrl,
46
+ tokenMetadata: tokenMetadata
47
+ }, disableSardineClientTokenFetch);
48
+ const missingCreditCardProvider = !creditCardProvider;
49
+ const missingTransakConfig = !transakConfig && creditCardProvider === 'transak';
50
+ if (missingCreditCardProvider || missingTransakConfig) {
51
+ return {
52
+ error: new Error('Missing credit card provider or transak config'),
53
+ data: {
54
+ iframeId: '',
55
+ CreditCardIframe: () => null,
56
+ EventListener: () => null
57
+ },
58
+ isLoading: false
59
+ };
60
+ }
61
+ if (error || isLoading) {
62
+ return {
63
+ error,
64
+ data: {
65
+ iframeId: '',
66
+ CreditCardIframe: () => null,
67
+ EventListener: () => null
68
+ },
69
+ isLoading
70
+ };
71
+ }
72
+ if (creditCardProvider === 'transak') {
73
+ // Transak requires the recipient address to be the proxy address
74
+ // so we need to replace the recipient address with the proxy address in the calldata
75
+ // this is a weird hack so that credit card integrations are as simple as possible and should work 99% of the time
76
+ // If an issue arises, the user can override the calldata in the transak settings
77
+ const calldataWithProxy = transakConfig?.callDataOverride ??
78
+ txData.replace(recipientAddress.toLowerCase().substring(2), TRANSAK_PROXY_ADDRESS.toLowerCase().substring(2));
79
+ const pakoData = Array.from(pako.deflate(calldataWithProxy));
80
+ const transakCallData = encodeURIComponent(btoa(String.fromCharCode.apply(null, pakoData)));
81
+ const price = Number(formatUnits(BigInt(totalPriceRaw), Number(currencyDecimals || 18)));
82
+ const transakNftDataJson = JSON.stringify([
83
+ {
84
+ imageURL: tokenMetadata?.image || '',
85
+ nftName: tokenMetadata?.name || 'collectible',
86
+ collectionAddress: collectionAddress,
87
+ tokenID: [collectible.tokenId],
88
+ price: [price],
89
+ quantity: Number(collectible.quantity),
90
+ nftType: dataCollectionInfo?.type || 'ERC721'
91
+ }
92
+ ]);
93
+ const transakNftData = encodeURIComponent(btoa(transakNftDataJson));
94
+ const estimatedGasLimit = '500000';
95
+ const partnerOrderId = `${recipientAddress}-${new Date().getTime()}`;
96
+ // Note: the network name might not always line up with Transak. A conversion function might be necessary
97
+ const network = findSupportedNetwork(chain);
98
+ const networkName = network?.name.toLowerCase();
99
+ const transakLink = `${transakApiUrl}?apiKey=${transakConfig?.apiKey}&isNFT=true&calldata=${transakCallData}&contractId=${transakConfig?.contractId}&cryptoCurrencyCode=${currencySymbol}&estimatedGasLimit=${estimatedGasLimit}&nftData=${transakNftData}&walletAddress=${recipientAddress}&disableWalletAddressForm=true&partnerOrderId=${partnerOrderId}&network=${networkName}`;
100
+ return {
101
+ error: null,
102
+ data: {
103
+ iframeId: TRANSAK_IFRAME_ID,
104
+ paymentUrl: transakLink,
105
+ CreditCardIframe: () => (_jsx("div", { className: "flex items-center justify-center", style: { height: '770px' }, children: _jsx("iframe", { id: "transakIframe", ref: iframeRef, allow: "camera;microphone;payment", src: transakLink, style: {
106
+ maxHeight: '650px',
107
+ height: '100%',
108
+ maxWidth: '380px',
109
+ width: '100%'
110
+ }, referrerPolicy: "strict-origin-when-cross-origin" }) })),
111
+ EventListener: () => (_jsx(TransakEventListener, { onSuccess: onSuccess, onError: onError, isLoading: isLoading, iframeRef: iframeRef }))
112
+ },
113
+ isLoading: false
114
+ };
115
+ }
116
+ // Sardine credit card provider
117
+ const sardineApiUrl = sardineProxyUrl.replace('checkout', 'api');
118
+ const authToken = dataClientToken?.token;
119
+ const url = `${sardineProxyUrl}?api_url=${sardineApiUrl}&client_token=${authToken}&show_features=true`;
120
+ const isLoadingSardine = isLoadingClientToken || isLoading;
121
+ const errorSardine = errorClientToken || error;
122
+ const data = {
123
+ iframeId: SARDINE_IFRAME_ID,
124
+ paymentUrl: url,
125
+ CreditCardIframe: () => (_jsx("div", { className: "flex items-center justify-center", style: { height: '770px' }, children: _jsx("iframe", { id: SARDINE_IFRAME_ID, src: url, style: {
126
+ maxHeight: '650px',
127
+ height: '100%',
128
+ maxWidth: '380px',
129
+ width: '100%'
130
+ } }) })),
131
+ EventListener: () => _jsx(SardineEventListener, { onSuccess: onSuccess, onError: onError, orderId: dataClientToken?.orderId || '' })
132
+ };
133
+ return {
134
+ error: errorSardine,
135
+ isLoading: isLoadingSardine,
136
+ data
137
+ };
138
+ };
139
+ const TransakEventListener = ({ onSuccess, onError, isLoading, iframeRef }) => {
140
+ useEffect(() => {
141
+ const transakIframe = iframeRef.current?.contentWindow;
142
+ if (!transakIframe) {
143
+ return;
144
+ }
145
+ const readMessage = async (message) => {
146
+ if (message.source !== transakIframe) {
147
+ return;
148
+ }
149
+ if (message?.data?.event_id === 'TRANSAK_ORDER_SUCCESSFUL' && message?.data?.data?.status === 'COMPLETED') {
150
+ console.log('Order Data: ', message?.data?.data);
151
+ const txHash = message?.data?.data?.transactionHash || '';
152
+ onSuccess?.(txHash);
153
+ }
154
+ if (message?.data?.event_id === 'TRANSAK_ORDER_FAILED') {
155
+ onError?.(new Error('Transak transaction failed'));
156
+ }
157
+ };
158
+ window.addEventListener('message', readMessage);
159
+ return () => window.removeEventListener('message', readMessage);
160
+ }, [isLoading]);
161
+ return null;
162
+ };
163
+ const SardineEventListener = ({ onSuccess, onError, orderId }) => {
164
+ const { env } = useConfig();
165
+ const projectAccessKey = useProjectAccessKey();
166
+ const pollForOrderStatus = async () => {
167
+ try {
168
+ console.log('Polling for transaction status');
169
+ const pollResponse = await fetchSardineOrderStatus(orderId, projectAccessKey, env.apiUrl);
170
+ const status = pollResponse.resp.status;
171
+ const transactionHash = pollResponse.resp?.transactionHash;
172
+ console.log('transaction status poll response:', status);
173
+ if (status === 'Complete') {
174
+ onSuccess?.(transactionHash);
175
+ }
176
+ if (status === 'Declined' || status === 'Cancelled') {
177
+ onError?.(new Error('Failed to transfer collectible'));
178
+ }
179
+ }
180
+ catch (e) {
181
+ console.error('An error occurred while fetching the transaction status');
182
+ onError?.(e);
183
+ }
184
+ };
185
+ useEffect(() => {
186
+ const interval = setInterval(() => {
187
+ pollForOrderStatus();
188
+ }, POLLING_TIME);
189
+ return () => {
190
+ clearInterval(interval);
191
+ };
192
+ }, []);
193
+ return null;
194
+ };
195
+ //# sourceMappingURL=useCreditCardPayment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreditCardPayment.js","sourceRoot":"","sources":["../../../../src/hooks/useCheckoutUI/useCreditCardPayment.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,EAAO,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAEpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAA;AAC9B,MAAM,iBAAiB,GAAG,oCAAoC,CAAA;AAC9D,MAAM,iBAAiB,GAAG,oCAAoC,CAAA;AAuC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,KAAK,EACL,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,OAAO,EACP,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACQ,EAA8B,EAAE;IACzD,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAA;IAC9C,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;IAC3B,MAAM,8BAA8B,GAClC,uBAAuB,IAAI,qBAAqB,IAAI,uBAAuB,IAAI,kBAAkB,KAAK,SAAS,CAAA;IACjH,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAAA;IACtF,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,mBAAmB,IAAI,kBAAkB,IAAI,iBAAiB,CAAA;IAC5E,MAAM,SAAS,GAAG,uBAAuB,IAAI,uBAAuB,IAAI,qBAAqB,CAAA;IAC7F,MAAM,gBAAgB,GAAG,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IACrE,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,CAAA;IACrG,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAA;IACxG,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC,CAAA;IAEzC,MAAM,EACJ,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,gBAAgB,EACxB,GAAG,qBAAqB,CACvB;QACE,KAAK,EAAE;YACL,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG;YAChC,eAAe,EAAE,qBAAqB;YACtC,gBAAgB;YAChB,gBAAgB,EAAE,aAAa;YAC/B,cAAc,EAAE,YAAY,EAAE,MAAM,IAAI,KAAK;YAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAChD,eAAe;YACf,KAAK,EAAE,WAAW,CAAC,OAAO;YAC1B,UAAU,EAAE,iBAAiB;YAC7B,WAAW,EAAE,WAAW,CAAC,QAAQ;YACjC,WAAW,EAAE,MAAM,CAAC,kBAAkB,EAAE,QAAQ,IAAI,EAAE,CAAC;YACvD,QAAQ,EAAE,MAAM;SACjB;QACD,gBAAgB,EAAE,gBAAgB;QAClC,YAAY,EAAE,GAAG,CAAC,MAAM;QACxB,aAAa,EAAE,aAAa;KAC7B,EACD,8BAA8B,CAC/B,CAAA;IAED,MAAM,yBAAyB,GAAG,CAAC,kBAAkB,CAAA;IACrD,MAAM,oBAAoB,GAAG,CAAC,aAAa,IAAI,kBAAkB,KAAK,SAAS,CAAA;IAE/E,IAAI,yBAAyB,IAAI,oBAAoB,EAAE,CAAC;QACtD,OAAO;YACL,KAAK,EAAE,IAAI,KAAK,CAAC,gDAAgD,CAAC;YAClE,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;gBACZ,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC5B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;aAC1B;YACD,SAAS,EAAE,KAAK;SACjB,CAAA;IACH,CAAC;IAED,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,KAAK;YACL,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;gBACZ,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC5B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;aAC1B;YACD,SAAS;SACV,CAAA;IACH,CAAC;IAED,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,iEAAiE;QACjE,qFAAqF;QACrF,kHAAkH;QAClH,iFAAiF;QAEjF,MAAM,iBAAiB,GACrB,aAAa,EAAE,gBAAgB;YAC/B,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAE/G,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAE5D,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;QAE3F,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAExF,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC;gBACE,QAAQ,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;gBACpC,OAAO,EAAE,aAAa,EAAE,IAAI,IAAI,aAAa;gBAC7C,iBAAiB,EAAE,iBAAiB;gBACpC,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,CAAC,KAAK,CAAC;gBACd,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACtC,OAAO,EAAE,kBAAkB,EAAE,IAAI,IAAI,QAAQ;aAC9C;SACF,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAEnE,MAAM,iBAAiB,GAAG,QAAQ,CAAA;QAElC,MAAM,cAAc,GAAG,GAAG,gBAAgB,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAA;QAEpE,yGAAyG;QACzG,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,WAAW,GAAG,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,WAAW,GAAG,GAAG,aAAa,WAAW,aAAa,EAAE,MAAM,wBAAwB,eAAe,eAAe,aAAa,EAAE,UAAU,uBAAuB,cAAc,sBAAsB,iBAAiB,YAAY,cAAc,kBAAkB,gBAAgB,iDAAiD,cAAc,YAAY,WAAW,EAAE,CAAA;QAEnX,OAAO;YACL,KAAK,EAAE,IAAI;YACX,IAAI,EAAE;gBACJ,QAAQ,EAAE,iBAAiB;gBAC3B,UAAU,EAAE,WAAW;gBACvB,gBAAgB,EAAE,GAAG,EAAE,CAAC,CACtB,cAAK,SAAS,EAAC,kCAAkC,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAC1E,iBACE,EAAE,EAAC,eAAe,EAClB,GAAG,EAAE,SAAS,EACd,KAAK,EAAC,2BAA2B,EACjC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;4BACL,SAAS,EAAE,OAAO;4BAClB,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE,OAAO;4BACjB,KAAK,EAAE,MAAM;yBACd,EACD,cAAc,EAAC,iCAAiC,GAChD,GACE,CACP;gBACD,aAAa,EAAE,GAAG,EAAE,CAAC,CACnB,KAAC,oBAAoB,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAI,CAC7G;aACF;YACD,SAAS,EAAE,KAAK;SACjB,CAAA;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAChE,MAAM,SAAS,GAAG,eAAe,EAAE,KAAK,CAAA;IACxC,MAAM,GAAG,GAAG,GAAG,eAAe,YAAY,aAAa,iBAAiB,SAAS,qBAAqB,CAAA;IAEtG,MAAM,gBAAgB,GAAG,oBAAoB,IAAI,SAAS,CAAA;IAC1D,MAAM,YAAY,GAAG,gBAAgB,IAAI,KAAK,CAAA;IAE9C,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,iBAAiB;QAC3B,UAAU,EAAE,GAAG;QACf,gBAAgB,EAAE,GAAG,EAAE,CAAC,CACtB,cAAK,SAAS,EAAC,kCAAkC,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAC1E,iBACE,EAAE,EAAE,iBAAiB,EACrB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;oBACL,SAAS,EAAE,OAAO;oBAClB,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,MAAM;iBACd,GACD,GACE,CACP;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,KAAC,oBAAoB,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,IAAI,EAAE,GAAI;KAC/H,CAAA;IAED,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,SAAS,EAAE,gBAAgB;QAC3B,IAAI;KACL,CAAA;AACH,CAAC,CAAA;AASD,MAAM,oBAAoB,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAA6B,EAAE,EAAE;IACvG,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CAAA;QACtD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,EAAE,OAAY,EAAE,EAAE;YACzC,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACrC,OAAM;YACR,CAAC;YAED,IAAI,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,0BAA0B,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC1G,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;gBAChD,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE,CAAA;gBAEzD,SAAS,EAAE,CAAC,MAAM,CAAC,CAAA;YACrB,CAAC;YAED,IAAI,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,sBAAsB,EAAE,CAAC;gBACvD,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAA;YACpD,CAAC;QACH,CAAC,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAE/C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAQD,MAAM,oBAAoB,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAA6B,EAAE,EAAE;IAC1F,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;IAC3B,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAA;IAE9C,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;YAC7C,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACzF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAA;YACvC,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,EAAE,eAAe,CAAA;YAE1D,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAA;YAExD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,SAAS,EAAE,CAAC,eAAe,CAAC,CAAA;YAC9B,CAAC;YACD,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBACpD,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;YACxE,OAAO,EAAE,CAAC,CAAU,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,kBAAkB,EAAE,CAAA;QACtB,CAAC,EAAE,YAAY,CAAC,CAAA;QAEhB,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,QAAQ,CAAC,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { ContractInfo, TokenMetadata } from '@0xsequence/metadata';
2
+ import { Hex } from 'viem';
3
+ import { Collectible } from '../../contexts/SelectPaymentModal';
4
+ export interface UseCryptoPaymentArgs {
5
+ chain: string | number;
6
+ currencyAddress: string;
7
+ totalPriceRaw: string;
8
+ collectible: Collectible;
9
+ collectionAddress: string;
10
+ recipientAddress: string;
11
+ targetContractAddress: string;
12
+ txData: Hex;
13
+ transactionConfirmations?: number;
14
+ onSuccess?: (txHash: string) => void;
15
+ onError?: (error: Error) => void;
16
+ currencyInfo: ContractInfo | undefined;
17
+ tokenMetadatas: TokenMetadata[] | undefined;
18
+ dataCollectionInfo: ContractInfo | undefined;
19
+ isLoadingCollectionInfo: boolean;
20
+ errorCollectionInfo: Error | null;
21
+ isLoadingTokenMetadatas: boolean;
22
+ errorTokenMetadata: Error | null;
23
+ isLoadingCurrencyInfo: boolean;
24
+ errorCurrencyInfo: Error | null;
25
+ }
26
+ export interface UseCryptoPaymentReturn {
27
+ cryptoOptions: {
28
+ data: CryptoOptions[];
29
+ isLoading: boolean;
30
+ error: Error | null;
31
+ };
32
+ purchaseAction: {
33
+ action: () => Promise<string>;
34
+ isReady: boolean;
35
+ selectedCurrencyAddress: string | undefined;
36
+ setSelectedCurrencyAddress: (currencyAddress: string) => void;
37
+ };
38
+ }
39
+ interface CryptoOptions {
40
+ chainId: number;
41
+ currencyAddress: string;
42
+ currencyName: string;
43
+ totalPriceRaw: string;
44
+ symbol: string;
45
+ decimals: number;
46
+ totalPriceDisplay: string;
47
+ currrencyLogoUrl?: string;
48
+ isInsufficientFunds: boolean;
49
+ isSelected: boolean;
50
+ }
51
+ export declare const useCryptoPayment: ({ chain, currencyAddress, totalPriceRaw, targetContractAddress, txData, transactionConfirmations, onSuccess, onError, currencyInfo, isLoadingCurrencyInfo, errorCurrencyInfo }: UseCryptoPaymentArgs) => UseCryptoPaymentReturn;
52
+ export {};
53
+ //# sourceMappingURL=useCryptoPayment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCryptoPayment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useCheckoutUI/useCryptoPayment.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGlE,OAAO,EAAE,GAAG,EAAgD,MAAM,MAAM,CAAA;AAIxE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAE/D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAA;IACX,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAA;IACtC,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,CAAA;IAC3C,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAA;IAC5C,uBAAuB,EAAE,OAAO,CAAA;IAChC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAA;IACjC,uBAAuB,EAAE,OAAO,CAAA;IAChC,kBAAkB,EAAE,KAAK,GAAG,IAAI,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,iBAAiB,EAAE,KAAK,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE;QACb,IAAI,EAAE,aAAa,EAAE,CAAA;QACrB,SAAS,EAAE,OAAO,CAAA;QAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KACpB,CAAA;IACD,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QAC7B,OAAO,EAAE,OAAO,CAAA;QAChB,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3C,0BAA0B,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAA;KAC9D,CAAA;CACF;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,eAAO,MAAM,gBAAgB,GAAI,gLAY9B,oBAAoB,KAAG,sBA0SzB,CAAA"}
@@ -0,0 +1,269 @@
1
+ import { compareAddress, ContractVerificationStatus, formatDisplay, sendTransactions } from '@0xsequence/connect';
2
+ import { useIndexerClient, useGetTokenBalancesSummary, useGetSwapPrices, useGetSwapQuote } from '@0xsequence/hooks';
3
+ import { findSupportedNetwork } from '@0xsequence/network';
4
+ import { useState } from 'react';
5
+ import { encodeFunctionData, formatUnits, zeroAddress } from 'viem';
6
+ import { usePublicClient, useAccount, useReadContract, useWalletClient } from 'wagmi';
7
+ import { ERC_20_CONTRACT_ABI } from '../../constants/abi';
8
+ export const useCryptoPayment = ({ chain, currencyAddress, totalPriceRaw, targetContractAddress, txData, transactionConfirmations, onSuccess, onError, currencyInfo, isLoadingCurrencyInfo, errorCurrencyInfo }) => {
9
+ const [selectedCurrencyAddress, setSelectedCurrencyAddress] = useState(undefined);
10
+ const { address: userAddress, connector } = useAccount();
11
+ const network = findSupportedNetwork(chain);
12
+ const chainId = network?.chainId || 137;
13
+ const isNativeCurrency = compareAddress(currencyAddress, zeroAddress);
14
+ const currencySymbol = isNativeCurrency ? network?.nativeToken.symbol : currencyInfo?.symbol;
15
+ const currencyDecimals = isNativeCurrency ? network?.nativeToken.decimals : currencyInfo?.decimals;
16
+ const isMainCurrencySelected = compareAddress(selectedCurrencyAddress || '', currencyAddress);
17
+ const { data: walletClient } = useWalletClient({
18
+ chainId
19
+ });
20
+ const publicClient = usePublicClient({
21
+ chainId
22
+ });
23
+ const indexerClient = useIndexerClient(chainId);
24
+ const { data: allowanceData, isLoading: allowanceIsLoading } = useReadContract({
25
+ abi: ERC_20_CONTRACT_ABI,
26
+ functionName: 'allowance',
27
+ chainId: chainId,
28
+ address: currencyAddress,
29
+ args: [userAddress, targetContractAddress],
30
+ query: {
31
+ enabled: !!userAddress && !isNativeCurrency
32
+ }
33
+ });
34
+ const isApproved = allowanceData >= BigInt(totalPriceRaw) || isNativeCurrency;
35
+ const { data: currencyBalanceDataPaginated, isLoading: currencyBalanceIsLoading } = useGetTokenBalancesSummary({
36
+ chainIds: [chainId],
37
+ filter: {
38
+ accountAddresses: userAddress ? [userAddress] : [],
39
+ contractStatus: ContractVerificationStatus.ALL,
40
+ contractWhitelist: [currencyAddress],
41
+ omitNativeBalances: false
42
+ },
43
+ omitMetadata: true
44
+ });
45
+ const currencyBalanceData = currencyBalanceDataPaginated?.pages?.flatMap(page => page.balances);
46
+ const buyCurrencyAddress = currencyAddress;
47
+ const sellCurrencyAddress = selectedCurrencyAddress || '';
48
+ const { data: swapPrices = [], isLoading: swapPricesIsLoading, error: swapPricesError } = useGetSwapPrices({
49
+ userAddress: userAddress ?? '',
50
+ buyCurrencyAddress,
51
+ chainId: chainId,
52
+ buyAmount: totalPriceRaw,
53
+ withContractInfo: true
54
+ });
55
+ const disableSwapQuote = !selectedCurrencyAddress || compareAddress(selectedCurrencyAddress, buyCurrencyAddress);
56
+ const { data: swapQuote, isLoading: isLoadingSwapQuote } = useGetSwapQuote({
57
+ userAddress: userAddress ?? '',
58
+ buyCurrencyAddress: currencyAddress,
59
+ buyAmount: totalPriceRaw,
60
+ chainId: chainId,
61
+ sellCurrencyAddress,
62
+ includeApprove: true
63
+ }, {
64
+ disabled: disableSwapQuote
65
+ });
66
+ const mainCurrencyBalance = currencyBalanceData?.[0]?.balance || '0';
67
+ const priceFormatted = formatUnits(BigInt(totalPriceRaw), currencyInfo?.decimals || 0);
68
+ const priceDisplay = formatDisplay(priceFormatted, {
69
+ disableScientificNotation: true,
70
+ disableCompactNotation: true,
71
+ significantDigits: 6
72
+ });
73
+ const mainCurrencyOption = !currencyBalanceIsLoading
74
+ ? [
75
+ {
76
+ chainId,
77
+ currencyAddress,
78
+ currencyName: currencyInfo?.name || 'unknown',
79
+ totalPriceRaw: totalPriceRaw,
80
+ decimals: currencyDecimals || 18,
81
+ totalPriceDisplay: priceDisplay,
82
+ currrencyLogoUrl: currencyInfo?.logoURI,
83
+ symbol: currencySymbol || '',
84
+ isInsufficientFunds: Number(mainCurrencyBalance) < Number(totalPriceRaw),
85
+ isSelected: compareAddress(currencyAddress, selectedCurrencyAddress || '')
86
+ }
87
+ ]
88
+ : [];
89
+ const swapOptions = swapPrices.map(swapPrice => {
90
+ const swapQuotePriceFormatted = formatUnits(BigInt(swapPrice.price.price), swapPrice.info?.decimals || 18);
91
+ const swapQuoteAddress = swapPrice.info?.address || '';
92
+ const swapQuotePriceDisplay = formatDisplay(swapQuotePriceFormatted, {
93
+ disableScientificNotation: true,
94
+ disableCompactNotation: true,
95
+ significantDigits: 6
96
+ });
97
+ return {
98
+ chainId,
99
+ currencyAddress: swapQuoteAddress,
100
+ currencyName: swapPrice.info?.name || 'unknown',
101
+ totalPriceRaw: swapPrice.price.price,
102
+ totalPriceDisplay: swapQuotePriceDisplay,
103
+ currrencyLogoUrl: swapPrice.info?.logoURI,
104
+ symbol: swapPrice.info?.symbol || '',
105
+ decimals: swapPrice.info?.decimals || 18,
106
+ // The balance check is done at the API level
107
+ isInsufficientFunds: false,
108
+ isSelected: compareAddress(swapQuoteAddress, selectedCurrencyAddress || '')
109
+ };
110
+ });
111
+ const purchaseAction = async () => {
112
+ if (!selectedCurrencyAddress) {
113
+ throw new Error('No currency selected');
114
+ }
115
+ if (!walletClient) {
116
+ throw new Error('No wallet client');
117
+ }
118
+ if (!userAddress) {
119
+ throw new Error('User address is not connected');
120
+ }
121
+ if (!publicClient) {
122
+ throw new Error('Public client is not connected');
123
+ }
124
+ if (!connector) {
125
+ throw new Error('Connector is not connected');
126
+ }
127
+ try {
128
+ if (isMainCurrencySelected) {
129
+ const walletClientChainId = await walletClient.getChainId();
130
+ if (walletClientChainId !== chainId) {
131
+ await walletClient.switchChain({ id: chainId });
132
+ }
133
+ const approveTxData = encodeFunctionData({
134
+ abi: ERC_20_CONTRACT_ABI,
135
+ functionName: 'approve',
136
+ args: [targetContractAddress, totalPriceRaw]
137
+ });
138
+ const transactions = [
139
+ ...(isApproved
140
+ ? []
141
+ : [
142
+ {
143
+ to: currencyAddress,
144
+ data: approveTxData,
145
+ chainId
146
+ }
147
+ ]),
148
+ {
149
+ to: targetContractAddress,
150
+ data: txData,
151
+ chainId,
152
+ ...(isNativeCurrency
153
+ ? {
154
+ value: BigInt(totalPriceRaw)
155
+ }
156
+ : {})
157
+ }
158
+ ];
159
+ const txHash = await sendTransactions({
160
+ chainId,
161
+ senderAddress: userAddress,
162
+ publicClient,
163
+ walletClient,
164
+ indexerClient,
165
+ connector,
166
+ transactions,
167
+ transactionConfirmations,
168
+ waitConfirmationForLastTransaction: false
169
+ });
170
+ onSuccess?.(txHash);
171
+ return txHash;
172
+ }
173
+ else {
174
+ const swapPrice = swapPrices.find(swapPrice => compareAddress(swapPrice.info?.address || '', selectedCurrencyAddress));
175
+ if (!swapPrice) {
176
+ throw new Error('No swap price found');
177
+ }
178
+ if (!swapQuote) {
179
+ throw new Error('No swap quote found');
180
+ }
181
+ const walletClientChainId = await walletClient.getChainId();
182
+ if (walletClientChainId !== chainId) {
183
+ await walletClient.switchChain({ id: chainId });
184
+ }
185
+ const approveTxData = encodeFunctionData({
186
+ abi: ERC_20_CONTRACT_ABI,
187
+ functionName: 'approve',
188
+ args: [targetContractAddress, totalPriceRaw]
189
+ });
190
+ const isSwapNativeToken = compareAddress(zeroAddress, swapPrice.price.currencyAddress);
191
+ const transactions = [
192
+ // Swap quote optional approve step
193
+ ...(swapQuote?.approveData && !isSwapNativeToken
194
+ ? [
195
+ {
196
+ to: swapPrice.price.currencyAddress,
197
+ data: swapQuote.approveData,
198
+ chain: chainId
199
+ }
200
+ ]
201
+ : []),
202
+ // Swap quote tx
203
+ {
204
+ to: swapQuote.to,
205
+ data: swapQuote.transactionData,
206
+ chain: chainId,
207
+ ...(isSwapNativeToken
208
+ ? {
209
+ value: BigInt(swapQuote.transactionValue)
210
+ }
211
+ : {})
212
+ },
213
+ // Actual transaction optional approve step
214
+ ...(isApproved || isNativeCurrency
215
+ ? []
216
+ : [
217
+ {
218
+ to: currencyAddress,
219
+ data: approveTxData,
220
+ chainId: chainId
221
+ }
222
+ ]),
223
+ // transaction on the contract
224
+ {
225
+ to: targetContractAddress,
226
+ data: txData,
227
+ chainId,
228
+ ...(isNativeCurrency
229
+ ? {
230
+ value: BigInt(totalPriceRaw)
231
+ }
232
+ : {})
233
+ }
234
+ ];
235
+ const txHash = await sendTransactions({
236
+ chainId,
237
+ senderAddress: userAddress,
238
+ publicClient,
239
+ walletClient,
240
+ indexerClient,
241
+ connector,
242
+ transactions,
243
+ transactionConfirmations,
244
+ waitConfirmationForLastTransaction: false
245
+ });
246
+ onSuccess?.(txHash);
247
+ return txHash;
248
+ }
249
+ }
250
+ catch (error) {
251
+ onError?.(error);
252
+ throw error;
253
+ }
254
+ };
255
+ return {
256
+ cryptoOptions: {
257
+ data: [...mainCurrencyOption, ...swapOptions],
258
+ isLoading: isLoadingCurrencyInfo || swapPricesIsLoading || currencyBalanceIsLoading,
259
+ error: errorCurrencyInfo || swapPricesError
260
+ },
261
+ purchaseAction: {
262
+ action: purchaseAction,
263
+ isReady: !!selectedCurrencyAddress && (!isLoadingSwapQuote || isMainCurrencySelected) && (!allowanceIsLoading || isNativeCurrency),
264
+ selectedCurrencyAddress,
265
+ setSelectedCurrencyAddress
266
+ }
267
+ };
268
+ };
269
+ //# sourceMappingURL=useCryptoPayment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCryptoPayment.js","sourceRoot":"","sources":["../../../../src/hooks/useCheckoutUI/useCryptoPayment.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ContractInfo, TokenMetadata } from '@0xsequence/metadata';
2
+ import { ReactNode } from 'react';
3
+ import { Collectible } from '../../contexts/SelectPaymentModal';
4
+ export interface UseOrderSummaryArgs {
5
+ chain: string | number;
6
+ currencyAddress: string;
7
+ totalPriceRaw: string;
8
+ collectible: Collectible;
9
+ collectionAddress: string;
10
+ currencyInfo: ContractInfo | undefined;
11
+ tokenMetadatas: TokenMetadata[] | undefined;
12
+ dataCollectionInfo: ContractInfo | undefined;
13
+ isLoadingCollectionInfo: boolean;
14
+ errorCollectionInfo: Error | null;
15
+ isLoadingTokenMetadatas: boolean;
16
+ errorTokenMetadata: Error | null;
17
+ isLoadingCurrencyInfo: boolean;
18
+ errorCurrencyInfo: Error | null;
19
+ }
20
+ export interface UseOrderSummaryConfig {
21
+ }
22
+ export interface CollectibleItem {
23
+ quantityRaw: string;
24
+ quantityFormatted: string;
25
+ collectionName: string;
26
+ collectibleName: string;
27
+ collectibleImageUrl: string;
28
+ }
29
+ export interface UseOrderSummaryData {
30
+ formattedCryptoPrice: string;
31
+ cryptoSymbol: string;
32
+ cryptoImageUrl?: string;
33
+ totalPriceFiat: string;
34
+ networkName: string;
35
+ networkImageUrl: string;
36
+ NetworkBadge: ReactNode;
37
+ collectibleItem: CollectibleItem;
38
+ }
39
+ export interface UseOrderSummaryReturn {
40
+ error: Error | null;
41
+ data: UseOrderSummaryData | null;
42
+ isLoading: boolean;
43
+ }
44
+ export declare const useOrderSummary: ({ chain, currencyAddress, totalPriceRaw, collectible, currencyInfo, tokenMetadatas, dataCollectionInfo, isLoadingCollectionInfo, errorCollectionInfo, isLoadingTokenMetadatas, errorTokenMetadata, isLoadingCurrencyInfo, errorCurrencyInfo }: UseOrderSummaryArgs) => UseOrderSummaryReturn;
45
+ //# sourceMappingURL=useOrderSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOrderSummary.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useCheckoutUI/useOrderSummary.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAE/D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,YAAY,GAAG,SAAS,CAAA;IACtC,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,CAAA;IAC3C,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAA;IAC5C,uBAAuB,EAAE,OAAO,CAAA;IAChC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAA;IACjC,uBAAuB,EAAE,OAAO,CAAA;IAChC,kBAAkB,EAAE,KAAK,GAAG,IAAI,CAAA;IAChC,qBAAqB,EAAE,OAAO,CAAA;IAC9B,iBAAiB,EAAE,KAAK,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,qBAAqB;CAAG;AAEzC,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,SAAS,CAAA;IACvB,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,eAAe,GAAI,+OAc7B,mBAAmB,KAAG,qBAwDxB,CAAA"}