interface SteerConfig {
    environment?: "production" | "development";
    client:
        | Client
        | {
            extend: <
                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;
                        [key: string]: unknown;
                    } & ExactPartial<
                        ExtendableProtectedActions<
                            Transport,
                            undefined
                            | Chain,
                            undefined | Account,
                        >,
                    >,
            >(
                fn: (
                    client: Client<
                        Transport,
                        undefined
                        | Chain,
                        undefined | Account,
                        TestRpcSchema<TestClientMode>,
                        { mode: TestClientMode } & TestActions,
                    >,
                ) => client,
            ) => Client<
                Transport,
                undefined
                | Chain,
                undefined | Account,
                TestRpcSchema<TestClientMode>,
                { [K in string | number | symbol]: client[K] } & {
                    mode: TestClientMode;
                } & TestActions,
            >;
            account: undefined
            | Account;
            batch?: { multicall?: boolean | { batchSize?: number; wait?: number } };
            cacheTime: number;
            ccipRead?:
                | false
                | {
                    request?: (
                        parameters: CcipRequestParameters,
                    ) => Promise<`0x${string}`>;
                };
            chain: undefined
            | Chain;
            key: string;
            name: string;
            pollingInterval: number;
            request: EIP1193RequestFn<TestRpcSchema<TestClientMode>>;
            transport: TransportConfig<string, EIP1193RequestFn> & Record<
                string,
                any,
            >;
            type: string;
            uid: string;
            mode: TestClientMode;
            dropTransaction: (args: DropTransactionParameters) => Promise<void>;
            dumpState: () => Promise<`0x${string}`>;
            getAutomine: () => Promise<boolean>;
            getTxpoolContent: () => Promise<GetTxpoolContentReturnType>;
            getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>;
            impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>;
            increaseTime: (args: IncreaseTimeParameters) => Promise<`0x${string}`>;
            inspectTxpool: () => Promise<InspectTxpoolReturnType>;
            loadState: (args: LoadStateParameters) => Promise<void>;
            mine: (args: MineParameters) => Promise<void>;
            removeBlockTimestampInterval: () => Promise<void>;
            reset: (args?: ResetParameters) => Promise<void>;
            revert: (args: RevertParameters) => Promise<void>;
            sendUnsignedTransaction: <chain extends undefined | Chain>(
                args: SendUnsignedTransactionParameters<chain>,
            ) => Promise<`0x${string}`>;
            setAutomine: (args: boolean) => Promise<void>;
            setBalance: (args: SetBalanceParameters) => Promise<void>;
            setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>;
            setBlockTimestampInterval: (
                args: SetBlockTimestampIntervalParameters,
            ) => Promise<void>;
            setCode: (args: SetCodeParameters) => Promise<void>;
            setCoinbase: (args: SetCoinbaseParameters) => Promise<void>;
            setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>;
            setLoggingEnabled: (args: boolean) => Promise<void>;
            setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>;
            setNextBlockBaseFeePerGas: (
                args: SetNextBlockBaseFeePerGasParameters,
            ) => Promise<void>;
            setNextBlockTimestamp: (
                args: SetNextBlockTimestampParameters,
            ) => Promise<void>;
            setNonce: (args: SetNonceParameters) => Promise<void>;
            setRpcUrl: (args: string) => Promise<void>;
            setStorageAt: (args: SetStorageAtParameters) => Promise<void>;
            snapshot: () => Promise<`0x${string}`>;
            stopImpersonatingAccount: (
                args: StopImpersonatingAccountParameters,
            ) => Promise<void>;
        };
    walletClient?: {
        extend: <
            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;
                    [key: string]: unknown;
                } & ExactPartial<
                    ExtendableProtectedActions<
                        Transport,
                        undefined
                        | Chain,
                        undefined | Account,
                    >,
                >,
        >(
            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,
            >,
        >;
        account: undefined | Account;
        batch?: { multicall?: boolean | { batchSize?: number; wait?: number } };
        cacheTime: number;
        ccipRead?:
            | false
            | {
                request?: (
                    parameters: CcipRequestParameters,
                ) => Promise<`0x${string}`>;
            };
        chain: undefined
        | Chain;
        key: string;
        name: string;
        pollingInterval: number;
        request: EIP1193RequestFn<WalletRpcSchema>;
        transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
        type: string;
        uid: string;
        addChain: (args: AddChainParameters) => Promise<void>;
        deployContract: <
            const abi extends Abi
            | readonly unknown[],
            chainOverride extends undefined | Chain,
        >(
            args: DeployContractParameters<
                abi,
                undefined
                | Chain,
                undefined | Account,
                chainOverride,
            >,
        ) => Promise<`0x${string}`>;
        getAddresses: () => Promise<GetAddressesReturnType>;
        getChainId: () => Promise<number>;
        getPermissions: () => Promise<GetPermissionsReturnType>;
        prepareTransactionRequest: <
            const request extends
                (
                    | Omit<
                        {
                            accessList?: undefined;
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: bigint;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: undefined;
                            maxPriorityFeePerGas?: undefined;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "legacy";
                            value?: bigint;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: bigint;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: undefined;
                            maxPriorityFeePerGas?: undefined;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip2930";
                            value?: bigint;
                            accessList?: AccessList;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip1559";
                            value?: bigint;
                            accessList?: AccessList;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            authorizationList?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas: bigint;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to: null
                            | `0x${string}`;
                            type?: "eip4844";
                            value?: bigint;
                            accessList?: AccessList;
                            blobs: readonly `0x${string}`[] | readonly ByteArray[];
                            blobVersionedHashes?: readonly `0x${string}`[];
                            kzg?: Kzg;
                            sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip7702";
                            value?: bigint;
                            accessList?: AccessList;
                            authorizationList?: AuthorizationList<number, boolean>;
                        },
                        "from",
                    >
                ) & { kzg?: Kzg } & {
                    nonceManager?: NonceManager;
                    parameters?: readonly PrepareTransactionRequestParameterType[];
                },
            chainOverride extends undefined
            | Chain = undefined,
            accountOverride extends undefined | `0x${string}` | Account = undefined,
        >(
            args: PrepareTransactionRequestParameters<
                undefined
                | Chain,
                undefined | 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]
            },
        >;
        requestAddresses: () => Promise<RequestAddressesReturnType>;
        requestPermissions: (
            args: {
                eth_accounts: Record<string, any>;
                [key: string]: Record<string, any>;
            },
        ) => Promise<RequestPermissionsReturnType>;
        sendRawTransaction: (
            args: SendRawTransactionParameters,
        ) => Promise<`0x${string}`>;
        sendTransaction: <
            const request extends
                (
                    | Omit<
                        {
                            accessList?: undefined;
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: bigint;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: undefined;
                            maxPriorityFeePerGas?: undefined;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "legacy";
                            value?: bigint;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: bigint;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: undefined;
                            maxPriorityFeePerGas?: undefined;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip2930";
                            value?: bigint;
                            accessList?: AccessList;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip1559";
                            value?: bigint;
                            accessList?: AccessList;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            authorizationList?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas: bigint;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to: null
                            | `0x${string}`;
                            type?: "eip4844";
                            value?: bigint;
                            accessList?: AccessList;
                            blobs: readonly `0x${string}`[] | readonly ByteArray[];
                            blobVersionedHashes?: readonly `0x${string}`[];
                            kzg?: Kzg;
                            sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip7702";
                            value?: bigint;
                            accessList?: AccessList;
                            authorizationList?: AuthorizationList<number, boolean>;
                        },
                        "from",
                    >
                ) & { kzg?: Kzg },
            chainOverride extends undefined
            | Chain = undefined,
        >(
            args: SendTransactionParameters<
                undefined
                | Chain,
                undefined | Account,
                chainOverride,
                request,
            >,
        ) => Promise<`0x${string}`>;
        signMessage: (
            args: SignMessageParameters<undefined | Account>,
        ) => Promise<`0x${string}`>;
        signTransaction: <
            chainOverride extends undefined
            | Chain,
            const request extends
            
                    | Omit<
                        {
                            accessList?: undefined;
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: bigint;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: undefined;
                            maxPriorityFeePerGas?: undefined;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "legacy";
                            value?: bigint;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: bigint;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: undefined;
                            maxPriorityFeePerGas?: undefined;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip2930";
                            value?: bigint;
                            accessList?: AccessList;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            authorizationList?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip1559";
                            value?: bigint;
                            accessList?: AccessList;
                        },
                        "from",
                    >
                    | Omit<
                        {
                            authorizationList?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas: bigint;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to: null
                            | `0x${string}`;
                            type?: "eip4844";
                            value?: bigint;
                            accessList?: AccessList;
                            blobs: readonly `0x${string}`[] | readonly ByteArray[];
                            blobVersionedHashes?: readonly `0x${string}`[];
                            kzg?: Kzg;
                            sidecars?: readonly BlobSidecar<`0x${string}`>[];
                        },
                        "from",
                    >
                    | Omit<
                        {
                            blobs?: undefined;
                            blobVersionedHashes?: undefined;
                            kzg?: undefined;
                            sidecars?: undefined;
                            gasPrice?: undefined;
                            maxFeePerBlobGas?: undefined;
                            maxFeePerGas?: bigint;
                            maxPriorityFeePerGas?: bigint;
                            data?: `0x${string}`;
                            from?: `0x${string}`;
                            gas?: bigint;
                            nonce?: number;
                            to?: null
                            | `0x${string}`;
                            type?: "eip7702";
                            value?: bigint;
                            accessList?: AccessList;
                            authorizationList?: AuthorizationList<number, boolean>;
                        },
                        "from",
                    > = UnionOmit<
                ExtractChainFormatterParameters<
                    DeriveChain<undefined | Chain, chainOverride>,
                    "transactionRequest",
                    TransactionRequest,
                >,
                "from",
            >,
        >(
            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)
                    | (
                        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 extends
                | {
                    string?: undefined;
                    address?: undefined;
                    bool?: undefined;
                    bytes?: undefined;
                    bytes23?: undefined;
                    bytes1?: undefined;
                    bytes2?: undefined;
                    bytes3?: undefined;
                    bytes4?: undefined;
                    bytes5?: undefined;
                    bytes6?: undefined;
                    bytes7?: undefined;
                    bytes8?: undefined;
                    bytes9?: undefined;
                    bytes10?: undefined;
                    bytes11?: undefined;
                    bytes12?: undefined;
                    bytes13?: undefined;
                    bytes14?: undefined;
                    bytes15?: undefined;
                    bytes16?: undefined;
                    bytes17?: undefined;
                    bytes18?: undefined;
                    bytes19?: undefined;
                    bytes20?: undefined;
                    bytes21?: undefined;
                    bytes22?: undefined;
                    bytes24?: undefined;
                    bytes25?: undefined;
                    bytes26?: undefined;
                    bytes27?: undefined;
                    bytes28?: undefined;
                    bytes29?: undefined;
                    bytes30?: undefined;
                    bytes31?: undefined;
                    bytes32?: undefined;
                    int8?: undefined;
                    int16?: undefined;
                    int24?: undefined;
                    int32?: undefined;
                    int40?: undefined;
                    int48?: undefined;
                    int56?: undefined;
                    int64?: undefined;
                    int72?: undefined;
                    int80?: undefined;
                    int88?: undefined;
                    int96?: undefined;
                    int104?: undefined;
                    int112?: undefined;
                    int120?: undefined;
                    int128?: undefined;
                    int136?: undefined;
                    int144?: undefined;
                    int152?: undefined;
                    int160?: undefined;
                    int168?: undefined;
                    int176?: undefined;
                    int184?: undefined;
                    int192?: undefined;
                    int200?: undefined;
                    int208?: undefined;
                    int216?: undefined;
                    int224?: undefined;
                    int232?: undefined;
                    int240?: undefined;
                    int248?: undefined;
                    int256?: undefined;
                    uint8?: undefined;
                    uint16?: undefined;
                    uint24?: undefined;
                    uint32?: undefined;
                    uint40?: undefined;
                    uint48?: undefined;
                    uint56?: undefined;
                    uint64?: undefined;
                    uint72?: undefined;
                    uint80?: undefined;
                    uint88?: undefined;
                    uint96?: undefined;
                    uint104?: undefined;
                    uint112?: undefined;
                    uint120?: undefined;
                    uint128?: undefined;
                    uint136?: undefined;
                    uint144?: undefined;
                    uint152?: undefined;
                    uint160?: undefined;
                    uint168?: undefined;
                    uint176?: undefined;
                    uint184?: undefined;
                    uint192?: undefined;
                    uint200?: undefined;
                    uint208?: undefined;
                    uint216?: undefined;
                    uint224?: undefined;
                    uint232?: undefined;
                    uint240?: undefined;
                    uint248?: undefined;
                    uint256?: undefined;
                    [key: string]: readonly TypedDataParameter[];
                    [key: `string[${string}]`]: undefined;
                    [key: `function[${string}]`]: undefined;
                    [key: `address[${string}]`]: undefined;
                    [key: `bool[${string}]`]: undefined;
                    [key: `bytes[${string}]`]: undefined;
                    [key: `bytes23[${string}]`]: undefined;
                    [key: `bytes1[${string}]`]: undefined;
                    [key: `bytes2[${string}]`]: undefined;
                    [key: `bytes3[${string}]`]: undefined;
                    [key: `bytes4[${string}]`]: undefined;
                    [key: `bytes5[${string}]`]: undefined;
                    [key: `bytes6[${string}]`]: undefined;
                    [key: `bytes7[${string}]`]: undefined;
                    [key: `bytes8[${string}]`]: undefined;
                    [key: `bytes9[${string}]`]: undefined;
                    [key: `bytes10[${string}]`]: undefined;
                    [key: `bytes11[${string}]`]: undefined;
                    [key: `bytes12[${string}]`]: undefined;
                    [key: `bytes13[${string}]`]: undefined;
                    [key: `bytes14[${string}]`]: undefined;
                    [key: `bytes15[${string}]`]: undefined;
                    [key: `bytes16[${string}]`]: undefined;
                    [key: `bytes17[${string}]`]: undefined;
                    [key: `bytes18[${string}]`]: undefined;
                    [key: `bytes19[${string}]`]: undefined;
                    [key: `bytes20[${string}]`]: undefined;
                    [key: `bytes21[${string}]`]: undefined;
                    [key: `bytes22[${string}]`]: undefined;
                    [key: `bytes24[${string}]`]: undefined;
                    [key: `bytes25[${string}]`]: undefined;
                    [key: `bytes26[${string}]`]: undefined;
                    [key: `bytes27[${string}]`]: undefined;
                    [key: `bytes28[${string}]`]: undefined;
                    [key: `bytes29[${string}]`]: undefined;
                    [key: `bytes30[${string}]`]: undefined;
                    [key: `bytes31[${string}]`]: undefined;
                    [key: `bytes32[${string}]`]: undefined;
                    [key: `int[${string}]`]: undefined;
                    [key: `int8[${string}]`]: undefined;
                    [key: `int16[${string}]`]: undefined;
                    [key: `int24[${string}]`]: undefined;
                    [key: `int32[${string}]`]: undefined;
                    [key: `int40[${string}]`]: undefined;
                    [key: `int48[${string}]`]: undefined;
                    [key: `int56[${string}]`]: undefined;
                    [key: `int64[${string}]`]: undefined;
                    [key: `int72[${string}]`]: undefined;
                    [key: `int80[${string}]`]: undefined;
                    [key: `int88[${string}]`]: undefined;
                    [key: `int96[${string}]`]: undefined;
                    [key: `int104[${string}]`]: undefined;
                    [key: `int112[${string}]`]: undefined;
                    [key: `int120[${string}]`]: undefined;
                    [key: `int128[${string}]`]: undefined;
                    [key: `int136[${string}]`]: undefined;
                    [key: `int144[${string}]`]: undefined;
                    [key: `int152[${string}]`]: undefined;
                    [key: `int160[${string}]`]: undefined;
                    [key: `int168[${string}]`]: undefined;
                    [key: `int176[${string}]`]: undefined;
                    [key: `int184[${string}]`]: undefined;
                    [key: `int192[${string}]`]: undefined;
                    [key: `int200[${string}]`]: undefined;
                    [key: `int208[${string}]`]: undefined;
                    [key: `int216[${string}]`]: undefined;
                    [key: `int224[${string}]`]: undefined;
                    [key: `int232[${string}]`]: undefined;
                    [key: `int240[${string}]`]: undefined;
                    [key: `int248[${string}]`]: undefined;
                    [key: `int256[${string}]`]: undefined;
                    [key: `uint[${string}]`]: undefined;
                    [key: `uint8[${string}]`]: undefined;
                    [key: `uint16[${string}]`]: undefined;
                    [key: `uint24[${string}]`]: undefined;
                    [key: `uint32[${string}]`]: undefined;
                    [key: `uint40[${string}]`]: undefined;
                    [key: `uint48[${string}]`]: undefined;
                    [key: `uint56[${string}]`]: undefined;
                    [key: `uint64[${string}]`]: undefined;
                    [key: `uint72[${string}]`]: undefined;
                    [key: `uint80[${string}]`]: undefined;
                    [key: `uint88[${string}]`]: undefined;
                    [key: `uint96[${string}]`]: undefined;
                    [key: `uint104[${string}]`]: undefined;
                    [key: `uint112[${string}]`]: undefined;
                    [key: `uint120[${string}]`]: undefined;
                    [key: `uint128[${string}]`]: undefined;
                    [key: `uint136[${string}]`]: undefined;
                    [key: `uint144[${string}]`]: undefined;
                    [key: `uint152[${string}]`]: undefined;
                    [key: `uint160[${string}]`]: undefined;
                    [key: `uint168[${string}]`]: undefined;
                    [key: `uint176[${string}]`]: undefined;
                    [key: `uint184[${string}]`]: undefined;
                    [key: `uint192[${string}]`]: undefined;
                    [key: `uint200[${string}]`]: undefined;
                    [key: `uint208[${string}]`]: undefined;
                    [key: `uint216[${string}]`]: undefined;
                    [key: `uint224[${string}]`]: undefined;
                    [key: `uint232[${string}]`]: undefined;
                    [key: `uint240[${string}]`]: undefined;
                    [key: `uint248[${string}]`]: undefined;
                    [key: `uint256[${string}]`]: undefined;
                }
                | { [key: string]: unknown },
            primaryType extends string,
        >(
            args: SignTypedDataParameters<
                typedData,
                primaryType,
                undefined
                | Account,
            >,
        ) => Promise<`0x${string}`>;
        switchChain: (args: SwitchChainParameters) => Promise<void>;
        watchAsset: (args: WatchAssetParams) => Promise<boolean>;
        writeContract: <
            const abi extends Abi
            | readonly unknown[],
            functionName extends string,
            args extends unknown,
            chainOverride extends undefined | Chain = undefined,
        >(
            args: WriteContractParameters<
                abi,
                functionName,
                args,
                undefined
                | Chain,
                undefined | Account,
                chainOverride,
            >,
        ) => Promise<`0x${string}`>;
    };
}

