ChainSig.js Documentation - v1.1.6
    Preparing search index...

    Implementation of the ChainAdapter interface for EVM-compatible networks. Handles interactions with Ethereum Virtual Machine based blockchains like Ethereum, BSC, Polygon, etc.

    Hierarchy (View Summary)

    Index

    Constructors

    • Creates a new EVM chain instance

      Parameters

      • params: {
            publicClient: {
                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>,
                        >,
                >(
                    fn: (
                        client: Client<
                            Transport,
                            undefined
                            | Chain,
                            undefined,
                            PublicRpcSchema,
                            PublicActions<Transport, undefined | Chain>,
                        >,
                    ) => client,
                ) => Client<
                    Transport,
                    undefined
                    | Chain,
                    undefined,
                    PublicRpcSchema,
                    { [K in string | number | symbol]: client[K] } & PublicActions<
                        Transport,
                        undefined
                        | Chain,
                    >,
                >;
                account: undefined;
                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<PublicRpcSchema>;
                transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
                type: string;
                uid: string;
                call: (
                    parameters: CallParameters<undefined | Chain>,
                ) => Promise<CallReturnType>;
                createAccessList: (
                    parameters: CreateAccessListParameters<undefined | Chain>,
                ) => Promise<{ accessList: AccessList; gasUsed: bigint }>;
                createBlockFilter: () => Promise<
                    {
                        id: `0x${string}`;
                        request: EIP1193RequestFn<
                            readonly [
                                {
                                    Method: "eth_getFilterChanges";
                                    Parameters: [filterId: `0x${string}`];
                                    ReturnType: `0x${(...)}`[] | RpcLog[];
                                },
                                {
                                    Method: "eth_getFilterLogs";
                                    Parameters: [filterId: `0x${string}`];
                                    ReturnType: RpcLog[];
                                },
                                {
                                    Method: "eth_uninstallFilter";
                                    Parameters: [filterId: `0x${string}`];
                                    ReturnType: boolean;
                                },
                            ],
                        >;
                        type: "block";
                    },
                >;
                createContractEventFilter: <
                    const abi extends Abi
                    | readonly unknown[],
                    eventName extends undefined | string,
                    args extends undefined | Record<string, unknown> | readonly unknown[],
                    strict extends undefined | boolean = undefined,
                    fromBlock extends undefined | bigint | BlockTag = undefined,
                    toBlock extends undefined | bigint | BlockTag = undefined,
                >(
                    args: CreateContractEventFilterParameters<
                        abi,
                        eventName,
                        args,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                ) => Promise<
                    CreateContractEventFilterReturnType<
                        abi,
                        eventName,
                        args,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                >;
                createEventFilter: <
                    const abiEvent extends undefined
                    | AbiEvent = undefined,
                    const abiEvents extends
                        undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                        ? [abiEvent<abiEvent>]
                        : undefined,
                    strict extends undefined
                    | boolean = undefined,
                    fromBlock extends undefined | bigint | BlockTag = undefined,
                    toBlock extends undefined | bigint | BlockTag = undefined,
                    _EventName extends undefined | string = MaybeAbiEventName<abiEvent>,
                    _Args extends
                        undefined | Record<string, unknown> | readonly unknown[] = undefined,
                >(
                    args?: CreateEventFilterParameters<
                        abiEvent,
                        abiEvents,
                        strict,
                        fromBlock,
                        toBlock,
                        _EventName,
                        _Args,
                    >,
                ) => Promise<
                    {
                        [K in string
                        | number
                        | symbol]: Filter<
                            "event",
                            abiEvents,
                            _EventName,
                            _Args,
                            strict,
                            fromBlock,
                            toBlock,
                        >[K]
                    },
                >;
                createPendingTransactionFilter: () => Promise<
                    {
                        id: `0x${string}`;
                        request: EIP1193RequestFn<
                            readonly [
                                {
                                    Method: "eth_getFilterChanges";
                                    Parameters: [filterId: `0x${string}`];
                                    ReturnType: `0x${(...)}`[] | RpcLog[];
                                },
                                {
                                    Method: "eth_getFilterLogs";
                                    Parameters: [filterId: `0x${string}`];
                                    ReturnType: RpcLog[];
                                },
                                {
                                    Method: "eth_uninstallFilter";
                                    Parameters: [filterId: `0x${string}`];
                                    ReturnType: boolean;
                                },
                            ],
                        >;
                        type: "transaction";
                    },
                >;
                estimateContractGas: <
                    chain extends undefined
                    | Chain,
                    const abi extends Abi | readonly unknown[],
                    functionName extends string,
                    args extends unknown,
                >(
                    args: EstimateContractGasParameters<abi, functionName, args, chain>,
                ) => Promise<bigint>;
                estimateGas: (
                    args: EstimateGasParameters<undefined | Chain>,
                ) => Promise<bigint>;
                getBalance: (args: GetBalanceParameters) => Promise<bigint>;
                getBlobBaseFee: () => Promise<bigint>;
                getBlock: <
                    includeTransactions extends boolean = false,
                    blockTag extends BlockTag = "latest",
                >(
                    args?: GetBlockParameters<includeTransactions, blockTag>,
                ) => Promise<
                    {
                        baseFeePerGas: null
                        | bigint;
                        blobGasUsed: bigint;
                        difficulty: bigint;
                        excessBlobGas: bigint;
                        extraData: `0x${string}`;
                        gasLimit: bigint;
                        gasUsed: bigint;
                        hash: blockTag extends "pending" ? null : `0x${string}`;
                        logsBloom: blockTag extends "pending" ? null : `0x${string}`;
                        miner: `0x${string}`;
                        mixHash: `0x${string}`;
                        nonce: blockTag extends "pending" ? null : `0x${string}`;
                        number: blockTag extends "pending" ? null : bigint;
                        parentBeaconBlockRoot?: `0x${string}`;
                        parentHash: `0x${string}`;
                        receiptsRoot: `0x${string}`;
                        sealFields: `0x${string}`[];
                        sha3Uncles: `0x${string}`;
                        size: bigint;
                        stateRoot: `0x${string}`;
                        timestamp: bigint;
                        totalDifficulty: null | bigint;
                        transactionsRoot: `0x${string}`;
                        uncles: `0x${string}`[];
                        withdrawals?: Withdrawal[];
                        withdrawalsRoot?: `0x${string}`;
                        transactions: includeTransactions extends true
                            ? (
                                | {
                                    gasPrice: bigint;
                                    maxFeePerBlobGas?: undefined;
                                    maxFeePerGas?: undefined;
                                    maxPriorityFeePerGas?: undefined;
                                    blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : `0x${(...)}`;
                                    blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : bigint;
                                    from: `0x${string}`;
                                    gas: bigint;
                                    hash: `0x${string}`;
                                    input: `0x${string}`;
                                    nonce: number;
                                    r: `0x${string}`;
                                    s: `0x${string}`;
                                    to: null | `0x${(...)}`;
                                    transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : number;
                                    typeHex: null | `0x${(...)}`;
                                    v: bigint;
                                    value: bigint;
                                    accessList?: undefined;
                                    authorizationList?: undefined;
                                    blobVersionedHashes?: undefined;
                                    chainId?: number;
                                    yParity?: undefined;
                                    type: "legacy";
                                }
                                | {
                                    gasPrice: bigint;
                                    maxFeePerBlobGas?: undefined;
                                    maxFeePerGas?: undefined;
                                    maxPriorityFeePerGas?: undefined;
                                    blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : `0x${(...)}`;
                                    blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : bigint;
                                    from: `0x${string}`;
                                    gas: bigint;
                                    hash: `0x${string}`;
                                    input: `0x${string}`;
                                    nonce: number;
                                    r: `0x${string}`;
                                    s: `0x${string}`;
                                    to: null | `0x${(...)}`;
                                    transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : number;
                                    typeHex: null | `0x${(...)}`;
                                    v: bigint;
                                    value: bigint;
                                    yParity: number;
                                    accessList: AccessList;
                                    authorizationList?: undefined;
                                    blobVersionedHashes?: undefined;
                                    chainId: number;
                                    type: "eip2930";
                                }
                                | {
                                    gasPrice?: undefined;
                                    maxFeePerBlobGas?: undefined;
                                    maxFeePerGas: bigint;
                                    maxPriorityFeePerGas: bigint;
                                    blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : `0x${(...)}`;
                                    blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : bigint;
                                    from: `0x${string}`;
                                    gas: bigint;
                                    hash: `0x${string}`;
                                    input: `0x${string}`;
                                    nonce: number;
                                    r: `0x${string}`;
                                    s: `0x${string}`;
                                    to: null | `0x${(...)}`;
                                    transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : number;
                                    typeHex: null | `0x${(...)}`;
                                    v: bigint;
                                    value: bigint;
                                    yParity: number;
                                    accessList: AccessList;
                                    authorizationList?: undefined;
                                    blobVersionedHashes?: undefined;
                                    chainId: number;
                                    type: "eip1559";
                                }
                                | {
                                    gasPrice?: undefined;
                                    maxFeePerBlobGas: bigint;
                                    maxFeePerGas: bigint;
                                    maxPriorityFeePerGas: bigint;
                                    blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : `0x${(...)}`;
                                    blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : bigint;
                                    from: `0x${string}`;
                                    gas: bigint;
                                    hash: `0x${string}`;
                                    input: `0x${string}`;
                                    nonce: number;
                                    r: `0x${string}`;
                                    s: `0x${string}`;
                                    to: null | `0x${(...)}`;
                                    transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : number;
                                    typeHex: null | `0x${(...)}`;
                                    v: bigint;
                                    value: bigint;
                                    yParity: number;
                                    accessList: AccessList;
                                    authorizationList?: undefined;
                                    blobVersionedHashes: readonly `0x${(...)}`[];
                                    chainId: number;
                                    type: "eip4844";
                                }
                                | {
                                    gasPrice?: undefined;
                                    maxFeePerBlobGas?: undefined;
                                    maxFeePerGas: bigint;
                                    maxPriorityFeePerGas: bigint;
                                    blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : `0x${(...)}`;
                                    blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : bigint;
                                    from: `0x${string}`;
                                    gas: bigint;
                                    hash: `0x${string}`;
                                    input: `0x${string}`;
                                    nonce: number;
                                    r: `0x${string}`;
                                    s: `0x${string}`;
                                    to: null | `0x${(...)}`;
                                    transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                        ? null
                                        : number;
                                    typeHex: null | `0x${(...)}`;
                                    v: bigint;
                                    value: bigint;
                                    yParity: number;
                                    accessList: AccessList;
                                    authorizationList: SignedAuthorizationList;
                                    blobVersionedHashes?: undefined;
                                    chainId: number;
                                    type: "eip7702";
                                }
                            )[]
                            : `0x${string}`[];
                    },
                >;
                getBlockNumber: (args?: GetBlockNumberParameters) => Promise<bigint>;
                getBlockTransactionCount: (
                    args?: GetBlockTransactionCountParameters,
                ) => Promise<number>;
                getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>;
                getChainId: () => Promise<number>;
                getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>;
                getContractEvents: <
                    const abi extends Abi
                    | readonly unknown[],
                    eventName extends undefined | string = undefined,
                    strict extends undefined | boolean = undefined,
                    fromBlock extends undefined | bigint | BlockTag = undefined,
                    toBlock extends undefined | bigint | BlockTag = undefined,
                >(
                    args: GetContractEventsParameters<
                        abi,
                        eventName,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                ) => Promise<
                    GetContractEventsReturnType<
                        abi,
                        eventName,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                >;
                getEip712Domain: (
                    args: GetEip712DomainParameters,
                ) => Promise<GetEip712DomainReturnType>;
                getEnsAddress: (
                    args: {
                        coinType?: number;
                        gatewayUrls?: string[];
                        name: string;
                        strict?: boolean;
                        universalResolverAddress?: `0x${string}`;
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                    },
                ) => Promise<GetEnsAddressReturnType>;
                getEnsAvatar: (
                    args: {
                        assetGatewayUrls?: AssetGatewayUrls;
                        name: string;
                        gatewayUrls?: string[];
                        strict?: boolean;
                        universalResolverAddress?: `0x${string}`;
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                    },
                ) => Promise<GetEnsAvatarReturnType>;
                getEnsName: (
                    args: {
                        address: `0x${string}`;
                        gatewayUrls?: string[];
                        strict?: boolean;
                        universalResolverAddress?: `0x${string}`;
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                    },
                ) => Promise<GetEnsNameReturnType>;
                getEnsResolver: (
                    args: {
                        name: string;
                        universalResolverAddress?: `0x${string}`;
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                    },
                ) => Promise<`0x${string}`>;
                getEnsText: (
                    args: {
                        name: string;
                        gatewayUrls?: string[];
                        key: string;
                        strict?: boolean;
                        universalResolverAddress?: `0x${string}`;
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                    },
                ) => Promise<GetEnsTextReturnType>;
                getFeeHistory: (
                    args: GetFeeHistoryParameters,
                ) => Promise<GetFeeHistoryReturnType>;
                estimateFeesPerGas: <
                    chainOverride extends undefined
                    | Chain = undefined,
                    type extends FeeValuesType = "eip1559",
                >(
                    args?: EstimateFeesPerGasParameters<
                        undefined
                        | Chain,
                        chainOverride,
                        type,
                    >,
                ) => Promise<EstimateFeesPerGasReturnType<type>>;
                getFilterChanges: <
                    filterType extends FilterType,
                    const abi extends undefined | Abi | readonly unknown[],
                    eventName extends undefined | string,
                    strict extends undefined | boolean = undefined,
                    fromBlock extends undefined | bigint | BlockTag = undefined,
                    toBlock extends undefined | bigint | BlockTag = undefined,
                >(
                    args: GetFilterChangesParameters<
                        filterType,
                        abi,
                        eventName,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                ) => Promise<
                    GetFilterChangesReturnType<
                        filterType,
                        abi,
                        eventName,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                >;
                getFilterLogs: <
                    const abi extends undefined
                    | Abi
                    | readonly unknown[],
                    eventName extends undefined | string,
                    strict extends undefined | boolean = undefined,
                    fromBlock extends undefined | bigint | BlockTag = undefined,
                    toBlock extends undefined | bigint | BlockTag = undefined,
                >(
                    args: GetFilterLogsParameters<
                        abi,
                        eventName,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                ) => Promise<
                    GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>,
                >;
                getGasPrice: () => Promise<bigint>;
                getLogs: <
                    const abiEvent extends undefined
                    | AbiEvent = undefined,
                    const abiEvents extends
                        undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                        ? [abiEvent<abiEvent>]
                        : undefined,
                    strict extends undefined
                    | boolean = undefined,
                    fromBlock extends undefined | bigint | BlockTag = undefined,
                    toBlock extends undefined | bigint | BlockTag = undefined,
                >(
                    args?: GetLogsParameters<
                        abiEvent,
                        abiEvents,
                        strict,
                        fromBlock,
                        toBlock,
                    >,
                ) => Promise<
                    GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>,
                >;
                getProof: (args: GetProofParameters) => Promise<GetProofReturnType>;
                estimateMaxPriorityFeePerGas: <
                    chainOverride extends undefined
                    | Chain = undefined,
                >(
                    args?: { chain: null | chainOverride },
                ) => Promise<bigint>;
                getStorageAt: (
                    args: GetStorageAtParameters,
                ) => Promise<GetStorageAtReturnType>;
                getTransaction: <blockTag extends BlockTag = "latest">(
                    args: GetTransactionParameters<blockTag>,
                ) => Promise<
                    | {
                        gasPrice: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        blockHash: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : `0x${string}`;
                        blockNumber: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : bigint;
                        from: `0x${string}`;
                        gas: bigint;
                        hash: `0x${string}`;
                        input: `0x${string}`;
                        nonce: number;
                        r: `0x${string}`;
                        s: `0x${string}`;
                        to: null | `0x${string}`;
                        transactionIndex: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : number;
                        typeHex: null | `0x${string}`;
                        v: bigint;
                        value: bigint;
                        accessList?: undefined;
                        authorizationList?: undefined;
                        blobVersionedHashes?: undefined;
                        chainId?: number;
                        yParity?: undefined;
                        type: "legacy";
                    }
                    | {
                        gasPrice: bigint;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas?: undefined;
                        maxPriorityFeePerGas?: undefined;
                        blockHash: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : `0x${string}`;
                        blockNumber: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : bigint;
                        from: `0x${string}`;
                        gas: bigint;
                        hash: `0x${string}`;
                        input: `0x${string}`;
                        nonce: number;
                        r: `0x${string}`;
                        s: `0x${string}`;
                        to: null | `0x${string}`;
                        transactionIndex: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : number;
                        typeHex: null | `0x${string}`;
                        v: bigint;
                        value: bigint;
                        yParity: number;
                        accessList: AccessList;
                        authorizationList?: undefined;
                        blobVersionedHashes?: undefined;
                        chainId: number;
                        type: "eip2930";
                    }
                    | {
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas: bigint;
                        maxPriorityFeePerGas: bigint;
                        blockHash: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : `0x${string}`;
                        blockNumber: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : bigint;
                        from: `0x${string}`;
                        gas: bigint;
                        hash: `0x${string}`;
                        input: `0x${string}`;
                        nonce: number;
                        r: `0x${string}`;
                        s: `0x${string}`;
                        to: null | `0x${string}`;
                        transactionIndex: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : number;
                        typeHex: null | `0x${string}`;
                        v: bigint;
                        value: bigint;
                        yParity: number;
                        accessList: AccessList;
                        authorizationList?: undefined;
                        blobVersionedHashes?: undefined;
                        chainId: number;
                        type: "eip1559";
                    }
                    | {
                        gasPrice?: undefined;
                        maxFeePerBlobGas: bigint;
                        maxFeePerGas: bigint;
                        maxPriorityFeePerGas: bigint;
                        blockHash: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : `0x${string}`;
                        blockNumber: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : bigint;
                        from: `0x${string}`;
                        gas: bigint;
                        hash: `0x${string}`;
                        input: `0x${string}`;
                        nonce: number;
                        r: `0x${string}`;
                        s: `0x${string}`;
                        to: null | `0x${string}`;
                        transactionIndex: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : number;
                        typeHex: null | `0x${string}`;
                        v: bigint;
                        value: bigint;
                        yParity: number;
                        accessList: AccessList;
                        authorizationList?: undefined;
                        blobVersionedHashes: readonly `0x${string}`[];
                        chainId: number;
                        type: "eip4844";
                    }
                    | {
                        gasPrice?: undefined;
                        maxFeePerBlobGas?: undefined;
                        maxFeePerGas: bigint;
                        maxPriorityFeePerGas: bigint;
                        blockHash: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : `0x${string}`;
                        blockNumber: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : bigint;
                        from: `0x${string}`;
                        gas: bigint;
                        hash: `0x${string}`;
                        input: `0x${string}`;
                        nonce: number;
                        r: `0x${string}`;
                        s: `0x${string}`;
                        to: null | `0x${string}`;
                        transactionIndex: (blockTag extends "pending" ? true : false) extends true
                            ? null
                            : number;
                        typeHex: null | `0x${string}`;
                        v: bigint;
                        value: bigint;
                        yParity: number;
                        accessList: AccessList;
                        authorizationList: SignedAuthorizationList;
                        blobVersionedHashes?: undefined;
                        chainId: number;
                        type: "eip7702";
                    },
                >;
                getTransactionConfirmations: (
                    args: GetTransactionConfirmationsParameters<undefined | Chain>,
                ) => Promise<bigint>;
                getTransactionCount: (
                    args: GetTransactionCountParameters,
                ) => Promise<number>;
                getTransactionReceipt: (
                    args: GetTransactionReceiptParameters,
                ) => Promise<TransactionReceipt>;
                multicall: <
                    const contracts extends readonly unknown[],
                    allowFailure extends boolean = true,
                >(
                    args: MulticallParameters<contracts, allowFailure>,
                ) => Promise<MulticallReturnType<contracts, allowFailure>>;
                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]
                    },
                >;
                readContract: <
                    const abi extends Abi
                    | readonly unknown[],
                    functionName extends string,
                    const args extends unknown,
                >(
                    args: ReadContractParameters<abi, functionName, args>,
                ) => Promise<ReadContractReturnType<abi, functionName, args>>;
                sendRawTransaction: (
                    args: SendRawTransactionParameters,
                ) => Promise<`0x${string}`>;
                simulate: <const calls extends readonly unknown[]>(
                    args: SimulateBlocksParameters<calls>,
                ) => Promise<SimulateBlocksReturnType<calls>>;
                simulateBlocks: <const calls extends readonly unknown[]>(
                    args: SimulateBlocksParameters<calls>,
                ) => Promise<SimulateBlocksReturnType<calls>>;
                simulateCalls: <const calls extends readonly unknown[]>(
                    args: SimulateCallsParameters<calls>,
                ) => Promise<SimulateCallsReturnType<calls>>;
                simulateContract: <
                    const abi extends Abi
                    | readonly unknown[],
                    functionName extends string,
                    const args extends unknown,
                    chainOverride extends undefined | Chain,
                    accountOverride extends undefined | `0x${string}` | Account = undefined,
                >(
                    args: SimulateContractParameters<
                        abi,
                        functionName,
                        args,
                        undefined
                        | Chain,
                        chainOverride,
                        accountOverride,
                    >,
                ) => Promise<
                    SimulateContractReturnType<
                        abi,
                        functionName,
                        args,
                        undefined
                        | Chain,
                        undefined | Account,
                        chainOverride,
                        accountOverride,
                    >,
                >;
                verifyMessage: (
                    args: {
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                        address: `0x${string}`;
                        signature: `0x${string}` | ByteArray | Signature;
                        universalSignatureVerifierAddress?: `0x${string}`;
                        factory?: `0x${string}`;
                        factoryData?: `0x${string}`;
                        message: SignableMessage;
                    },
                ) => Promise<boolean>;
                verifySiweMessage: (
                    args: {
                        blockNumber?: bigint;
                        blockTag?: BlockTag;
                        message: string;
                        signature: `0x${string}`;
                        address?: `0x${string}`;
                        domain?: string;
                        nonce?: string;
                        scheme?: string;
                        time?: Date;
                    },
                ) => Promise<boolean>;
                verifyTypedData: (args: VerifyTypedDataParameters) => Promise<boolean>;
                uninstallFilter: (args: UninstallFilterParameters) => Promise<boolean>;
                waitForTransactionReceipt: (
                    args: WaitForTransactionReceiptParameters<undefined | Chain>,
                ) => Promise<TransactionReceipt>;
                watchBlockNumber: (
                    args: WatchBlockNumberParameters,
                ) => WatchBlockNumberReturnType;
                watchBlocks: <
                    includeTransactions extends boolean = false,
                    blockTag extends BlockTag = "latest",
                >(
                    args: WatchBlocksParameters<
                        Transport,
                        undefined
                        | Chain,
                        includeTransactions,
                        blockTag,
                    >,
                ) => WatchBlocksReturnType;
                watchContractEvent: <
                    const abi extends Abi
                    | readonly unknown[],
                    eventName extends string,
                    strict extends undefined | boolean = undefined,
                >(
                    args: WatchContractEventParameters<abi, eventName, strict, Transport>,
                ) => WatchContractEventReturnType;
                watchEvent: <
                    const abiEvent extends undefined
                    | AbiEvent = undefined,
                    const abiEvents extends
                        undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                        ? [abiEvent<abiEvent>]
                        : undefined,
                    strict extends undefined
                    | boolean = undefined,
                >(
                    args: WatchEventParameters<abiEvent, abiEvents, strict, Transport>,
                ) => WatchEventReturnType;
                watchPendingTransactions: (
                    args: WatchPendingTransactionsParameters<Transport>,
                ) => WatchPendingTransactionsReturnType;
            };
            contract: ChainSignatureContract;
        }

        Configuration parameters

        • publicClient: {
              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>,
                      >,
              >(
                  fn: (
                      client: Client<
                          Transport,
                          undefined
                          | Chain,
                          undefined,
                          PublicRpcSchema,
                          PublicActions<Transport, undefined | Chain>,
                      >,
                  ) => client,
              ) => Client<
                  Transport,
                  undefined
                  | Chain,
                  undefined,
                  PublicRpcSchema,
                  { [K in string | number | symbol]: client[K] } & PublicActions<
                      Transport,
                      undefined
                      | Chain,
                  >,
              >;
              account: undefined;
              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<PublicRpcSchema>;
              transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
              type: string;
              uid: string;
              call: (
                  parameters: CallParameters<undefined | Chain>,
              ) => Promise<CallReturnType>;
              createAccessList: (
                  parameters: CreateAccessListParameters<undefined | Chain>,
              ) => Promise<{ accessList: AccessList; gasUsed: bigint }>;
              createBlockFilter: () => Promise<
                  {
                      id: `0x${string}`;
                      request: EIP1193RequestFn<
                          readonly [
                              {
                                  Method: "eth_getFilterChanges";
                                  Parameters: [filterId: `0x${string}`];
                                  ReturnType: `0x${(...)}`[] | RpcLog[];
                              },
                              {
                                  Method: "eth_getFilterLogs";
                                  Parameters: [filterId: `0x${string}`];
                                  ReturnType: RpcLog[];
                              },
                              {
                                  Method: "eth_uninstallFilter";
                                  Parameters: [filterId: `0x${string}`];
                                  ReturnType: boolean;
                              },
                          ],
                      >;
                      type: "block";
                  },
              >;
              createContractEventFilter: <
                  const abi extends Abi
                  | readonly unknown[],
                  eventName extends undefined | string,
                  args extends undefined | Record<string, unknown> | readonly unknown[],
                  strict extends undefined | boolean = undefined,
                  fromBlock extends undefined | bigint | BlockTag = undefined,
                  toBlock extends undefined | bigint | BlockTag = undefined,
              >(
                  args: CreateContractEventFilterParameters<
                      abi,
                      eventName,
                      args,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              ) => Promise<
                  CreateContractEventFilterReturnType<
                      abi,
                      eventName,
                      args,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              >;
              createEventFilter: <
                  const abiEvent extends undefined
                  | AbiEvent = undefined,
                  const abiEvents extends
                      undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                      ? [abiEvent<abiEvent>]
                      : undefined,
                  strict extends undefined
                  | boolean = undefined,
                  fromBlock extends undefined | bigint | BlockTag = undefined,
                  toBlock extends undefined | bigint | BlockTag = undefined,
                  _EventName extends undefined | string = MaybeAbiEventName<abiEvent>,
                  _Args extends
                      undefined | Record<string, unknown> | readonly unknown[] = undefined,
              >(
                  args?: CreateEventFilterParameters<
                      abiEvent,
                      abiEvents,
                      strict,
                      fromBlock,
                      toBlock,
                      _EventName,
                      _Args,
                  >,
              ) => Promise<
                  {
                      [K in string
                      | number
                      | symbol]: Filter<
                          "event",
                          abiEvents,
                          _EventName,
                          _Args,
                          strict,
                          fromBlock,
                          toBlock,
                      >[K]
                  },
              >;
              createPendingTransactionFilter: () => Promise<
                  {
                      id: `0x${string}`;
                      request: EIP1193RequestFn<
                          readonly [
                              {
                                  Method: "eth_getFilterChanges";
                                  Parameters: [filterId: `0x${string}`];
                                  ReturnType: `0x${(...)}`[] | RpcLog[];
                              },
                              {
                                  Method: "eth_getFilterLogs";
                                  Parameters: [filterId: `0x${string}`];
                                  ReturnType: RpcLog[];
                              },
                              {
                                  Method: "eth_uninstallFilter";
                                  Parameters: [filterId: `0x${string}`];
                                  ReturnType: boolean;
                              },
                          ],
                      >;
                      type: "transaction";
                  },
              >;
              estimateContractGas: <
                  chain extends undefined
                  | Chain,
                  const abi extends Abi | readonly unknown[],
                  functionName extends string,
                  args extends unknown,
              >(
                  args: EstimateContractGasParameters<abi, functionName, args, chain>,
              ) => Promise<bigint>;
              estimateGas: (
                  args: EstimateGasParameters<undefined | Chain>,
              ) => Promise<bigint>;
              getBalance: (args: GetBalanceParameters) => Promise<bigint>;
              getBlobBaseFee: () => Promise<bigint>;
              getBlock: <
                  includeTransactions extends boolean = false,
                  blockTag extends BlockTag = "latest",
              >(
                  args?: GetBlockParameters<includeTransactions, blockTag>,
              ) => Promise<
                  {
                      baseFeePerGas: null
                      | bigint;
                      blobGasUsed: bigint;
                      difficulty: bigint;
                      excessBlobGas: bigint;
                      extraData: `0x${string}`;
                      gasLimit: bigint;
                      gasUsed: bigint;
                      hash: blockTag extends "pending" ? null : `0x${string}`;
                      logsBloom: blockTag extends "pending" ? null : `0x${string}`;
                      miner: `0x${string}`;
                      mixHash: `0x${string}`;
                      nonce: blockTag extends "pending" ? null : `0x${string}`;
                      number: blockTag extends "pending" ? null : bigint;
                      parentBeaconBlockRoot?: `0x${string}`;
                      parentHash: `0x${string}`;
                      receiptsRoot: `0x${string}`;
                      sealFields: `0x${string}`[];
                      sha3Uncles: `0x${string}`;
                      size: bigint;
                      stateRoot: `0x${string}`;
                      timestamp: bigint;
                      totalDifficulty: null | bigint;
                      transactionsRoot: `0x${string}`;
                      uncles: `0x${string}`[];
                      withdrawals?: Withdrawal[];
                      withdrawalsRoot?: `0x${string}`;
                      transactions: includeTransactions extends true
                          ? (
                              | {
                                  gasPrice: bigint;
                                  maxFeePerBlobGas?: undefined;
                                  maxFeePerGas?: undefined;
                                  maxPriorityFeePerGas?: undefined;
                                  blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : `0x${(...)}`;
                                  blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : bigint;
                                  from: `0x${string}`;
                                  gas: bigint;
                                  hash: `0x${string}`;
                                  input: `0x${string}`;
                                  nonce: number;
                                  r: `0x${string}`;
                                  s: `0x${string}`;
                                  to: null | `0x${(...)}`;
                                  transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : number;
                                  typeHex: null | `0x${(...)}`;
                                  v: bigint;
                                  value: bigint;
                                  accessList?: undefined;
                                  authorizationList?: undefined;
                                  blobVersionedHashes?: undefined;
                                  chainId?: number;
                                  yParity?: undefined;
                                  type: "legacy";
                              }
                              | {
                                  gasPrice: bigint;
                                  maxFeePerBlobGas?: undefined;
                                  maxFeePerGas?: undefined;
                                  maxPriorityFeePerGas?: undefined;
                                  blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : `0x${(...)}`;
                                  blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : bigint;
                                  from: `0x${string}`;
                                  gas: bigint;
                                  hash: `0x${string}`;
                                  input: `0x${string}`;
                                  nonce: number;
                                  r: `0x${string}`;
                                  s: `0x${string}`;
                                  to: null | `0x${(...)}`;
                                  transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : number;
                                  typeHex: null | `0x${(...)}`;
                                  v: bigint;
                                  value: bigint;
                                  yParity: number;
                                  accessList: AccessList;
                                  authorizationList?: undefined;
                                  blobVersionedHashes?: undefined;
                                  chainId: number;
                                  type: "eip2930";
                              }
                              | {
                                  gasPrice?: undefined;
                                  maxFeePerBlobGas?: undefined;
                                  maxFeePerGas: bigint;
                                  maxPriorityFeePerGas: bigint;
                                  blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : `0x${(...)}`;
                                  blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : bigint;
                                  from: `0x${string}`;
                                  gas: bigint;
                                  hash: `0x${string}`;
                                  input: `0x${string}`;
                                  nonce: number;
                                  r: `0x${string}`;
                                  s: `0x${string}`;
                                  to: null | `0x${(...)}`;
                                  transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : number;
                                  typeHex: null | `0x${(...)}`;
                                  v: bigint;
                                  value: bigint;
                                  yParity: number;
                                  accessList: AccessList;
                                  authorizationList?: undefined;
                                  blobVersionedHashes?: undefined;
                                  chainId: number;
                                  type: "eip1559";
                              }
                              | {
                                  gasPrice?: undefined;
                                  maxFeePerBlobGas: bigint;
                                  maxFeePerGas: bigint;
                                  maxPriorityFeePerGas: bigint;
                                  blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : `0x${(...)}`;
                                  blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : bigint;
                                  from: `0x${string}`;
                                  gas: bigint;
                                  hash: `0x${string}`;
                                  input: `0x${string}`;
                                  nonce: number;
                                  r: `0x${string}`;
                                  s: `0x${string}`;
                                  to: null | `0x${(...)}`;
                                  transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : number;
                                  typeHex: null | `0x${(...)}`;
                                  v: bigint;
                                  value: bigint;
                                  yParity: number;
                                  accessList: AccessList;
                                  authorizationList?: undefined;
                                  blobVersionedHashes: readonly `0x${(...)}`[];
                                  chainId: number;
                                  type: "eip4844";
                              }
                              | {
                                  gasPrice?: undefined;
                                  maxFeePerBlobGas?: undefined;
                                  maxFeePerGas: bigint;
                                  maxPriorityFeePerGas: bigint;
                                  blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : `0x${(...)}`;
                                  blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : bigint;
                                  from: `0x${string}`;
                                  gas: bigint;
                                  hash: `0x${string}`;
                                  input: `0x${string}`;
                                  nonce: number;
                                  r: `0x${string}`;
                                  s: `0x${string}`;
                                  to: null | `0x${(...)}`;
                                  transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                      ? null
                                      : number;
                                  typeHex: null | `0x${(...)}`;
                                  v: bigint;
                                  value: bigint;
                                  yParity: number;
                                  accessList: AccessList;
                                  authorizationList: SignedAuthorizationList;
                                  blobVersionedHashes?: undefined;
                                  chainId: number;
                                  type: "eip7702";
                              }
                          )[]
                          : `0x${string}`[];
                  },
              >;
              getBlockNumber: (args?: GetBlockNumberParameters) => Promise<bigint>;
              getBlockTransactionCount: (
                  args?: GetBlockTransactionCountParameters,
              ) => Promise<number>;
              getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>;
              getChainId: () => Promise<number>;
              getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>;
              getContractEvents: <
                  const abi extends Abi
                  | readonly unknown[],
                  eventName extends undefined | string = undefined,
                  strict extends undefined | boolean = undefined,
                  fromBlock extends undefined | bigint | BlockTag = undefined,
                  toBlock extends undefined | bigint | BlockTag = undefined,
              >(
                  args: GetContractEventsParameters<
                      abi,
                      eventName,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              ) => Promise<
                  GetContractEventsReturnType<abi, eventName, strict, fromBlock, toBlock>,
              >;
              getEip712Domain: (
                  args: GetEip712DomainParameters,
              ) => Promise<GetEip712DomainReturnType>;
              getEnsAddress: (
                  args: {
                      coinType?: number;
                      gatewayUrls?: string[];
                      name: string;
                      strict?: boolean;
                      universalResolverAddress?: `0x${string}`;
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                  },
              ) => Promise<GetEnsAddressReturnType>;
              getEnsAvatar: (
                  args: {
                      assetGatewayUrls?: AssetGatewayUrls;
                      name: string;
                      gatewayUrls?: string[];
                      strict?: boolean;
                      universalResolverAddress?: `0x${string}`;
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                  },
              ) => Promise<GetEnsAvatarReturnType>;
              getEnsName: (
                  args: {
                      address: `0x${string}`;
                      gatewayUrls?: string[];
                      strict?: boolean;
                      universalResolverAddress?: `0x${string}`;
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                  },
              ) => Promise<GetEnsNameReturnType>;
              getEnsResolver: (
                  args: {
                      name: string;
                      universalResolverAddress?: `0x${string}`;
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                  },
              ) => Promise<`0x${string}`>;
              getEnsText: (
                  args: {
                      name: string;
                      gatewayUrls?: string[];
                      key: string;
                      strict?: boolean;
                      universalResolverAddress?: `0x${string}`;
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                  },
              ) => Promise<GetEnsTextReturnType>;
              getFeeHistory: (
                  args: GetFeeHistoryParameters,
              ) => Promise<GetFeeHistoryReturnType>;
              estimateFeesPerGas: <
                  chainOverride extends undefined
                  | Chain = undefined,
                  type extends FeeValuesType = "eip1559",
              >(
                  args?: EstimateFeesPerGasParameters<
                      undefined
                      | Chain,
                      chainOverride,
                      type,
                  >,
              ) => Promise<EstimateFeesPerGasReturnType<type>>;
              getFilterChanges: <
                  filterType extends FilterType,
                  const abi extends undefined | Abi | readonly unknown[],
                  eventName extends undefined | string,
                  strict extends undefined | boolean = undefined,
                  fromBlock extends undefined | bigint | BlockTag = undefined,
                  toBlock extends undefined | bigint | BlockTag = undefined,
              >(
                  args: GetFilterChangesParameters<
                      filterType,
                      abi,
                      eventName,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              ) => Promise<
                  GetFilterChangesReturnType<
                      filterType,
                      abi,
                      eventName,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              >;
              getFilterLogs: <
                  const abi extends undefined
                  | Abi
                  | readonly unknown[],
                  eventName extends undefined | string,
                  strict extends undefined | boolean = undefined,
                  fromBlock extends undefined | bigint | BlockTag = undefined,
                  toBlock extends undefined | bigint | BlockTag = undefined,
              >(
                  args: GetFilterLogsParameters<
                      abi,
                      eventName,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              ) => Promise<
                  GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>,
              >;
              getGasPrice: () => Promise<bigint>;
              getLogs: <
                  const abiEvent extends undefined
                  | AbiEvent = undefined,
                  const abiEvents extends
                      undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                      ? [abiEvent<abiEvent>]
                      : undefined,
                  strict extends undefined
                  | boolean = undefined,
                  fromBlock extends undefined | bigint | BlockTag = undefined,
                  toBlock extends undefined | bigint | BlockTag = undefined,
              >(
                  args?: GetLogsParameters<
                      abiEvent,
                      abiEvents,
                      strict,
                      fromBlock,
                      toBlock,
                  >,
              ) => Promise<
                  GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>,
              >;
              getProof: (args: GetProofParameters) => Promise<GetProofReturnType>;
              estimateMaxPriorityFeePerGas: <
                  chainOverride extends undefined
                  | Chain = undefined,
              >(
                  args?: { chain: null | chainOverride },
              ) => Promise<bigint>;
              getStorageAt: (
                  args: GetStorageAtParameters,
              ) => Promise<GetStorageAtReturnType>;
              getTransaction: <blockTag extends BlockTag = "latest">(
                  args: GetTransactionParameters<blockTag>,
              ) => Promise<
                  | {
                      gasPrice: bigint;
                      maxFeePerBlobGas?: undefined;
                      maxFeePerGas?: undefined;
                      maxPriorityFeePerGas?: undefined;
                      blockHash: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : `0x${string}`;
                      blockNumber: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : bigint;
                      from: `0x${string}`;
                      gas: bigint;
                      hash: `0x${string}`;
                      input: `0x${string}`;
                      nonce: number;
                      r: `0x${string}`;
                      s: `0x${string}`;
                      to: null | `0x${string}`;
                      transactionIndex: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : number;
                      typeHex: null | `0x${string}`;
                      v: bigint;
                      value: bigint;
                      accessList?: undefined;
                      authorizationList?: undefined;
                      blobVersionedHashes?: undefined;
                      chainId?: number;
                      yParity?: undefined;
                      type: "legacy";
                  }
                  | {
                      gasPrice: bigint;
                      maxFeePerBlobGas?: undefined;
                      maxFeePerGas?: undefined;
                      maxPriorityFeePerGas?: undefined;
                      blockHash: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : `0x${string}`;
                      blockNumber: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : bigint;
                      from: `0x${string}`;
                      gas: bigint;
                      hash: `0x${string}`;
                      input: `0x${string}`;
                      nonce: number;
                      r: `0x${string}`;
                      s: `0x${string}`;
                      to: null | `0x${string}`;
                      transactionIndex: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : number;
                      typeHex: null | `0x${string}`;
                      v: bigint;
                      value: bigint;
                      yParity: number;
                      accessList: AccessList;
                      authorizationList?: undefined;
                      blobVersionedHashes?: undefined;
                      chainId: number;
                      type: "eip2930";
                  }
                  | {
                      gasPrice?: undefined;
                      maxFeePerBlobGas?: undefined;
                      maxFeePerGas: bigint;
                      maxPriorityFeePerGas: bigint;
                      blockHash: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : `0x${string}`;
                      blockNumber: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : bigint;
                      from: `0x${string}`;
                      gas: bigint;
                      hash: `0x${string}`;
                      input: `0x${string}`;
                      nonce: number;
                      r: `0x${string}`;
                      s: `0x${string}`;
                      to: null | `0x${string}`;
                      transactionIndex: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : number;
                      typeHex: null | `0x${string}`;
                      v: bigint;
                      value: bigint;
                      yParity: number;
                      accessList: AccessList;
                      authorizationList?: undefined;
                      blobVersionedHashes?: undefined;
                      chainId: number;
                      type: "eip1559";
                  }
                  | {
                      gasPrice?: undefined;
                      maxFeePerBlobGas: bigint;
                      maxFeePerGas: bigint;
                      maxPriorityFeePerGas: bigint;
                      blockHash: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : `0x${string}`;
                      blockNumber: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : bigint;
                      from: `0x${string}`;
                      gas: bigint;
                      hash: `0x${string}`;
                      input: `0x${string}`;
                      nonce: number;
                      r: `0x${string}`;
                      s: `0x${string}`;
                      to: null | `0x${string}`;
                      transactionIndex: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : number;
                      typeHex: null | `0x${string}`;
                      v: bigint;
                      value: bigint;
                      yParity: number;
                      accessList: AccessList;
                      authorizationList?: undefined;
                      blobVersionedHashes: readonly `0x${string}`[];
                      chainId: number;
                      type: "eip4844";
                  }
                  | {
                      gasPrice?: undefined;
                      maxFeePerBlobGas?: undefined;
                      maxFeePerGas: bigint;
                      maxPriorityFeePerGas: bigint;
                      blockHash: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : `0x${string}`;
                      blockNumber: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : bigint;
                      from: `0x${string}`;
                      gas: bigint;
                      hash: `0x${string}`;
                      input: `0x${string}`;
                      nonce: number;
                      r: `0x${string}`;
                      s: `0x${string}`;
                      to: null | `0x${string}`;
                      transactionIndex: (blockTag extends "pending" ? true : false) extends true
                          ? null
                          : number;
                      typeHex: null | `0x${string}`;
                      v: bigint;
                      value: bigint;
                      yParity: number;
                      accessList: AccessList;
                      authorizationList: SignedAuthorizationList;
                      blobVersionedHashes?: undefined;
                      chainId: number;
                      type: "eip7702";
                  },
              >;
              getTransactionConfirmations: (
                  args: GetTransactionConfirmationsParameters<undefined | Chain>,
              ) => Promise<bigint>;
              getTransactionCount: (
                  args: GetTransactionCountParameters,
              ) => Promise<number>;
              getTransactionReceipt: (
                  args: GetTransactionReceiptParameters,
              ) => Promise<TransactionReceipt>;
              multicall: <
                  const contracts extends readonly unknown[],
                  allowFailure extends boolean = true,
              >(
                  args: MulticallParameters<contracts, allowFailure>,
              ) => Promise<MulticallReturnType<contracts, allowFailure>>;
              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]
                  },
              >;
              readContract: <
                  const abi extends Abi
                  | readonly unknown[],
                  functionName extends string,
                  const args extends unknown,
              >(
                  args: ReadContractParameters<abi, functionName, args>,
              ) => Promise<ReadContractReturnType<abi, functionName, args>>;
              sendRawTransaction: (
                  args: SendRawTransactionParameters,
              ) => Promise<`0x${string}`>;
              simulate: <const calls extends readonly unknown[]>(
                  args: SimulateBlocksParameters<calls>,
              ) => Promise<SimulateBlocksReturnType<calls>>;
              simulateBlocks: <const calls extends readonly unknown[]>(
                  args: SimulateBlocksParameters<calls>,
              ) => Promise<SimulateBlocksReturnType<calls>>;
              simulateCalls: <const calls extends readonly unknown[]>(
                  args: SimulateCallsParameters<calls>,
              ) => Promise<SimulateCallsReturnType<calls>>;
              simulateContract: <
                  const abi extends Abi
                  | readonly unknown[],
                  functionName extends string,
                  const args extends unknown,
                  chainOverride extends undefined | Chain,
                  accountOverride extends undefined | `0x${string}` | Account = undefined,
              >(
                  args: SimulateContractParameters<
                      abi,
                      functionName,
                      args,
                      undefined
                      | Chain,
                      chainOverride,
                      accountOverride,
                  >,
              ) => Promise<
                  SimulateContractReturnType<
                      abi,
                      functionName,
                      args,
                      undefined
                      | Chain,
                      undefined | Account,
                      chainOverride,
                      accountOverride,
                  >,
              >;
              verifyMessage: (
                  args: {
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                      address: `0x${string}`;
                      signature: `0x${string}` | ByteArray | Signature;
                      universalSignatureVerifierAddress?: `0x${string}`;
                      factory?: `0x${string}`;
                      factoryData?: `0x${string}`;
                      message: SignableMessage;
                  },
              ) => Promise<boolean>;
              verifySiweMessage: (
                  args: {
                      blockNumber?: bigint;
                      blockTag?: BlockTag;
                      message: string;
                      signature: `0x${string}`;
                      address?: `0x${string}`;
                      domain?: string;
                      nonce?: string;
                      scheme?: string;
                      time?: Date;
                  },
              ) => Promise<boolean>;
              verifyTypedData: (args: VerifyTypedDataParameters) => Promise<boolean>;
              uninstallFilter: (args: UninstallFilterParameters) => Promise<boolean>;
              waitForTransactionReceipt: (
                  args: WaitForTransactionReceiptParameters<undefined | Chain>,
              ) => Promise<TransactionReceipt>;
              watchBlockNumber: (
                  args: WatchBlockNumberParameters,
              ) => WatchBlockNumberReturnType;
              watchBlocks: <
                  includeTransactions extends boolean = false,
                  blockTag extends BlockTag = "latest",
              >(
                  args: WatchBlocksParameters<
                      Transport,
                      undefined
                      | Chain,
                      includeTransactions,
                      blockTag,
                  >,
              ) => WatchBlocksReturnType;
              watchContractEvent: <
                  const abi extends Abi
                  | readonly unknown[],
                  eventName extends string,
                  strict extends undefined | boolean = undefined,
              >(
                  args: WatchContractEventParameters<abi, eventName, strict, Transport>,
              ) => WatchContractEventReturnType;
              watchEvent: <
                  const abiEvent extends undefined
                  | AbiEvent = undefined,
                  const abiEvents extends
                      undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                      ? [abiEvent<abiEvent>]
                      : undefined,
                  strict extends undefined
                  | boolean = undefined,
              >(
                  args: WatchEventParameters<abiEvent, abiEvents, strict, Transport>,
              ) => WatchEventReturnType;
              watchPendingTransactions: (
                  args: WatchPendingTransactionsParameters<Transport>,
              ) => WatchPendingTransactionsReturnType;
          }

          A Viem PublicClient instance for reading from the blockchain

          • 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>,
                    >,
            >(
                fn: (
                    client: Client<
                        Transport,
                        undefined
                        | Chain,
                        undefined,
                        PublicRpcSchema,
                        PublicActions<Transport, undefined | Chain>,
                    >,
                ) => client,
            ) => Client<
                Transport,
                undefined
                | Chain,
                undefined,
                PublicRpcSchema,
                { [K in string | number | symbol]: client[K] } & PublicActions<
                    Transport,
                    undefined
                    | Chain,
                >,
            >
          • account: undefined

            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<PublicRpcSchema>

            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.

          • call: (parameters: CallParameters<undefined | Chain>) => Promise<CallReturnType>

            Executes a new message call immediately without submitting a transaction to the network.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const data = await client.call({
            account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
            data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            })
          • createAccessList: (
                parameters: CreateAccessListParameters<undefined | Chain>,
            ) => Promise<{ accessList: AccessList; gasUsed: bigint }>

            Creates an EIP-2930 access list that you can include in a transaction.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })

            const data = await client.createAccessList({
            data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            })
          • createBlockFilter: () => Promise<
                {
                    id: `0x${string}`;
                    request: EIP1193RequestFn<
                        readonly [
                            {
                                Method: "eth_getFilterChanges";
                                Parameters: [filterId: `0x${string}`];
                                ReturnType: `0x${(...)}`[] | RpcLog[];
                            },
                            {
                                Method: "eth_getFilterLogs";
                                Parameters: [filterId: `0x${string}`];
                                ReturnType: RpcLog[];
                            },
                            {
                                Method: "eth_uninstallFilter";
                                Parameters: [filterId: `0x${string}`];
                                ReturnType: boolean;
                            },
                        ],
                    >;
                    type: "block";
                },
            >

            Creates a Filter to listen for new block hashes that can be used with getFilterChanges.

            import { createPublicClient, createBlockFilter, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await createBlockFilter(client)
            // { id: "0x345a6572337856574a76364e457a4366", type: 'block' }
          • createContractEventFilter: <
                const abi extends Abi
                | readonly unknown[],
                eventName extends undefined | string,
                args extends undefined | Record<string, unknown> | readonly unknown[],
                strict extends undefined | boolean = undefined,
                fromBlock extends undefined | bigint | BlockTag = undefined,
                toBlock extends undefined | bigint | BlockTag = undefined,
            >(
                args: CreateContractEventFilterParameters<
                    abi,
                    eventName,
                    args,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            ) => Promise<
                CreateContractEventFilterReturnType<
                    abi,
                    eventName,
                    args,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            >

            Creates a Filter to retrieve event logs that can be used with getFilterChanges or getFilterLogs.

            import { createPublicClient, http, parseAbi } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createContractEventFilter({
            abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),
            })
          • createEventFilter: <
                const abiEvent extends undefined
                | AbiEvent = undefined,
                const abiEvents extends
                    undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                    ? [abiEvent<abiEvent>]
                    : undefined,
                strict extends undefined
                | boolean = undefined,
                fromBlock extends undefined | bigint | BlockTag = undefined,
                toBlock extends undefined | bigint | BlockTag = undefined,
                _EventName extends undefined | string = MaybeAbiEventName<abiEvent>,
                _Args extends
                    undefined | Record<string, unknown> | readonly unknown[] = undefined,
            >(
                args?: CreateEventFilterParameters<
                    abiEvent,
                    abiEvents,
                    strict,
                    fromBlock,
                    toBlock,
                    _EventName,
                    _Args,
                >,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: Filter<
                        "event",
                        abiEvents,
                        _EventName,
                        _Args,
                        strict,
                        fromBlock,
                        toBlock,
                    >[K]
                },
            >

            Creates a Filter to listen for new events that can be used with getFilterChanges.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createEventFilter({
            address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
            })
          • createPendingTransactionFilter: () => Promise<
                {
                    id: `0x${string}`;
                    request: EIP1193RequestFn<
                        readonly [
                            {
                                Method: "eth_getFilterChanges";
                                Parameters: [filterId: `0x${string}`];
                                ReturnType: `0x${(...)}`[] | RpcLog[];
                            },
                            {
                                Method: "eth_getFilterLogs";
                                Parameters: [filterId: `0x${string}`];
                                ReturnType: RpcLog[];
                            },
                            {
                                Method: "eth_uninstallFilter";
                                Parameters: [filterId: `0x${string}`];
                                ReturnType: boolean;
                            },
                        ],
                    >;
                    type: "transaction";
                },
            >

            Creates a Filter to listen for new pending transaction hashes that can be used with getFilterChanges.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createPendingTransactionFilter()
            // { id: "0x345a6572337856574a76364e457a4366", type: 'transaction' }
          • estimateContractGas: <
                chain extends undefined
                | Chain,
                const abi extends Abi | readonly unknown[],
                functionName extends string,
                args extends unknown,
            >(
                args: EstimateContractGasParameters<abi, functionName, args, chain>,
            ) => Promise<bigint>

            Estimates the gas required to successfully execute a contract write function call.

            Internally, uses a Public Client to call the estimateGas action with ABI-encoded data.

            import { createPublicClient, http, parseAbi } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const gas = await client.estimateContractGas({
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi: parseAbi(['function mint() public']),
            functionName: 'mint',
            account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
            })
          • estimateGas: (args: EstimateGasParameters<undefined | Chain>) => Promise<bigint>

            Estimates the gas necessary to complete a transaction without submitting it to the network.

            import { createPublicClient, http, parseEther } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const gasEstimate = await client.estimateGas({
            account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            value: parseEther('1'),
            })
          • getBalance: (args: GetBalanceParameters) => Promise<bigint>

            Returns the balance of an address in wei.

            You can convert the balance to ether units with formatEther.

            const balance = await getBalance(client, {
            address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
            blockTag: 'safe'
            })
            const balanceAsEther = formatEther(balance)
            // "6.942"
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const balance = await client.getBalance({
            address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
            })
            // 10000000000000000000000n (wei)
          • getBlobBaseFee: () => Promise<bigint>

            Returns the base fee per blob gas in wei.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { getBlobBaseFee } from 'viem/public'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const blobBaseFee = await client.getBlobBaseFee()
          • getBlock: <
                includeTransactions extends boolean = false,
                blockTag extends BlockTag = "latest",
            >(
                args?: GetBlockParameters<includeTransactions, blockTag>,
            ) => Promise<
                {
                    baseFeePerGas: null
                    | bigint;
                    blobGasUsed: bigint;
                    difficulty: bigint;
                    excessBlobGas: bigint;
                    extraData: `0x${string}`;
                    gasLimit: bigint;
                    gasUsed: bigint;
                    hash: blockTag extends "pending" ? null : `0x${string}`;
                    logsBloom: blockTag extends "pending" ? null : `0x${string}`;
                    miner: `0x${string}`;
                    mixHash: `0x${string}`;
                    nonce: blockTag extends "pending" ? null : `0x${string}`;
                    number: blockTag extends "pending" ? null : bigint;
                    parentBeaconBlockRoot?: `0x${string}`;
                    parentHash: `0x${string}`;
                    receiptsRoot: `0x${string}`;
                    sealFields: `0x${string}`[];
                    sha3Uncles: `0x${string}`;
                    size: bigint;
                    stateRoot: `0x${string}`;
                    timestamp: bigint;
                    totalDifficulty: null | bigint;
                    transactionsRoot: `0x${string}`;
                    uncles: `0x${string}`[];
                    withdrawals?: Withdrawal[];
                    withdrawalsRoot?: `0x${string}`;
                    transactions: includeTransactions extends true
                        ? (
                            | {
                                gasPrice: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : `0x${(...)}`;
                                blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : bigint;
                                from: `0x${string}`;
                                gas: bigint;
                                hash: `0x${string}`;
                                input: `0x${string}`;
                                nonce: number;
                                r: `0x${string}`;
                                s: `0x${string}`;
                                to: null | `0x${(...)}`;
                                transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : number;
                                typeHex: null | `0x${(...)}`;
                                v: bigint;
                                value: bigint;
                                accessList?: undefined;
                                authorizationList?: undefined;
                                blobVersionedHashes?: undefined;
                                chainId?: number;
                                yParity?: undefined;
                                type: "legacy";
                            }
                            | {
                                gasPrice: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : `0x${(...)}`;
                                blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : bigint;
                                from: `0x${string}`;
                                gas: bigint;
                                hash: `0x${string}`;
                                input: `0x${string}`;
                                nonce: number;
                                r: `0x${string}`;
                                s: `0x${string}`;
                                to: null | `0x${(...)}`;
                                transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : number;
                                typeHex: null | `0x${(...)}`;
                                v: bigint;
                                value: bigint;
                                yParity: number;
                                accessList: AccessList;
                                authorizationList?: undefined;
                                blobVersionedHashes?: undefined;
                                chainId: number;
                                type: "eip2930";
                            }
                            | {
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas: bigint;
                                maxPriorityFeePerGas: bigint;
                                blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : `0x${(...)}`;
                                blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : bigint;
                                from: `0x${string}`;
                                gas: bigint;
                                hash: `0x${string}`;
                                input: `0x${string}`;
                                nonce: number;
                                r: `0x${string}`;
                                s: `0x${string}`;
                                to: null | `0x${(...)}`;
                                transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : number;
                                typeHex: null | `0x${(...)}`;
                                v: bigint;
                                value: bigint;
                                yParity: number;
                                accessList: AccessList;
                                authorizationList?: undefined;
                                blobVersionedHashes?: undefined;
                                chainId: number;
                                type: "eip1559";
                            }
                            | {
                                gasPrice?: undefined;
                                maxFeePerBlobGas: bigint;
                                maxFeePerGas: bigint;
                                maxPriorityFeePerGas: bigint;
                                blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : `0x${(...)}`;
                                blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : bigint;
                                from: `0x${string}`;
                                gas: bigint;
                                hash: `0x${string}`;
                                input: `0x${string}`;
                                nonce: number;
                                r: `0x${string}`;
                                s: `0x${string}`;
                                to: null | `0x${(...)}`;
                                transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : number;
                                typeHex: null | `0x${(...)}`;
                                v: bigint;
                                value: bigint;
                                yParity: number;
                                accessList: AccessList;
                                authorizationList?: undefined;
                                blobVersionedHashes: readonly `0x${(...)}`[];
                                chainId: number;
                                type: "eip4844";
                            }
                            | {
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas: bigint;
                                maxPriorityFeePerGas: bigint;
                                blockHash: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : `0x${(...)}`;
                                blockNumber: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : bigint;
                                from: `0x${string}`;
                                gas: bigint;
                                hash: `0x${string}`;
                                input: `0x${string}`;
                                nonce: number;
                                r: `0x${string}`;
                                s: `0x${string}`;
                                to: null | `0x${(...)}`;
                                transactionIndex: ((...) extends (...) ? (...) : (...)) extends true
                                    ? null
                                    : number;
                                typeHex: null | `0x${(...)}`;
                                v: bigint;
                                value: bigint;
                                yParity: number;
                                accessList: AccessList;
                                authorizationList: SignedAuthorizationList;
                                blobVersionedHashes?: undefined;
                                chainId: number;
                                type: "eip7702";
                            }
                        )[]
                        : `0x${string}`[];
                },
            >

            Returns information about a block at a block number, hash, or tag.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const block = await client.getBlock()
          • getBlockNumber: (args?: GetBlockNumberParameters) => Promise<bigint>
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const blockNumber = await client.getBlockNumber()
            // 69420n
          • getBlockTransactionCount: (args?: GetBlockTransactionCountParameters) => Promise<number>

            Returns the number of Transactions at a block number, hash, or tag.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const count = await client.getBlockTransactionCount()
          • getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>

            Use getCode instead.

          • getChainId: () => Promise<number>

            Returns the chain ID associated with the current network.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const chainId = await client.getChainId()
            // 1
          • getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>

            Retrieves the bytecode at an address.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const code = await client.getCode({
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            })
          • getContractEvents: <
                const abi extends Abi
                | readonly unknown[],
                eventName extends undefined | string = undefined,
                strict extends undefined | boolean = undefined,
                fromBlock extends undefined | bigint | BlockTag = undefined,
                toBlock extends undefined | bigint | BlockTag = undefined,
            >(
                args: GetContractEventsParameters<
                    abi,
                    eventName,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            ) => Promise<
                GetContractEventsReturnType<abi, eventName, strict, fromBlock, toBlock>,
            >

            Returns a list of event logs emitted by a contract.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { wagmiAbi } from './abi'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const logs = await client.getContractEvents(client, {
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi: wagmiAbi,
            eventName: 'Transfer'
            })
          • getEip712Domain: (args: GetEip712DomainParameters) => Promise<GetEip712DomainReturnType>

            Reads the EIP-712 domain from a contract, based on the ERC-5267 specification.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })

            const domain = await client.getEip712Domain({
            address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
            })
            // {
            // domain: {
            // name: 'ExampleContract',
            // version: '1',
            // chainId: 1,
            // verifyingContract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
            // },
            // fields: '0x0f',
            // extensions: [],
            // }
          • getEnsAddress: (
                args: {
                    coinType?: number;
                    gatewayUrls?: string[];
                    name: string;
                    strict?: boolean;
                    universalResolverAddress?: `0x${string}`;
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                },
            ) => Promise<GetEnsAddressReturnType>

            Calls resolve(bytes, bytes) on ENS Universal Resolver Contract.

            Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to normalize ENS names with UTS-46 normalization before passing them to getEnsAddress. You can use the built-in normalize function for this.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { normalize } from 'viem/ens'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const ensAddress = await client.getEnsAddress({
            name: normalize('wevm.eth'),
            })
            // '0xd2135CfB216b74109775236E36d4b433F1DF507B'
          • getEnsAvatar: (
                args: {
                    assetGatewayUrls?: AssetGatewayUrls;
                    name: string;
                    gatewayUrls?: string[];
                    strict?: boolean;
                    universalResolverAddress?: `0x${string}`;
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                },
            ) => Promise<GetEnsAvatarReturnType>

            Calls getEnsText with key set to 'avatar'.

            Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to normalize ENS names with UTS-46 normalization before passing them to getEnsAddress. You can use the built-in normalize function for this.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { normalize } from 'viem/ens'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const ensAvatar = await client.getEnsAvatar({
            name: normalize('wevm.eth'),
            })
            // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'
          • getEnsName: (
                args: {
                    address: `0x${string}`;
                    gatewayUrls?: string[];
                    strict?: boolean;
                    universalResolverAddress?: `0x${string}`;
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                },
            ) => Promise<GetEnsNameReturnType>

            Calls reverse(bytes) on ENS Universal Resolver Contract to "reverse resolve" the address to the primary ENS name.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const ensName = await client.getEnsName({
            address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',
            })
            // 'wevm.eth'
          • getEnsResolver: (
                args: {
                    name: string;
                    universalResolverAddress?: `0x${string}`;
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                },
            ) => Promise<`0x${string}`>

            Calls findResolver(bytes) on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.

            Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to normalize ENS names with UTS-46 normalization before passing them to getEnsAddress. You can use the built-in normalize function for this.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { normalize } from 'viem/ens'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const resolverAddress = await client.getEnsResolver({
            name: normalize('wevm.eth'),
            })
            // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'
          • getEnsText: (
                args: {
                    name: string;
                    gatewayUrls?: string[];
                    key: string;
                    strict?: boolean;
                    universalResolverAddress?: `0x${string}`;
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                },
            ) => Promise<GetEnsTextReturnType>

            Calls resolve(bytes, bytes) on ENS Universal Resolver Contract.

            Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to normalize ENS names with UTS-46 normalization before passing them to getEnsAddress. You can use the built-in normalize function for this.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { normalize } from 'viem/ens'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const twitterRecord = await client.getEnsText({
            name: normalize('wevm.eth'),
            key: 'com.twitter',
            })
            // 'wevm_dev'
          • getFeeHistory: (args: GetFeeHistoryParameters) => Promise<GetFeeHistoryReturnType>

            Returns a collection of historical gas information.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const feeHistory = await client.getFeeHistory({
            blockCount: 4,
            rewardPercentiles: [25, 75],
            })
          • estimateFeesPerGas: <
                chainOverride extends undefined
                | Chain = undefined,
                type extends FeeValuesType = "eip1559",
            >(
                args?: EstimateFeesPerGasParameters<
                    undefined
                    | Chain,
                    chainOverride,
                    type,
                >,
            ) => Promise<EstimateFeesPerGasReturnType<type>>

            Returns an estimate for the fees per gas for a transaction to be included in the next block.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const maxPriorityFeePerGas = await client.estimateFeesPerGas()
            // { maxFeePerGas: ..., maxPriorityFeePerGas: ... }
          • getFilterChanges: <
                filterType extends FilterType,
                const abi extends undefined | Abi | readonly unknown[],
                eventName extends undefined | string,
                strict extends undefined | boolean = undefined,
                fromBlock extends undefined | bigint | BlockTag = undefined,
                toBlock extends undefined | bigint | BlockTag = undefined,
            >(
                args: GetFilterChangesParameters<
                    filterType,
                    abi,
                    eventName,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            ) => Promise<
                GetFilterChangesReturnType<
                    filterType,
                    abi,
                    eventName,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            >

            Returns a list of logs or hashes based on a Filter since the last time it was called.

            A Filter can be created from the following actions:

            Depending on the type of filter, the return value will be different:

            • If the filter was created with createContractEventFilter or createEventFilter, it returns a list of logs.
            • If the filter was created with createPendingTransactionFilter, it returns a list of transaction hashes.
            • If the filter was created with createBlockFilter, it returns a list of block hashes.
            // Blocks
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createBlockFilter()
            const hashes = await client.getFilterChanges({ filter })
            // Contract Events
            import { createPublicClient, http, parseAbi } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createContractEventFilter({
            address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
            abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),
            eventName: 'Transfer',
            })
            const logs = await client.getFilterChanges({ filter })
            // Raw Events
            import { createPublicClient, http, parseAbiItem } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createEventFilter({
            address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
            event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),
            })
            const logs = await client.getFilterChanges({ filter })
            // Transactions
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createPendingTransactionFilter()
            const hashes = await client.getFilterChanges({ filter })
          • getFilterLogs: <
                const abi extends undefined
                | Abi
                | readonly unknown[],
                eventName extends undefined | string,
                strict extends undefined | boolean = undefined,
                fromBlock extends undefined | bigint | BlockTag = undefined,
                toBlock extends undefined | bigint | BlockTag = undefined,
            >(
                args: GetFilterLogsParameters<
                    abi,
                    eventName,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            ) => Promise<
                GetFilterLogsReturnType<abi, eventName, strict, fromBlock, toBlock>,
            >

            Returns a list of event logs since the filter was created.

            getFilterLogs is only compatible with event filters.

            import { createPublicClient, http, parseAbiItem } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const filter = await client.createEventFilter({
            address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
            event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),
            })
            const logs = await client.getFilterLogs({ filter })
          • getGasPrice: () => Promise<bigint>

            Returns the current price of gas (in wei).

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const gasPrice = await client.getGasPrice()
          • getLogs: <
                const abiEvent extends undefined
                | AbiEvent = undefined,
                const abiEvents extends
                    undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                    ? [abiEvent<abiEvent>]
                    : undefined,
                strict extends undefined
                | boolean = undefined,
                fromBlock extends undefined | bigint | BlockTag = undefined,
                toBlock extends undefined | bigint | BlockTag = undefined,
            >(
                args?: GetLogsParameters<
                    abiEvent,
                    abiEvents,
                    strict,
                    fromBlock,
                    toBlock,
                >,
            ) => Promise<
                GetLogsReturnType<abiEvent, abiEvents, strict, fromBlock, toBlock>,
            >

            Returns a list of event logs matching the provided parameters.

            import { createPublicClient, http, parseAbiItem } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const logs = await client.getLogs()
          • getProof: (args: GetProofParameters) => Promise<GetProofReturnType>

            Returns the account and storage values of the specified account including the Merkle-proof.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const block = await client.getProof({
            address: '0x...',
            storageKeys: ['0x...'],
            })
          • estimateMaxPriorityFeePerGas: <chainOverride extends undefined | Chain = undefined>(
                args?: { chain: null | chainOverride },
            ) => Promise<bigint>

            Returns an estimate for the max priority fee per gas (in wei) for a transaction to be included in the next block.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const maxPriorityFeePerGas = await client.estimateMaxPriorityFeePerGas()
            // 10000000n
          • getStorageAt: (args: GetStorageAtParameters) => Promise<GetStorageAtReturnType>

            Returns the value from a storage slot at a given address.

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { getStorageAt } from 'viem/contract'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const code = await client.getStorageAt({
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            slot: toHex(0),
            })
          • getTransaction: <blockTag extends BlockTag = "latest">(
                args: GetTransactionParameters<blockTag>,
            ) => Promise<
                | {
                    gasPrice: bigint;
                    maxFeePerBlobGas?: undefined;
                    maxFeePerGas?: undefined;
                    maxPriorityFeePerGas?: undefined;
                    blockHash: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : `0x${string}`;
                    blockNumber: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : bigint;
                    from: `0x${string}`;
                    gas: bigint;
                    hash: `0x${string}`;
                    input: `0x${string}`;
                    nonce: number;
                    r: `0x${string}`;
                    s: `0x${string}`;
                    to: null | `0x${string}`;
                    transactionIndex: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : number;
                    typeHex: null | `0x${string}`;
                    v: bigint;
                    value: bigint;
                    accessList?: undefined;
                    authorizationList?: undefined;
                    blobVersionedHashes?: undefined;
                    chainId?: number;
                    yParity?: undefined;
                    type: "legacy";
                }
                | {
                    gasPrice: bigint;
                    maxFeePerBlobGas?: undefined;
                    maxFeePerGas?: undefined;
                    maxPriorityFeePerGas?: undefined;
                    blockHash: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : `0x${string}`;
                    blockNumber: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : bigint;
                    from: `0x${string}`;
                    gas: bigint;
                    hash: `0x${string}`;
                    input: `0x${string}`;
                    nonce: number;
                    r: `0x${string}`;
                    s: `0x${string}`;
                    to: null | `0x${string}`;
                    transactionIndex: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : number;
                    typeHex: null | `0x${string}`;
                    v: bigint;
                    value: bigint;
                    yParity: number;
                    accessList: AccessList;
                    authorizationList?: undefined;
                    blobVersionedHashes?: undefined;
                    chainId: number;
                    type: "eip2930";
                }
                | {
                    gasPrice?: undefined;
                    maxFeePerBlobGas?: undefined;
                    maxFeePerGas: bigint;
                    maxPriorityFeePerGas: bigint;
                    blockHash: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : `0x${string}`;
                    blockNumber: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : bigint;
                    from: `0x${string}`;
                    gas: bigint;
                    hash: `0x${string}`;
                    input: `0x${string}`;
                    nonce: number;
                    r: `0x${string}`;
                    s: `0x${string}`;
                    to: null | `0x${string}`;
                    transactionIndex: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : number;
                    typeHex: null | `0x${string}`;
                    v: bigint;
                    value: bigint;
                    yParity: number;
                    accessList: AccessList;
                    authorizationList?: undefined;
                    blobVersionedHashes?: undefined;
                    chainId: number;
                    type: "eip1559";
                }
                | {
                    gasPrice?: undefined;
                    maxFeePerBlobGas: bigint;
                    maxFeePerGas: bigint;
                    maxPriorityFeePerGas: bigint;
                    blockHash: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : `0x${string}`;
                    blockNumber: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : bigint;
                    from: `0x${string}`;
                    gas: bigint;
                    hash: `0x${string}`;
                    input: `0x${string}`;
                    nonce: number;
                    r: `0x${string}`;
                    s: `0x${string}`;
                    to: null | `0x${string}`;
                    transactionIndex: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : number;
                    typeHex: null | `0x${string}`;
                    v: bigint;
                    value: bigint;
                    yParity: number;
                    accessList: AccessList;
                    authorizationList?: undefined;
                    blobVersionedHashes: readonly `0x${string}`[];
                    chainId: number;
                    type: "eip4844";
                }
                | {
                    gasPrice?: undefined;
                    maxFeePerBlobGas?: undefined;
                    maxFeePerGas: bigint;
                    maxPriorityFeePerGas: bigint;
                    blockHash: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : `0x${string}`;
                    blockNumber: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : bigint;
                    from: `0x${string}`;
                    gas: bigint;
                    hash: `0x${string}`;
                    input: `0x${string}`;
                    nonce: number;
                    r: `0x${string}`;
                    s: `0x${string}`;
                    to: null | `0x${string}`;
                    transactionIndex: (blockTag extends "pending" ? true : false) extends true
                        ? null
                        : number;
                    typeHex: null | `0x${string}`;
                    v: bigint;
                    value: bigint;
                    yParity: number;
                    accessList: AccessList;
                    authorizationList: SignedAuthorizationList;
                    blobVersionedHashes?: undefined;
                    chainId: number;
                    type: "eip7702";
                },
            >
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const transaction = await client.getTransaction({
            hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
            })
          • getTransactionConfirmations: (
                args: GetTransactionConfirmationsParameters<undefined | Chain>,
            ) => Promise<bigint>

            Returns the number of blocks passed (confirmations) since the transaction was processed on a block.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const confirmations = await client.getTransactionConfirmations({
            hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
            })
          • getTransactionCount: (args: GetTransactionCountParameters) => Promise<number>

            Returns the number of Transactions an Account has broadcast / sent.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const transactionCount = await client.getTransactionCount({
            address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
            })
          • getTransactionReceipt: (args: GetTransactionReceiptParameters) => Promise<TransactionReceipt>
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const transactionReceipt = await client.getTransactionReceipt({
            hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
            })
          • multicall: <
                const contracts extends readonly unknown[],
                allowFailure extends boolean = true,
            >(
                args: MulticallParameters<contracts, allowFailure>,
            ) => Promise<MulticallReturnType<contracts, allowFailure>>

            Similar to readContract, but batches up multiple functions on a contract in a single RPC call via the multicall3 contract.

            import { createPublicClient, http, parseAbi } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const abi = parseAbi([
            'function balanceOf(address) view returns (uint256)',
            'function totalSupply() view returns (uint256)',
            ])
            const result = await client.multicall({
            contracts: [
            {
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi,
            functionName: 'balanceOf',
            args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
            },
            {
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi,
            functionName: 'totalSupply',
            },
            ],
            })
            // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]
          • 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,
            })
          • readContract: <
                const abi extends Abi
                | readonly unknown[],
                functionName extends string,
                const args extends unknown,
            >(
                args: ReadContractParameters<abi, functionName, args>,
            ) => Promise<ReadContractReturnType<abi, functionName, args>>

            Calls a read-only function on a contract, and returns the response.

            A "read-only" function (constant function) on a Solidity contract is denoted by a view or pure keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.

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

            import { createPublicClient, http, parseAbi } from 'viem'
            import { mainnet } from 'viem/chains'
            import { readContract } from 'viem/contract'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const result = await client.readContract({
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi: parseAbi(['function balanceOf(address) view returns (uint256)']),
            functionName: 'balanceOf',
            args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
            })
            // 424122n
          • 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'
            })
          • simulate: <const calls extends readonly unknown[]>(
                args: SimulateBlocksParameters<calls>,
            ) => Promise<SimulateBlocksReturnType<calls>>

            Use simulateBlocks instead.

          • simulateBlocks: <const calls extends readonly unknown[]>(
                args: SimulateBlocksParameters<calls>,
            ) => Promise<SimulateBlocksReturnType<calls>>

            Simulates a set of calls on block(s) with optional block and state overrides.

            import { createPublicClient, http, parseEther } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })

            const result = await client.simulateBlocks({
            blocks: [{
            blockOverrides: {
            number: 69420n,
            },
            calls: [{
            {
            account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
            data: '0xdeadbeef',
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            },
            {
            account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            value: parseEther('1'),
            },
            }],
            stateOverrides: [{
            address: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
            balance: parseEther('10'),
            }],
            }]
            })
          • simulateCalls: <const calls extends readonly unknown[]>(
                args: SimulateCallsParameters<calls>,
            ) => Promise<SimulateCallsReturnType<calls>>

            Simulates a set of calls.

            import { createPublicClient, http, parseEther } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })

            const result = await client.simulateCalls({
            account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
            calls: [{
            {
            data: '0xdeadbeef',
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            },
            {
            to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
            value: parseEther('1'),
            },
            ]
            })
          • simulateContract: <
                const abi extends Abi
                | readonly unknown[],
                functionName extends string,
                const args extends unknown,
                chainOverride extends undefined | Chain,
                accountOverride extends undefined | `0x${string}` | Account = undefined,
            >(
                args: SimulateContractParameters<
                    abi,
                    functionName,
                    args,
                    undefined
                    | Chain,
                    chainOverride,
                    accountOverride,
                >,
            ) => Promise<
                SimulateContractReturnType<
                    abi,
                    functionName,
                    args,
                    undefined
                    | Chain,
                    undefined | Account,
                    chainOverride,
                    accountOverride,
                >,
            >

            Simulates/validates a contract interaction. This is useful for retrieving return data and revert reasons of contract write functions.

            This function does not require gas to execute and does not change the state of the blockchain. It is almost identical to readContract, but also supports contract write functions.

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

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const result = await client.simulateContract({
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi: parseAbi(['function mint(uint32) view returns (uint32)']),
            functionName: 'mint',
            args: ['69420'],
            account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
            })
          • verifyMessage: (
                args: {
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                    address: `0x${string}`;
                    signature: `0x${string}` | ByteArray | Signature;
                    universalSignatureVerifierAddress?: `0x${string}`;
                    factory?: `0x${string}`;
                    factoryData?: `0x${string}`;
                    message: SignableMessage;
                },
            ) => Promise<boolean>

            Verify that a message was signed by the provided address.

            Compatible with Smart Contract Accounts & Externally Owned Accounts via ERC-6492.

          • verifySiweMessage: (
                args: {
                    blockNumber?: bigint;
                    blockTag?: BlockTag;
                    message: string;
                    signature: `0x${string}`;
                    address?: `0x${string}`;
                    domain?: string;
                    nonce?: string;
                    scheme?: string;
                    time?: Date;
                },
            ) => Promise<boolean>

            Verifies EIP-4361 formatted message was signed.

            Compatible with Smart Contract Accounts & Externally Owned Accounts via ERC-6492.

          • verifyTypedData: (args: VerifyTypedDataParameters) => Promise<boolean>

            Verify that typed data was signed by the provided address.

          • uninstallFilter: (args: UninstallFilterParameters) => Promise<boolean>

            Destroys a Filter that was created from one of the following Actions:

            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'
            import { createPendingTransactionFilter, uninstallFilter } from 'viem/public'

            const filter = await client.createPendingTransactionFilter()
            const uninstalled = await client.uninstallFilter({ filter })
            // true
          • waitForTransactionReceipt: (
                args: WaitForTransactionReceiptParameters<undefined | Chain>,
            ) => Promise<TransactionReceipt>

            Waits for the Transaction to be included on a Block (one confirmation), and then returns the Transaction Receipt. If the Transaction reverts, then the action will throw an error.

            The waitForTransactionReceipt action additionally supports Replacement detection (e.g. sped up Transactions).

            Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.

            There are 3 types of Transaction Replacement reasons:

            • repriced: The gas price has been modified (e.g. different maxFeePerGas)
            • cancelled: The Transaction has been cancelled (e.g. value === 0n)
            • replaced: The Transaction has been replaced (e.g. different value or data)
            import { createPublicClient, http } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const transactionReceipt = await client.waitForTransactionReceipt({
            hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
            })
          • watchBlockNumber: (args: WatchBlockNumberParameters) => WatchBlockNumberReturnType

            Watches and returns incoming block numbers.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const unwatch = await client.watchBlockNumber({
            onBlockNumber: (blockNumber) => console.log(blockNumber),
            })
          • watchBlocks: <
                includeTransactions extends boolean = false,
                blockTag extends BlockTag = "latest",
            >(
                args: WatchBlocksParameters<
                    Transport,
                    undefined
                    | Chain,
                    includeTransactions,
                    blockTag,
                >,
            ) => WatchBlocksReturnType

            Watches and returns information for incoming blocks.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const unwatch = await client.watchBlocks({
            onBlock: (block) => console.log(block),
            })
          • watchContractEvent: <
                const abi extends Abi
                | readonly unknown[],
                eventName extends string,
                strict extends undefined | boolean = undefined,
            >(
                args: WatchContractEventParameters<abi, eventName, strict, Transport>,
            ) => WatchContractEventReturnType

            Watches and returns emitted contract event logs.

            This Action will batch up all the event logs found within the pollingInterval, and invoke them via onLogs.

            watchContractEvent will attempt to create an Event Filter and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. eth_newFilter), then watchContractEvent will fall back to using getLogs instead.

            import { createPublicClient, http, parseAbi } from 'viem'
            import { mainnet } from 'viem/chains'

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const unwatch = client.watchContractEvent({
            address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
            abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']),
            eventName: 'Transfer',
            args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' },
            onLogs: (logs) => console.log(logs),
            })
          • watchEvent: <
                const abiEvent extends undefined
                | AbiEvent = undefined,
                const abiEvents extends
                    undefined | readonly unknown[] | readonly AbiEvent[] = abiEvent extends AbiEvent
                    ? [abiEvent<abiEvent>]
                    : undefined,
                strict extends undefined
                | boolean = undefined,
            >(
                args: WatchEventParameters<abiEvent, abiEvents, strict, Transport>,
            ) => WatchEventReturnType

            Watches and returns emitted Event Logs.

            This Action will batch up all the Event Logs found within the pollingInterval, and invoke them via onLogs.

            watchEvent will attempt to create an Event Filter and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. eth_newFilter), then watchEvent will fall back to using getLogs instead.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const unwatch = client.watchEvent({
            onLogs: (logs) => console.log(logs),
            })
          • watchPendingTransactions: (
                args: WatchPendingTransactionsParameters<Transport>,
            ) => WatchPendingTransactionsReturnType

            Watches and returns pending transaction hashes.

            This Action will batch up all the pending transactions found within the pollingInterval, and invoke them via onTransactions.

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

            const client = createPublicClient({
            chain: mainnet,
            transport: http(),
            })
            const unwatch = await client.watchPendingTransactions({
            onTransactions: (hashes) => console.log(hashes),
            })
        • contract: ChainSignatureContract

          Instance of the chain signature contract for MPC operations

      Returns EVM

    Methods

    • Uses Sig Network Key Derivation Function to derive the address and public key. from a signer ID and string path.

      Parameters

      • predecessor: string

        The id/address of the account requesting signature

      • path: string

        The string path used to derive the key

      Returns Promise<{ address: string; publicKey: string }>

      Promise resolving to the derived address and public key

    • Gets the native token balance and decimals for a given address

      Parameters

      • address: string

        The address to check

      Returns Promise<{ balance: bigint; decimals: number }>

      Promise resolving to an object containing: - balance: The balance as a bigint, in the chain's base units - decimals: The number of decimals used to format the balance

    • Serializes an unsigned transaction to a string format. This is useful for storing or transmitting the transaction.

      Parameters

      • transaction: {
            blobs?: undefined;
            blobVersionedHashes?: undefined;
            kzg?: undefined;
            sidecars?: undefined;
            authorizationList?: undefined;
            chainId: number;
            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;
        }

        The unsigned transaction to serialize

        • Optionalblobs?: undefined
        • OptionalblobVersionedHashes?: undefined
        • Optionalkzg?: undefined
        • Optionalsidecars?: undefined
        • OptionalauthorizationList?: undefined
        • chainId: number
        • OptionalgasPrice?: undefined
        • OptionalmaxFeePerBlobGas?: undefined
        • OptionalmaxFeePerGas?: bigint

          Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas).

        • OptionalmaxPriorityFeePerGas?: bigint

          Max priority fee per gas (in wei).

        • Optionaldata?: `0x${string}`

          Contract code or a hashed method call with encoded args

        • Optionalfrom?: `0x${string}`

          Transaction sender

        • Optionalgas?: bigint

          Gas provided for transaction execution

        • Optionalnonce?: number

          Unique number identifying this transaction

        • Optionalto?: null | `0x${string}`

          Transaction recipient

        • type: "eip1559"

          Transaction type

        • Optionalvalue?: bigint

          Value in wei sent with this transaction

        • OptionalaccessList?: AccessList

      Returns `0x${string}`

      The serialized transaction string

    • Deserializes a transaction string back into an unsigned transaction object. This reverses the serialization done by serializeTransaction().

      Parameters

      • serialized: `0x${string}`

        The serialized transaction string

      Returns {
          blobs?: undefined;
          blobVersionedHashes?: undefined;
          kzg?: undefined;
          sidecars?: undefined;
          authorizationList?: undefined;
          chainId: number;
          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;
      }

      The deserialized unsigned transaction

      • Optionalblobs?: undefined
      • OptionalblobVersionedHashes?: undefined
      • Optionalkzg?: undefined
      • Optionalsidecars?: undefined
      • OptionalauthorizationList?: undefined
      • chainId: number
      • OptionalgasPrice?: undefined
      • OptionalmaxFeePerBlobGas?: undefined
      • OptionalmaxFeePerGas?: bigint

        Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas).

      • OptionalmaxPriorityFeePerGas?: bigint

        Max priority fee per gas (in wei).

      • Optionaldata?: `0x${string}`

        Contract code or a hashed method call with encoded args

      • Optionalfrom?: `0x${string}`

        Transaction sender

      • Optionalgas?: bigint

        Gas provided for transaction execution

      • Optionalnonce?: number

        Unique number identifying this transaction

      • Optionalto?: null | `0x${string}`

        Transaction recipient

      • type: "eip1559"

        Transaction type

      • Optionalvalue?: bigint

        Value in wei sent with this transaction

      • OptionalaccessList?: AccessList
    • Prepares a transaction for Sig Network MPC signing by creating the necessary payloads. This method handles chain-specific transaction preparation including:

      • Fee calculation
      • Nonce/sequence management
      • UTXO selection (for UTXO-based chains)
      • Transaction encoding

      Parameters

      • transactionRequest: EVMTransactionRequest

        The transaction request containing parameters like recipient, amount, etc.

      Returns Promise<
          {
              transaction: {
                  blobs?: undefined;
                  blobVersionedHashes?: undefined;
                  kzg?: undefined;
                  sidecars?: undefined;
                  authorizationList?: undefined;
                  chainId: number;
                  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;
              };
              hashesToSign: contracts.HashToSign[];
          },
      >

      Promise resolving to an object containing: - transaction: The unsigned transaction - hashesToSign: Array of payloads to be signed by MPC. The order of these payloads must match the order of signatures provided to finalizeTransactionSigning()

    • This implementation is a common step for Biconomy and Alchemy. Key differences between implementations:

      • Signature format: Biconomy omits 0x00 prefix when concatenating, Alchemy includes it
      • Version support: Biconomy only supports v6, Alchemy supports both v6 and v7
      • Validation: Biconomy uses modules for signature validation, Alchemy uses built-in validation

      Parameters

      Returns Promise<
          {
              userOp: UserOperationV7
              | UserOperationV6;
              hashToSign: contracts.HashToSign;
          },
      >

    • Adds Sig Network MPC-generated signatures to an unsigned transaction.

      Parameters

      • params: {
            transaction: {
                blobs?: undefined;
                blobVersionedHashes?: undefined;
                kzg?: undefined;
                sidecars?: undefined;
                authorizationList?: undefined;
                chainId: number;
                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;
            };
            rsvSignatures: RSVSignature[];
        }

        Parameters for adding signatures

        • transaction: {
              blobs?: undefined;
              blobVersionedHashes?: undefined;
              kzg?: undefined;
              sidecars?: undefined;
              authorizationList?: undefined;
              chainId: number;
              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;
          }

          The unsigned transaction to add signatures to

          • Optionalblobs?: undefined
          • OptionalblobVersionedHashes?: undefined
          • Optionalkzg?: undefined
          • Optionalsidecars?: undefined
          • OptionalauthorizationList?: undefined
          • chainId: number
          • OptionalgasPrice?: undefined
          • OptionalmaxFeePerBlobGas?: undefined
          • OptionalmaxFeePerGas?: bigint

            Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas).

          • OptionalmaxPriorityFeePerGas?: bigint

            Max priority fee per gas (in wei).

          • Optionaldata?: `0x${string}`

            Contract code or a hashed method call with encoded args

          • Optionalfrom?: `0x${string}`

            Transaction sender

          • Optionalgas?: bigint

            Gas provided for transaction execution

          • Optionalnonce?: number

            Unique number identifying this transaction

          • Optionalto?: null | `0x${string}`

            Transaction recipient

          • type: "eip1559"

            Transaction type

          • Optionalvalue?: bigint

            Value in wei sent with this transaction

          • OptionalaccessList?: AccessList
        • rsvSignatures: RSVSignature[]

          Array of RSV signatures generated through MPC. Must be in the same order as the payloads returned by prepareTransactionForSigning()

      Returns `0x02${string}`

      The serialized signed transaction ready for broadcast

    • Broadcasts a signed transaction to the network.

      Parameters

      • txSerialized: string

        The serialized signed transaction

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

      Promise resolving to an object containing the transaction hash/ID