viemAdapter
Converts thirdweb accounts and contracts to viem wallet clients and contract objects or the other way around.
let viemAdapter: { contract: { fromViem: (options: FromViemContractOptions<TAbi>) => Readonly<ContractOptions<TAbi, `0x${string}`>>; toViem: { } }; publicClient: { toViem: (options: ToViemPublicClientOptions) => { account: undefined; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; call: (parameters: CallParameters<undefined | (Chain)>) => Promise<CallReturnType>; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${string}`> }); chain: undefined | (Chain); createAccessList: (parameters: CreateAccessListParameters<undefined | (Chain)>) => Promise<{ accessList: AccessList; gasUsed: bigint }>; createBlockFilter: () => Promise<{ id: `0x${string}`; request: EIP1193RequestFn<readonly [{ Method: "eth_getFilterChanges"; Parameters: [filterId: ...]; ReturnType: (...) | (...) }, { Method: "eth_getFilterLogs"; Parameters: [filterId: ...]; ReturnType: Array<...> }, { Method: "eth_uninstallFilter"; Parameters: [filterId: ...]; ReturnType: boolean }]>; type: "block" }>; createContractEventFilter: (args: CreateContractEventFilterParameters<abi, eventName, args, strict, fromBlock, toBlock>) => Promise<CreateContractEventFilterReturnType<abi, eventName, args, strict, fromBlock, toBlock>>; createEventFilter: (args?: CreateEventFilterParameters<abiEvent, abiEvents, strict, fromBlock, toBlock, _EventName, _Args>) => Promise<{[K in string | number | symbol] : Filter<"event", abiEvents, _EventName, _Args, strict, fromBlock, toBlock>[K]}>; createPendingTransactionFilter: () => Promise<{ id: `0x${string}`; request: EIP1193RequestFn<readonly [{ Method: "eth_getFilterChanges"; Parameters: [filterId: ...]; ReturnType: (...) | (...) }, { Method: "eth_getFilterLogs"; Parameters: [filterId: ...]; ReturnType: Array<...> }, { Method: "eth_uninstallFilter"; Parameters: [filterId: ...]; ReturnType: boolean }]>; type: "transaction" }>; estimateContractGas: (args: EstimateContractGasParameters<abi, functionName, args, chain>) => Promise<bigint>; estimateFeesPerGas: (args?: EstimateFeesPerGasParameters<undefined | (Chain), chainOverride, type>) => Promise<EstimateFeesPerGasReturnType<type>>; estimateGas: (args: EstimateGasParameters<undefined | (Chain)>) => Promise<bigint>; estimateMaxPriorityFeePerGas: (args?: { chain: null | (chainOverride) }) => Promise<bigint>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined, PublicRpcSchema, PublicActions<Transport, undefined | (Chain)>>) => client) => Client<Transport, undefined | (Chain), undefined, PublicRpcSchema, ({[K in string | number | symbol] : client[K]}) & (PublicActions<Transport, undefined | (Chain)>)>; getBalance: (args: GetBalanceParameters) => Promise<bigint>; getBlobBaseFee: () => Promise<bigint>; getBlock: (args?: GetBlockParameters<includeTransactions, blockTag>) => Promise<{ baseFeePerGas: null | bigint; blobGasUsed: bigint; difficulty: bigint; excessBlobGas: bigint; extraData: `0x${string}`; gasLimit: bigint; gasUsed: bigint; hash: blockTag extends "pending" ? null : `0x${string}`; logsBloom: blockTag extends "pending" ? null : `0x${string}`; miner: string; mixHash: `0x${string}`; nonce: blockTag extends "pending" ? null : `0x${string}`; number: blockTag extends "pending" ? null : bigint; parentBeaconBlockRoot?: `0x${string}`; parentHash: `0x${string}`; receiptsRoot: `0x${string}`; sealFields: Array<`0x${string}`>; sha3Uncles: `0x${string}`; size: bigint; stateRoot: `0x${string}`; timestamp: bigint; totalDifficulty: null | bigint; transactions: includeTransactions extends true ? Array<({ accessList?: ...; authorizationList?: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId?: ...; from: ...; gas: ...; gasPrice: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas?: ...; maxPriorityFeePerGas?: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity?: ... }) | ({ accessList: ...; authorizationList?: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas?: ...; maxPriorityFeePerGas?: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... }) | ({ accessList: ...; authorizationList?: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice?: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas: ...; maxPriorityFeePerGas: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... }) | ({ accessList: ...; authorizationList?: ...; blobVersionedHashes: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice?: ...; hash: ...; input: ...; maxFeePerBlobGas: ...; maxFeePerGas: ...; maxPriorityFeePerGas: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... }) | ({ accessList: ...; authorizationList: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice?: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas: ...; maxPriorityFeePerGas: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... })> : Array<`0x${string}`>; transactionsRoot: `0x${string}`; uncles: Array<`0x${string}`>; withdrawals?: Array<Withdrawal>; withdrawalsRoot?: `0x${string}` }>; getBlockNumber: (args?: GetBlockNumberParameters) => Promise<bigint>; getBlockTransactionCount: (args?: GetBlockTransactionCountParameters) => Promise<number>; getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>; getChainId: () => Promise<number>; getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>; getContractEvents: (args: GetContractEventsParameters<abi, eventName, strict, fromBlock, toBlock>) => Promise<GetContractEventsReturnType<abi, eventName, strict, fromBlock, toBlock>>; getEip712Domain: (args: GetEip712DomainParameters) => Promise<GetEip712DomainReturnType>; getEnsAddress: (args: { blockNumber?: bigint; blockTag?: BlockTag; coinType?: number; gatewayUrls?: Array<string>; name: string; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsAddressReturnType>; getEnsAvatar: (args: { assetGatewayUrls?: AssetGatewayUrls; blockNumber?: bigint; blockTag?: BlockTag; gatewayUrls?: Array<string>; name: string; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsAvatarReturnType>; getEnsName: (args: { address: string; blockNumber?: bigint; blockTag?: BlockTag; gatewayUrls?: Array<string>; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsNameReturnType>; getEnsResolver: (args: { blockNumber?: bigint; blockTag?: BlockTag; name: string; universalResolverAddress?: string }) => Promise<string>; getEnsText: (args: { blockNumber?: bigint; blockTag?: BlockTag; gatewayUrls?: Array<string>; key: string; name: string; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsTextReturnType>; getFeeHistory: (args: GetFeeHistoryParameters) => Promise<GetFeeHistoryReturnType>; getFilterChanges: (args: GetFilterChangesParameters<filterType, abi, eventName, strict, fromBlock, toBlock>) => Promise<GetFilterChangesReturnType<filterType, abi, eventName, strict, fromBlock, toBlock>>; getFilterLogs: (args: GetFilterLogsParameters<abi, eventName, strict, fromBlock, toBlock>) => Promise<GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>>; getGasPrice: () => Promise<bigint>; getLogs: (args?: GetLogsParameters<abiEvent, abiEvents, strict, fromBlock, toBlock>) => Promise<GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>>; getProof: (args: GetProofParameters) => Promise<GetProofReturnType>; getStorageAt: (args: GetStorageAtParameters) => Promise<GetStorageAtReturnType>; getTransaction: (args: GetTransactionParameters<blockTag>) => Promise<({ accessList?: undefined; authorizationList?: undefined; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId?: number; from: string; gas: bigint; gasPrice: bigint; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "legacy"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity?: undefined }) | ({ accessList: AccessList; authorizationList?: undefined; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice: bigint; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip2930"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number }) | ({ accessList: AccessList; authorizationList?: undefined; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice?: undefined; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip1559"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number }) | ({ accessList: AccessList; authorizationList?: undefined; blobVersionedHashes: readonly Array<`0x${string}`>; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice?: undefined; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip4844"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number }) | ({ accessList: AccessList; authorizationList: SignedAuthorizationList; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice?: undefined; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip7702"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number })>; getTransactionConfirmations: (args: GetTransactionConfirmationsParameters<undefined | (Chain)>) => Promise<bigint>; getTransactionCount: (args: GetTransactionCountParameters) => Promise<number>; getTransactionReceipt: (args: GetTransactionReceiptParameters) => Promise<TransactionReceipt>; key: string; multicall: (args: MulticallParameters<contracts, allowFailure>) => Promise<MulticallReturnType<contracts, allowFailure>>; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<(...) & (...), ParameterTypeToParameters<...>>) & (unknown extends ...[...] ? { } : Pick<..., ...>)[K]}>; readContract: (args: ReadContractParameters<abi, functionName, args>) => Promise<ReadContractReturnType<abi, functionName, args>>; request: EIP1193RequestFn<PublicRpcSchema>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; simulate: (args: SimulateParameters<calls>) => Promise<SimulateReturnType<calls>>; simulateContract: (args: SimulateContractParameters<abi, functionName, args, undefined | (Chain), chainOverride, accountOverride>) => Promise<SimulateContractReturnType<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride, accountOverride>>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; uninstallFilter: (args: UninstallFilterParameters) => Promise<boolean>; verifyMessage: (args: { address: string; blockNumber?: bigint; blockTag?: BlockTag; factory?: string; factoryData?: `0x${string}`; message: SignableMessage; signature: (`0x${string}`) | (ByteArray) | (Signature); universalSignatureVerifierAddress?: string }) => Promise<boolean>; verifySiweMessage: (args: { address?: string; blockNumber?: bigint; blockTag?: BlockTag; domain?: string; message: string; nonce?: string; scheme?: string; signature: `0x${string}`; time?: Date }) => Promise<boolean>; verifyTypedData: (args: VerifyTypedDataParameters) => Promise<boolean>; waitForTransactionReceipt: (args: WaitForTransactionReceiptParameters<undefined | (Chain)>) => Promise<TransactionReceipt>; watchBlockNumber: (args: WatchBlockNumberParameters) => WatchBlockNumberReturnType; watchBlocks: (args: WatchBlocksParameters<Transport, undefined | (Chain), includeTransactions, blockTag>) => WatchBlocksReturnType; watchContractEvent: (args: WatchContractEventParameters<abi, eventName, strict, Transport>) => WatchContractEventReturnType; watchEvent: (args: WatchEventParameters<abiEvent, abiEvents, strict, Transport>) => WatchEventReturnType; watchPendingTransactions: (args: WatchPendingTransactionsParameters<Transport>) => WatchPendingTransactionsReturnType } }; wallet: { fromViem: (options: { walletClient: { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${...}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<..., ...>) & (... extends ... ? ... : ...)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...)>, (GetTransactionType<..., ...> extends "eip1559" ? `0x02${...}` : never) | (GetTransactionType<..., ...> extends "eip2930" ? `0x01${...}` : never) | (GetTransactionType<..., ...> extends "eip4844" ? `0x03${...}` : never) | (GetTransactionType<..., ...> extends "eip7702" ? `0x04${...}` : never) | (GetTransactionType<..., ...> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }) => Wallet; toViem: (options: WalletToViemOptions) => { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${string}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<(...) & (...), ParameterTypeToParameters<...>>) & (unknown extends ...[...] ? { } : Pick<..., ...>)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (request extends LegacyProperties ? "legacy" : never) | (request extends EIP1559Properties ? "eip1559" : never) | (request extends EIP2930Properties ? "eip2930" : never) | (request extends EIP4844Properties ? "eip4844" : never) | (request extends EIP7702Properties ? "eip7702" : never) | (...[...] extends (...) | (...) ? Extract<..., ...> : never)>, (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip1559" ? `0x02${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip2930" ? `0x01${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip4844" ? `0x03${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip7702" ? `0x04${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }; walletClient: { fromViem: (options: { walletClient: { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${...}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<..., ...>) & (... extends ... ? ... : ...)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...)>, (GetTransactionType<..., ...> extends "eip1559" ? `0x02${...}` : never) | (GetTransactionType<..., ...> extends "eip2930" ? `0x01${...}` : never) | (GetTransactionType<..., ...> extends "eip4844" ? `0x03${...}` : never) | (GetTransactionType<..., ...> extends "eip7702" ? `0x04${...}` : never) | (GetTransactionType<..., ...> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }) => Account; toViem: (options: ToViemWalletClientOptions) => { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${string}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<(...) & (...), ParameterTypeToParameters<...>>) & (unknown extends ...[...] ? { } : Pick<..., ...>)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (request extends LegacyProperties ? "legacy" : never) | (request extends EIP1559Properties ? "eip1559" : never) | (request extends EIP2930Properties ? "eip2930" : never) | (request extends EIP4844Properties ? "eip4844" : never) | (request extends EIP7702Properties ? "eip7702" : never) | (...[...] extends (...) | (...) ? Extract<..., ...> : never)>, (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip1559" ? `0x02${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip2930" ? `0x01${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip4844" ? `0x03${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip7702" ? `0x04${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } } }
Creates a ThirdwebContract from a Viem contract or the other way around.
type contract = { fromViem: ( options: FromViemContractOptions<TAbi>, toViem: {};};
import { viemAdapter } from "thirdweb/adapters/viem"; const contract = viemAdapter.contract.fromViem({ viemContract: viemContract, chain: ethereum, client,});
import { viemAdapter } from "thirdweb/adapters";const viemContract = await viemAdapter.contract.toViem({ thirdwebContract,});
Converts options to a Viem public client.
type publicClient = { toViem: (options: ToViemPublicClientOptions) => { account: undefined; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; call: (parameters: CallParameters<undefined | (Chain)>) => Promise<CallReturnType>; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${string}`> }); chain: undefined | (Chain); createAccessList: (parameters: CreateAccessListParameters<undefined | (Chain)>) => Promise<{ accessList: AccessList; gasUsed: bigint }>; createBlockFilter: () => Promise<{ id: `0x${string}`; request: EIP1193RequestFn<readonly [{ Method: "eth_getFilterChanges"; Parameters: [filterId: ...]; ReturnType: (...) | (...) }, { Method: "eth_getFilterLogs"; Parameters: [filterId: ...]; ReturnType: Array<...> }, { Method: "eth_uninstallFilter"; Parameters: [filterId: ...]; ReturnType: boolean }]>; type: "block" }>; createContractEventFilter: (args: CreateContractEventFilterParameters<abi, eventName, args, strict, fromBlock, toBlock>) => Promise<CreateContractEventFilterReturnType<abi, eventName, args, strict, fromBlock, toBlock>>; createEventFilter: (args?: CreateEventFilterParameters<abiEvent, abiEvents, strict, fromBlock, toBlock, _EventName, _Args>) => Promise<{[K in string | number | symbol] : Filter<"event", abiEvents, _EventName, _Args, strict, fromBlock, toBlock>[K]}>; createPendingTransactionFilter: () => Promise<{ id: `0x${string}`; request: EIP1193RequestFn<readonly [{ Method: "eth_getFilterChanges"; Parameters: [filterId: ...]; ReturnType: (...) | (...) }, { Method: "eth_getFilterLogs"; Parameters: [filterId: ...]; ReturnType: Array<...> }, { Method: "eth_uninstallFilter"; Parameters: [filterId: ...]; ReturnType: boolean }]>; type: "transaction" }>; estimateContractGas: (args: EstimateContractGasParameters<abi, functionName, args, chain>) => Promise<bigint>; estimateFeesPerGas: (args?: EstimateFeesPerGasParameters<undefined | (Chain), chainOverride, type>) => Promise<EstimateFeesPerGasReturnType<type>>; estimateGas: (args: EstimateGasParameters<undefined | (Chain)>) => Promise<bigint>; estimateMaxPriorityFeePerGas: (args?: { chain: null | (chainOverride) }) => Promise<bigint>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined, PublicRpcSchema, PublicActions<Transport, undefined | (Chain)>>) => client) => Client<Transport, undefined | (Chain), undefined, PublicRpcSchema, ({[K in string | number | symbol] : client[K]}) & (PublicActions<Transport, undefined | (Chain)>)>; getBalance: (args: GetBalanceParameters) => Promise<bigint>; getBlobBaseFee: () => Promise<bigint>; getBlock: (args?: GetBlockParameters<includeTransactions, blockTag>) => Promise<{ baseFeePerGas: null | bigint; blobGasUsed: bigint; difficulty: bigint; excessBlobGas: bigint; extraData: `0x${string}`; gasLimit: bigint; gasUsed: bigint; hash: blockTag extends "pending" ? null : `0x${string}`; logsBloom: blockTag extends "pending" ? null : `0x${string}`; miner: string; mixHash: `0x${string}`; nonce: blockTag extends "pending" ? null : `0x${string}`; number: blockTag extends "pending" ? null : bigint; parentBeaconBlockRoot?: `0x${string}`; parentHash: `0x${string}`; receiptsRoot: `0x${string}`; sealFields: Array<`0x${string}`>; sha3Uncles: `0x${string}`; size: bigint; stateRoot: `0x${string}`; timestamp: bigint; totalDifficulty: null | bigint; transactions: includeTransactions extends true ? Array<({ accessList?: ...; authorizationList?: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId?: ...; from: ...; gas: ...; gasPrice: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas?: ...; maxPriorityFeePerGas?: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity?: ... }) | ({ accessList: ...; authorizationList?: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas?: ...; maxPriorityFeePerGas?: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... }) | ({ accessList: ...; authorizationList?: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice?: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas: ...; maxPriorityFeePerGas: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... }) | ({ accessList: ...; authorizationList?: ...; blobVersionedHashes: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice?: ...; hash: ...; input: ...; maxFeePerBlobGas: ...; maxFeePerGas: ...; maxPriorityFeePerGas: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... }) | ({ accessList: ...; authorizationList: ...; blobVersionedHashes?: ...; blockHash: ...; blockNumber: ...; chainId: ...; from: ...; gas: ...; gasPrice?: ...; hash: ...; input: ...; maxFeePerBlobGas?: ...; maxFeePerGas: ...; maxPriorityFeePerGas: ...; nonce: ...; r: ...; s: ...; to: ...; transactionIndex: ...; type: ...; typeHex: ...; v: ...; value: ...; yParity: ... })> : Array<`0x${string}`>; transactionsRoot: `0x${string}`; uncles: Array<`0x${string}`>; withdrawals?: Array<Withdrawal>; withdrawalsRoot?: `0x${string}` }>; getBlockNumber: (args?: GetBlockNumberParameters) => Promise<bigint>; getBlockTransactionCount: (args?: GetBlockTransactionCountParameters) => Promise<number>; getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>; getChainId: () => Promise<number>; getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>; getContractEvents: (args: GetContractEventsParameters<abi, eventName, strict, fromBlock, toBlock>) => Promise<GetContractEventsReturnType<abi, eventName, strict, fromBlock, toBlock>>; getEip712Domain: (args: GetEip712DomainParameters) => Promise<GetEip712DomainReturnType>; getEnsAddress: (args: { blockNumber?: bigint; blockTag?: BlockTag; coinType?: number; gatewayUrls?: Array<string>; name: string; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsAddressReturnType>; getEnsAvatar: (args: { assetGatewayUrls?: AssetGatewayUrls; blockNumber?: bigint; blockTag?: BlockTag; gatewayUrls?: Array<string>; name: string; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsAvatarReturnType>; getEnsName: (args: { address: string; blockNumber?: bigint; blockTag?: BlockTag; gatewayUrls?: Array<string>; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsNameReturnType>; getEnsResolver: (args: { blockNumber?: bigint; blockTag?: BlockTag; name: string; universalResolverAddress?: string }) => Promise<string>; getEnsText: (args: { blockNumber?: bigint; blockTag?: BlockTag; gatewayUrls?: Array<string>; key: string; name: string; strict?: boolean; universalResolverAddress?: string }) => Promise<GetEnsTextReturnType>; getFeeHistory: (args: GetFeeHistoryParameters) => Promise<GetFeeHistoryReturnType>; getFilterChanges: (args: GetFilterChangesParameters<filterType, abi, eventName, strict, fromBlock, toBlock>) => Promise<GetFilterChangesReturnType<filterType, abi, eventName, strict, fromBlock, toBlock>>; getFilterLogs: (args: GetFilterLogsParameters<abi, eventName, strict, fromBlock, toBlock>) => Promise<GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>>; getGasPrice: () => Promise<bigint>; getLogs: (args?: GetLogsParameters<abiEvent, abiEvents, strict, fromBlock, toBlock>) => Promise<GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>>; getProof: (args: GetProofParameters) => Promise<GetProofReturnType>; getStorageAt: (args: GetStorageAtParameters) => Promise<GetStorageAtReturnType>; getTransaction: (args: GetTransactionParameters<blockTag>) => Promise<({ accessList?: undefined; authorizationList?: undefined; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId?: number; from: string; gas: bigint; gasPrice: bigint; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "legacy"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity?: undefined }) | ({ accessList: AccessList; authorizationList?: undefined; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice: bigint; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip2930"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number }) | ({ accessList: AccessList; authorizationList?: undefined; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice?: undefined; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip1559"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number }) | ({ accessList: AccessList; authorizationList?: undefined; blobVersionedHashes: readonly Array<`0x${string}`>; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice?: undefined; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip4844"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number }) | ({ accessList: AccessList; authorizationList: SignedAuthorizationList; blobVersionedHashes?: undefined; blockHash: blockTag extends "pending" ? true : false extends true ? null : `0x${string}`; blockNumber: blockTag extends "pending" ? true : false extends true ? null : bigint; chainId: number; from: string; gas: bigint; gasPrice?: undefined; hash: `0x${string}`; input: `0x${string}`; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; nonce: number; r: `0x${string}`; s: `0x${string}`; to: null | string; transactionIndex: blockTag extends "pending" ? true : false extends true ? null : number; type: "eip7702"; typeHex: null | (`0x${string}`); v: bigint; value: bigint; yParity: number })>; getTransactionConfirmations: (args: GetTransactionConfirmationsParameters<undefined | (Chain)>) => Promise<bigint>; getTransactionCount: (args: GetTransactionCountParameters) => Promise<number>; getTransactionReceipt: (args: GetTransactionReceiptParameters) => Promise<TransactionReceipt>; key: string; multicall: (args: MulticallParameters<contracts, allowFailure>) => Promise<MulticallReturnType<contracts, allowFailure>>; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<(...) & (...), ParameterTypeToParameters<...>>) & (unknown extends ...[...] ? { } : Pick<..., ...>)[K]}>; readContract: (args: ReadContractParameters<abi, functionName, args>) => Promise<ReadContractReturnType<abi, functionName, args>>; request: EIP1193RequestFn<PublicRpcSchema>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; simulate: (args: SimulateParameters<calls>) => Promise<SimulateReturnType<calls>>; simulateContract: (args: SimulateContractParameters<abi, functionName, args, undefined | (Chain), chainOverride, accountOverride>) => Promise<SimulateContractReturnType<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride, accountOverride>>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; uninstallFilter: (args: UninstallFilterParameters) => Promise<boolean>; verifyMessage: (args: { address: string; blockNumber?: bigint; blockTag?: BlockTag; factory?: string; factoryData?: `0x${string}`; message: SignableMessage; signature: (`0x${string}`) | (ByteArray) | (Signature); universalSignatureVerifierAddress?: string }) => Promise<boolean>; verifySiweMessage: (args: { address?: string; blockNumber?: bigint; blockTag?: BlockTag; domain?: string; message: string; nonce?: string; scheme?: string; signature: `0x${string}`; time?: Date }) => Promise<boolean>; verifyTypedData: (args: VerifyTypedDataParameters) => Promise<boolean>; waitForTransactionReceipt: (args: WaitForTransactionReceiptParameters<undefined | (Chain)>) => Promise<TransactionReceipt>; watchBlockNumber: (args: WatchBlockNumberParameters) => WatchBlockNumberReturnType; watchBlocks: (args: WatchBlocksParameters<Transport, undefined | (Chain), includeTransactions, blockTag>) => WatchBlocksReturnType; watchContractEvent: (args: WatchContractEventParameters<abi, eventName, strict, Transport>) => WatchContractEventReturnType; watchEvent: (args: WatchEventParameters<abiEvent, abiEvents, strict, Transport>) => WatchEventReturnType; watchPendingTransactions: (args: WatchPendingTransactionsParameters<Transport>) => WatchPendingTransactionsReturnType } }
import { viemAdapter } from "thirdweb/adapters/viem"; const publicClient = viemAdapter.publicClient.toViem({ chain: ethereum, client,});
Converts a thirdweb account to a Viem Wallet client or the other way around.
type wallet = { fromViem: (options: { walletClient: { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${...}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<..., ...>) & (... extends ... ? ... : ...)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...)>, (GetTransactionType<..., ...> extends "eip1559" ? `0x02${...}` : never) | (GetTransactionType<..., ...> extends "eip2930" ? `0x01${...}` : never) | (GetTransactionType<..., ...> extends "eip4844" ? `0x03${...}` : never) | (GetTransactionType<..., ...> extends "eip7702" ? `0x04${...}` : never) | (GetTransactionType<..., ...> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }) => Wallet; toViem: (options: WalletToViemOptions) => { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${string}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<(...) & (...), ParameterTypeToParameters<...>>) & (unknown extends ...[...] ? { } : Pick<..., ...>)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (request extends LegacyProperties ? "legacy" : never) | (request extends EIP1559Properties ? "eip1559" : never) | (request extends EIP2930Properties ? "eip2930" : never) | (request extends EIP4844Properties ? "eip4844" : never) | (request extends EIP7702Properties ? "eip7702" : never) | (...[...] extends (...) | (...) ? Extract<..., ...> : never)>, (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip1559" ? `0x02${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip2930" ? `0x01${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip4844" ? `0x03${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip7702" ? `0x04${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }
import { viemAdapter } from "thirdweb/adapters/viem"; const walletClient = viemAdapter.wallet.toViem({ wallet, client, chain: ethereum,});
import { viemAdapter } from "thirdweb/adapters"; const wallet = viemAdapter.wallet.fromViem({ walletClient,});
Deprecated
use viemAdapter.wallet instead
Converts a thirdweb account to a Viem Wallet client or the other way around.
type walletClient = { fromViem: (options: { walletClient: { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${...}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<..., ...>) & (... extends ... ? ... : ...)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...) | (... extends ... ? ... : ...)>, (GetTransactionType<..., ...> extends "eip1559" ? `0x02${...}` : never) | (GetTransactionType<..., ...> extends "eip2930" ? `0x01${...}` : never) | (GetTransactionType<..., ...> extends "eip4844" ? `0x03${...}` : never) | (GetTransactionType<..., ...> extends "eip7702" ? `0x04${...}` : never) | (GetTransactionType<..., ...> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }) => Account; toViem: (options: ToViemWalletClientOptions) => { account: undefined | (Account); addChain: (args: AddChainParameters) => Promise<void>; batch?: { multicall?: boolean | ({ batchSize?: number; wait?: number }) }; cacheTime: number; ccipRead?: false | ({ request?: (parameters: CcipRequestParameters) => Promise<`0x${string}`> }); chain: undefined | (Chain); deployContract: (args: DeployContractParameters<abi, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`>; extend: (fn: (client: Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, WalletActions<undefined | (Chain), undefined | (Account)>>) => client) => Client<Transport, undefined | (Chain), undefined | (Account), WalletRpcSchema, ({[K in string | number | symbol] : client[K]}) & (WalletActions<undefined | (Chain), undefined | (Account)>)>; getAddresses: () => Promise<GetAddressesReturnType>; getChainId: () => Promise<number>; getPermissions: () => Promise<GetPermissionsReturnType>; key: string; name: string; pollingInterval: number; prepareTransactionRequest: (args: PrepareTransactionRequestParameters<undefined | (Chain), undefined | (Account), chainOverride, accountOverride, request>) => Promise<{[K in string | number | symbol] : (UnionRequiredBy<(...) & (...), ParameterTypeToParameters<...>>) & (unknown extends ...[...] ? { } : Pick<..., ...>)[K]}>; request: EIP1193RequestFn<WalletRpcSchema>; requestAddresses: () => Promise<RequestAddressesReturnType>; requestPermissions: (args: { eth_accounts: Record<string, any> }) => Promise<RequestPermissionsReturnType>; sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>; sendTransaction: (args: SendTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<`0x${string}`>; signMessage: (args: SignMessageParameters<undefined | (Account)>) => Promise<`0x${string}`>; signTransaction: (args: SignTransactionParameters<undefined | (Chain), undefined | (Account), chainOverride, request>) => Promise<TransactionSerialized<GetTransactionType<request, (request extends LegacyProperties ? "legacy" : never) | (request extends EIP1559Properties ? "eip1559" : never) | (request extends EIP2930Properties ? "eip2930" : never) | (request extends EIP4844Properties ? "eip4844" : never) | (request extends EIP7702Properties ? "eip7702" : never) | (...[...] extends (...) | (...) ? Extract<..., ...> : never)>, (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip1559" ? `0x02${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip2930" ? `0x01${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip4844" ? `0x03${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "eip7702" ? `0x04${string}` : never) | (GetTransactionType<request, (...) | (...) | (...) | (...) | (...) | (...)> extends "legacy" ? TransactionSerializedLegacy : never)>>; signTypedData: (args: SignTypedDataParameters<typedData, primaryType, undefined | (Account)>) => Promise<`0x${string}`>; switchChain: (args: SwitchChainParameters) => Promise<void>; transport: (TransportConfig<string, EIP1193RequestFn>) & (Record<string, any>); type: string; uid: string; watchAsset: (args: WatchAssetParams) => Promise<boolean>; writeContract: (args: WriteContractParameters<abi, functionName, args, undefined | (Chain), undefined | (Account), chainOverride>) => Promise<`0x${string}`> } }
import { viemAdapter } from "thirdweb/adapters/viem"; const walletClient = viemAdapter.walletClient.toViem({ account, client, chain: ethereum,});
import { viemAdapter } from "thirdweb/adapters"; const account = viemAdapter.walletClient.fromViem({ walletClient,});