Properties

environment?: "production" | "development"
client:
    | Client
    | {
        extend: <
            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;
                    [key: string]: unknown;
                } & ExactPartial<
                    ExtendableProtectedActions<
                        Transport,
                        undefined
                        | Chain,
                        undefined | Account,
                    >,
                >,
        >(
            fn: (
                client: Client<
                    Transport,
                    undefined
                    | Chain,
                    undefined | Account,
                    TestRpcSchema<TestClientMode>,
                    { mode: TestClientMode } & TestActions,
                >,
            ) => client,
        ) => Client<
            Transport,
            undefined
            | Chain,
            undefined | Account,
            TestRpcSchema<TestClientMode>,
            { [K in string | number | symbol]: client[K] } & { mode: TestClientMode } & TestActions,
        >;
        account: undefined | Account;
        batch?: { multicall?: boolean | { batchSize?: number; wait?: number } };
        cacheTime: number;
        ccipRead?:
            | false
            | {
                request?: (
                    parameters: CcipRequestParameters,
                ) => Promise<`0x${string}`>;
            };
        chain: undefined
        | Chain;
        key: string;
        name: string;
        pollingInterval: number;
        request: EIP1193RequestFn<TestRpcSchema<TestClientMode>>;
        transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
        type: string;
        uid: string;
        mode: TestClientMode;
        dropTransaction: (args: DropTransactionParameters) => Promise<void>;
        dumpState: () => Promise<`0x${string}`>;
        getAutomine: () => Promise<boolean>;
        getTxpoolContent: () => Promise<GetTxpoolContentReturnType>;
        getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>;
        impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>;
        increaseTime: (args: IncreaseTimeParameters) => Promise<`0x${string}`>;
        inspectTxpool: () => Promise<InspectTxpoolReturnType>;
        loadState: (args: LoadStateParameters) => Promise<void>;
        mine: (args: MineParameters) => Promise<void>;
        removeBlockTimestampInterval: () => Promise<void>;
        reset: (args?: ResetParameters) => Promise<void>;
        revert: (args: RevertParameters) => Promise<void>;
        sendUnsignedTransaction: <chain extends undefined | Chain>(
            args: SendUnsignedTransactionParameters<chain>,
        ) => Promise<`0x${string}`>;
        setAutomine: (args: boolean) => Promise<void>;
        setBalance: (args: SetBalanceParameters) => Promise<void>;
        setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>;
        setBlockTimestampInterval: (
            args: SetBlockTimestampIntervalParameters,
        ) => Promise<void>;
        setCode: (args: SetCodeParameters) => Promise<void>;
        setCoinbase: (args: SetCoinbaseParameters) => Promise<void>;
        setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>;
        setLoggingEnabled: (args: boolean) => Promise<void>;
        setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>;
        setNextBlockBaseFeePerGas: (
            args: SetNextBlockBaseFeePerGasParameters,
        ) => Promise<void>;
        setNextBlockTimestamp: (
            args: SetNextBlockTimestampParameters,
        ) => Promise<void>;
        setNonce: (args: SetNonceParameters) => Promise<void>;
        setRpcUrl: (args: string) => Promise<void>;
        setStorageAt: (args: SetStorageAtParameters) => Promise<void>;
        snapshot: () => Promise<`0x${string}`>;
        stopImpersonatingAccount: (
            args: StopImpersonatingAccountParameters,
        ) => Promise<void>;
    }

