@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.
- package/README.md +53 -0
- package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.d.ts.map +1 -1
- package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js +2 -0
- package/dist/cjs/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js.map +1 -1
- package/dist/cjs/contexts/AddFundsModal.d.ts +1 -0
- package/dist/cjs/contexts/AddFundsModal.d.ts.map +1 -1
- package/dist/cjs/contexts/AddFundsModal.js.map +1 -1
- package/dist/cjs/contexts/SwapModal.d.ts +1 -0
- package/dist/cjs/contexts/SwapModal.d.ts.map +1 -1
- package/dist/cjs/contexts/SwapModal.js.map +1 -1
- package/dist/cjs/hooks/useAddFundsModal.d.ts +1 -0
- package/dist/cjs/hooks/useAddFundsModal.d.ts.map +1 -1
- package/dist/cjs/hooks/useAddFundsModal.js +2 -2
- package/dist/cjs/hooks/useAddFundsModal.js.map +1 -1
- package/dist/cjs/hooks/useCheckoutUI/index.d.ts +29 -0
- package/dist/cjs/hooks/useCheckoutUI/index.d.ts.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/index.js +93 -0
- package/dist/cjs/hooks/useCheckoutUI/index.js.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.d.ts +42 -0
- package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.d.ts.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.js +202 -0
- package/dist/cjs/hooks/useCheckoutUI/useCreditCardPayment.js.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.d.ts +53 -0
- package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.d.ts.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.js +273 -0
- package/dist/cjs/hooks/useCheckoutUI/useCryptoPayment.js.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.d.ts +45 -0
- package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.d.ts.map +1 -0
- package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.js +57 -0
- package/dist/cjs/hooks/useCheckoutUI/useOrderSummary.js.map +1 -0
- package/dist/cjs/hooks/useSwapModal.d.ts +1 -0
- package/dist/cjs/hooks/useSwapModal.d.ts.map +1 -1
- package/dist/cjs/hooks/useSwapModal.js +2 -2
- package/dist/cjs/hooks/useSwapModal.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/views/CheckoutSelection/component/OrderSummaryItem.js +4 -4
- package/dist/cjs/views/CheckoutSelection/index.d.ts.map +1 -1
- package/dist/cjs/views/CheckoutSelection/index.js +15 -6
- package/dist/cjs/views/CheckoutSelection/index.js.map +1 -1
- package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.d.ts.map +1 -1
- package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.js +12 -4
- package/dist/cjs/views/PaymentSelection/PayWithCrypto/index.js.map +1 -1
- package/dist/cjs/views/PaymentSelection/index.d.ts.map +1 -1
- package/dist/cjs/views/PaymentSelection/index.js +2 -17
- package/dist/cjs/views/PaymentSelection/index.js.map +1 -1
- package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.d.ts.map +1 -1
- package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js +2 -0
- package/dist/esm/components/SequenceCheckoutProvider/SequenceCheckoutProvider.js.map +1 -1
- package/dist/esm/contexts/AddFundsModal.d.ts +1 -0
- package/dist/esm/contexts/AddFundsModal.d.ts.map +1 -1
- package/dist/esm/contexts/AddFundsModal.js.map +1 -1
- package/dist/esm/contexts/SwapModal.d.ts +1 -0
- package/dist/esm/contexts/SwapModal.d.ts.map +1 -1
- package/dist/esm/contexts/SwapModal.js.map +1 -1
- package/dist/esm/hooks/useAddFundsModal.d.ts +1 -0
- package/dist/esm/hooks/useAddFundsModal.d.ts.map +1 -1
- package/dist/esm/hooks/useAddFundsModal.js +2 -2
- package/dist/esm/hooks/useAddFundsModal.js.map +1 -1
- package/dist/esm/hooks/useCheckoutUI/index.d.ts +29 -0
- package/dist/esm/hooks/useCheckoutUI/index.d.ts.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/index.js +89 -0
- package/dist/esm/hooks/useCheckoutUI/index.js.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.d.ts +42 -0
- package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.d.ts.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.js +195 -0
- package/dist/esm/hooks/useCheckoutUI/useCreditCardPayment.js.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.d.ts +53 -0
- package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.d.ts.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.js +269 -0
- package/dist/esm/hooks/useCheckoutUI/useCryptoPayment.js.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/useOrderSummary.d.ts +45 -0
- package/dist/esm/hooks/useCheckoutUI/useOrderSummary.d.ts.map +1 -0
- package/dist/esm/hooks/useCheckoutUI/useOrderSummary.js +53 -0
- package/dist/esm/hooks/useCheckoutUI/useOrderSummary.js.map +1 -0
- package/dist/esm/hooks/useSwapModal.d.ts +1 -0
- package/dist/esm/hooks/useSwapModal.d.ts.map +1 -1
- package/dist/esm/hooks/useSwapModal.js +2 -2
- package/dist/esm/hooks/useSwapModal.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/views/CheckoutSelection/component/OrderSummaryItem.js +4 -4
- package/dist/esm/views/CheckoutSelection/index.d.ts.map +1 -1
- package/dist/esm/views/CheckoutSelection/index.js +15 -6
- package/dist/esm/views/CheckoutSelection/index.js.map +1 -1
- package/dist/esm/views/PaymentSelection/PayWithCrypto/index.d.ts.map +1 -1
- package/dist/esm/views/PaymentSelection/PayWithCrypto/index.js +12 -4
- package/dist/esm/views/PaymentSelection/PayWithCrypto/index.js.map +1 -1
- package/dist/esm/views/PaymentSelection/index.d.ts.map +1 -1
- package/dist/esm/views/PaymentSelection/index.js +4 -19
- package/dist/esm/views/PaymentSelection/index.js.map +1 -1
- 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":"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"}
|
|
@@ -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"}
|