Function createSmartAccount

  • Parameters

    • __namedParameters: {
          chainId: number;
          client: Client;
          walletClient: {
              account: Account;
              addChain: ((args: AddChainParameters) => Promise<void>);
              batch?: {
                  multicall?: boolean | {
                      batchSize?: number;
                      wait?: number;
                  };
              };
              cacheTime: number;
              ccipRead?: false | {
                  request?: ((parameters: CcipRequestParameters) => Promise<`0x${string}`>);
              };
              chain: Chain;
              deployContract: (<const abi, chainOverride>(args: DeployContractParameters<abi, Chain, Account, chainOverride>) => Promise<`0x${string}`>);
              extend: (<const client>(fn: ((client: Client<Transport, Chain, Account, WalletRpcSchema, WalletActions<Chain, Account>>) => client)) => Client<Transport, Chain, Account, WalletRpcSchema, {
                  [K in string | number | symbol]: client[K]
              } & WalletActions<Chain, Account>>);
              getAddresses: (() => Promise<GetAddressesReturnType>);
              getChainId: (() => Promise<number>);
              getPermissions: (() => Promise<GetPermissionsReturnType>);
              key: string;
              name: string;
              pollingInterval: number;
              prepareTransactionRequest: (<const request, chainOverride, accountOverride>(args: PrepareTransactionRequestParameters<Chain, Account, chainOverride, accountOverride, request>) => Promise<{
                  [K in string | number | symbol]: (UnionRequiredBy<Extract<(...) & (...) & (...), (...) extends (...)
                      ? (...)
                      : (...)> & {
                      chainId?: (...) | (...);
                  }, ParameterTypeToParameters<(...)[(...)] extends readonly (...)[]
                      ? (...)[(...)]
                      :
                          | (...)
                          | (...)
                          | (...)
                          | (...)
                          | (...)
                          | (...)>> & (unknown extends request["kzg"]
                      ? {}
                      : Pick<request, "kzg">))[K]
              }>);
              request: EIP1193RequestFn<WalletRpcSchema>;
              requestAddresses: (() => Promise<RequestAddressesReturnType>);
              requestPermissions: ((args: {
                  eth_accounts: Record<string, any>;
              }) => Promise<RequestPermissionsReturnType>);
              sendRawTransaction: ((args: SendRawTransactionParameters) => Promise<`0x${string}`>);
              sendTransaction: (<const request, chainOverride>(args: SendTransactionParameters<Chain, Account, chainOverride, request>) => Promise<`0x${string}`>);
              signMessage: ((args: SignMessageParameters<Account>) => Promise<`0x${string}`>);
              signTransaction: (<chainOverride, const request>(args: SignTransactionParameters<Chain, 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)
                  | (request["type"] extends undefined | string
                      ? Extract<any[any], string>
                      : never)>,
                  | (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)> extends "eip1559"
                      ? `0x02${string}`
                      : never)
                  | (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)> extends "eip2930"
                      ? `0x01${string}`
                      : never)
                  | (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)> extends "eip4844"
                      ? `0x03${string}`
                      : never)
                  | (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)> extends "eip7702"
                      ? `0x04${string}`
                      : never)
                  | (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)> extends "legacy"
                      ? TransactionSerializedLegacy
                      : never)>>);
              signTypedData: (<const typedData, primaryType>(args: SignTypedDataParameters<typedData, primaryType, 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: (<const abi, functionName, args, chainOverride>(args: WriteContractParameters<abi, functionName, args, Chain, Account, chainOverride>) => Promise<`0x${string}`>);
          };
      }
      • chainId: number
      • client: Client
      • walletClient: {
            account: Account;
            addChain: ((args: AddChainParameters) => Promise<void>);
            batch?: {
                multicall?: boolean | {
                    batchSize?: number;
                    wait?: number;
                };
            };
            cacheTime: number;
            ccipRead?: false | {
                request?: ((parameters: CcipRequestParameters) => Promise<`0x${string}`>);
            };
            chain: Chain;
            deployContract: (<const abi, chainOverride>(args: DeployContractParameters<abi, Chain, Account, chainOverride>) => Promise<`0x${string}`>);
            extend: (<const client>(fn: ((client: Client<Transport, Chain, Account, WalletRpcSchema, WalletActions<Chain, Account>>) => client)) => Client<Transport, Chain, Account, WalletRpcSchema, {
                [K in string | number | symbol]: client[K]
            } & WalletActions<Chain, Account>>);
            getAddresses: (() => Promise<GetAddressesReturnType>);
            getChainId: (() => Promise<number>);
            getPermissions: (() => Promise<GetPermissionsReturnType>);
            key: string;
            name: string;
            pollingInterval: number;
            prepareTransactionRequest: (<const request, chainOverride, accountOverride>(args: PrepareTransactionRequestParameters<Chain, Account, chainOverride, accountOverride, request>) => Promise<{
                [K in string | number | symbol]: (UnionRequiredBy<Extract<(...) & (...) & (...), (...) extends (...)
                    ? (...)
                    : (...)> & {
                    chainId?: (...) | (...);
                }, ParameterTypeToParameters<(...)[(...)] extends readonly (...)[]
                    ? (...)[(...)]
                    :
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)>> & (unknown extends request["kzg"]
                    ? {}
                    : Pick<request, "kzg">))[K]
            }>);
            request: EIP1193RequestFn<WalletRpcSchema>;
            requestAddresses: (() => Promise<RequestAddressesReturnType>);
            requestPermissions: ((args: {
                eth_accounts: Record<string, any>;
            }) => Promise<RequestPermissionsReturnType>);
            sendRawTransaction: ((args: SendRawTransactionParameters) => Promise<`0x${string}`>);
            sendTransaction: (<const request, chainOverride>(args: SendTransactionParameters<Chain, Account, chainOverride, request>) => Promise<`0x${string}`>);
            signMessage: ((args: SignMessageParameters<Account>) => Promise<`0x${string}`>);
            signTransaction: (<chainOverride, const request>(args: SignTransactionParameters<Chain, 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)
                | (request["type"] extends undefined | string
                    ? Extract<any[any], string>
                    : never)>,
                | (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)> extends "eip1559"
                    ? `0x02${string}`
                    : never)
                | (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)> extends "eip2930"
                    ? `0x01${string}`
                    : never)
                | (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)> extends "eip4844"
                    ? `0x03${string}`
                    : never)
                | (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)> extends "eip7702"
                    ? `0x04${string}`
                    : never)
                | (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)> extends "legacy"
                    ? TransactionSerializedLegacy
                    : never)>>);
            signTypedData: (<const typedData, primaryType>(args: SignTypedDataParameters<typedData, primaryType, 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: (<const abi, functionName, args, chainOverride>(args: WriteContractParameters<abi, functionName, args, Chain, Account, chainOverride>) => Promise<`0x${string}`>);
        }
        • account: Account

          The Account of the Client.

        • addChain: ((args: AddChainParameters) => Promise<void>)

          Adds an EVM chain to the wallet.

          import { createWalletClient, custom } from 'viem'
          import { optimism } from 'viem/chains'

          const client = createWalletClient({
          transport: custom(window.ethereum),
          })
          await client.addChain({ chain: optimism })
            • (args): Promise<void>
            • Parameters

              • args: AddChainParameters

                AddChainParameters

              Returns Promise<void>

        • Optionalbatch?: {
              multicall?: boolean | {
                  batchSize?: number;
                  wait?: number;
              };
          }

          Flags for batch settings.

          • Optionalmulticall?: boolean | {
                batchSize?: number;
                wait?: number;
            }

            Toggle to enable eth_call multicall aggregation.

        • cacheTime: number

          Time (in ms) that cached data will remain in memory.

        • OptionalccipRead?: false | {
              request?: ((parameters: CcipRequestParameters) => Promise<`0x${string}`>);
          }

          CCIP Read configuration.

        • chain: Chain

          Chain for the client.

        • deployContract: (<const abi, chainOverride>(args: DeployContractParameters<abi, Chain, Account, chainOverride>) => Promise<`0x${string}`>)

          Deploys a contract to the network, given bytecode and constructor arguments.

          import { createWalletClient, http } from 'viem'
          import { privateKeyToAccount } from 'viem/accounts'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: http(),
          })
          const hash = await client.deployContract({
          abi: [],
          account: '0x…,
          bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',
          })
            • <const abi, chainOverride>(args): Promise<`0x${string}`>
            • Type Parameters

              • const abi extends readonly unknown[] | Abi
              • chainOverride extends undefined | Chain

              Parameters

              • args: DeployContractParameters<abi, Chain, Account, chainOverride>

                DeployContractParameters

              Returns Promise<`0x${string}`>

              The Transaction hash. DeployContractReturnType

        • extend: (<const client>(fn: ((client: Client<Transport, Chain, Account, WalletRpcSchema, WalletActions<Chain, Account>>) => client)) => Client<Transport, Chain, Account, WalletRpcSchema, {
              [K in string | number | symbol]: client[K]
          } & WalletActions<Chain, Account>>)
            • <const client>(fn): Client<Transport, Chain, Account, WalletRpcSchema, {
                  [K in string | number | symbol]: client[K]
              } & WalletActions<Chain, Account>>
            • Type Parameters

              • const client extends {
                    account?: undefined;
                    batch?: undefined;
                    cacheTime?: undefined;
                    ccipRead?: undefined;
                    chain?: undefined;
                    key?: undefined;
                    name?: undefined;
                    pollingInterval?: undefined;
                    request?: undefined;
                    transport?: undefined;
                    type?: undefined;
                    uid?: undefined;
                } & ExactPartial<ExtendableProtectedActions<Transport, Chain, Account>>

              Parameters

              • fn: ((client: Client<Transport, Chain, Account, WalletRpcSchema, WalletActions<Chain, Account>>) => client)
                  • (client): client
                  • Parameters

                    • client: Client<Transport, Chain, Account, WalletRpcSchema, WalletActions<Chain, Account>>

                    Returns client

              Returns Client<Transport, Chain, Account, WalletRpcSchema, {
                  [K in string | number | symbol]: client[K]
              } & WalletActions<Chain, Account>>

        • getAddresses: (() => Promise<GetAddressesReturnType>)

          Returns a list of account addresses owned by the wallet or client.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const accounts = await client.getAddresses()
            • (): Promise<GetAddressesReturnType>
            • Returns Promise<GetAddressesReturnType>

              List of account addresses owned by the wallet or client. GetAddressesReturnType

        • getChainId: (() => Promise<number>)

          Returns the chain ID associated with the current network.

          import { createWalletClient, http } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const chainId = await client.getChainId()
          // 1
            • (): Promise<number>
            • Returns Promise<number>

              The current chain ID. GetChainIdReturnType

        • getPermissions: (() => Promise<GetPermissionsReturnType>)

          Gets the wallets current permissions.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const permissions = await client.getPermissions()
            • (): Promise<GetPermissionsReturnType>
            • Returns Promise<GetPermissionsReturnType>

              The wallet permissions. GetPermissionsReturnType

        • key: string

          A key for the client.

        • name: string

          A name for the client.

        • pollingInterval: number

          Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds.

        • prepareTransactionRequest: (<const request, chainOverride, accountOverride>(args: PrepareTransactionRequestParameters<Chain, Account, chainOverride, accountOverride, request>) => Promise<{
              [K in string | number | symbol]: (UnionRequiredBy<Extract<(...) & (...) & (...), (...) extends (...)
                  ? (...)
                  : (...)> & {
                  chainId?: (...) | (...);
              }, ParameterTypeToParameters<(...)[(...)] extends readonly (...)[]
                  ? (...)[(...)]
                  :
                      | (...)
                      | (...)
                      | (...)
                      | (...)
                      | (...)
                      | (...)>> & (unknown extends request["kzg"]
                  ? {}
                  : Pick<request, "kzg">))[K]
          }>)

          Prepares a transaction request for signing.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const request = await client.prepareTransactionRequest({
          account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
          to: '0x0000000000000000000000000000000000000000',
          value: 1n,
          })
          // Account Hoisting
          import { createWalletClient, http } from 'viem'
          import { privateKeyToAccount } from 'viem/accounts'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const request = await client.prepareTransactionRequest({
          to: '0x0000000000000000000000000000000000000000',
          value: 1n,
          })
            • <const request, chainOverride, accountOverride>(args): Promise<{
                  [K in string | number | symbol]: (UnionRequiredBy<Extract<(...) & (...) & (...), (...) extends (...)
                      ? (...)
                      : (...)> & {
                      chainId?: (...) | (...);
                  }, ParameterTypeToParameters<(...)[(...)] extends readonly (...)[]
                      ? (...)[(...)]
                      :
                          | (...)
                          | (...)
                          | (...)
                          | (...)
                          | (...)
                          | (...)>> & (unknown extends request["kzg"]
                      ? {}
                      : Pick<request, "kzg">))[K]
              }>
            • Type Parameters

              • const request extends (
                    | Omit<{
                        accessList: undefined;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: bigint;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: bigint;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: readonly `0x${string}`[] | readonly Uint8Array[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg?: Kzg;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                        to: null | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                    }, "from">) & {
                    kzg?: Kzg;
                } & {
                    nonceManager?: NonceManager;
                    parameters?: readonly PrepareTransactionRequestParameterType[];
                }
              • chainOverride extends undefined | Chain = undefined
              • accountOverride extends undefined | `0x${string}` | Account = undefined

              Parameters

              Returns Promise<{
                  [K in string | number | symbol]: (UnionRequiredBy<Extract<(...) & (...) & (...), (...) extends (...)
                      ? (...)
                      : (...)> & {
                      chainId?: (...) | (...);
                  }, ParameterTypeToParameters<(...)[(...)] extends readonly (...)[]
                      ? (...)[(...)]
                      :
                          | (...)
                          | (...)
                          | (...)
                          | (...)
                          | (...)
                          | (...)>> & (unknown extends request["kzg"]
                      ? {}
                      : Pick<request, "kzg">))[K]
              }>

              The transaction request. PrepareTransactionRequestReturnType

        • request: EIP1193RequestFn<WalletRpcSchema>

          Request function wrapped with friendly error handling

        • requestAddresses: (() => Promise<RequestAddressesReturnType>)

          Requests a list of accounts managed by a wallet.

          Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses).

          This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const accounts = await client.requestAddresses()
            • (): Promise<RequestAddressesReturnType>
            • Returns Promise<RequestAddressesReturnType>

              List of accounts managed by a wallet RequestAddressesReturnType

        • requestPermissions: ((args: {
              eth_accounts: Record<string, any>;
          }) => Promise<RequestPermissionsReturnType>)

          Requests permissions for a wallet.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const permissions = await client.requestPermissions({
          eth_accounts: {}
          })
            • (args): Promise<RequestPermissionsReturnType>
            • Parameters

              • args: {
                    eth_accounts: Record<string, any>;
                }

                RequestPermissionsParameters

                • eth_accounts: Record<string, any>

              Returns Promise<RequestPermissionsReturnType>

              The wallet permissions. RequestPermissionsReturnType

        • sendRawTransaction: ((args: SendRawTransactionParameters) => Promise<`0x${string}`>)

          Sends a signed transaction to the network

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'
          import { sendRawTransaction } from 'viem/wallet'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })

          const hash = await client.sendRawTransaction({
          serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'
          })
            • (args): Promise<`0x${string}`>
            • Parameters

              • args: SendRawTransactionParameters

              Returns Promise<`0x${string}`>

              The transaction hash. SendRawTransactionReturnType

        • sendTransaction: (<const request, chainOverride>(args: SendTransactionParameters<Chain, Account, chainOverride, request>) => Promise<`0x${string}`>)

          Creates, signs, and sends a new transaction to the network.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const hash = await client.sendTransaction({
          account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
          to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
          value: 1000000000000000000n,
          })
          // Account Hoisting
          import { createWalletClient, http } from 'viem'
          import { privateKeyToAccount } from 'viem/accounts'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: http(),
          })
          const hash = await client.sendTransaction({
          to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
          value: 1000000000000000000n,
          })
            • <const request, chainOverride>(args): Promise<`0x${string}`>
            • Type Parameters

              • const request extends (
                    | Omit<{
                        accessList: undefined;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: bigint;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: bigint;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: readonly `0x${string}`[] | readonly Uint8Array[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg?: Kzg;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                        to: null | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                    }, "from">) & {
                    kzg?: Kzg;
                }
              • chainOverride extends undefined | Chain = undefined

              Parameters

              Returns Promise<`0x${string}`>

              The Transaction hash. SendTransactionReturnType

        • signMessage: ((args: SignMessageParameters<Account>) => Promise<`0x${string}`>)

          Calculates an Ethereum-specific signature in EIP-191 format: keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)).

          With the calculated signature, you can:

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const signature = await client.signMessage({
          account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
          message: 'hello world',
          })
          // Account Hoisting
          import { createWalletClient, http } from 'viem'
          import { privateKeyToAccount } from 'viem/accounts'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: http(),
          })
          const signature = await client.signMessage({
          message: 'hello world',
          })
            • (args): Promise<`0x${string}`>
            • Parameters

              • args: SignMessageParameters<Account>

                SignMessageParameters

              Returns Promise<`0x${string}`>

              The signed message. SignMessageReturnType

        • signTransaction: (<chainOverride, const request>(args: SignTransactionParameters<Chain, 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)
              | (request["type"] extends undefined | string
                  ? Extract<any[any], string>
                  : never)>,
              | (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)> extends "eip1559"
                  ? `0x02${string}`
                  : never)
              | (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)> extends "eip2930"
                  ? `0x01${string}`
                  : never)
              | (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)> extends "eip4844"
                  ? `0x03${string}`
                  : never)
              | (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)> extends "eip7702"
                  ? `0x04${string}`
                  : never)
              | (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)> extends "legacy"
                  ? TransactionSerializedLegacy
                  : never)>>)

          Signs a transaction.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const request = await client.prepareTransactionRequest({
          account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
          to: '0x0000000000000000000000000000000000000000',
          value: 1n,
          })
          const signature = await client.signTransaction(request)
          // Account Hoisting
          import { createWalletClient, http } from 'viem'
          import { privateKeyToAccount } from 'viem/accounts'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const request = await client.prepareTransactionRequest({
          to: '0x0000000000000000000000000000000000000000',
          value: 1n,
          })
          const signature = await client.signTransaction(request)
            • <chainOverride, const request>(args): 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)
                  | (request["type"] extends undefined | string
                      ? Extract<any[any], string>
                      : never)>,
                  | (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)> extends "eip1559"
                      ? `0x02${string}`
                      : never)
                  | (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)> extends "eip2930"
                      ? `0x01${string}`
                      : never)
                  | (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)> extends "eip4844"
                      ? `0x03${string}`
                      : never)
                  | (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)> extends "eip7702"
                      ? `0x04${string}`
                      : never)
                  | (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)> extends "legacy"
                      ? TransactionSerializedLegacy
                      : never)>>
            • Type Parameters

              • chainOverride extends undefined | Chain
              • const request extends
                    | Omit<{
                        accessList: undefined;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: bigint;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: bigint;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList: undefined;
                        blobs: readonly `0x${string}`[] | readonly Uint8Array[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg?: Kzg;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars?: readonly BlobSidecar<`0x${string}`>[];
                        to: null | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                    }, "from">
                    | Omit<{
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                        blobs: undefined;
                        blobVersionedHashes: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        gasPrice?: undefined;
                        kzg: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        nonce?: number;
                        sidecars: undefined;
                        to?: null | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                    }, "from"> = UnionOmit<ExtractChainFormatterParameters<DeriveChain<Chain, chainOverride>, "transactionRequest", TransactionRequest>, "from">

              Parameters

              Returns 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)
                  | (request["type"] extends undefined | string
                      ? Extract<any[any], string>
                      : never)>,
                  | (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)> extends "eip1559"
                      ? `0x02${string}`
                      : never)
                  | (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)> extends "eip2930"
                      ? `0x01${string}`
                      : never)
                  | (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)> extends "eip4844"
                      ? `0x03${string}`
                      : never)
                  | (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)> extends "eip7702"
                      ? `0x04${string}`
                      : never)
                  | (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)> extends "legacy"
                      ? TransactionSerializedLegacy
                      : never)>>

              The signed message. SignTransactionReturnType

        • signTypedData: (<const typedData, primaryType>(args: SignTypedDataParameters<typedData, primaryType, Account>) => Promise<`0x${string}`>)

          Signs typed data and calculates an Ethereum-specific signature in EIP-191 format: keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)).

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const signature = await client.signTypedData({
          account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
          domain: {
          name: 'Ether Mail',
          version: '1',
          chainId: 1,
          verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
          },
          types: {
          Person: [
          { name: 'name', type: 'string' },
          { name: 'wallet', type: 'address' },
          ],
          Mail: [
          { name: 'from', type: 'Person' },
          { name: 'to', type: 'Person' },
          { name: 'contents', type: 'string' },
          ],
          },
          primaryType: 'Mail',
          message: {
          from: {
          name: 'Cow',
          wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
          },
          to: {
          name: 'Bob',
          wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
          },
          contents: 'Hello, Bob!',
          },
          })
          // Account Hoisting
          import { createWalletClient, http } from 'viem'
          import { privateKeyToAccount } from 'viem/accounts'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: http(),
          })
          const signature = await client.signTypedData({
          domain: {
          name: 'Ether Mail',
          version: '1',
          chainId: 1,
          verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
          },
          types: {
          Person: [
          { name: 'name', type: 'string' },
          { name: 'wallet', type: 'address' },
          ],
          Mail: [
          { name: 'from', type: 'Person' },
          { name: 'to', type: 'Person' },
          { name: 'contents', type: 'string' },
          ],
          },
          primaryType: 'Mail',
          message: {
          from: {
          name: 'Cow',
          wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
          },
          to: {
          name: 'Bob',
          wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
          },
          contents: 'Hello, Bob!',
          },
          })
            • <const typedData, primaryType>(args): Promise<`0x${string}`>
            • Type Parameters

              • const typedData extends {
                    address: undefined;
                    bool: undefined;
                    bytes: undefined;
                    bytes1: undefined;
                    bytes10: undefined;
                    bytes11: undefined;
                    bytes12: undefined;
                    bytes13: undefined;
                    bytes14: undefined;
                    bytes15: undefined;
                    bytes16: undefined;
                    bytes17: undefined;
                    bytes18: undefined;
                    bytes19: undefined;
                    bytes2: undefined;
                    bytes20: undefined;
                    bytes21: undefined;
                    bytes22: undefined;
                    bytes23: undefined;
                    bytes24: undefined;
                    bytes25: undefined;
                    bytes26: undefined;
                    bytes27: undefined;
                    bytes28: undefined;
                    bytes29: undefined;
                    bytes3: undefined;
                    bytes30: undefined;
                    bytes31: undefined;
                    bytes32: undefined;
                    bytes4: undefined;
                    bytes5: undefined;
                    bytes6: undefined;
                    bytes7: undefined;
                    bytes8: undefined;
                    bytes9: undefined;
                    int104: undefined;
                    int112: undefined;
                    int120: undefined;
                    int128: undefined;
                    int136: undefined;
                    int144: undefined;
                    int152: undefined;
                    int16: undefined;
                    int160: undefined;
                    int168: undefined;
                    int176: undefined;
                    int184: undefined;
                    int192: undefined;
                    int200: undefined;
                    int208: undefined;
                    int216: undefined;
                    int224: undefined;
                    int232: undefined;
                    int24: undefined;
                    int240: undefined;
                    int248: undefined;
                    int256: undefined;
                    int32: undefined;
                    int40: undefined;
                    int48: undefined;
                    int56: undefined;
                    int64: undefined;
                    int72: undefined;
                    int8: undefined;
                    int80: undefined;
                    int88: undefined;
                    int96: undefined;
                    string: undefined;
                    uint104: undefined;
                    uint112: undefined;
                    uint120: undefined;
                    uint128: undefined;
                    uint136: undefined;
                    uint144: undefined;
                    uint152: undefined;
                    uint16: undefined;
                    uint160: undefined;
                    uint168: undefined;
                    uint176: undefined;
                    uint184: undefined;
                    uint192: undefined;
                    uint200: undefined;
                    uint208: undefined;
                    uint216: undefined;
                    uint224: undefined;
                    uint232: undefined;
                    uint24: undefined;
                    uint240: undefined;
                    uint248: undefined;
                    uint256: undefined;
                    uint32: undefined;
                    uint40: undefined;
                    uint48: undefined;
                    uint56: undefined;
                    uint64: undefined;
                    uint72: undefined;
                    uint8: undefined;
                    uint80: undefined;
                    uint88: undefined;
                    uint96: undefined;
                } | {
                    [key: string]: unknown;
                }
              • primaryType extends string

              Parameters

              Returns Promise<`0x${string}`>

              The signed data. SignTypedDataReturnType

        • switchChain: ((args: SwitchChainParameters) => Promise<void>)

          Switch the target chain in a wallet.

          import { createWalletClient, custom } from 'viem'
          import { mainnet, optimism } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          await client.switchChain({ id: optimism.id })
            • (args): Promise<void>
            • Parameters

              • args: SwitchChainParameters

                SwitchChainParameters

              Returns Promise<void>

        • transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>

          The RPC transport

        • type: string

          The type of client.

        • uid: string

          A unique ID for the client.

        • watchAsset: ((args: WatchAssetParams) => Promise<boolean>)

          Adds an EVM chain to the wallet.

          import { createWalletClient, custom } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const success = await client.watchAsset({
          type: 'ERC20',
          options: {
          address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
          decimals: 18,
          symbol: 'WETH',
          },
          })
            • (args): Promise<boolean>
            • Parameters

              • args: WatchAssetParams

                WatchAssetParameters

              Returns Promise<boolean>

              Boolean indicating if the token was successfully added. WatchAssetReturnType

        • writeContract: (<const abi, functionName, args, chainOverride>(args: WriteContractParameters<abi, functionName, args, Chain, Account, chainOverride>) => Promise<`0x${string}`>)

          Executes a write function on a contract.

          A "write" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a Transaction is needed to be broadcast in order to change the state.

          Internally, uses a Wallet Client to call the sendTransaction action with ABI-encoded data.

          Warning: The write internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to simulate the contract write with contract.simulate before you execute it.

          import { createWalletClient, custom, parseAbi } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const hash = await client.writeContract({
          address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
          abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),
          functionName: 'mint',
          args: [69420],
          })
          // With Validation
          import { createWalletClient, custom, parseAbi } from 'viem'
          import { mainnet } from 'viem/chains'

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const { request } = await client.simulateContract({
          address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
          abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),
          functionName: 'mint',
          args: [69420],
          }
          const hash = await client.writeContract(request)
            • <const abi, functionName, args, chainOverride>(args): Promise<`0x${string}`>
            • Type Parameters

              • const abi extends readonly unknown[] | Abi
              • functionName extends string
              • args extends unknown
              • chainOverride extends undefined | Chain = undefined

              Parameters

              Returns Promise<`0x${string}`>

              A Transaction Hash. WriteContractReturnType

    Returns Promise<BiconomySmartAccountV2>