Type declaration

  • Client
  • {
        extend: <
            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;
                    [key: string]: unknown;
                } & ExactPartial<
                    ExtendableProtectedActions<
                        Transport,
                        undefined
                        | Chain,
                        undefined | Account,
                    >,
                >,
        >(
            fn: (
                client: Client<
                    Transport,
                    undefined
                    | Chain,
                    undefined | Account,
                    TestRpcSchema<TestClientMode>,
                    { mode: TestClientMode } & TestActions,
                >,
            ) => client,
        ) => Client<
            Transport,
            undefined
            | Chain,
            undefined | Account,
            TestRpcSchema<TestClientMode>,
            { [K in string | number | symbol]: client[K] } & { mode: TestClientMode } & TestActions,
        >;
        account: undefined | Account;
        batch?: { multicall?: boolean | { batchSize?: number; wait?: number } };
        cacheTime: number;
        ccipRead?:
            | false
            | {
                request?: (
                    parameters: CcipRequestParameters,
                ) => Promise<`0x${string}`>;
            };
        chain: undefined
        | Chain;
        key: string;
        name: string;
        pollingInterval: number;
        request: EIP1193RequestFn<TestRpcSchema<TestClientMode>>;
        transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
        type: string;
        uid: string;
        mode: TestClientMode;
        dropTransaction: (args: DropTransactionParameters) => Promise<void>;
        dumpState: () => Promise<`0x${string}`>;
        getAutomine: () => Promise<boolean>;
        getTxpoolContent: () => Promise<GetTxpoolContentReturnType>;
        getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>;
        impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>;
        increaseTime: (args: IncreaseTimeParameters) => Promise<`0x${string}`>;
        inspectTxpool: () => Promise<InspectTxpoolReturnType>;
        loadState: (args: LoadStateParameters) => Promise<void>;
        mine: (args: MineParameters) => Promise<void>;
        removeBlockTimestampInterval: () => Promise<void>;
        reset: (args?: ResetParameters) => Promise<void>;
        revert: (args: RevertParameters) => Promise<void>;
        sendUnsignedTransaction: <chain extends undefined | Chain>(
            args: SendUnsignedTransactionParameters<chain>,
        ) => Promise<`0x${string}`>;
        setAutomine: (args: boolean) => Promise<void>;
        setBalance: (args: SetBalanceParameters) => Promise<void>;
        setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>;
        setBlockTimestampInterval: (
            args: SetBlockTimestampIntervalParameters,
        ) => Promise<void>;
        setCode: (args: SetCodeParameters) => Promise<void>;
        setCoinbase: (args: SetCoinbaseParameters) => Promise<void>;
        setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>;
        setLoggingEnabled: (args: boolean) => Promise<void>;
        setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>;
        setNextBlockBaseFeePerGas: (
            args: SetNextBlockBaseFeePerGasParameters,
        ) => Promise<void>;
        setNextBlockTimestamp: (
            args: SetNextBlockTimestampParameters,
        ) => Promise<void>;
        setNonce: (args: SetNonceParameters) => Promise<void>;
        setRpcUrl: (args: string) => Promise<void>;
        setStorageAt: (args: SetStorageAtParameters) => Promise<void>;
        snapshot: () => Promise<`0x${string}`>;
        stopImpersonatingAccount: (
            args: StopImpersonatingAccountParameters,
        ) => Promise<void>;
    }
    • extend: <
          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;
                  [key: string]: unknown;
              } & ExactPartial<
                  ExtendableProtectedActions<
                      Transport,
                      undefined
                      | Chain,
                      undefined | Account,
                  >,
              >,
      >(
          fn: (
              client: Client<
                  Transport,
                  undefined
                  | Chain,
                  undefined | Account,
                  TestRpcSchema<TestClientMode>,
                  { mode: TestClientMode } & TestActions,
              >,
          ) => client,
      ) => Client<
          Transport,
          undefined
          | Chain,
          undefined | Account,
          TestRpcSchema<TestClientMode>,
          { [K in string | number | symbol]: client[K] } & { mode: TestClientMode } & TestActions,
      >
    • account: undefined | Account

      The Account of the Client.

    • 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: undefined | Chain

      Chain for the client.

    • 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.

    • request: EIP1193RequestFn<TestRpcSchema<TestClientMode>>

      Request function wrapped with friendly error handling

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

      The RPC transport

    • type: string

      The type of client.

    • uid: string

      A unique ID for the client.

    • mode: TestClientMode
    • dropTransaction: (args: DropTransactionParameters) => Promise<void>

      Removes a transaction from the mempool.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.dropTransaction({
      hash: '0xe58dceb6b20b03965bb678e27d141e151d7d4efc2334c2d6a49b9fac523f7364'
      })
    • dumpState: () => Promise<`0x${string}`>

      Serializes the current state (including contracts code, contract's storage, accounts properties, etc.) into a savable data blob.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.dumpState()
    • getAutomine: () => Promise<boolean>

      Returns the automatic mining status of the node.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      const isAutomining = await client.getAutomine()
    • getTxpoolContent: () => Promise<GetTxpoolContentReturnType>

      Returns the details of all transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      const content = await client.getTxpoolContent()
    • getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>

      Returns a summary of all the transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      const status = await client.getTxpoolStatus()
    • impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>

      Impersonate an account or contract address. This lets you send transactions from that account even if you don't have access to its private key.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.impersonateAccount({
      address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
      })
    • increaseTime: (args: IncreaseTimeParameters) => Promise<`0x${string}`>

      Jump forward in time by the given amount of time, in seconds.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.increaseTime({
      seconds: 420,
      })
    • inspectTxpool: () => Promise<InspectTxpoolReturnType>

      Returns a summary of all the transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      const data = await client.inspectTxpool()
    • loadState: (args: LoadStateParameters) => Promise<void>

      Adds state previously dumped with dumpState to the current chain.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.loadState({ state: '0x...' })
    • mine: (args: MineParameters) => Promise<void>

      Mine a specified number of blocks.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.mine({ blocks: 1 })
    • removeBlockTimestampInterval: () => Promise<void>
      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'
      import { removeBlockTimestampInterval } from 'viem/test'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.removeBlockTimestampInterval()
    • reset: (args?: ResetParameters) => Promise<void>

      Resets fork back to its original state.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.reset({ blockNumber: 69420n })
    • revert: (args: RevertParameters) => Promise<void>

      Revert the state of the blockchain at the current block.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.revert({ id: '0x…' })
    • sendUnsignedTransaction: <chain extends undefined | Chain>(
          args: SendUnsignedTransactionParameters<chain>,
      ) => Promise<`0x${string}`>

      Returns the details of all transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      const hash = await client.sendUnsignedTransaction({
      from: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
      to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
      value: 1000000000000000000n,
      })
    • setAutomine: (args: boolean) => Promise<void>

      Enables or disables the automatic mining of new blocks with each new transaction submitted to the network.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setAutomine()
    • setBalance: (args: SetBalanceParameters) => Promise<void>

      Modifies the balance of an account.

      import { createTestClient, http, parseEther } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setBalance({
      address: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
      value: parseEther('1'),
      })
    • setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>

      Sets the block's gas limit.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setBlockGasLimit({ gasLimit: 420_000n })
    • setBlockTimestampInterval: (args: SetBlockTimestampIntervalParameters) => Promise<void>

      Similar to increaseTime, but sets a block timestamp interval. The timestamp of future blocks will be computed as lastBlock_timestamp + interval.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setBlockTimestampInterval({ interval: 5 })
    • setCode: (args: SetCodeParameters) => Promise<void>

      Modifies the bytecode stored at an account's address.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setCode({
      address: '0xe846c6fcf817734ca4527b28ccb4aea2b6663c79',
      bytecode: '0x60806040526000600355600019600955600c80546001600160a01b031916737a250d5630b4cf539739df…',
      })
    • setCoinbase: (args: SetCoinbaseParameters) => Promise<void>

      Sets the coinbase address to be used in new blocks.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setCoinbase({
      address: '0xe846c6fcf817734ca4527b28ccb4aea2b6663c79',
      })
    • setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>

      Sets the automatic mining interval (in seconds) of blocks. Setting the interval to 0 will disable automatic mining.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setIntervalMining({ interval: 5 })
    • setLoggingEnabled: (args: boolean) => Promise<void>

      Enable or disable logging on the test node network.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setLoggingEnabled()
    • setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>

      Change the minimum gas price accepted by the network (in wei).

      Note: setMinGasPrice can only be used on clients that do not have EIP-1559 enabled.

      import { createTestClient, http, parseGwei } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setMinGasPrice({
      gasPrice: parseGwei('20'),
      })
    • setNextBlockBaseFeePerGas: (args: SetNextBlockBaseFeePerGasParameters) => Promise<void>

      Sets the next block's base fee per gas.

      import { createTestClient, http, parseGwei } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setNextBlockBaseFeePerGas({
      baseFeePerGas: parseGwei('20'),
      })
    • setNextBlockTimestamp: (args: SetNextBlockTimestampParameters) => Promise<void>

      Sets the next block's timestamp.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setNextBlockTimestamp({ timestamp: 1671744314n })
    • setNonce: (args: SetNonceParameters) => Promise<void>

      Modifies (overrides) the nonce of an account.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setNonce({
      address: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
      nonce: 420,
      })
    • setRpcUrl: (args: string) => Promise<void>

      Sets the backend RPC URL.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setRpcUrl('https://eth-mainnet.g.alchemy.com/v2')
    • setStorageAt: (args: SetStorageAtParameters) => Promise<void>

      Writes to a slot of an account's storage.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.setStorageAt({
      address: '0xe846c6fcf817734ca4527b28ccb4aea2b6663c79',
      index: 2,
      value: '0x0000000000000000000000000000000000000000000000000000000000000069',
      })
    • snapshot: () => Promise<`0x${string}`>

      Snapshot the state of the blockchain at the current block.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'
      import { snapshot } from 'viem/test'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.snapshot()
    • stopImpersonatingAccount: (args: StopImpersonatingAccountParameters) => Promise<void>

      Stop impersonating an account after having previously used impersonateAccount.

      import { createTestClient, http } from 'viem'
      import { foundry } from 'viem/chains'
      import { stopImpersonatingAccount } from 'viem/test'

      const client = createTestClient({
      mode: 'anvil',
      chain: 'foundry',
      transport: http(),
      })
      await client.stopImpersonatingAccount({
      address: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
      })
