The main client for interacting with the Steer Protocol. This client provides access to vault operations, smart rewards functionality, pool data, and staking.

import { createPublicClient, createWalletClient, http } from 'viem';
import { mainnet } from 'viem/chains';
import { SteerClient, Protocol } from '@steerprotocol/sdk';

// Create viem clients
const publicClient = createPublicClient({
chain: mainnet,
transport: http()
});

const walletClient = createWalletClient({
chain: mainnet,
transport: http()
});

// Initialize the Steer client
const steerClient = new SteerClient({
environment: 'production',
client: publicClient,
walletClient: walletClient,
subgraphStudioKey: 'your-subgraph-studio-key' // Optional
});

// Use vault operations
const vaults = await steerClient.vaults.getLatestVaults();

// Use rewards functionality
const campaigns = await steerClient.rewards.getCampaigns(1);
const summary = await steerClient.rewards.getRewardSummary(userAddress, chainId);

// Use pool data functionality
const topPools = await steerClient.pools.getTopPools(100, Protocol.UniswapV3, 1);
const poolDetails = await steerClient.pools.getPoolById(poolId, Protocol.UniswapV3, 1);

// Use staking functionality
const stakingPools = await steerClient.staking.getStakingPools(1);

Hierarchy (View Summary)

Constructors

  • Creates a new instance of the SteerClient

    Parameters

    • config: SteerConfig

      The configuration object for the client

      Configuration object for initializing the SteerClient SteerConfig

      • Optionalenvironment?: "production" | "development"

        The environment to use for API calls

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

        The viem client for blockchain interactions

      • OptionalwalletClient?: {
            extend: <
                const client extends
                    {
                        account?: undefined;
                        batch?: undefined;
                        cacheTime?: undefined;
                        ccipRead?: undefined;
                        chain?: undefined;
                        key?: undefined;
                        name?: undefined;
                        pollingInterval?: undefined;
                        request?: undefined;
                        transport?: undefined;
                        type?: undefined;
                        uid?: undefined;
                        [key: string]: unknown;
                    } & ExactPartial<
                        ExtendableProtectedActions<
                            Transport,
                            undefined
                            | Chain,
                            undefined | Account,
                        >,
                    >,
            >(
                fn: (
                    client: Client<
                        Transport,
                        undefined
                        | Chain,
                        undefined | Account,
                        WalletRpcSchema,
                        WalletActions<undefined | Chain, undefined | Account>,
                    >,
                ) => client,
            ) => Client<
                Transport,
                undefined
                | Chain,
                undefined | Account,
                WalletRpcSchema,
                { [K in string | number | symbol]: client[K] } & WalletActions<
                    undefined
                    | Chain,
                    undefined | Account,
                >,
            >;
            account: undefined | Account;
            batch?: { multicall?: boolean | { batchSize?: number; wait?: number } };
            cacheTime: number;
            ccipRead?:
                | false
                | {
                    request?: (
                        parameters: CcipRequestParameters,
                    ) => Promise<`0x${string}`>;
                };
            chain: undefined
            | Chain;
            key: string;
            name: string;
            pollingInterval: number;
            request: EIP1193RequestFn<WalletRpcSchema>;
            transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
            type: string;
            uid: string;
            addChain: (args: AddChainParameters) => Promise<void>;
            deployContract: <
                const abi extends Abi
                | readonly unknown[],
                chainOverride extends undefined | Chain,
            >(
                args: DeployContractParameters<
                    abi,
                    undefined
                    | Chain,
                    undefined | Account,
                    chainOverride,
                >,
            ) => Promise<`0x${string}`>;
            getAddresses: () => Promise<GetAddressesReturnType>;
            getChainId: () => Promise<number>;
            getPermissions: () => Promise<GetPermissionsReturnType>;
            prepareTransactionRequest: <
                const request extends
                    (
                        | Omit<
                            {
                                accessList?: undefined;
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "legacy";
                                value?: bigint;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip2930";
                                value?: bigint;
                                accessList?: AccessList;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip1559";
                                value?: bigint;
                                accessList?: AccessList;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                authorizationList?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas: bigint;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to: null
                                | `0x${string}`;
                                type?: "eip4844";
                                value?: bigint;
                                accessList?: AccessList;
                                blobs: readonly `0x${string}`[] | readonly ByteArray[];
                                blobVersionedHashes?: readonly `0x${string}`[];
                                kzg?: Kzg;
                                sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip7702";
                                value?: bigint;
                                accessList?: AccessList;
                                authorizationList?: AuthorizationList<number, boolean>;
                            },
                            "from",
                        >
                    ) & { kzg?: Kzg } & {
                        nonceManager?: NonceManager;
                        parameters?: readonly PrepareTransactionRequestParameterType[];
                    },
                chainOverride extends undefined
                | Chain = undefined,
                accountOverride extends undefined | `0x${string}` | Account = undefined,
            >(
                args: PrepareTransactionRequestParameters<
                    undefined
                    | Chain,
                    undefined | Account,
                    chainOverride,
                    accountOverride,
                    request,
                >,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        UnionRequiredBy<
                            Extract<(...) & (...) & (...), (...) extends (...) ? (...) : (...)> & {
                                chainId?: (...) | (...);
                            },
                            ParameterTypeToParameters<
                                (...)[(...)] extends readonly (...)[]
                                    ? (...)[(...)]
                                    : (...) | (...) | (...) | (...) | (...) | (...),
                            >,
                        > & (unknown extends request["kzg"] ? {} : Pick<request, "kzg">)
                    )[K]
                },
            >;
            requestAddresses: () => Promise<RequestAddressesReturnType>;
            requestPermissions: (
                args: {
                    eth_accounts: Record<string, any>;
                    [key: string]: Record<string, any>;
                },
            ) => Promise<RequestPermissionsReturnType>;
            sendRawTransaction: (
                args: SendRawTransactionParameters,
            ) => Promise<`0x${string}`>;
            sendTransaction: <
                const request extends
                    (
                        | Omit<
                            {
                                accessList?: undefined;
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "legacy";
                                value?: bigint;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip2930";
                                value?: bigint;
                                accessList?: AccessList;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip1559";
                                value?: bigint;
                                accessList?: AccessList;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                authorizationList?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas: bigint;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to: null
                                | `0x${string}`;
                                type?: "eip4844";
                                value?: bigint;
                                accessList?: AccessList;
                                blobs: readonly `0x${string}`[] | readonly ByteArray[];
                                blobVersionedHashes?: readonly `0x${string}`[];
                                kzg?: Kzg;
                                sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip7702";
                                value?: bigint;
                                accessList?: AccessList;
                                authorizationList?: AuthorizationList<number, boolean>;
                            },
                            "from",
                        >
                    ) & { kzg?: Kzg },
                chainOverride extends undefined
                | Chain = undefined,
            >(
                args: SendTransactionParameters<
                    undefined
                    | Chain,
                    undefined | Account,
                    chainOverride,
                    request,
                >,
            ) => Promise<`0x${string}`>;
            signMessage: (
                args: SignMessageParameters<undefined | Account>,
            ) => Promise<`0x${string}`>;
            signTransaction: <
                chainOverride extends undefined
                | Chain,
                const request extends
                
                        | Omit<
                            {
                                accessList?: undefined;
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "legacy";
                                value?: bigint;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: bigint;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: undefined;
                                maxPriorityFeePerGas?: undefined;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip2930";
                                value?: bigint;
                                accessList?: AccessList;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                authorizationList?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip1559";
                                value?: bigint;
                                accessList?: AccessList;
                            },
                            "from",
                        >
                        | Omit<
                            {
                                authorizationList?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas: bigint;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to: null
                                | `0x${string}`;
                                type?: "eip4844";
                                value?: bigint;
                                accessList?: AccessList;
                                blobs: readonly `0x${string}`[] | readonly ByteArray[];
                                blobVersionedHashes?: readonly `0x${string}`[];
                                kzg?: Kzg;
                                sidecars?: readonly BlobSidecar<`0x${string}`>[];
                            },
                            "from",
                        >
                        | Omit<
                            {
                                blobs?: undefined;
                                blobVersionedHashes?: undefined;
                                kzg?: undefined;
                                sidecars?: undefined;
                                gasPrice?: undefined;
                                maxFeePerBlobGas?: undefined;
                                maxFeePerGas?: bigint;
                                maxPriorityFeePerGas?: bigint;
                                data?: `0x${string}`;
                                from?: `0x${string}`;
                                gas?: bigint;
                                nonce?: number;
                                to?: null
                                | `0x${string}`;
                                type?: "eip7702";
                                value?: bigint;
                                accessList?: AccessList;
                                authorizationList?: AuthorizationList<number, boolean>;
                            },
                            "from",
                        > = UnionOmit<
                    ExtractChainFormatterParameters<
                        DeriveChain<undefined | Chain, chainOverride>,
                        "transactionRequest",
                        TransactionRequest,
                    >,
                    "from",
                >,
            >(
                args: SignTransactionParameters<
                    undefined
                    | Chain,
                    undefined | Account,
                    chainOverride,
                    request,
                >,
            ) => Promise<
                TransactionSerialized<
                    GetTransactionType<
                        request,
                        | (request extends LegacyProperties ? "legacy" : never)
                        | (request extends EIP1559Properties ? "eip1559" : never)
                        | (request extends EIP2930Properties ? "eip2930" : never)
                        | (request extends EIP4844Properties ? "eip4844" : never)
                        | (request extends EIP7702Properties ? "eip7702" : never)
                        | (
                            request["type"] extends undefined
                            | string
                                ? Extract<any[any], string>
                                : never
                        ),
                    >,

                        | (
                            GetTransactionType<
                                request,
                                | (request extends LegacyProperties ? "legacy" : never)
                                | (request extends EIP1559Properties ? "eip1559" : never)
                                | (request extends EIP2930Properties ? "eip2930" : never)
                                | (request extends EIP4844Properties ? "eip4844" : never)
                                | (request extends EIP7702Properties ? "eip7702" : never)
                                | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                            > extends "eip1559"
                                ? `0x02${string}`
                                : never
                        )
                        | (
                            GetTransactionType<
                                request,
                                | (request extends LegacyProperties ? "legacy" : never)
                                | (request extends EIP1559Properties ? "eip1559" : never)
                                | (request extends EIP2930Properties ? "eip2930" : never)
                                | (request extends EIP4844Properties ? "eip4844" : never)
                                | (request extends EIP7702Properties ? "eip7702" : never)
                                | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                            > extends "eip2930"
                                ? `0x01${string}`
                                : never
                        )
                        | (
                            GetTransactionType<
                                request,
                                | (request extends LegacyProperties ? "legacy" : never)
                                | (request extends EIP1559Properties ? "eip1559" : never)
                                | (request extends EIP2930Properties ? "eip2930" : never)
                                | (request extends EIP4844Properties ? "eip4844" : never)
                                | (request extends EIP7702Properties ? "eip7702" : never)
                                | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                            > extends "eip4844"
                                ? `0x03${string}`
                                : never
                        )
                        | (
                            GetTransactionType<
                                request,
                                | (request extends LegacyProperties ? "legacy" : never)
                                | (request extends EIP1559Properties ? "eip1559" : never)
                                | (request extends EIP2930Properties ? "eip2930" : never)
                                | (request extends EIP4844Properties ? "eip4844" : never)
                                | (request extends EIP7702Properties ? "eip7702" : never)
                                | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                            > extends "eip7702"
                                ? `0x04${string}`
                                : never
                        )
                        | (
                            GetTransactionType<
                                request,
                                | (request extends LegacyProperties ? "legacy" : never)
                                | (request extends EIP1559Properties ? "eip1559" : never)
                                | (request extends EIP2930Properties ? "eip2930" : never)
                                | (request extends EIP4844Properties ? "eip4844" : never)
                                | (request extends EIP7702Properties ? "eip7702" : never)
                                | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                            > extends "legacy"
                                ? TransactionSerializedLegacy
                                : never
                        ),
                >,
            >;
            signTypedData: <
                const typedData extends
                    | {
                        string?: undefined;
                        address?: undefined;
                        bool?: undefined;
                        bytes?: undefined;
                        bytes10?: undefined;
                        bytes30?: undefined;
                        bytes14?: undefined;
                        bytes1?: undefined;
                        bytes23?: undefined;
                        bytes2?: undefined;
                        bytes3?: undefined;
                        bytes4?: undefined;
                        bytes5?: undefined;
                        bytes6?: undefined;
                        bytes7?: undefined;
                        bytes8?: undefined;
                        bytes9?: undefined;
                        bytes11?: undefined;
                        bytes12?: undefined;
                        bytes13?: undefined;
                        bytes15?: undefined;
                        bytes16?: undefined;
                        bytes17?: undefined;
                        bytes18?: undefined;
                        bytes19?: undefined;
                        bytes20?: undefined;
                        bytes21?: undefined;
                        bytes22?: undefined;
                        bytes24?: undefined;
                        bytes25?: undefined;
                        bytes26?: undefined;
                        bytes27?: undefined;
                        bytes28?: undefined;
                        bytes29?: undefined;
                        bytes31?: undefined;
                        bytes32?: undefined;
                        int56?: undefined;
                        int40?: undefined;
                        int8?: undefined;
                        int16?: undefined;
                        int24?: undefined;
                        int32?: undefined;
                        int48?: undefined;
                        int64?: undefined;
                        int72?: undefined;
                        int80?: undefined;
                        int88?: undefined;
                        int96?: undefined;
                        int104?: undefined;
                        int112?: undefined;
                        int120?: undefined;
                        int128?: undefined;
                        int136?: undefined;
                        int144?: undefined;
                        int152?: undefined;
                        int160?: undefined;
                        int168?: undefined;
                        int176?: undefined;
                        int184?: undefined;
                        int192?: undefined;
                        int200?: undefined;
                        int208?: undefined;
                        int216?: undefined;
                        int224?: undefined;
                        int232?: undefined;
                        int240?: undefined;
                        int248?: undefined;
                        int256?: undefined;
                        uint56?: undefined;
                        uint40?: undefined;
                        uint8?: undefined;
                        uint16?: undefined;
                        uint24?: undefined;
                        uint32?: undefined;
                        uint48?: undefined;
                        uint64?: undefined;
                        uint72?: undefined;
                        uint80?: undefined;
                        uint88?: undefined;
                        uint96?: undefined;
                        uint104?: undefined;
                        uint112?: undefined;
                        uint120?: undefined;
                        uint128?: undefined;
                        uint136?: undefined;
                        uint144?: undefined;
                        uint152?: undefined;
                        uint160?: undefined;
                        uint168?: undefined;
                        uint176?: undefined;
                        uint184?: undefined;
                        uint192?: undefined;
                        uint200?: undefined;
                        uint208?: undefined;
                        uint216?: undefined;
                        uint224?: undefined;
                        uint232?: undefined;
                        uint240?: undefined;
                        uint248?: undefined;
                        uint256?: undefined;
                        [key: string]: readonly TypedDataParameter[];
                        [key: `string[${string}]`]: undefined;
                        [key: `function[${string}]`]: undefined;
                        [key: `address[${string}]`]: undefined;
                        [key: `bool[${string}]`]: undefined;
                        [key: `bytes[${string}]`]: undefined;
                        [key: `bytes10[${string}]`]: undefined;
                        [key: `bytes30[${string}]`]: undefined;
                        [key: `bytes14[${string}]`]: undefined;
                        [key: `bytes1[${string}]`]: undefined;
                        [key: `bytes23[${string}]`]: undefined;
                        [key: `bytes2[${string}]`]: undefined;
                        [key: `bytes3[${string}]`]: undefined;
                        [key: `bytes4[${string}]`]: undefined;
                        [key: `bytes5[${string}]`]: undefined;
                        [key: `bytes6[${string}]`]: undefined;
                        [key: `bytes7[${string}]`]: undefined;
                        [key: `bytes8[${string}]`]: undefined;
                        [key: `bytes9[${string}]`]: undefined;
                        [key: `bytes11[${string}]`]: undefined;
                        [key: `bytes12[${string}]`]: undefined;
                        [key: `bytes13[${string}]`]: undefined;
                        [key: `bytes15[${string}]`]: undefined;
                        [key: `bytes16[${string}]`]: undefined;
                        [key: `bytes17[${string}]`]: undefined;
                        [key: `bytes18[${string}]`]: undefined;
                        [key: `bytes19[${string}]`]: undefined;
                        [key: `bytes20[${string}]`]: undefined;
                        [key: `bytes21[${string}]`]: undefined;
                        [key: `bytes22[${string}]`]: undefined;
                        [key: `bytes24[${string}]`]: undefined;
                        [key: `bytes25[${string}]`]: undefined;
                        [key: `bytes26[${string}]`]: undefined;
                        [key: `bytes27[${string}]`]: undefined;
                        [key: `bytes28[${string}]`]: undefined;
                        [key: `bytes29[${string}]`]: undefined;
                        [key: `bytes31[${string}]`]: undefined;
                        [key: `bytes32[${string}]`]: undefined;
                        [key: `int[${string}]`]: undefined;
                        [key: `int56[${string}]`]: undefined;
                        [key: `int40[${string}]`]: undefined;
                        [key: `int8[${string}]`]: undefined;
                        [key: `int16[${string}]`]: undefined;
                        [key: `int24[${string}]`]: undefined;
                        [key: `int32[${string}]`]: undefined;
                        [key: `int48[${string}]`]: undefined;
                        [key: `int64[${string}]`]: undefined;
                        [key: `int72[${string}]`]: undefined;
                        [key: `int80[${string}]`]: undefined;
                        [key: `int88[${string}]`]: undefined;
                        [key: `int96[${string}]`]: undefined;
                        [key: `int104[${string}]`]: undefined;
                        [key: `int112[${string}]`]: undefined;
                        [key: `int120[${string}]`]: undefined;
                        [key: `int128[${string}]`]: undefined;
                        [key: `int136[${string}]`]: undefined;
                        [key: `int144[${string}]`]: undefined;
                        [key: `int152[${string}]`]: undefined;
                        [key: `int160[${string}]`]: undefined;
                        [key: `int168[${string}]`]: undefined;
                        [key: `int176[${string}]`]: undefined;
                        [key: `int184[${string}]`]: undefined;
                        [key: `int192[${string}]`]: undefined;
                        [key: `int200[${string}]`]: undefined;
                        [key: `int208[${string}]`]: undefined;
                        [key: `int216[${string}]`]: undefined;
                        [key: `int224[${string}]`]: undefined;
                        [key: `int232[${string}]`]: undefined;
                        [key: `int240[${string}]`]: undefined;
                        [key: `int248[${string}]`]: undefined;
                        [key: `int256[${string}]`]: undefined;
                        [key: `uint[${string}]`]: undefined;
                        [key: `uint56[${string}]`]: undefined;
                        [key: `uint40[${string}]`]: undefined;
                        [key: `uint8[${string}]`]: undefined;
                        [key: `uint16[${string}]`]: undefined;
                        [key: `uint24[${string}]`]: undefined;
                        [key: `uint32[${string}]`]: undefined;
                        [key: `uint48[${string}]`]: undefined;
                        [key: `uint64[${string}]`]: undefined;
                        [key: `uint72[${string}]`]: undefined;
                        [key: `uint80[${string}]`]: undefined;
                        [key: `uint88[${string}]`]: undefined;
                        [key: `uint96[${string}]`]: undefined;
                        [key: `uint104[${string}]`]: undefined;
                        [key: `uint112[${string}]`]: undefined;
                        [key: `uint120[${string}]`]: undefined;
                        [key: `uint128[${string}]`]: undefined;
                        [key: `uint136[${string}]`]: undefined;
                        [key: `uint144[${string}]`]: undefined;
                        [key: `uint152[${string}]`]: undefined;
                        [key: `uint160[${string}]`]: undefined;
                        [key: `uint168[${string}]`]: undefined;
                        [key: `uint176[${string}]`]: undefined;
                        [key: `uint184[${string}]`]: undefined;
                        [key: `uint192[${string}]`]: undefined;
                        [key: `uint200[${string}]`]: undefined;
                        [key: `uint208[${string}]`]: undefined;
                        [key: `uint216[${string}]`]: undefined;
                        [key: `uint224[${string}]`]: undefined;
                        [key: `uint232[${string}]`]: undefined;
                        [key: `uint240[${string}]`]: undefined;
                        [key: `uint248[${string}]`]: undefined;
                        [key: `uint256[${string}]`]: undefined;
                    }
                    | { [key: string]: unknown },
                primaryType extends string,
            >(
                args: SignTypedDataParameters<
                    typedData,
                    primaryType,
                    undefined
                    | Account,
                >,
            ) => Promise<`0x${string}`>;
            switchChain: (args: SwitchChainParameters) => Promise<void>;
            watchAsset: (args: WatchAssetParams) => Promise<boolean>;
            writeContract: <
                const abi extends Abi
                | readonly unknown[],
                functionName extends string,
                args extends unknown,
                chainOverride extends undefined | Chain = undefined,
            >(
                args: WriteContractParameters<
                    abi,
                    functionName,
                    args,
                    undefined
                    | Chain,
                    undefined | Account,
                    chainOverride,
                >,
            ) => Promise<`0x${string}`>;
        }

        Optional wallet client for write operations

        • extend: <
              const client extends
                  {
                      account?: undefined;
                      batch?: undefined;
                      cacheTime?: undefined;
                      ccipRead?: undefined;
                      chain?: undefined;
                      key?: undefined;
                      name?: undefined;
                      pollingInterval?: undefined;
                      request?: undefined;
                      transport?: undefined;
                      type?: undefined;
                      uid?: undefined;
                      [key: string]: unknown;
                  } & ExactPartial<
                      ExtendableProtectedActions<
                          Transport,
                          undefined
                          | Chain,
                          undefined | Account,
                      >,
                  >,
          >(
              fn: (
                  client: Client<
                      Transport,
                      undefined
                      | Chain,
                      undefined | Account,
                      WalletRpcSchema,
                      WalletActions<undefined | Chain, undefined | Account>,
                  >,
              ) => client,
          ) => Client<
              Transport,
              undefined
              | Chain,
              undefined | Account,
              WalletRpcSchema,
              { [K in string | number | symbol]: client[K] } & WalletActions<
                  undefined
                  | Chain,
                  undefined | Account,
              >,
          >
        • account: undefined | Account

          The Account of the Client.

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

          Flags for batch settings.

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

            Toggle to enable eth_call multicall aggregation.

        • cacheTime: number

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

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

          CCIP Read configuration.

        • chain: undefined | Chain

          Chain for the client.

        • key: string

          A key for the client.

        • name: string

          A name for the client.

        • pollingInterval: number

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

        • request: EIP1193RequestFn<WalletRpcSchema>

          Request function wrapped with friendly error handling

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

          The RPC transport

        • type: string

          The type of client.

        • uid: string

          A unique ID for the client.

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

          Adds an EVM chain to the wallet.

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

          const client = createWalletClient({
          transport: custom(window.ethereum),
          })
          await client.addChain({ chain: optimism })
        • deployContract: <
              const abi extends Abi
              | readonly unknown[],
              chainOverride extends undefined | Chain,
          >(
              args: DeployContractParameters<
                  abi,
                  undefined
                  | Chain,
                  undefined | Account,
                  chainOverride,
              >,
          ) => Promise<`0x${string}`>

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

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

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: http(),
          })
          const hash = await client.deployContract({
          abi: [],
          account: '0x…,
          bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',
          })
        • getAddresses: () => Promise<GetAddressesReturnType>

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

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

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

          Returns the chain ID associated with the current network.

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

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

          Gets the wallets current permissions.

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

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const permissions = await client.getPermissions()
        • prepareTransactionRequest: <
              const request extends
                  (
                      | Omit<
                          {
                              accessList?: undefined;
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              authorizationList?: undefined;
                              gasPrice?: bigint;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: undefined;
                              maxPriorityFeePerGas?: undefined;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "legacy";
                              value?: bigint;
                          },
                          "from",
                      >
                      | Omit<
                          {
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              authorizationList?: undefined;
                              gasPrice?: bigint;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: undefined;
                              maxPriorityFeePerGas?: undefined;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "eip2930";
                              value?: bigint;
                              accessList?: AccessList;
                          },
                          "from",
                      >
                      | Omit<
                          {
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              authorizationList?: undefined;
                              gasPrice?: undefined;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: bigint;
                              maxPriorityFeePerGas?: bigint;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "eip1559";
                              value?: bigint;
                              accessList?: AccessList;
                          },
                          "from",
                      >
                      | Omit<
                          {
                              authorizationList?: undefined;
                              gasPrice?: undefined;
                              maxFeePerBlobGas: bigint;
                              maxFeePerGas?: bigint;
                              maxPriorityFeePerGas?: bigint;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to: null
                              | `0x${string}`;
                              type?: "eip4844";
                              value?: bigint;
                              accessList?: AccessList;
                              blobs: readonly `0x${string}`[] | readonly ByteArray[];
                              blobVersionedHashes?: readonly `0x${string}`[];
                              kzg?: Kzg;
                              sidecars?: readonly BlobSidecar<`0x${(...)}`>[];
                          },
                          "from",
                      >
                      | Omit<
                          {
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              gasPrice?: undefined;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: bigint;
                              maxPriorityFeePerGas?: bigint;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "eip7702";
                              value?: bigint;
                              accessList?: AccessList;
                              authorizationList?: AuthorizationList<number, boolean>;
                          },
                          "from",
                      >
                  ) & { kzg?: Kzg } & {
                      nonceManager?: NonceManager;
                      parameters?: readonly PrepareTransactionRequestParameterType[];
                  },
              chainOverride extends undefined
              | Chain = undefined,
              accountOverride extends undefined | `0x${string}` | Account = undefined,
          >(
              args: PrepareTransactionRequestParameters<
                  undefined
                  | Chain,
                  undefined | Account,
                  chainOverride,
                  accountOverride,
                  request,
              >,
          ) => Promise<
              {
                  [K in string
                  | number
                  | symbol]: (
                      UnionRequiredBy<
                          Extract<(...) & (...) & (...), (...) extends (...) ? (...) : (...)> & {
                              chainId?: (...) | (...);
                          },
                          ParameterTypeToParameters<
                              (...)[(...)] extends readonly (...)[]
                                  ? (...)[(...)]
                                  : (...) | (...) | (...) | (...) | (...) | (...),
                          >,
                      > & (unknown extends request["kzg"] ? {} : Pick<request, "kzg">)
                  )[K]
              },
          >

          Prepares a transaction request for signing.

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

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

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const request = await client.prepareTransactionRequest({
          to: '0x0000000000000000000000000000000000000000',
          value: 1n,
          })
        • requestAddresses: () => Promise<RequestAddressesReturnType>

          Requests a list of accounts managed by a wallet.

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

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

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

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const accounts = await client.requestAddresses()
        • requestPermissions: (
              args: {
                  eth_accounts: Record<string, any>;
                  [key: string]: Record<string, any>;
              },
          ) => Promise<RequestPermissionsReturnType>

          Requests permissions for a wallet.

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

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const permissions = await client.requestPermissions({
          eth_accounts: {}
          })
        • sendRawTransaction: (args: SendRawTransactionParameters) => Promise<`0x${string}`>

          Sends a signed transaction to the network

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

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

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

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

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

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

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

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

          With the calculated signature, you can:

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

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

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: http(),
          })
          const signature = await client.signMessage({
          message: 'hello world',
          })
        • signTransaction: <
              chainOverride extends undefined
              | Chain,
              const request extends
              
                      | Omit<
                          {
                              accessList?: undefined;
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              authorizationList?: undefined;
                              gasPrice?: bigint;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: undefined;
                              maxPriorityFeePerGas?: undefined;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "legacy";
                              value?: bigint;
                          },
                          "from",
                      >
                      | Omit<
                          {
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              authorizationList?: undefined;
                              gasPrice?: bigint;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: undefined;
                              maxPriorityFeePerGas?: undefined;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "eip2930";
                              value?: bigint;
                              accessList?: AccessList;
                          },
                          "from",
                      >
                      | Omit<
                          {
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              authorizationList?: undefined;
                              gasPrice?: undefined;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: bigint;
                              maxPriorityFeePerGas?: bigint;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "eip1559";
                              value?: bigint;
                              accessList?: AccessList;
                          },
                          "from",
                      >
                      | Omit<
                          {
                              authorizationList?: undefined;
                              gasPrice?: undefined;
                              maxFeePerBlobGas: bigint;
                              maxFeePerGas?: bigint;
                              maxPriorityFeePerGas?: bigint;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to: null
                              | `0x${string}`;
                              type?: "eip4844";
                              value?: bigint;
                              accessList?: AccessList;
                              blobs: readonly `0x${string}`[] | readonly ByteArray[];
                              blobVersionedHashes?: readonly `0x${string}`[];
                              kzg?: Kzg;
                              sidecars?: readonly BlobSidecar<`0x${string}`>[];
                          },
                          "from",
                      >
                      | Omit<
                          {
                              blobs?: undefined;
                              blobVersionedHashes?: undefined;
                              kzg?: undefined;
                              sidecars?: undefined;
                              gasPrice?: undefined;
                              maxFeePerBlobGas?: undefined;
                              maxFeePerGas?: bigint;
                              maxPriorityFeePerGas?: bigint;
                              data?: `0x${string}`;
                              from?: `0x${string}`;
                              gas?: bigint;
                              nonce?: number;
                              to?: null
                              | `0x${string}`;
                              type?: "eip7702";
                              value?: bigint;
                              accessList?: AccessList;
                              authorizationList?: AuthorizationList<number, boolean>;
                          },
                          "from",
                      > = UnionOmit<
                  ExtractChainFormatterParameters<
                      DeriveChain<undefined | Chain, chainOverride>,
                      "transactionRequest",
                      TransactionRequest,
                  >,
                  "from",
              >,
          >(
              args: SignTransactionParameters<
                  undefined
                  | Chain,
                  undefined | Account,
                  chainOverride,
                  request,
              >,
          ) => Promise<
              TransactionSerialized<
                  GetTransactionType<
                      request,
                      | (request extends LegacyProperties ? "legacy" : never)
                      | (request extends EIP1559Properties ? "eip1559" : never)
                      | (request extends EIP2930Properties ? "eip2930" : never)
                      | (request extends EIP4844Properties ? "eip4844" : never)
                      | (request extends EIP7702Properties ? "eip7702" : never)
                      | (
                          request["type"] extends undefined
                          | string
                              ? Extract<any[any], string>
                              : never
                      ),
                  >,

                      | (
                          GetTransactionType<
                              request,
                              | (request extends LegacyProperties ? "legacy" : never)
                              | (request extends EIP1559Properties ? "eip1559" : never)
                              | (request extends EIP2930Properties ? "eip2930" : never)
                              | (request extends EIP4844Properties ? "eip4844" : never)
                              | (request extends EIP7702Properties ? "eip7702" : never)
                              | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                          > extends "eip1559"
                              ? `0x02${string}`
                              : never
                      )
                      | (
                          GetTransactionType<
                              request,
                              | (request extends LegacyProperties ? "legacy" : never)
                              | (request extends EIP1559Properties ? "eip1559" : never)
                              | (request extends EIP2930Properties ? "eip2930" : never)
                              | (request extends EIP4844Properties ? "eip4844" : never)
                              | (request extends EIP7702Properties ? "eip7702" : never)
                              | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                          > extends "eip2930"
                              ? `0x01${string}`
                              : never
                      )
                      | (
                          GetTransactionType<
                              request,
                              | (request extends LegacyProperties ? "legacy" : never)
                              | (request extends EIP1559Properties ? "eip1559" : never)
                              | (request extends EIP2930Properties ? "eip2930" : never)
                              | (request extends EIP4844Properties ? "eip4844" : never)
                              | (request extends EIP7702Properties ? "eip7702" : never)
                              | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                          > extends "eip4844"
                              ? `0x03${string}`
                              : never
                      )
                      | (
                          GetTransactionType<
                              request,
                              | (request extends LegacyProperties ? "legacy" : never)
                              | (request extends EIP1559Properties ? "eip1559" : never)
                              | (request extends EIP2930Properties ? "eip2930" : never)
                              | (request extends EIP4844Properties ? "eip4844" : never)
                              | (request extends EIP7702Properties ? "eip7702" : never)
                              | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                          > extends "eip7702"
                              ? `0x04${string}`
                              : never
                      )
                      | (
                          GetTransactionType<
                              request,
                              | (request extends LegacyProperties ? "legacy" : never)
                              | (request extends EIP1559Properties ? "eip1559" : never)
                              | (request extends EIP2930Properties ? "eip2930" : never)
                              | (request extends EIP4844Properties ? "eip4844" : never)
                              | (request extends EIP7702Properties ? "eip7702" : never)
                              | ((...)[(...)] extends (...) | (...) ? Extract<(...), (...)> : never),
                          > extends "legacy"
                              ? TransactionSerializedLegacy
                              : never
                      ),
              >,
          >

          Signs a transaction.

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

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

          const client = createWalletClient({
          account: privateKeyToAccount('0x…'),
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const request = await client.prepareTransactionRequest({
          to: '0x0000000000000000000000000000000000000000',
          value: 1n,
          })
          const signature = await client.signTransaction(request)
        • signTypedData: <
              const typedData extends
                  | {
                      string?: undefined;
                      address?: undefined;
                      bool?: undefined;
                      bytes?: undefined;
                      bytes10?: undefined;
                      bytes30?: undefined;
                      bytes14?: undefined;
                      bytes1?: undefined;
                      bytes23?: undefined;
                      bytes2?: undefined;
                      bytes3?: undefined;
                      bytes4?: undefined;
                      bytes5?: undefined;
                      bytes6?: undefined;
                      bytes7?: undefined;
                      bytes8?: undefined;
                      bytes9?: undefined;
                      bytes11?: undefined;
                      bytes12?: undefined;
                      bytes13?: undefined;
                      bytes15?: undefined;
                      bytes16?: undefined;
                      bytes17?: undefined;
                      bytes18?: undefined;
                      bytes19?: undefined;
                      bytes20?: undefined;
                      bytes21?: undefined;
                      bytes22?: undefined;
                      bytes24?: undefined;
                      bytes25?: undefined;
                      bytes26?: undefined;
                      bytes27?: undefined;
                      bytes28?: undefined;
                      bytes29?: undefined;
                      bytes31?: undefined;
                      bytes32?: undefined;
                      int56?: undefined;
                      int40?: undefined;
                      int8?: undefined;
                      int16?: undefined;
                      int24?: undefined;
                      int32?: undefined;
                      int48?: undefined;
                      int64?: undefined;
                      int72?: undefined;
                      int80?: undefined;
                      int88?: undefined;
                      int96?: undefined;
                      int104?: undefined;
                      int112?: undefined;
                      int120?: undefined;
                      int128?: undefined;
                      int136?: undefined;
                      int144?: undefined;
                      int152?: undefined;
                      int160?: undefined;
                      int168?: undefined;
                      int176?: undefined;
                      int184?: undefined;
                      int192?: undefined;
                      int200?: undefined;
                      int208?: undefined;
                      int216?: undefined;
                      int224?: undefined;
                      int232?: undefined;
                      int240?: undefined;
                      int248?: undefined;
                      int256?: undefined;
                      uint56?: undefined;
                      uint40?: undefined;
                      uint8?: undefined;
                      uint16?: undefined;
                      uint24?: undefined;
                      uint32?: undefined;
                      uint48?: undefined;
                      uint64?: undefined;
                      uint72?: undefined;
                      uint80?: undefined;
                      uint88?: undefined;
                      uint96?: undefined;
                      uint104?: undefined;
                      uint112?: undefined;
                      uint120?: undefined;
                      uint128?: undefined;
                      uint136?: undefined;
                      uint144?: undefined;
                      uint152?: undefined;
                      uint160?: undefined;
                      uint168?: undefined;
                      uint176?: undefined;
                      uint184?: undefined;
                      uint192?: undefined;
                      uint200?: undefined;
                      uint208?: undefined;
                      uint216?: undefined;
                      uint224?: undefined;
                      uint232?: undefined;
                      uint240?: undefined;
                      uint248?: undefined;
                      uint256?: undefined;
                      [key: string]: readonly TypedDataParameter[];
                      [key: `string[${string}]`]: undefined;
                      [key: `function[${string}]`]: undefined;
                      [key: `address[${string}]`]: undefined;
                      [key: `bool[${string}]`]: undefined;
                      [key: `bytes[${string}]`]: undefined;
                      [key: `bytes10[${string}]`]: undefined;
                      [key: `bytes30[${string}]`]: undefined;
                      [key: `bytes14[${string}]`]: undefined;
                      [key: `bytes1[${string}]`]: undefined;
                      [key: `bytes23[${string}]`]: undefined;
                      [key: `bytes2[${string}]`]: undefined;
                      [key: `bytes3[${string}]`]: undefined;
                      [key: `bytes4[${string}]`]: undefined;
                      [key: `bytes5[${string}]`]: undefined;
                      [key: `bytes6[${string}]`]: undefined;
                      [key: `bytes7[${string}]`]: undefined;
                      [key: `bytes8[${string}]`]: undefined;
                      [key: `bytes9[${string}]`]: undefined;
                      [key: `bytes11[${string}]`]: undefined;
                      [key: `bytes12[${string}]`]: undefined;
                      [key: `bytes13[${string}]`]: undefined;
                      [key: `bytes15[${string}]`]: undefined;
                      [key: `bytes16[${string}]`]: undefined;
                      [key: `bytes17[${string}]`]: undefined;
                      [key: `bytes18[${string}]`]: undefined;
                      [key: `bytes19[${string}]`]: undefined;
                      [key: `bytes20[${string}]`]: undefined;
                      [key: `bytes21[${string}]`]: undefined;
                      [key: `bytes22[${string}]`]: undefined;
                      [key: `bytes24[${string}]`]: undefined;
                      [key: `bytes25[${string}]`]: undefined;
                      [key: `bytes26[${string}]`]: undefined;
                      [key: `bytes27[${string}]`]: undefined;
                      [key: `bytes28[${string}]`]: undefined;
                      [key: `bytes29[${string}]`]: undefined;
                      [key: `bytes31[${string}]`]: undefined;
                      [key: `bytes32[${string}]`]: undefined;
                      [key: `int[${string}]`]: undefined;
                      [key: `int56[${string}]`]: undefined;
                      [key: `int40[${string}]`]: undefined;
                      [key: `int8[${string}]`]: undefined;
                      [key: `int16[${string}]`]: undefined;
                      [key: `int24[${string}]`]: undefined;
                      [key: `int32[${string}]`]: undefined;
                      [key: `int48[${string}]`]: undefined;
                      [key: `int64[${string}]`]: undefined;
                      [key: `int72[${string}]`]: undefined;
                      [key: `int80[${string}]`]: undefined;
                      [key: `int88[${string}]`]: undefined;
                      [key: `int96[${string}]`]: undefined;
                      [key: `int104[${string}]`]: undefined;
                      [key: `int112[${string}]`]: undefined;
                      [key: `int120[${string}]`]: undefined;
                      [key: `int128[${string}]`]: undefined;
                      [key: `int136[${string}]`]: undefined;
                      [key: `int144[${string}]`]: undefined;
                      [key: `int152[${string}]`]: undefined;
                      [key: `int160[${string}]`]: undefined;
                      [key: `int168[${string}]`]: undefined;
                      [key: `int176[${string}]`]: undefined;
                      [key: `int184[${string}]`]: undefined;
                      [key: `int192[${string}]`]: undefined;
                      [key: `int200[${string}]`]: undefined;
                      [key: `int208[${string}]`]: undefined;
                      [key: `int216[${string}]`]: undefined;
                      [key: `int224[${string}]`]: undefined;
                      [key: `int232[${string}]`]: undefined;
                      [key: `int240[${string}]`]: undefined;
                      [key: `int248[${string}]`]: undefined;
                      [key: `int256[${string}]`]: undefined;
                      [key: `uint[${string}]`]: undefined;
                      [key: `uint56[${string}]`]: undefined;
                      [key: `uint40[${string}]`]: undefined;
                      [key: `uint8[${string}]`]: undefined;
                      [key: `uint16[${string}]`]: undefined;
                      [key: `uint24[${string}]`]: undefined;
                      [key: `uint32[${string}]`]: undefined;
                      [key: `uint48[${string}]`]: undefined;
                      [key: `uint64[${string}]`]: undefined;
                      [key: `uint72[${string}]`]: undefined;
                      [key: `uint80[${string}]`]: undefined;
                      [key: `uint88[${string}]`]: undefined;
                      [key: `uint96[${string}]`]: undefined;
                      [key: `uint104[${string}]`]: undefined;
                      [key: `uint112[${string}]`]: undefined;
                      [key: `uint120[${string}]`]: undefined;
                      [key: `uint128[${string}]`]: undefined;
                      [key: `uint136[${string}]`]: undefined;
                      [key: `uint144[${string}]`]: undefined;
                      [key: `uint152[${string}]`]: undefined;
                      [key: `uint160[${string}]`]: undefined;
                      [key: `uint168[${string}]`]: undefined;
                      [key: `uint176[${string}]`]: undefined;
                      [key: `uint184[${string}]`]: undefined;
                      [key: `uint192[${string}]`]: undefined;
                      [key: `uint200[${string}]`]: undefined;
                      [key: `uint208[${string}]`]: undefined;
                      [key: `uint216[${string}]`]: undefined;
                      [key: `uint224[${string}]`]: undefined;
                      [key: `uint232[${string}]`]: undefined;
                      [key: `uint240[${string}]`]: undefined;
                      [key: `uint248[${string}]`]: undefined;
                      [key: `uint256[${string}]`]: undefined;
                  }
                  | { [key: string]: unknown },
              primaryType extends string,
          >(
              args: SignTypedDataParameters<
                  typedData,
                  primaryType,
                  undefined
                  | Account,
              >,
          ) => Promise<`0x${string}`>

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

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

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

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

          Switch the target chain in a wallet.

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

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

          Adds an EVM chain to the wallet.

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

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const success = await client.watchAsset({
          type: 'ERC20',
          options: {
          address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
          decimals: 18,
          symbol: 'WETH',
          },
          })
        • writeContract: <
              const abi extends Abi
              | readonly unknown[],
              functionName extends string,
              args extends unknown,
              chainOverride extends undefined | Chain = undefined,
          >(
              args: WriteContractParameters<
                  abi,
                  functionName,
                  args,
                  undefined
                  | Chain,
                  undefined | Account,
                  chainOverride,
              >,
          ) => Promise<`0x${string}`>

          Executes a write function on a contract.

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

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

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

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

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

          const client = createWalletClient({
          chain: mainnet,
          transport: custom(window.ethereum),
          })
          const { request } = await client.simulateContract({
          address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
          abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),
          functionName: 'mint',
          args: [69420],
          }
          const hash = await client.writeContract(request)
      • OptionalsubgraphStudioKey?: string

        Optional Subgraph Studio API key for higher rate limits

    Returns SteerClient

    const steerClient = new SteerClient({
    environment: 'production',
    client: publicClient,
    walletClient: walletClient,
    subgraphStudioKey: 'your-key'
    });

Properties

vaults: VaultClient

The vault client instance for interacting with Steer vaults

rewards: SmartRewardsClient

The rewards client instance for interacting with Smart Rewards

staking: StakingClient

The staking client instance for interacting with staking pools

pools: PoolClient

The pool client instance for fetching pool data from DEX protocols

Methods

  • Checks if a chain is supported by checking if it has a subgraph URL

    Parameters

    • chainId: number

      The chain ID to check

    Returns boolean

    boolean indicating if the chain is supported

  • Gets the active chain ID from the client

    Type Parameters

    • T

    Returns Promise<SteerResponse<T>>

    A promise that resolves to the active chain ID

    Error if no active chain is found

    const chainId = await steerClient.getActiveChain();
    console.log(chainId.data); // e.g., 1 for Ethereum mainnet