@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.
Files changed (69) hide show
  1. package/dist/{chunk-J4TRSLTB.js → chunk-CKOWM2ZR.js} +3 -3
  2. package/dist/{chunk-4VS5NKDD.js → chunk-FT3J32ZV.js} +2 -2
  3. package/dist/{chunk-IQXJZBMR.js → chunk-HTFBQVLV.js} +2 -2
  4. package/dist/{chunk-URX7ZHX4.js → chunk-KILOCWY2.js} +2 -2
  5. package/dist/{chunk-LHN6EBLM.js → chunk-KL5JPUPS.js} +3 -4
  6. package/dist/{chunk-LHN6EBLM.js.map → chunk-KL5JPUPS.js.map} +1 -1
  7. package/dist/{chunk-GLOIEUWC.js → chunk-KZGDOIZY.js} +18 -569
  8. package/dist/chunk-KZGDOIZY.js.map +1 -0
  9. package/dist/{chunk-6XUCLBZC.js → chunk-SEISACMH.js} +172 -103
  10. package/dist/chunk-SEISACMH.js.map +1 -0
  11. package/dist/{chunk-DNDPYQKV.js → chunk-YUETNNZQ.js} +1 -144
  12. package/dist/{chunk-DNDPYQKV.js.map → chunk-YUETNNZQ.js.map} +1 -1
  13. package/dist/{create-config-8sffBvlt.d.ts → create-config-DMBOGsJp.d.ts} +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.js +5 -5
  16. package/dist/{marketplace-config-Bbxl-uKX.d.ts → marketplace-config-0Rft6_Hv.d.ts} +2 -0
  17. package/dist/react/_internal/api/index.js +2 -2
  18. package/dist/react/_internal/index.d.ts +2 -2
  19. package/dist/react/_internal/index.js +3 -3
  20. package/dist/react/_internal/wagmi/index.d.ts +3 -2
  21. package/dist/react/_internal/wagmi/index.js +2 -2
  22. package/dist/react/hooks/index.d.ts +4 -205
  23. package/dist/react/hooks/index.js +6 -9
  24. package/dist/react/index.d.ts +7 -4
  25. package/dist/react/index.js +11 -11
  26. package/dist/react/ssr/index.d.ts +14 -0
  27. package/dist/react/ssr/index.js +10 -32
  28. package/dist/react/ssr/index.js.map +1 -1
  29. package/dist/react/ui/components/index.js +9 -9
  30. package/dist/react/ui/index.js +9 -9
  31. package/dist/react/ui/modals/_internal/components/actionModal/index.js +6 -6
  32. package/dist/react/ui/styles/index.d.ts +1 -1
  33. package/dist/styles/index.d.ts +1 -1
  34. package/dist/types/index.d.ts +1 -1
  35. package/dist/types/index.js +3 -3
  36. package/dist/utils/index.js +2 -2
  37. package/package.json +1 -1
  38. package/src/react/hooks/index.ts +0 -1
  39. package/src/react/hooks/useCancelTransactionSteps.tsx +6 -3
  40. package/src/react/hooks/useCurrency.tsx +1 -1
  41. package/src/react/provider.tsx +18 -3
  42. package/src/react/ssr/create-ssr-client.ts +9 -5
  43. package/src/react/ui/modals/BuyModal/Modal.tsx +4 -0
  44. package/src/react/ui/modals/BuyModal/hooks/useBuyCollectable.ts +29 -3
  45. package/src/react/ui/modals/BuyModal/modals/Modal1155.tsx +8 -3
  46. package/src/react/ui/modals/BuyModal/store.ts +14 -0
  47. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +21 -5
  48. package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +34 -28
  49. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +21 -15
  50. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +1 -1
  51. package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +34 -28
  52. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +8 -8
  53. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +29 -15
  54. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +3 -4
  55. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +38 -54
  56. package/src/react/ui/modals/_internal/components/priceInput/hooks/usePriceInput.ts +3 -3
  57. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +2 -1
  58. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +1 -1
  59. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +15 -6
  60. package/src/react/ui/modals/_internal/components/transactionStatusModal/util/getMessage.ts +12 -1
  61. package/src/types/marketplace-config.ts +3 -0
  62. package/tsconfig.tsbuildinfo +1 -1
  63. package/dist/chunk-6XUCLBZC.js.map +0 -1
  64. package/dist/chunk-GLOIEUWC.js.map +0 -1
  65. package/src/react/hooks/useBuyCollectable.tsx +0 -61
  66. /package/dist/{chunk-J4TRSLTB.js.map → chunk-CKOWM2ZR.js.map} +0 -0
  67. /package/dist/{chunk-4VS5NKDD.js.map → chunk-FT3J32ZV.js.map} +0 -0
  68. /package/dist/{chunk-IQXJZBMR.js.map → chunk-HTFBQVLV.js.map} +0 -0
  69. /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-LHN6EBLM.js";
11
+ } from "./chunk-KL5JPUPS.js";
12
12
  import {
13
13
  getPublicRpcClient
14
- } from "./chunk-4VS5NKDD.js";
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-J4TRSLTB.js.map
460
+ //# sourceMappingURL=chunk-CKOWM2ZR.js.map
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  MissingConfigError
4
- } from "./chunk-DNDPYQKV.js";
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-4VS5NKDD.js.map
86
+ //# sourceMappingURL=chunk-FT3J32ZV.js.map
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  MissingConfigError
4
- } from "./chunk-DNDPYQKV.js";
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-IQXJZBMR.js.map
183
+ //# sourceMappingURL=chunk-HTFBQVLV.js.map
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  MissingConfigError
4
- } from "./chunk-DNDPYQKV.js";
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-URX7ZHX4.js.map
1353
+ //# sourceMappingURL=chunk-KILOCWY2.js.map
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  getPresentableChainName,
19
19
  getPublicRpcClient
20
- } from "./chunk-4VS5NKDD.js";
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-DNDPYQKV.js";
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-LHN6EBLM.js.map
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":"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","names":["wallet","chain","Text","useSwitchChain","jsx","jsxs","useSwitchChain","Text"]}