walletClient?: {
    extend: <
        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;
                [key: string]: unknown;
            } & ExactPartial<
                ExtendableProtectedActions<
                    Transport,
                    undefined
                    | Chain,
                    undefined | Account,
                >,
            >,
    >(
        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,
        >,
    >;
    account: undefined | Account;
    batch?: { multicall?: boolean | { batchSize?: number; wait?: number } };
    cacheTime: number;
    ccipRead?:
        | false
        | {
            request?: (
                parameters: CcipRequestParameters,
            ) => Promise<`0x${string}`>;
        };
    chain: undefined
    | Chain;
    key: string;
    name: string;
    pollingInterval: number;
    request: EIP1193RequestFn<WalletRpcSchema>;
    transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
    type: string;
    uid: string;
    addChain: (args: AddChainParameters) => Promise<void>;
    deployContract: <
        const abi extends Abi
        | readonly unknown[],
        chainOverride extends undefined | Chain,
    >(
        args: DeployContractParameters<
            abi,
            undefined
            | Chain,
            undefined | Account,
            chainOverride,
        >,
    ) => Promise<`0x${string}`>;
    getAddresses: () => Promise<GetAddressesReturnType>;
    getChainId: () => Promise<number>;
    getPermissions: () => Promise<GetPermissionsReturnType>;
    prepareTransactionRequest: <
        const request extends
            (
                | Omit<
                    {
                        accessList?: undefined;
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to: null
                        | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                        accessList?: AccessList;
                        blobs: readonly `0x${string}`[] | readonly ByteArray[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        kzg?: Kzg;
                        sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                    },
                    "from",
                >
            ) & { kzg?: Kzg } & {
                nonceManager?: NonceManager;
                parameters?: readonly PrepareTransactionRequestParameterType[];
            },
        chainOverride extends undefined
        | Chain = undefined,
        accountOverride extends undefined | `0x${string}` | Account = undefined,
    >(
        args: PrepareTransactionRequestParameters<
            undefined
            | Chain,
            undefined | 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]
        },
    >;
    requestAddresses: () => Promise<RequestAddressesReturnType>;
    requestPermissions: (
        args: {
            eth_accounts: Record<string, any>;
            [key: string]: Record<string, any>;
        },
    ) => Promise<RequestPermissionsReturnType>;
    sendRawTransaction: (
        args: SendRawTransactionParameters,
    ) => Promise<`0x${string}`>;
    sendTransaction: <
        const request extends
            (
                | Omit<
                    {
                        accessList?: undefined;
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to: null
                        | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                        accessList?: AccessList;
                        blobs: readonly `0x${string}`[] | readonly ByteArray[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        kzg?: Kzg;
                        sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                    },
                    "from",
                >
            ) & { kzg?: Kzg },
        chainOverride extends undefined
        | Chain = undefined,
    >(
        args: SendTransactionParameters<
            undefined
            | Chain,
            undefined | Account,
            chainOverride,
            request,
        >,
    ) => Promise<`0x${string}`>;
    signMessage: (
        args: SignMessageParameters<undefined | Account>,
    ) => Promise<`0x${string}`>;
    signTransaction: <
        chainOverride extends undefined
        | Chain,
        const request extends
        
                | Omit<
                    {
                        accessList?: undefined;
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to: null
                        | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                        accessList?: AccessList;
                        blobs: readonly `0x${string}`[] | readonly ByteArray[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        kzg?: Kzg;
                        sidecars?: readonly BlobSidecar<`0x${string}`>[];
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                    },
                    "from",
                > = UnionOmit<
            ExtractChainFormatterParameters<
                DeriveChain<undefined | Chain, chainOverride>,
                "transactionRequest",
                TransactionRequest,
            >,
            "from",
        >,
    >(
        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)
                | (
                    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 extends
            | {
                string?: undefined;
                address?: undefined;
                bool?: undefined;
                bytes?: undefined;
                bytes23?: undefined;
                bytes1?: undefined;
                bytes2?: undefined;
                bytes3?: undefined;
                bytes4?: undefined;
                bytes5?: undefined;
                bytes6?: undefined;
                bytes7?: undefined;
                bytes8?: undefined;
                bytes9?: undefined;
                bytes10?: undefined;
                bytes11?: undefined;
                bytes12?: undefined;
                bytes13?: undefined;
                bytes14?: undefined;
                bytes15?: undefined;
                bytes16?: undefined;
                bytes17?: undefined;
                bytes18?: undefined;
                bytes19?: undefined;
                bytes20?: undefined;
                bytes21?: undefined;
                bytes22?: undefined;
                bytes24?: undefined;
                bytes25?: undefined;
                bytes26?: undefined;
                bytes27?: undefined;
                bytes28?: undefined;
                bytes29?: undefined;
                bytes30?: undefined;
                bytes31?: undefined;
                bytes32?: undefined;
                int8?: undefined;
                int16?: undefined;
                int24?: undefined;
                int32?: undefined;
                int40?: undefined;
                int48?: undefined;
                int56?: undefined;
                int64?: undefined;
                int72?: undefined;
                int80?: undefined;
                int88?: undefined;
                int96?: undefined;
                int104?: undefined;
                int112?: undefined;
                int120?: undefined;
                int128?: undefined;
                int136?: undefined;
                int144?: undefined;
                int152?: undefined;
                int160?: undefined;
                int168?: undefined;
                int176?: undefined;
                int184?: undefined;
                int192?: undefined;
                int200?: undefined;
                int208?: undefined;
                int216?: undefined;
                int224?: undefined;
                int232?: undefined;
                int240?: undefined;
                int248?: undefined;
                int256?: undefined;
                uint8?: undefined;
                uint16?: undefined;
                uint24?: undefined;
                uint32?: undefined;
                uint40?: undefined;
                uint48?: undefined;
                uint56?: undefined;
                uint64?: undefined;
                uint72?: undefined;
                uint80?: undefined;
                uint88?: undefined;
                uint96?: undefined;
                uint104?: undefined;
                uint112?: undefined;
                uint120?: undefined;
                uint128?: undefined;
                uint136?: undefined;
                uint144?: undefined;
                uint152?: undefined;
                uint160?: undefined;
                uint168?: undefined;
                uint176?: undefined;
                uint184?: undefined;
                uint192?: undefined;
                uint200?: undefined;
                uint208?: undefined;
                uint216?: undefined;
                uint224?: undefined;
                uint232?: undefined;
                uint240?: undefined;
                uint248?: undefined;
                uint256?: undefined;
                [key: string]: readonly TypedDataParameter[];
                [key: `string[${string}]`]: undefined;
                [key: `function[${string}]`]: undefined;
                [key: `address[${string}]`]: undefined;
                [key: `bool[${string}]`]: undefined;
                [key: `bytes[${string}]`]: undefined;
                [key: `bytes23[${string}]`]: undefined;
                [key: `bytes1[${string}]`]: undefined;
                [key: `bytes2[${string}]`]: undefined;
                [key: `bytes3[${string}]`]: undefined;
                [key: `bytes4[${string}]`]: undefined;
                [key: `bytes5[${string}]`]: undefined;
                [key: `bytes6[${string}]`]: undefined;
                [key: `bytes7[${string}]`]: undefined;
                [key: `bytes8[${string}]`]: undefined;
                [key: `bytes9[${string}]`]: undefined;
                [key: `bytes10[${string}]`]: undefined;
                [key: `bytes11[${string}]`]: undefined;
                [key: `bytes12[${string}]`]: undefined;
                [key: `bytes13[${string}]`]: undefined;
                [key: `bytes14[${string}]`]: undefined;
                [key: `bytes15[${string}]`]: undefined;
                [key: `bytes16[${string}]`]: undefined;
                [key: `bytes17[${string}]`]: undefined;
                [key: `bytes18[${string}]`]: undefined;
                [key: `bytes19[${string}]`]: undefined;
                [key: `bytes20[${string}]`]: undefined;
                [key: `bytes21[${string}]`]: undefined;
                [key: `bytes22[${string}]`]: undefined;
                [key: `bytes24[${string}]`]: undefined;
                [key: `bytes25[${string}]`]: undefined;
                [key: `bytes26[${string}]`]: undefined;
                [key: `bytes27[${string}]`]: undefined;
                [key: `bytes28[${string}]`]: undefined;
                [key: `bytes29[${string}]`]: undefined;
                [key: `bytes30[${string}]`]: undefined;
                [key: `bytes31[${string}]`]: undefined;
                [key: `bytes32[${string}]`]: undefined;
                [key: `int[${string}]`]: undefined;
                [key: `int8[${string}]`]: undefined;
                [key: `int16[${string}]`]: undefined;
                [key: `int24[${string}]`]: undefined;
                [key: `int32[${string}]`]: undefined;
                [key: `int40[${string}]`]: undefined;
                [key: `int48[${string}]`]: undefined;
                [key: `int56[${string}]`]: undefined;
                [key: `int64[${string}]`]: undefined;
                [key: `int72[${string}]`]: undefined;
                [key: `int80[${string}]`]: undefined;
                [key: `int88[${string}]`]: undefined;
                [key: `int96[${string}]`]: undefined;
                [key: `int104[${string}]`]: undefined;
                [key: `int112[${string}]`]: undefined;
                [key: `int120[${string}]`]: undefined;
                [key: `int128[${string}]`]: undefined;
                [key: `int136[${string}]`]: undefined;
                [key: `int144[${string}]`]: undefined;
                [key: `int152[${string}]`]: undefined;
                [key: `int160[${string}]`]: undefined;
                [key: `int168[${string}]`]: undefined;
                [key: `int176[${string}]`]: undefined;
                [key: `int184[${string}]`]: undefined;
                [key: `int192[${string}]`]: undefined;
                [key: `int200[${string}]`]: undefined;
                [key: `int208[${string}]`]: undefined;
                [key: `int216[${string}]`]: undefined;
                [key: `int224[${string}]`]: undefined;
                [key: `int232[${string}]`]: undefined;
                [key: `int240[${string}]`]: undefined;
                [key: `int248[${string}]`]: undefined;
                [key: `int256[${string}]`]: undefined;
                [key: `uint[${string}]`]: undefined;
                [key: `uint8[${string}]`]: undefined;
                [key: `uint16[${string}]`]: undefined;
                [key: `uint24[${string}]`]: undefined;
                [key: `uint32[${string}]`]: undefined;
                [key: `uint40[${string}]`]: undefined;
                [key: `uint48[${string}]`]: undefined;
                [key: `uint56[${string}]`]: undefined;
                [key: `uint64[${string}]`]: undefined;
                [key: `uint72[${string}]`]: undefined;
                [key: `uint80[${string}]`]: undefined;
                [key: `uint88[${string}]`]: undefined;
                [key: `uint96[${string}]`]: undefined;
                [key: `uint104[${string}]`]: undefined;
                [key: `uint112[${string}]`]: undefined;
                [key: `uint120[${string}]`]: undefined;
                [key: `uint128[${string}]`]: undefined;
                [key: `uint136[${string}]`]: undefined;
                [key: `uint144[${string}]`]: undefined;
                [key: `uint152[${string}]`]: undefined;
                [key: `uint160[${string}]`]: undefined;
                [key: `uint168[${string}]`]: undefined;
                [key: `uint176[${string}]`]: undefined;
                [key: `uint184[${string}]`]: undefined;
                [key: `uint192[${string}]`]: undefined;
                [key: `uint200[${string}]`]: undefined;
                [key: `uint208[${string}]`]: undefined;
                [key: `uint216[${string}]`]: undefined;
                [key: `uint224[${string}]`]: undefined;
                [key: `uint232[${string}]`]: undefined;
                [key: `uint240[${string}]`]: undefined;
                [key: `uint248[${string}]`]: undefined;
                [key: `uint256[${string}]`]: undefined;
            }
            | { [key: string]: unknown },
        primaryType extends string,
    >(
        args: SignTypedDataParameters<
            typedData,
            primaryType,
            undefined
            | Account,
        >,
    ) => Promise<`0x${string}`>;
    switchChain: (args: SwitchChainParameters) => Promise<void>;
    watchAsset: (args: WatchAssetParams) => Promise<boolean>;
    writeContract: <
        const abi extends Abi
        | readonly unknown[],
        functionName extends string,
        args extends unknown,
        chainOverride extends undefined | Chain = undefined,
    >(
        args: WriteContractParameters<
            abi,
            functionName,
            args,
            undefined
            | Chain,
            undefined | Account,
            chainOverride,
        >,
    ) => Promise<`0x${string}`>;
}

Type declaration

  • extend: <
        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;
                [key: string]: unknown;
            } & ExactPartial<
                ExtendableProtectedActions<
                    Transport,
                    undefined
                    | Chain,
                    undefined | Account,
                >,
            >,
    >(
        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,
        >,
    >
  • account: undefined | Account

    The Account of the Client.

  • 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: undefined | Chain

    Chain for the client.

  • 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.

  • request: EIP1193RequestFn<WalletRpcSchema>

    Request function wrapped with friendly error handling

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

    The RPC transport

  • type: string

    The type of client.

  • uid: string

    A unique ID for 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 })
  • deployContract: <
        const abi extends Abi
        | readonly unknown[],
        chainOverride extends undefined | Chain,
    >(
        args: DeployContractParameters<
            abi,
            undefined
            | Chain,
            undefined | 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...',
    })
  • 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()
  • 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
  • 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()
  • prepareTransactionRequest: <
        const request extends
            (
                | Omit<
                    {
                        accessList?: undefined;
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to: null
                        | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                        accessList?: AccessList;
                        blobs: readonly `0x${string}`[] | readonly ByteArray[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        kzg?: Kzg;
                        sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                    },
                    "from",
                >
            ) & { kzg?: Kzg } & {
                nonceManager?: NonceManager;
                parameters?: readonly PrepareTransactionRequestParameterType[];
            },
        chainOverride extends undefined
        | Chain = undefined,
        accountOverride extends undefined | `0x${string}` | Account = undefined,
    >(
        args: PrepareTransactionRequestParameters<
            undefined
            | Chain,
            undefined | 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,
    })
  • 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()
  • requestPermissions: (
        args: {
            eth_accounts: Record<string, any>;
            [key: string]: 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: {}
    })
  • 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'
    })
  • sendTransaction: <
        const request extends
            (
                | Omit<
                    {
                        accessList?: undefined;
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to: null
                        | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                        accessList?: AccessList;
                        blobs: readonly `0x${string}`[] | readonly ByteArray[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        kzg?: Kzg;
                        sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                    },
                    "from",
                >
            ) & { kzg?: Kzg },
        chainOverride extends undefined
        | Chain = undefined,
    >(
        args: SendTransactionParameters<
            undefined
            | Chain,
            undefined | 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,
    })
  • signMessage: (args: SignMessageParameters<undefined | 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',
    })
  • signTransaction: <
        chainOverride extends undefined
        | Chain,
        const request extends
        
                | Omit<
                    {
                        accessList?: undefined;
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "legacy";
                        value?: bigint;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip2930";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip1559";
                        value?: bigint;
                        accessList?: AccessList;
                    },
                    "from",
                >
                | Omit<
                    {
                        authorizationList?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to: null
                        | `0x${string}`;
                        type?: "eip4844";
                        value?: bigint;
                        accessList?: AccessList;
                        blobs: readonly `0x${string}`[] | readonly ByteArray[];
                        blobVersionedHashes?: readonly `0x${string}`[];
                        kzg?: Kzg;
                        sidecars?: readonly BlobSidecar<`0x${string}`>[];
                    },
                    "from",
                >
                | Omit<
                    {
                        blobs?: undefined;
                        blobVersionedHashes?: undefined;
                        kzg?: undefined;
                        sidecars?: undefined;
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: bigint;
                        maxPriorityFeePerGas?: bigint;
                        data?: `0x${string}`;
                        from?: `0x${string}`;
                        gas?: bigint;
                        nonce?: number;
                        to?: null
                        | `0x${string}`;
                        type?: "eip7702";
                        value?: bigint;
                        accessList?: AccessList;
                        authorizationList?: AuthorizationList<number, boolean>;
                    },
                    "from",
                > = UnionOmit<
            ExtractChainFormatterParameters<
                DeriveChain<undefined | Chain, chainOverride>,
                "transactionRequest",
                TransactionRequest,
            >,
            "from",
        >,
    >(
        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)
                | (
                    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)
  • signTypedData: <
        const typedData extends
            | {
                string?: undefined;
                address?: undefined;
                bool?: undefined;
                bytes?: undefined;
                bytes23?: undefined;
                bytes1?: undefined;
                bytes2?: undefined;
                bytes3?: undefined;
                bytes4?: undefined;
                bytes5?: undefined;
                bytes6?: undefined;
                bytes7?: undefined;
                bytes8?: undefined;
                bytes9?: undefined;
                bytes10?: undefined;
                bytes11?: undefined;
                bytes12?: undefined;
                bytes13?: undefined;
                bytes14?: undefined;
                bytes15?: undefined;
                bytes16?: undefined;
                bytes17?: undefined;
                bytes18?: undefined;
                bytes19?: undefined;
                bytes20?: undefined;
                bytes21?: undefined;
                bytes22?: undefined;
                bytes24?: undefined;
                bytes25?: undefined;
                bytes26?: undefined;
                bytes27?: undefined;
                bytes28?: undefined;
                bytes29?: undefined;
                bytes30?: undefined;
                bytes31?: undefined;
                bytes32?: undefined;
                int8?: undefined;
                int16?: undefined;
                int24?: undefined;
                int32?: undefined;
                int40?: undefined;
                int48?: undefined;
                int56?: undefined;
                int64?: undefined;
                int72?: undefined;
                int80?: undefined;
                int88?: undefined;
                int96?: undefined;
                int104?: undefined;
                int112?: undefined;
                int120?: undefined;
                int128?: undefined;
                int136?: undefined;
                int144?: undefined;
                int152?: undefined;
                int160?: undefined;
                int168?: undefined;
                int176?: undefined;
                int184?: undefined;
                int192?: undefined;
                int200?: undefined;
                int208?: undefined;
                int216?: undefined;
                int224?: undefined;
                int232?: undefined;
                int240?: undefined;
                int248?: undefined;
                int256?: undefined;
                uint8?: undefined;
                uint16?: undefined;
                uint24?: undefined;
                uint32?: undefined;
                uint40?: undefined;
                uint48?: undefined;
                uint56?: undefined;
                uint64?: undefined;
                uint72?: undefined;
                uint80?: undefined;
                uint88?: undefined;
                uint96?: undefined;
                uint104?: undefined;
                uint112?: undefined;
                uint120?: undefined;
                uint128?: undefined;
                uint136?: undefined;
                uint144?: undefined;
                uint152?: undefined;
                uint160?: undefined;
                uint168?: undefined;
                uint176?: undefined;
                uint184?: undefined;
                uint192?: undefined;
                uint200?: undefined;
                uint208?: undefined;
                uint216?: undefined;
                uint224?: undefined;
                uint232?: undefined;
                uint240?: undefined;
                uint248?: undefined;
                uint256?: undefined;
                [key: string]: readonly TypedDataParameter[];
                [key: `string[${string}]`]: undefined;
                [key: `function[${string}]`]: undefined;
                [key: `address[${string}]`]: undefined;
                [key: `bool[${string}]`]: undefined;
                [key: `bytes[${string}]`]: undefined;
                [key: `bytes23[${string}]`]: undefined;
                [key: `bytes1[${string}]`]: undefined;
                [key: `bytes2[${string}]`]: undefined;
                [key: `bytes3[${string}]`]: undefined;
                [key: `bytes4[${string}]`]: undefined;
                [key: `bytes5[${string}]`]: undefined;
                [key: `bytes6[${string}]`]: undefined;
                [key: `bytes7[${string}]`]: undefined;
                [key: `bytes8[${string}]`]: undefined;
                [key: `bytes9[${string}]`]: undefined;
                [key: `bytes10[${string}]`]: undefined;
                [key: `bytes11[${string}]`]: undefined;
                [key: `bytes12[${string}]`]: undefined;
                [key: `bytes13[${string}]`]: undefined;
                [key: `bytes14[${string}]`]: undefined;
                [key: `bytes15[${string}]`]: undefined;
                [key: `bytes16[${string}]`]: undefined;
                [key: `bytes17[${string}]`]: undefined;
                [key: `bytes18[${string}]`]: undefined;
                [key: `bytes19[${string}]`]: undefined;
                [key: `bytes20[${string}]`]: undefined;
                [key: `bytes21[${string}]`]: undefined;
                [key: `bytes22[${string}]`]: undefined;
                [key: `bytes24[${string}]`]: undefined;
                [key: `bytes25[${string}]`]: undefined;
                [key: `bytes26[${string}]`]: undefined;
                [key: `bytes27[${string}]`]: undefined;
                [key: `bytes28[${string}]`]: undefined;
                [key: `bytes29[${string}]`]: undefined;
                [key: `bytes30[${string}]`]: undefined;
                [key: `bytes31[${string}]`]: undefined;
                [key: `bytes32[${string}]`]: undefined;
                [key: `int[${string}]`]: undefined;
                [key: `int8[${string}]`]: undefined;
                [key: `int16[${string}]`]: undefined;
                [key: `int24[${string}]`]: undefined;
                [key: `int32[${string}]`]: undefined;
                [key: `int40[${string}]`]: undefined;
                [key: `int48[${string}]`]: undefined;
                [key: `int56[${string}]`]: undefined;
                [key: `int64[${string}]`]: undefined;
                [key: `int72[${string}]`]: undefined;
                [key: `int80[${string}]`]: undefined;
                [key: `int88[${string}]`]: undefined;
                [key: `int96[${string}]`]: undefined;
                [key: `int104[${string}]`]: undefined;
                [key: `int112[${string}]`]: undefined;
                [key: `int120[${string}]`]: undefined;
                [key: `int128[${string}]`]: undefined;
                [key: `int136[${string}]`]: undefined;
                [key: `int144[${string}]`]: undefined;
                [key: `int152[${string}]`]: undefined;
                [key: `int160[${string}]`]: undefined;
                [key: `int168[${string}]`]: undefined;
                [key: `int176[${string}]`]: undefined;
                [key: `int184[${string}]`]: undefined;
                [key: `int192[${string}]`]: undefined;
                [key: `int200[${string}]`]: undefined;
                [key: `int208[${string}]`]: undefined;
                [key: `int216[${string}]`]: undefined;
                [key: `int224[${string}]`]: undefined;
                [key: `int232[${string}]`]: undefined;
                [key: `int240[${string}]`]: undefined;
                [key: `int248[${string}]`]: undefined;
                [key: `int256[${string}]`]: undefined;
                [key: `uint[${string}]`]: undefined;
                [key: `uint8[${string}]`]: undefined;
                [key: `uint16[${string}]`]: undefined;
                [key: `uint24[${string}]`]: undefined;
                [key: `uint32[${string}]`]: undefined;
                [key: `uint40[${string}]`]: undefined;
                [key: `uint48[${string}]`]: undefined;
                [key: `uint56[${string}]`]: undefined;
                [key: `uint64[${string}]`]: undefined;
                [key: `uint72[${string}]`]: undefined;
                [key: `uint80[${string}]`]: undefined;
                [key: `uint88[${string}]`]: undefined;
                [key: `uint96[${string}]`]: undefined;
                [key: `uint104[${string}]`]: undefined;
                [key: `uint112[${string}]`]: undefined;
                [key: `uint120[${string}]`]: undefined;
                [key: `uint128[${string}]`]: undefined;
                [key: `uint136[${string}]`]: undefined;
                [key: `uint144[${string}]`]: undefined;
                [key: `uint152[${string}]`]: undefined;
                [key: `uint160[${string}]`]: undefined;
                [key: `uint168[${string}]`]: undefined;
                [key: `uint176[${string}]`]: undefined;
                [key: `uint184[${string}]`]: undefined;
                [key: `uint192[${string}]`]: undefined;
                [key: `uint200[${string}]`]: undefined;
                [key: `uint208[${string}]`]: undefined;
                [key: `uint216[${string}]`]: undefined;
                [key: `uint224[${string}]`]: undefined;
                [key: `uint232[${string}]`]: undefined;
                [key: `uint240[${string}]`]: undefined;
                [key: `uint248[${string}]`]: undefined;
                [key: `uint256[${string}]`]: undefined;
            }
            | { [key: string]: unknown },
        primaryType extends string,
    >(
        args: SignTypedDataParameters<
            typedData,
            primaryType,
            undefined
            | 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!',
    },
    })
  • 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 })
  • 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',
    },
    })
  • writeContract: <
        const abi extends Abi
        | readonly unknown[],
        functionName extends string,
        args extends unknown,
        chainOverride extends undefined | Chain = undefined,
    >(
        args: WriteContractParameters<
            abi,
            functionName,
            args,
            undefined
            | Chain,
            undefined | 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)