@0xsequence/marketplace-sdk 0.4.4 → 0.4.5
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/dist/{chunk-J4TRSLTB.js → chunk-CKOWM2ZR.js} +3 -3
- package/dist/{chunk-4VS5NKDD.js → chunk-FT3J32ZV.js} +2 -2
- package/dist/{chunk-IQXJZBMR.js → chunk-HTFBQVLV.js} +2 -2
- package/dist/{chunk-URX7ZHX4.js → chunk-KILOCWY2.js} +2 -2
- package/dist/{chunk-LHN6EBLM.js → chunk-KL5JPUPS.js} +3 -4
- package/dist/{chunk-LHN6EBLM.js.map → chunk-KL5JPUPS.js.map} +1 -1
- package/dist/{chunk-GLOIEUWC.js → chunk-KZGDOIZY.js} +18 -569
- package/dist/chunk-KZGDOIZY.js.map +1 -0
- package/dist/{chunk-6XUCLBZC.js → chunk-SEISACMH.js} +172 -103
- package/dist/chunk-SEISACMH.js.map +1 -0
- package/dist/{chunk-DNDPYQKV.js → chunk-YUETNNZQ.js} +1 -144
- package/dist/{chunk-DNDPYQKV.js.map → chunk-YUETNNZQ.js.map} +1 -1
- package/dist/{create-config-8sffBvlt.d.ts → create-config-DMBOGsJp.d.ts} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/{marketplace-config-Bbxl-uKX.d.ts → marketplace-config-0Rft6_Hv.d.ts} +2 -0
- package/dist/react/_internal/api/index.js +2 -2
- package/dist/react/_internal/index.d.ts +2 -2
- package/dist/react/_internal/index.js +3 -3
- package/dist/react/_internal/wagmi/index.d.ts +3 -2
- package/dist/react/_internal/wagmi/index.js +2 -2
- package/dist/react/hooks/index.d.ts +4 -205
- package/dist/react/hooks/index.js +6 -9
- package/dist/react/index.d.ts +7 -4
- package/dist/react/index.js +11 -11
- package/dist/react/ssr/index.d.ts +14 -0
- package/dist/react/ssr/index.js +10 -32
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/index.js +9 -9
- package/dist/react/ui/index.js +9 -9
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +6 -6
- package/dist/react/ui/styles/index.d.ts +1 -1
- package/dist/styles/index.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +3 -3
- package/dist/utils/index.js +2 -2
- package/package.json +1 -1
- package/src/react/hooks/index.ts +0 -1
- package/src/react/hooks/useCancelTransactionSteps.tsx +6 -3
- package/src/react/hooks/useCurrency.tsx +1 -1
- package/src/react/provider.tsx +18 -3
- package/src/react/ssr/create-ssr-client.ts +9 -5
- package/src/react/ui/modals/BuyModal/Modal.tsx +4 -0
- package/src/react/ui/modals/BuyModal/hooks/useBuyCollectable.ts +29 -3
- package/src/react/ui/modals/BuyModal/modals/Modal1155.tsx +8 -3
- package/src/react/ui/modals/BuyModal/store.ts +14 -0
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +21 -5
- package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +34 -28
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +21 -15
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +34 -28
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +8 -8
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +29 -15
- package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +3 -4
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +38 -54
- package/src/react/ui/modals/_internal/components/priceInput/hooks/usePriceInput.ts +3 -3
- package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +2 -1
- package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +1 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +15 -6
- package/src/react/ui/modals/_internal/components/transactionStatusModal/util/getMessage.ts +12 -1
- package/src/types/marketplace-config.ts +3 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/chunk-6XUCLBZC.js.map +0 -1
- package/dist/chunk-GLOIEUWC.js.map +0 -1
- package/src/react/hooks/useBuyCollectable.tsx +0 -61
- /package/dist/{chunk-J4TRSLTB.js.map → chunk-CKOWM2ZR.js.map} +0 -0
- /package/dist/{chunk-4VS5NKDD.js.map → chunk-FT3J32ZV.js.map} +0 -0
- /package/dist/{chunk-IQXJZBMR.js.map → chunk-HTFBQVLV.js.map} +0 -0
- /package/dist/{chunk-URX7ZHX4.js.map → chunk-KILOCWY2.js.map} +0 -0
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
useSwitchChainModal,
|
|
10
10
|
useWallet
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KL5JPUPS.js";
|
|
12
12
|
import {
|
|
13
13
|
getPublicRpcClient
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FT3J32ZV.js";
|
|
15
15
|
import {
|
|
16
16
|
getProviderEl
|
|
17
17
|
} from "./chunk-ZEKRTFBU.js";
|
|
@@ -457,4 +457,4 @@ export {
|
|
|
457
457
|
openModal,
|
|
458
458
|
closeModal
|
|
459
459
|
};
|
|
460
|
-
//# sourceMappingURL=chunk-
|
|
460
|
+
//# sourceMappingURL=chunk-CKOWM2ZR.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
import {
|
|
3
3
|
MissingConfigError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YUETNNZQ.js";
|
|
5
5
|
|
|
6
6
|
// src/utils/address.ts
|
|
7
7
|
var truncateMiddle = (address, minPrefix = 20, minSuffix = 3) => {
|
|
@@ -83,4 +83,4 @@ export {
|
|
|
83
83
|
getPresentableChainName,
|
|
84
84
|
calculatePriceDifferencePercentage
|
|
85
85
|
};
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-FT3J32ZV.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
import {
|
|
3
3
|
MissingConfigError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YUETNNZQ.js";
|
|
5
5
|
|
|
6
6
|
// src/react/_internal/wagmi/create-config.ts
|
|
7
7
|
import { getDefaultChains } from "@0xsequence/kit";
|
|
@@ -180,4 +180,4 @@ export {
|
|
|
180
180
|
getUniversalConnectors,
|
|
181
181
|
createWagmiConfig
|
|
182
182
|
};
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
183
|
+
//# sourceMappingURL=chunk-HTFBQVLV.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
import {
|
|
3
3
|
MissingConfigError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YUETNNZQ.js";
|
|
5
5
|
|
|
6
6
|
// src/react/_internal/api/get-query-client.ts
|
|
7
7
|
import {
|
|
@@ -1350,4 +1350,4 @@ export {
|
|
|
1350
1350
|
getIndexerClient,
|
|
1351
1351
|
getMarketplaceClient
|
|
1352
1352
|
};
|
|
1353
|
-
//# sourceMappingURL=chunk-
|
|
1353
|
+
//# sourceMappingURL=chunk-KILOCWY2.js.map
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import {
|
|
18
18
|
getPresentableChainName,
|
|
19
19
|
getPublicRpcClient
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-FT3J32ZV.js";
|
|
21
21
|
import {
|
|
22
22
|
ERC1155_ABI
|
|
23
23
|
} from "./chunk-WFE6OCYF.js";
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
TransactionExecutionError,
|
|
31
31
|
TransactionSignatureError,
|
|
32
32
|
UserRejectedRequestError
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-YUETNNZQ.js";
|
|
34
34
|
|
|
35
35
|
// src/react/_internal/transaction-machine/useWallet.ts
|
|
36
36
|
import { useAccount, useSwitchChain, useWalletClient } from "wagmi";
|
|
@@ -411,10 +411,9 @@ var SwitchChainModal = observer(() => {
|
|
|
411
411
|
var switchChainModal_default = SwitchChainModal;
|
|
412
412
|
|
|
413
413
|
export {
|
|
414
|
-
createLogger,
|
|
415
414
|
useWallet,
|
|
416
415
|
AlertMessage,
|
|
417
416
|
useSwitchChainModal,
|
|
418
417
|
switchChainModal_default
|
|
419
418
|
};
|
|
420
|
-
//# sourceMappingURL=chunk-
|
|
419
|
+
//# sourceMappingURL=chunk-KL5JPUPS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/_internal/transaction-machine/useWallet.ts","../src/react/_internal/transaction-machine/wallet.ts","../src/react/_internal/transaction-machine/logger.ts","../src/react/ui/modals/_internal/components/switchChainModal/index.tsx","../src/react/ui/modals/_internal/components/alertMessage/index.tsx","../src/react/ui/modals/_internal/components/switchChainModal/store.ts"],"sourcesContent":["import { useAccount, useSwitchChain, useWalletClient } from 'wagmi';\nimport { wallet, type WalletInstance } from './wallet';\n\ntype UseWalletReturn =\n\t| {\n\t\t\tstatus: 'loading';\n\t\t\twallet: null;\n\t\t\tisLoading: true;\n\t\t\tisError: false;\n\t }\n\t| {\n\t\t\tstatus: 'error';\n\t\t\twallet: null;\n\t\t\tisLoading: false;\n\t\t\tisError: true;\n\t }\n\t| {\n\t\t\tstatus: 'success';\n\t\t\twallet: WalletInstance;\n\t\t\tisLoading: false;\n\t\t\tisError: false;\n\t };\n\nexport const useWallet = (): UseWalletReturn => {\n\tconst { chains } = useSwitchChain();\n\tconst { data: walletClient, isLoading: walletClientIsLoading } =\n\t\tuseWalletClient();\n\tconst { connector, isConnected, isConnecting } = useAccount();\n\n\tif (walletClientIsLoading || isConnecting) {\n\t\treturn {\n\t\t\tstatus: 'loading',\n\t\t\twallet: null,\n\t\t\tisLoading: true,\n\t\t\tisError: false,\n\t\t};\n\t}\n\n\tif (!walletClient || !connector || !isConnected) {\n\t\treturn {\n\t\t\tstatus: 'error',\n\t\t\twallet: null,\n\t\t\tisLoading: false,\n\t\t\tisError: true,\n\t\t};\n\t}\n\n\treturn {\n\t\tstatus: 'success',\n\t\twallet: wallet({\n\t\t\twallet: walletClient,\n\t\t\tchains,\n\t\t\tconnector,\n\t\t}),\n\t\tisLoading: false,\n\t\tisError: false,\n\t};\n};\n","import {\n\ttype Account,\n\ttype Address,\n\ttype Chain,\n\ttype Hex,\n\ttype TransactionReceipt,\n\ttype TypedDataDomain,\n\ttype WalletClient as ViemWalletClient,\n\tcustom,\n\terc20Abi,\n\terc721Abi,\n\thexToBigInt,\n\tisHex,\n} from 'viem';\nimport type { Connector } from 'wagmi';\nimport type { SwitchChainErrorType } from 'wagmi/actions';\nimport { ERC1155_ABI, getPublicRpcClient } from '../../../utils';\nimport {\n\tChainSwitchError,\n\tTransactionConfirmationError,\n\tTransactionExecutionError,\n\tTransactionSignatureError,\n\tUserRejectedRequestError,\n} from '../../../utils/_internal/error/transaction';\nimport { StepType, WalletKind } from '../api';\nimport { createLogger } from './logger';\nimport type { SignatureStep, TransactionStep } from './utils';\nimport {\n\tSEQUENCE_MARKET_V1_ADDRESS,\n\tSEQUENCE_MARKET_V2_ADDRESS,\n} from '../../../consts';\n\ninterface WalletClient extends Omit<ViemWalletClient, 'account'> {\n\taccount: Account;\n}\n\nexport interface WalletInstance {\n\ttransport: ReturnType<typeof custom>;\n\tisWaaS: boolean;\n\twalletKind: WalletKind;\n\tgetChainId: () => Promise<number>;\n\tswitchChain: (chainId: number) => Promise<void>;\n\taddress: () => Promise<Hex>;\n\thandleSignMessageStep: (stepItem: SignatureStep) => Promise<Hex | undefined>;\n\thandleSendTransactionStep: (\n\t\tchainId: number,\n\t\tstepItem: TransactionStep,\n\t) => Promise<Hex>;\n\thandleConfirmTransactionStep: (\n\t\ttxHash: Hex,\n\t\tchainId: number,\n\t) => Promise<TransactionReceipt>;\n\thasTokenApproval: (args: {\n\t\ttokenType: 'ERC20' | 'ERC721' | 'ERC1155';\n\t\tcontractAddress: Address;\n\t\tspender: Address | 'sequenceMarketV1' | 'sequenceMarketV2';\n\t}) => Promise<bigint | boolean>;\n}\n\nexport const wallet = ({\n\twallet,\n\tchains,\n\tconnector,\n}: {\n\twallet: WalletClient;\n\tchains: readonly [Chain, ...Chain[]];\n\tconnector: Connector;\n}): WalletInstance => {\n\tconst logger = createLogger('Wallet');\n\n\tconst walletInstance = {\n\t\ttransport: custom(wallet.transport),\n\t\tisWaaS: connector.id.endsWith('waas'),\n\t\twalletKind:\n\t\t\tconnector.id === 'sequence' ? WalletKind.sequence : WalletKind.unknown,\n\t\tgetChainId: wallet.getChainId,\n\t\taddress: async () => {\n\t\t\tlet address = wallet.account?.address;\n\t\t\tif (!address) {\n\t\t\t\t[address] = await wallet.getAddresses();\n\t\t\t}\n\t\t\treturn address;\n\t\t},\n\t\tswitchChain: async (chainId: number) => {\n\t\t\tlogger.debug('Switching chain', { targetChainId: chainId });\n\n\t\t\ttry {\n\t\t\t\tawait wallet.switchChain({\n\t\t\t\t\tid: chainId,\n\t\t\t\t});\n\t\t\t\tlogger.info('Chain switch successful', { chainId });\n\t\t\t\treturn;\n\t\t\t} catch (e) {\n\t\t\t\tconst error = e as SwitchChainErrorType;\n\t\t\t\tlogger.error('Chain switch failed', error);\n\n\t\t\t\tswitch (error.name) {\n\t\t\t\t\tcase 'SwitchChainNotSupportedError':\n\t\t\t\t\t\tthrow new ChainSwitchError(await wallet.getChainId(), chainId);\n\t\t\t\t\tcase 'UserRejectedRequestError':\n\t\t\t\t\t\tthrow new UserRejectedRequestError();\n\t\t\t\t\tcase 'ChainNotConfiguredError':\n\t\t\t\t\t\treturn;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new ChainSwitchError(await wallet.getChainId(), chainId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleSignMessageStep: async (stepItem: SignatureStep) => {\n\t\t\ttry {\n\t\t\t\tif (stepItem.id === StepType.signEIP191) {\n\t\t\t\t\tlogger.debug('Signing with EIP-191', { data: stepItem.data });\n\t\t\t\t\tconst message = isHex(stepItem.data)\n\t\t\t\t\t\t? { raw: stepItem.data }\n\t\t\t\t\t\t: stepItem.data;\n\t\t\t\t\treturn await wallet.signMessage({\n\t\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t\t// biome-ignore lint/style/noUselessElse: <explanation>\n\t\t\t\t} else if (stepItem.id === StepType.signEIP712) {\n\t\t\t\t\tlogger.debug('Signing with EIP-712', {\n\t\t\t\t\t\tdomain: stepItem.domain,\n\t\t\t\t\t\ttypes: stepItem.signature?.types,\n\t\t\t\t\t});\n\t\t\t\t\treturn await wallet.signTypedData({\n\t\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\t\tdomain: stepItem.signature!.domain as TypedDataDomain,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\ttypes: stepItem.signature!.types,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tprimaryType: stepItem.signature!.primaryType,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tmessage: stepItem.signature!.value,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Signature failed', error);\n\t\t\t\tthrow new TransactionSignatureError(stepItem.id, error as Error);\n\t\t\t}\n\t\t},\n\t\thandleSendTransactionStep: async (\n\t\t\tchainId: number,\n\t\t\tstepItem: TransactionStep,\n\t\t) => {\n\t\t\tlogger.debug('Sending transaction', {\n\t\t\t\tchainId,\n\t\t\t\tto: stepItem.to,\n\t\t\t\tvalue: stepItem.value,\n\t\t\t});\n\n\t\t\tconst chain = chains.find((chain) => chain.id === chainId);\n\t\t\ttry {\n\t\t\t\treturn await wallet.sendTransaction({\n\t\t\t\t\tchain,\n\t\t\t\t\tdata: stepItem.data,\n\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\tto: stepItem.to,\n\t\t\t\t\tvalue: hexToBigInt(stepItem.value || '0x0'),\n\t\t\t\t\t...(stepItem.maxFeePerGas && {\n\t\t\t\t\t\tmaxFeePerGas: hexToBigInt(stepItem.maxFeePerGas),\n\t\t\t\t\t}),\n\t\t\t\t\t...(stepItem.maxPriorityFeePerGas && {\n\t\t\t\t\t\tmaxPriorityFeePerGas: hexToBigInt(stepItem.maxPriorityFeePerGas),\n\t\t\t\t\t}),\n\t\t\t\t\t...(stepItem.gas && {\n\t\t\t\t\t\tgas: hexToBigInt(stepItem.gas),\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Transaction failed', error);\n\t\t\t\tthrow new TransactionExecutionError(stepItem.id, error as Error);\n\t\t\t}\n\t\t},\n\t\thandleConfirmTransactionStep: async (txHash: Hex, chainId: number) => {\n\t\t\tlogger.debug('Confirming transaction', { txHash, chainId });\n\n\t\t\ttry {\n\t\t\t\tconst publicClient = getPublicRpcClient(chainId);\n\t\t\t\tconst receipt = await publicClient.waitForTransactionReceipt({\n\t\t\t\t\thash: txHash as Address,\n\t\t\t\t});\n\t\t\t\tlogger.info('Transaction confirmed', { txHash, receipt });\n\t\t\t\treturn receipt;\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Transaction confirmation failed', error);\n\t\t\t\tthrow new TransactionConfirmationError(txHash, error as Error);\n\t\t\t}\n\t\t},\n\t\thasTokenApproval: async ({\n\t\t\ttokenType,\n\t\t\tcontractAddress,\n\t\t\tspender,\n\t\t}: {\n\t\t\ttokenType: 'ERC20' | 'ERC721' | 'ERC1155';\n\t\t\tcontractAddress: Address;\n\t\t\tspender: Address | 'sequenceMarketV1' | 'sequenceMarketV2';\n\t\t}) => {\n\t\t\tconst publicClient = getPublicRpcClient(await wallet.getChainId());\n\t\t\tconst walletAddress = await walletInstance.address();\n\t\t\tconst spenderAddress =\n\t\t\t\tspender === 'sequenceMarketV1'\n\t\t\t\t\t? SEQUENCE_MARKET_V1_ADDRESS\n\t\t\t\t\t: spender === 'sequenceMarketV2'\n\t\t\t\t\t\t? SEQUENCE_MARKET_V2_ADDRESS\n\t\t\t\t\t\t: spender;\n\n\t\t\tswitch (tokenType) {\n\t\t\t\tcase 'ERC20':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\tfunctionName: 'allowance',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tcase 'ERC721':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: erc721Abi,\n\t\t\t\t\t\tfunctionName: 'isApprovedForAll',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tcase 'ERC1155':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: ERC1155_ABI,\n\t\t\t\t\t\tfunctionName: 'isApprovedForAll',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('Unsupported contract type for approval checking');\n\t\t\t}\n\t\t},\n\t};\n\n\treturn walletInstance;\n};\n","export class TransactionLogger {\n\tconstructor(\n\t\tprivate readonly context: string,\n\t\tprivate readonly enabled: boolean = true,\n\t) {}\n\n\tprivate formatData(data: unknown): unknown {\n\t\tif (data instanceof Error) {\n\t\t\treturn {\n\t\t\t\tname: data.name,\n\t\t\t\tmessage: data.message,\n\t\t\t\tcause:\n\t\t\t\t\tdata.cause instanceof Error\n\t\t\t\t\t\t? this.formatData(data.cause)\n\t\t\t\t\t\t: data.cause,\n\t\t\t\tstack: data.stack?.split('\\n').slice(0, 3),\n\t\t\t};\n\t\t}\n\n\t\tif (Array.isArray(data)) {\n\t\t\treturn data.map((item) => this.formatData(item));\n\t\t}\n\n\t\tif (typeof data === 'object' && data !== null) {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries(data).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tthis.formatData(value),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate log(\n\t\tlevel: 'debug' | 'error' | 'info',\n\t\tmessage: string,\n\t\tdata?: unknown,\n\t) {\n\t\tif (!this.enabled) return;\n\t\tconsole[level](\n\t\t\t`[${this.context}] ${message}`,\n\t\t\tdata ? this.formatData(data) : '',\n\t\t);\n\t}\n\n\tdebug(message: string, data?: unknown) {\n\t\tthis.log('debug', message, data);\n\t}\n\n\terror(message: string, error: unknown) {\n\t\tthis.log('error', message, error);\n\t}\n\n\tinfo(message: string, data?: unknown) {\n\t\tthis.log('info', message, data);\n\t}\n\n\tstate(from: string, to: string) {\n\t\tthis.info(`State transition: ${from} -> ${to}`);\n\t}\n}\n\nexport const createLogger = (context: string, enabled = true) =>\n\tnew TransactionLogger(context, enabled);\n","import {\n\tButton,\n\tCloseIcon,\n\tIconButton,\n\tSpinner,\n\tText,\n} from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { Close, Content, Overlay, Portal, Root } from '@radix-ui/react-dialog';\nimport type { SwitchChainErrorType } from 'viem';\nimport { useSwitchChain } from 'wagmi';\nimport { getPresentableChainName } from '../../../../../../utils/network';\nimport { getProviderEl, type ChainId } from '../../../../../_internal';\nimport AlertMessage from '../alertMessage';\nimport { switchChainModal$ } from './store';\nimport {\n\tcloseButton,\n\tdialogOverlay,\n\tswitchChainCta,\n\tswitchChainModalContent,\n} from './styles.css';\n\nexport type ShowSwitchChainModalArgs = {\n\tchainIdToSwitchTo: ChainId;\n\tonSuccess?: () => void;\n\tonError?: (error: SwitchChainErrorType) => void;\n\tonClose?: () => void;\n};\n\nexport const useSwitchChainModal = () => {\n\treturn {\n\t\tshow: (args: ShowSwitchChainModalArgs) => switchChainModal$.open(args),\n\t\tclose: () => switchChainModal$.delete(),\n\t\tisSwitching$: switchChainModal$.state.isSwitching,\n\t};\n};\n\nconst SwitchChainModal = observer(() => {\n\tconst chainIdToSwitchTo = switchChainModal$.state.chainIdToSwitchTo.get();\n\tconst isSwitching$ = switchChainModal$.state.isSwitching;\n\tconst chainName = chainIdToSwitchTo\n\t\t? getPresentableChainName(chainIdToSwitchTo)\n\t\t: '';\n\tconst { switchChainAsync } = useSwitchChain();\n\n\tasync function handleSwitchChain() {\n\t\tisSwitching$.set(true);\n\n\t\ttry {\n\t\t\tif (!chainIdToSwitchTo) return;\n\t\t\tawait switchChainAsync({ chainId: Number(chainIdToSwitchTo) });\n\n\t\t\tswitchChainModal$.state.onSuccess?.();\n\n\t\t\tswitchChainModal$.delete();\n\t\t} catch (error) {\n\t\t\tswitchChainModal$.state.onError?.(error as SwitchChainErrorType);\n\t\t} finally {\n\t\t\tisSwitching$.set(false);\n\t\t}\n\t}\n\n\treturn (\n\t\t<Root open={switchChainModal$.isOpen.get()}>\n\t\t\t<Portal container={getProviderEl()}>\n\t\t\t\t<Overlay className={dialogOverlay} />\n\n\t\t\t\t<Content className={switchChainModalContent}>\n\t\t\t\t\t<Text fontSize=\"large\" fontWeight=\"bold\" color=\"text100\">\n\t\t\t\t\t\tWrong network\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<AlertMessage\n\t\t\t\t\t\ttype=\"warning\"\n\t\t\t\t\t\tmessage={`You need to switch to ${chainName} network before completing the transaction`}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tname=\"switch-chain\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tlabel={isSwitching$.get() ? <Spinner /> : 'Switch Network'}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tpending={isSwitching$.get()}\n\t\t\t\t\t\tshape=\"square\"\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tisSwitching$.get()\n\t\t\t\t\t\t\t\t? switchChainCta.pending\n\t\t\t\t\t\t\t\t: switchChainCta.default\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjustifySelf=\"flex-end\"\n\t\t\t\t\t\tonClick={handleSwitchChain}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Close\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tswitchChainModal$.state.onClose &&\n\t\t\t\t\t\t\t\ttypeof switchChainModal$.state.onClose === 'function'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tswitchChainModal$.state.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tswitchChainModal$.delete();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={closeButton}\n\t\t\t\t\t\tasChild\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconButton size=\"xs\" aria-label=\"Close modal\" icon={CloseIcon} />\n\t\t\t\t\t</Close>\n\t\t\t\t</Content>\n\t\t\t</Portal>\n\t\t</Root>\n\t);\n});\n\nexport default SwitchChainModal;\n","import { Box, Text, WarningIcon } from '@0xsequence/design-system';\nimport SvgInfoIcon from '../../../../icons/InfoIcon';\nimport { alertMessageBox, alertMessageBoxVariants } from './styles.css';\n\ntype AlertMessageProps = {\n\tmessage: string;\n\ttype: 'warning' | 'info';\n};\n\nexport default function AlertMessage({ message, type }: AlertMessageProps) {\n\treturn (\n\t\t<Box className={`${alertMessageBox} ${alertMessageBoxVariants[type]}`}>\n\t\t\t<Text\n\t\t\t\tcolor=\"white\"\n\t\t\t\tfontSize=\"normal\"\n\t\t\t\tfontWeight=\"medium\"\n\t\t\t\tfontFamily=\"body\"\n\t\t\t>\n\t\t\t\t{message}\n\t\t\t</Text>\n\n\t\t\t{type === 'warning' && <WarningIcon size=\"sm\" color=\"white\" />}\n\t\t\t{type === 'info' && <SvgInfoIcon size=\"sm\" color=\"white\" />}\n\t\t</Box>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { SwitchChainErrorType } from 'viem';\nimport type { ShowSwitchChainModalArgs } from '.';\nimport type { ChainId } from '../../../../../_internal';\n\nexport interface SwitchChainModalState {\n\tisOpen: boolean;\n\topen: (args: ShowSwitchChainModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\tchainIdToSwitchTo: ChainId | undefined;\n\t\tisSwitching: boolean;\n\t\tonSuccess: (() => void) | undefined;\n\t\tonError: undefined | ((error: SwitchChainErrorType) => void);\n\t\tonClose: (() => void) | undefined;\n\t};\n}\n\nexport const initialState: SwitchChainModalState = {\n\tisOpen: false,\n\topen: ({ chainIdToSwitchTo, onError, onSuccess, onClose }) => {\n\t\tswitchChainModal$.state.set({\n\t\t\t...switchChainModal$.state.get(),\n\t\t\tchainIdToSwitchTo,\n\t\t\tonError,\n\t\t\tonSuccess,\n\t\t\tonClose,\n\t\t});\n\t\tswitchChainModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tswitchChainModal$.isOpen.set(false);\n\t},\n\tstate: {\n\t\tchainIdToSwitchTo: undefined,\n\t\tonError: undefined,\n\t\tonSuccess: undefined,\n\t\tonClose: undefined,\n\t\tisSwitching: false,\n\t},\n};\n\nexport const switchChainModal$ = observable(initialState);\n"],"mappings":"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","names":["wallet","chain","Text","useSwitchChain","jsx","jsxs","useSwitchChain","Text"]}
|
|
1
|
+
{"version":3,"sources":["../src/react/_internal/transaction-machine/useWallet.ts","../src/react/_internal/transaction-machine/wallet.ts","../src/react/_internal/transaction-machine/logger.ts","../src/react/ui/modals/_internal/components/switchChainModal/index.tsx","../src/react/ui/modals/_internal/components/alertMessage/index.tsx","../src/react/ui/modals/_internal/components/switchChainModal/store.ts"],"sourcesContent":["import { useAccount, useSwitchChain, useWalletClient } from 'wagmi';\nimport { wallet, type WalletInstance } from './wallet';\n\ntype UseWalletReturn =\n\t| {\n\t\t\tstatus: 'loading';\n\t\t\twallet: null;\n\t\t\tisLoading: true;\n\t\t\tisError: false;\n\t }\n\t| {\n\t\t\tstatus: 'error';\n\t\t\twallet: null;\n\t\t\tisLoading: false;\n\t\t\tisError: true;\n\t }\n\t| {\n\t\t\tstatus: 'success';\n\t\t\twallet: WalletInstance;\n\t\t\tisLoading: false;\n\t\t\tisError: false;\n\t };\n\nexport const useWallet = (): UseWalletReturn => {\n\tconst { chains } = useSwitchChain();\n\tconst { data: walletClient, isLoading: walletClientIsLoading } =\n\t\tuseWalletClient();\n\tconst { connector, isConnected, isConnecting } = useAccount();\n\n\tif (walletClientIsLoading || isConnecting) {\n\t\treturn {\n\t\t\tstatus: 'loading',\n\t\t\twallet: null,\n\t\t\tisLoading: true,\n\t\t\tisError: false,\n\t\t};\n\t}\n\n\tif (!walletClient || !connector || !isConnected) {\n\t\treturn {\n\t\t\tstatus: 'error',\n\t\t\twallet: null,\n\t\t\tisLoading: false,\n\t\t\tisError: true,\n\t\t};\n\t}\n\n\treturn {\n\t\tstatus: 'success',\n\t\twallet: wallet({\n\t\t\twallet: walletClient,\n\t\t\tchains,\n\t\t\tconnector,\n\t\t}),\n\t\tisLoading: false,\n\t\tisError: false,\n\t};\n};\n","import {\n\ttype Account,\n\ttype Address,\n\ttype Chain,\n\ttype Hex,\n\ttype TransactionReceipt,\n\ttype TypedDataDomain,\n\ttype WalletClient as ViemWalletClient,\n\tcustom,\n\terc20Abi,\n\terc721Abi,\n\thexToBigInt,\n\tisHex,\n} from 'viem';\nimport type { Connector } from 'wagmi';\nimport type { SwitchChainErrorType } from 'wagmi/actions';\nimport { ERC1155_ABI, getPublicRpcClient } from '../../../utils';\nimport {\n\tChainSwitchError,\n\tTransactionConfirmationError,\n\tTransactionExecutionError,\n\tTransactionSignatureError,\n\tUserRejectedRequestError,\n} from '../../../utils/_internal/error/transaction';\nimport { StepType, WalletKind } from '../api';\nimport { createLogger } from './logger';\nimport type { SignatureStep, TransactionStep } from './utils';\nimport {\n\tSEQUENCE_MARKET_V1_ADDRESS,\n\tSEQUENCE_MARKET_V2_ADDRESS,\n} from '../../../consts';\n\ninterface WalletClient extends Omit<ViemWalletClient, 'account'> {\n\taccount: Account;\n}\n\nexport interface WalletInstance {\n\ttransport: ReturnType<typeof custom>;\n\tisWaaS: boolean;\n\twalletKind: WalletKind;\n\tgetChainId: () => Promise<number>;\n\tswitchChain: (chainId: number) => Promise<void>;\n\taddress: () => Promise<Hex>;\n\thandleSignMessageStep: (stepItem: SignatureStep) => Promise<Hex | undefined>;\n\thandleSendTransactionStep: (\n\t\tchainId: number,\n\t\tstepItem: TransactionStep,\n\t) => Promise<Hex>;\n\thandleConfirmTransactionStep: (\n\t\ttxHash: Hex,\n\t\tchainId: number,\n\t) => Promise<TransactionReceipt>;\n\thasTokenApproval: (args: {\n\t\ttokenType: 'ERC20' | 'ERC721' | 'ERC1155';\n\t\tcontractAddress: Address;\n\t\tspender: Address | 'sequenceMarketV1' | 'sequenceMarketV2';\n\t}) => Promise<bigint | boolean>;\n}\n\nexport const wallet = ({\n\twallet,\n\tchains,\n\tconnector,\n}: {\n\twallet: WalletClient;\n\tchains: readonly [Chain, ...Chain[]];\n\tconnector: Connector;\n}): WalletInstance => {\n\tconst logger = createLogger('Wallet');\n\n\tconst walletInstance = {\n\t\ttransport: custom(wallet.transport),\n\t\tisWaaS: connector.id.endsWith('waas'),\n\t\twalletKind:\n\t\t\tconnector.id === 'sequence' ? WalletKind.sequence : WalletKind.unknown,\n\t\tgetChainId: wallet.getChainId,\n\t\taddress: async () => {\n\t\t\tlet address = wallet.account?.address;\n\t\t\tif (!address) {\n\t\t\t\t[address] = await wallet.getAddresses();\n\t\t\t}\n\t\t\treturn address;\n\t\t},\n\t\tswitchChain: async (chainId: number) => {\n\t\t\tlogger.debug('Switching chain', { targetChainId: chainId });\n\n\t\t\ttry {\n\t\t\t\tawait wallet.switchChain({\n\t\t\t\t\tid: chainId,\n\t\t\t\t});\n\t\t\t\tlogger.info('Chain switch successful', { chainId });\n\t\t\t\treturn;\n\t\t\t} catch (e) {\n\t\t\t\tconst error = e as SwitchChainErrorType;\n\t\t\t\tlogger.error('Chain switch failed', error);\n\n\t\t\t\tswitch (error.name) {\n\t\t\t\t\tcase 'SwitchChainNotSupportedError':\n\t\t\t\t\t\tthrow new ChainSwitchError(await wallet.getChainId(), chainId);\n\t\t\t\t\tcase 'UserRejectedRequestError':\n\t\t\t\t\t\tthrow new UserRejectedRequestError();\n\t\t\t\t\tcase 'ChainNotConfiguredError':\n\t\t\t\t\t\treturn;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new ChainSwitchError(await wallet.getChainId(), chainId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleSignMessageStep: async (stepItem: SignatureStep) => {\n\t\t\ttry {\n\t\t\t\tif (stepItem.id === StepType.signEIP191) {\n\t\t\t\t\tlogger.debug('Signing with EIP-191', { data: stepItem.data });\n\t\t\t\t\tconst message = isHex(stepItem.data)\n\t\t\t\t\t\t? { raw: stepItem.data }\n\t\t\t\t\t\t: stepItem.data;\n\t\t\t\t\treturn await wallet.signMessage({\n\t\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t\t// biome-ignore lint/style/noUselessElse: <explanation>\n\t\t\t\t} else if (stepItem.id === StepType.signEIP712) {\n\t\t\t\t\tlogger.debug('Signing with EIP-712', {\n\t\t\t\t\t\tdomain: stepItem.domain,\n\t\t\t\t\t\ttypes: stepItem.signature?.types,\n\t\t\t\t\t});\n\t\t\t\t\treturn await wallet.signTypedData({\n\t\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\t\tdomain: stepItem.signature!.domain as TypedDataDomain,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\ttypes: stepItem.signature!.types,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tprimaryType: stepItem.signature!.primaryType,\n\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\t\t\t\tmessage: stepItem.signature!.value,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Signature failed', error);\n\t\t\t\tthrow new TransactionSignatureError(stepItem.id, error as Error);\n\t\t\t}\n\t\t},\n\t\thandleSendTransactionStep: async (\n\t\t\tchainId: number,\n\t\t\tstepItem: TransactionStep,\n\t\t) => {\n\t\t\tlogger.debug('Sending transaction', {\n\t\t\t\tchainId,\n\t\t\t\tto: stepItem.to,\n\t\t\t\tvalue: stepItem.value,\n\t\t\t});\n\n\t\t\tconst chain = chains.find((chain) => chain.id === chainId);\n\t\t\ttry {\n\t\t\t\treturn await wallet.sendTransaction({\n\t\t\t\t\tchain,\n\t\t\t\t\tdata: stepItem.data,\n\t\t\t\t\taccount: wallet.account,\n\t\t\t\t\tto: stepItem.to,\n\t\t\t\t\tvalue: hexToBigInt(stepItem.value || '0x0'),\n\t\t\t\t\t...(stepItem.maxFeePerGas && {\n\t\t\t\t\t\tmaxFeePerGas: hexToBigInt(stepItem.maxFeePerGas),\n\t\t\t\t\t}),\n\t\t\t\t\t...(stepItem.maxPriorityFeePerGas && {\n\t\t\t\t\t\tmaxPriorityFeePerGas: hexToBigInt(stepItem.maxPriorityFeePerGas),\n\t\t\t\t\t}),\n\t\t\t\t\t...(stepItem.gas && {\n\t\t\t\t\t\tgas: hexToBigInt(stepItem.gas),\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Transaction failed', error);\n\t\t\t\tthrow new TransactionExecutionError(stepItem.id, error as Error);\n\t\t\t}\n\t\t},\n\t\thandleConfirmTransactionStep: async (txHash: Hex, chainId: number) => {\n\t\t\tlogger.debug('Confirming transaction', { txHash, chainId });\n\n\t\t\ttry {\n\t\t\t\tconst publicClient = getPublicRpcClient(chainId);\n\t\t\t\tconst receipt = await publicClient.waitForTransactionReceipt({\n\t\t\t\t\thash: txHash as Address,\n\t\t\t\t});\n\t\t\t\tlogger.info('Transaction confirmed', { txHash, receipt });\n\t\t\t\treturn receipt;\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Transaction confirmation failed', error);\n\t\t\t\tthrow new TransactionConfirmationError(txHash, error as Error);\n\t\t\t}\n\t\t},\n\t\thasTokenApproval: async ({\n\t\t\ttokenType,\n\t\t\tcontractAddress,\n\t\t\tspender,\n\t\t}: {\n\t\t\ttokenType: 'ERC20' | 'ERC721' | 'ERC1155';\n\t\t\tcontractAddress: Address;\n\t\t\tspender: Address | 'sequenceMarketV1' | 'sequenceMarketV2';\n\t\t}) => {\n\t\t\tconst publicClient = getPublicRpcClient(await wallet.getChainId());\n\t\t\tconst walletAddress = await walletInstance.address();\n\t\t\tconst spenderAddress =\n\t\t\t\tspender === 'sequenceMarketV1'\n\t\t\t\t\t? SEQUENCE_MARKET_V1_ADDRESS\n\t\t\t\t\t: spender === 'sequenceMarketV2'\n\t\t\t\t\t\t? SEQUENCE_MARKET_V2_ADDRESS\n\t\t\t\t\t\t: spender;\n\n\t\t\tswitch (tokenType) {\n\t\t\t\tcase 'ERC20':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: erc20Abi,\n\t\t\t\t\t\tfunctionName: 'allowance',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tcase 'ERC721':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: erc721Abi,\n\t\t\t\t\t\tfunctionName: 'isApprovedForAll',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tcase 'ERC1155':\n\t\t\t\t\treturn await publicClient.readContract({\n\t\t\t\t\t\taddress: contractAddress as Hex,\n\t\t\t\t\t\tabi: ERC1155_ABI,\n\t\t\t\t\t\tfunctionName: 'isApprovedForAll',\n\t\t\t\t\t\targs: [walletAddress, spenderAddress],\n\t\t\t\t\t});\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('Unsupported contract type for approval checking');\n\t\t\t}\n\t\t},\n\t};\n\n\treturn walletInstance;\n};\n","export class TransactionLogger {\n\tconstructor(\n\t\tprivate readonly context: string,\n\t\tprivate readonly enabled: boolean = true,\n\t) {}\n\n\tprivate formatData(data: unknown): unknown {\n\t\tif (data instanceof Error) {\n\t\t\treturn {\n\t\t\t\tname: data.name,\n\t\t\t\tmessage: data.message,\n\t\t\t\tcause:\n\t\t\t\t\tdata.cause instanceof Error\n\t\t\t\t\t\t? this.formatData(data.cause)\n\t\t\t\t\t\t: data.cause,\n\t\t\t\tstack: data.stack?.split('\\n').slice(0, 3),\n\t\t\t};\n\t\t}\n\n\t\tif (Array.isArray(data)) {\n\t\t\treturn data.map((item) => this.formatData(item));\n\t\t}\n\n\t\tif (typeof data === 'object' && data !== null) {\n\t\t\treturn Object.fromEntries(\n\t\t\t\tObject.entries(data).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tthis.formatData(value),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate log(\n\t\tlevel: 'debug' | 'error' | 'info',\n\t\tmessage: string,\n\t\tdata?: unknown,\n\t) {\n\t\tif (!this.enabled) return;\n\t\tconsole[level](\n\t\t\t`[${this.context}] ${message}`,\n\t\t\tdata ? this.formatData(data) : '',\n\t\t);\n\t}\n\n\tdebug(message: string, data?: unknown) {\n\t\tthis.log('debug', message, data);\n\t}\n\n\terror(message: string, error: unknown) {\n\t\tthis.log('error', message, error);\n\t}\n\n\tinfo(message: string, data?: unknown) {\n\t\tthis.log('info', message, data);\n\t}\n\n\tstate(from: string, to: string) {\n\t\tthis.info(`State transition: ${from} -> ${to}`);\n\t}\n}\n\nexport const createLogger = (context: string, enabled = true) =>\n\tnew TransactionLogger(context, enabled);\n","import {\n\tButton,\n\tCloseIcon,\n\tIconButton,\n\tSpinner,\n\tText,\n} from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { Close, Content, Overlay, Portal, Root } from '@radix-ui/react-dialog';\nimport type { SwitchChainErrorType } from 'viem';\nimport { useSwitchChain } from 'wagmi';\nimport { getPresentableChainName } from '../../../../../../utils/network';\nimport { getProviderEl, type ChainId } from '../../../../../_internal';\nimport AlertMessage from '../alertMessage';\nimport { switchChainModal$ } from './store';\nimport {\n\tcloseButton,\n\tdialogOverlay,\n\tswitchChainCta,\n\tswitchChainModalContent,\n} from './styles.css';\n\nexport type ShowSwitchChainModalArgs = {\n\tchainIdToSwitchTo: ChainId;\n\tonSuccess?: () => void;\n\tonError?: (error: SwitchChainErrorType) => void;\n\tonClose?: () => void;\n};\n\nexport const useSwitchChainModal = () => {\n\treturn {\n\t\tshow: (args: ShowSwitchChainModalArgs) => switchChainModal$.open(args),\n\t\tclose: () => switchChainModal$.delete(),\n\t\tisSwitching$: switchChainModal$.state.isSwitching,\n\t};\n};\n\nconst SwitchChainModal = observer(() => {\n\tconst chainIdToSwitchTo = switchChainModal$.state.chainIdToSwitchTo.get();\n\tconst isSwitching$ = switchChainModal$.state.isSwitching;\n\tconst chainName = chainIdToSwitchTo\n\t\t? getPresentableChainName(chainIdToSwitchTo)\n\t\t: '';\n\tconst { switchChainAsync } = useSwitchChain();\n\n\tasync function handleSwitchChain() {\n\t\tisSwitching$.set(true);\n\n\t\ttry {\n\t\t\tif (!chainIdToSwitchTo) return;\n\t\t\tawait switchChainAsync({ chainId: Number(chainIdToSwitchTo) });\n\n\t\t\tswitchChainModal$.state.onSuccess?.();\n\n\t\t\tswitchChainModal$.delete();\n\t\t} catch (error) {\n\t\t\tswitchChainModal$.state.onError?.(error as SwitchChainErrorType);\n\t\t} finally {\n\t\t\tisSwitching$.set(false);\n\t\t}\n\t}\n\n\treturn (\n\t\t<Root open={switchChainModal$.isOpen.get()}>\n\t\t\t<Portal container={getProviderEl()}>\n\t\t\t\t<Overlay className={dialogOverlay} />\n\n\t\t\t\t<Content className={switchChainModalContent}>\n\t\t\t\t\t<Text fontSize=\"large\" fontWeight=\"bold\" color=\"text100\">\n\t\t\t\t\t\tWrong network\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<AlertMessage\n\t\t\t\t\t\ttype=\"warning\"\n\t\t\t\t\t\tmessage={`You need to switch to ${chainName} network before completing the transaction`}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tname=\"switch-chain\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tlabel={isSwitching$.get() ? <Spinner /> : 'Switch Network'}\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tpending={isSwitching$.get()}\n\t\t\t\t\t\tshape=\"square\"\n\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\tisSwitching$.get()\n\t\t\t\t\t\t\t\t? switchChainCta.pending\n\t\t\t\t\t\t\t\t: switchChainCta.default\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjustifySelf=\"flex-end\"\n\t\t\t\t\t\tonClick={handleSwitchChain}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Close\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tswitchChainModal$.state.onClose &&\n\t\t\t\t\t\t\t\ttypeof switchChainModal$.state.onClose === 'function'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tswitchChainModal$.state.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tswitchChainModal$.delete();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={closeButton}\n\t\t\t\t\t\tasChild\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconButton size=\"xs\" aria-label=\"Close modal\" icon={CloseIcon} />\n\t\t\t\t\t</Close>\n\t\t\t\t</Content>\n\t\t\t</Portal>\n\t\t</Root>\n\t);\n});\n\nexport default SwitchChainModal;\n","import { Box, Text, WarningIcon } from '@0xsequence/design-system';\nimport SvgInfoIcon from '../../../../icons/InfoIcon';\nimport { alertMessageBox, alertMessageBoxVariants } from './styles.css';\n\ntype AlertMessageProps = {\n\tmessage: string;\n\ttype: 'warning' | 'info';\n};\n\nexport default function AlertMessage({ message, type }: AlertMessageProps) {\n\treturn (\n\t\t<Box className={`${alertMessageBox} ${alertMessageBoxVariants[type]}`}>\n\t\t\t<Text\n\t\t\t\tcolor=\"white\"\n\t\t\t\tfontSize=\"normal\"\n\t\t\t\tfontWeight=\"medium\"\n\t\t\t\tfontFamily=\"body\"\n\t\t\t>\n\t\t\t\t{message}\n\t\t\t</Text>\n\n\t\t\t{type === 'warning' && <WarningIcon size=\"sm\" color=\"white\" />}\n\t\t\t{type === 'info' && <SvgInfoIcon size=\"sm\" color=\"white\" />}\n\t\t</Box>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { SwitchChainErrorType } from 'viem';\nimport type { ShowSwitchChainModalArgs } from '.';\nimport type { ChainId } from '../../../../../_internal';\n\nexport interface SwitchChainModalState {\n\tisOpen: boolean;\n\topen: (args: ShowSwitchChainModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\tchainIdToSwitchTo: ChainId | undefined;\n\t\tisSwitching: boolean;\n\t\tonSuccess: (() => void) | undefined;\n\t\tonError: undefined | ((error: SwitchChainErrorType) => void);\n\t\tonClose: (() => void) | undefined;\n\t};\n}\n\nexport const initialState: SwitchChainModalState = {\n\tisOpen: false,\n\topen: ({ chainIdToSwitchTo, onError, onSuccess, onClose }) => {\n\t\tswitchChainModal$.state.set({\n\t\t\t...switchChainModal$.state.get(),\n\t\t\tchainIdToSwitchTo,\n\t\t\tonError,\n\t\t\tonSuccess,\n\t\t\tonClose,\n\t\t});\n\t\tswitchChainModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tswitchChainModal$.isOpen.set(false);\n\t},\n\tstate: {\n\t\tchainIdToSwitchTo: undefined,\n\t\tonError: undefined,\n\t\tonSuccess: undefined,\n\t\tonClose: undefined,\n\t\tisSwitching: false,\n\t},\n};\n\nexport const switchChainModal$ = observable(initialState);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,gBAAgB,uBAAuB;;;ACA5D;AAAA,EAQC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;;;ACbA,IAAM,oBAAN,MAAwB;AAAA,EAC9B,YACkB,SACA,UAAmB,MACnC;AAFgB;AACA;AAAA,EACf;AAAA,EAEK,WAAW,MAAwB;AAC1C,QAAI,gBAAgB,OAAO;AAC1B,aAAO;AAAA,QACN,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd,OACC,KAAK,iBAAiB,QACnB,KAAK,WAAW,KAAK,KAAK,IAC1B,KAAK;AAAA,QACT,OAAO,KAAK,OAAO,MAAM,IAAI,EAAE,MAAM,GAAG,CAAC;AAAA,MAC1C;AAAA,IACD;AAEA,QAAI,MAAM,QAAQ,IAAI,GAAG;AACxB,aAAO,KAAK,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC;AAAA,IAChD;AAEA,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC9C,aAAO,OAAO;AAAA,QACb,OAAO,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,UAC1C;AAAA,UACA,KAAK,WAAW,KAAK;AAAA,QACtB,CAAC;AAAA,MACF;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEQ,IACP,OACA,SACA,MACC;AACD,QAAI,CAAC,KAAK,QAAS;AACnB,YAAQ,KAAK;AAAA,MACZ,IAAI,KAAK,OAAO,KAAK,OAAO;AAAA,MAC5B,OAAO,KAAK,WAAW,IAAI,IAAI;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,MAAM,SAAiB,MAAgB;AACtC,SAAK,IAAI,SAAS,SAAS,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,SAAiB,OAAgB;AACtC,SAAK,IAAI,SAAS,SAAS,KAAK;AAAA,EACjC;AAAA,EAEA,KAAK,SAAiB,MAAgB;AACrC,SAAK,IAAI,QAAQ,SAAS,IAAI;AAAA,EAC/B;AAAA,EAEA,MAAM,MAAc,IAAY;AAC/B,SAAK,KAAK,qBAAqB,IAAI,OAAO,EAAE,EAAE;AAAA,EAC/C;AACD;AAEO,IAAM,eAAe,CAAC,SAAiB,UAAU,SACvD,IAAI,kBAAkB,SAAS,OAAO;;;ADNhC,IAAM,SAAS,CAAC;AAAA,EACtB,QAAAA;AAAA,EACA;AAAA,EACA;AACD,MAIsB;AACrB,QAAM,SAAS,aAAa,QAAQ;AAEpC,QAAM,iBAAiB;AAAA,IACtB,WAAW,OAAOA,QAAO,SAAS;AAAA,IAClC,QAAQ,UAAU,GAAG,SAAS,MAAM;AAAA,IACpC,YACC,UAAU,OAAO;AAAA,IAClB,YAAYA,QAAO;AAAA,IACnB,SAAS,YAAY;AACpB,UAAI,UAAUA,QAAO,SAAS;AAC9B,UAAI,CAAC,SAAS;AACb,SAAC,OAAO,IAAI,MAAMA,QAAO,aAAa;AAAA,MACvC;AACA,aAAO;AAAA,IACR;AAAA,IACA,aAAa,OAAO,YAAoB;AACvC,aAAO,MAAM,mBAAmB,EAAE,eAAe,QAAQ,CAAC;AAE1D,UAAI;AACH,cAAMA,QAAO,YAAY;AAAA,UACxB,IAAI;AAAA,QACL,CAAC;AACD,eAAO,KAAK,2BAA2B,EAAE,QAAQ,CAAC;AAClD;AAAA,MACD,SAAS,GAAG;AACX,cAAM,QAAQ;AACd,eAAO,MAAM,uBAAuB,KAAK;AAEzC,gBAAQ,MAAM,MAAM;AAAA,UACnB,KAAK;AACJ,kBAAM,IAAI,iBAAiB,MAAMA,QAAO,WAAW,GAAG,OAAO;AAAA,UAC9D,KAAK;AACJ,kBAAM,IAAI,yBAAyB;AAAA,UACpC,KAAK;AACJ;AAAA,UACD;AACC,kBAAM,IAAI,iBAAiB,MAAMA,QAAO,WAAW,GAAG,OAAO;AAAA,QAC/D;AAAA,MACD;AAAA,IACD;AAAA,IACA,uBAAuB,OAAO,aAA4B;AACzD,UAAI;AACH,YAAI,SAAS,sCAA4B;AACxC,iBAAO,MAAM,wBAAwB,EAAE,MAAM,SAAS,KAAK,CAAC;AAC5D,gBAAM,UAAU,MAAM,SAAS,IAAI,IAChC,EAAE,KAAK,SAAS,KAAK,IACrB,SAAS;AACZ,iBAAO,MAAMA,QAAO,YAAY;AAAA,YAC/B,SAASA,QAAO;AAAA,YAChB;AAAA,UACD,CAAC;AAAA,QAEF,WAAW,SAAS,sCAA4B;AAC/C,iBAAO,MAAM,wBAAwB;AAAA,YACpC,QAAQ,SAAS;AAAA,YACjB,OAAO,SAAS,WAAW;AAAA,UAC5B,CAAC;AACD,iBAAO,MAAMA,QAAO,cAAc;AAAA,YACjC,SAASA,QAAO;AAAA,YAChB,QAAQ,SAAS,UAAW;AAAA;AAAA,YAE5B,OAAO,SAAS,UAAW;AAAA;AAAA,YAE3B,aAAa,SAAS,UAAW;AAAA;AAAA,YAEjC,SAAS,SAAS,UAAW;AAAA,UAC9B,CAAC;AAAA,QACF;AAAA,MACD,SAAS,OAAO;AACf,eAAO,MAAM,oBAAoB,KAAK;AACtC,cAAM,IAAI,0BAA0B,SAAS,IAAI,KAAc;AAAA,MAChE;AAAA,IACD;AAAA,IACA,2BAA2B,OAC1B,SACA,aACI;AACJ,aAAO,MAAM,uBAAuB;AAAA,QACnC;AAAA,QACA,IAAI,SAAS;AAAA,QACb,OAAO,SAAS;AAAA,MACjB,CAAC;AAED,YAAM,QAAQ,OAAO,KAAK,CAACC,WAAUA,OAAM,OAAO,OAAO;AACzD,UAAI;AACH,eAAO,MAAMD,QAAO,gBAAgB;AAAA,UACnC;AAAA,UACA,MAAM,SAAS;AAAA,UACf,SAASA,QAAO;AAAA,UAChB,IAAI,SAAS;AAAA,UACb,OAAO,YAAY,SAAS,SAAS,KAAK;AAAA,UAC1C,GAAI,SAAS,gBAAgB;AAAA,YAC5B,cAAc,YAAY,SAAS,YAAY;AAAA,UAChD;AAAA,UACA,GAAI,SAAS,wBAAwB;AAAA,YACpC,sBAAsB,YAAY,SAAS,oBAAoB;AAAA,UAChE;AAAA,UACA,GAAI,SAAS,OAAO;AAAA,YACnB,KAAK,YAAY,SAAS,GAAG;AAAA,UAC9B;AAAA,QACD,CAAC;AAAA,MACF,SAAS,OAAO;AACf,eAAO,MAAM,sBAAsB,KAAK;AACxC,cAAM,IAAI,0BAA0B,SAAS,IAAI,KAAc;AAAA,MAChE;AAAA,IACD;AAAA,IACA,8BAA8B,OAAO,QAAa,YAAoB;AACrE,aAAO,MAAM,0BAA0B,EAAE,QAAQ,QAAQ,CAAC;AAE1D,UAAI;AACH,cAAM,eAAe,mBAAmB,OAAO;AAC/C,cAAM,UAAU,MAAM,aAAa,0BAA0B;AAAA,UAC5D,MAAM;AAAA,QACP,CAAC;AACD,eAAO,KAAK,yBAAyB,EAAE,QAAQ,QAAQ,CAAC;AACxD,eAAO;AAAA,MACR,SAAS,OAAO;AACf,eAAO,MAAM,mCAAmC,KAAK;AACrD,cAAM,IAAI,6BAA6B,QAAQ,KAAc;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,kBAAkB,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,IACD,MAIM;AACL,YAAM,eAAe,mBAAmB,MAAMA,QAAO,WAAW,CAAC;AACjE,YAAM,gBAAgB,MAAM,eAAe,QAAQ;AACnD,YAAM,iBACL,YAAY,qBACT,6BACA,YAAY,qBACX,6BACA;AAEL,cAAQ,WAAW;AAAA,QAClB,KAAK;AACJ,iBAAO,MAAM,aAAa,aAAa;AAAA,YACtC,SAAS;AAAA,YACT,KAAK;AAAA,YACL,cAAc;AAAA,YACd,MAAM,CAAC,eAAe,cAAc;AAAA,UACrC,CAAC;AAAA,QACF,KAAK;AACJ,iBAAO,MAAM,aAAa,aAAa;AAAA,YACtC,SAAS;AAAA,YACT,KAAK;AAAA,YACL,cAAc;AAAA,YACd,MAAM,CAAC,eAAe,cAAc;AAAA,UACrC,CAAC;AAAA,QACF,KAAK;AACJ,iBAAO,MAAM,aAAa,aAAa;AAAA,YACtC,SAAS;AAAA,YACT,KAAK;AAAA,YACL,cAAc;AAAA,YACd,MAAM,CAAC,eAAe,cAAc;AAAA,UACrC,CAAC;AAAA,QACF;AACC,gBAAM,IAAI,MAAM,iDAAiD;AAAA,MACnE;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;;;ADrNO,IAAM,YAAY,MAAuB;AAC/C,QAAM,EAAE,OAAO,IAAI,eAAe;AAClC,QAAM,EAAE,MAAM,cAAc,WAAW,sBAAsB,IAC5D,gBAAgB;AACjB,QAAM,EAAE,WAAW,aAAa,aAAa,IAAI,WAAW;AAE5D,MAAI,yBAAyB,cAAc;AAC1C,WAAO;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACV;AAAA,EACD;AAEA,MAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,aAAa;AAChD,WAAO;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACV;AAAA,EACD;AAEA,SAAO;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,MACd,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,WAAW;AAAA,IACX,SAAS;AAAA,EACV;AACD;;;AGzDA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAAE;AAAA,OACM;AACP,SAAS,gBAAgB;AACzB,SAAS,OAAO,SAAS,SAAS,QAAQ,YAAY;AAEtD,SAAS,kBAAAC,uBAAsB;;;ACV/B,SAAS,KAAK,MAAM,mBAAmB;AAWrC,SACC,KADD;AAFa,SAAR,aAA8B,EAAE,SAAS,KAAK,GAAsB;AAC1E,SACC,qBAAC,OAAI,WAAW,GAAG,eAAe,IAAI,wBAAwB,IAAI,CAAC,IAClE;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAM;AAAA,QACN,UAAS;AAAA,QACT,YAAW;AAAA,QACX,YAAW;AAAA,QAEV;AAAA;AAAA,IACF;AAAA,IAEC,SAAS,aAAa,oBAAC,eAAY,MAAK,MAAK,OAAM,SAAQ;AAAA,IAC3D,SAAS,UAAU,oBAAC,oBAAY,MAAK,MAAK,OAAM,SAAQ;AAAA,KAC1D;AAEF;;;ACzBA,SAAS,kBAAkB;AAkBpB,IAAM,eAAsC;AAAA,EAClD,QAAQ;AAAA,EACR,MAAM,CAAC,EAAE,mBAAmB,SAAS,WAAW,QAAQ,MAAM;AAC7D,sBAAkB,MAAM,IAAI;AAAA,MAC3B,GAAG,kBAAkB,MAAM,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AACD,sBAAkB,OAAO,IAAI,IAAI;AAAA,EAClC;AAAA,EACA,OAAO,MAAM;AACZ,sBAAkB,OAAO,IAAI,KAAK;AAAA,EACnC;AAAA,EACA,OAAO;AAAA,IACN,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AACD;AAEO,IAAM,oBAAoB,WAAW,YAAY;;;AFuBpD,gBAAAC,MAEA,QAAAC,aAFA;AApCG,IAAM,sBAAsB,MAAM;AACxC,SAAO;AAAA,IACN,MAAM,CAAC,SAAmC,kBAAkB,KAAK,IAAI;AAAA,IACrE,OAAO,MAAM,kBAAkB,OAAO;AAAA,IACtC,cAAc,kBAAkB,MAAM;AAAA,EACvC;AACD;AAEA,IAAM,mBAAmB,SAAS,MAAM;AACvC,QAAM,oBAAoB,kBAAkB,MAAM,kBAAkB,IAAI;AACxE,QAAM,eAAe,kBAAkB,MAAM;AAC7C,QAAM,YAAY,oBACf,wBAAwB,iBAAiB,IACzC;AACH,QAAM,EAAE,iBAAiB,IAAIC,gBAAe;AAE5C,iBAAe,oBAAoB;AAClC,iBAAa,IAAI,IAAI;AAErB,QAAI;AACH,UAAI,CAAC,kBAAmB;AACxB,YAAM,iBAAiB,EAAE,SAAS,OAAO,iBAAiB,EAAE,CAAC;AAE7D,wBAAkB,MAAM,YAAY;AAEpC,wBAAkB,OAAO;AAAA,IAC1B,SAAS,OAAO;AACf,wBAAkB,MAAM,UAAU,KAA6B;AAAA,IAChE,UAAE;AACD,mBAAa,IAAI,KAAK;AAAA,IACvB;AAAA,EACD;AAEA,SACC,gBAAAF,KAAC,QAAK,MAAM,kBAAkB,OAAO,IAAI,GACxC,0BAAAC,MAAC,UAAO,WAAW,cAAc,GAChC;AAAA,oBAAAD,KAAC,WAAQ,WAAW,eAAe;AAAA,IAEnC,gBAAAC,MAAC,WAAQ,WAAW,yBACnB;AAAA,sBAAAD,KAACG,OAAA,EAAK,UAAS,SAAQ,YAAW,QAAO,OAAM,WAAU,2BAEzD;AAAA,MAEA,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACA,MAAK;AAAA,UACL,SAAS,yBAAyB,SAAS;AAAA;AAAA,MAC5C;AAAA,MAEA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACA,MAAK;AAAA,UACL,MAAK;AAAA,UACL,OAAO,aAAa,IAAI,IAAI,gBAAAA,KAAC,WAAQ,IAAK;AAAA,UAC1C,SAAQ;AAAA,UACR,SAAS,aAAa,IAAI;AAAA,UAC1B,OAAM;AAAA,UACN,WACC,aAAa,IAAI,IACd,eAAe,UACf,eAAe;AAAA,UAEnB,aAAY;AAAA,UACZ,SAAS;AAAA;AAAA,MACV;AAAA,MAEA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACA,SAAS,MAAM;AACd,gBACC,kBAAkB,MAAM,WACxB,OAAO,kBAAkB,MAAM,YAAY,YAC1C;AACD,gCAAkB,MAAM,QAAQ;AAAA,YACjC;AACA,8BAAkB,OAAO;AAAA,UAC1B;AAAA,UACA,WAAW;AAAA,UACX,SAAO;AAAA,UAEP,0BAAAA,KAAC,cAAW,MAAK,MAAK,cAAW,eAAc,MAAM,WAAW;AAAA;AAAA,MACjE;AAAA,OACD;AAAA,KACD,GACD;AAEF,CAAC;AAED,IAAO,2BAAQ;","names":["wallet","chain","Text","useSwitchChain","jsx","jsxs","useSwitchChain","Text"]}
|