The namespace containing all EVM methods.

Implements

Constructors

Methods

  • Creates a new CDP EVM account.

    Parameters

    • Optionaloptions: CreateServerAccountOptions = {}

      Optional parameters for creating the account.

      Options for creating an EVM server account.

      • OptionalaccountPolicy?: string

        The policy ID to apply to the account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • Optionalname?: string

        The name of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            policies?: string[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: AccountQuoteSwapOptions,
            ) => Promise<AccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendTransaction: (
                options: Omit<SendTransactionOptions, "address">,
            ) => Promise<TransactionResult>;
            sign: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
            signMessage: (
                parameters: { message: SignableMessage },
            ) => Promise<`0x${string}`>;
            signTransaction: (
                transaction: TransactionSerializable,
            ) => Promise<`0x${string}`>;
            signTypedData: <
                const typedData extends
                    | Record<string, unknown>
                    | {
                        address?: undefined;
                        bool?: undefined;
                        bytes?: undefined;
                        bytes1?: undefined;
                        bytes10?: undefined;
                        bytes11?: undefined;
                        bytes12?: undefined;
                        bytes13?: undefined;
                        bytes14?: undefined;
                        bytes15?: undefined;
                        bytes16?: undefined;
                        bytes17?: undefined;
                        bytes18?: undefined;
                        bytes19?: undefined;
                        bytes2?: undefined;
                        bytes20?: undefined;
                        bytes21?: undefined;
                        bytes22?: undefined;
                        bytes23?: undefined;
                        bytes24?: undefined;
                        bytes25?: undefined;
                        bytes26?: undefined;
                        bytes27?: undefined;
                        bytes28?: undefined;
                        bytes29?: undefined;
                        bytes3?: undefined;
                        bytes30?: undefined;
                        bytes31?: undefined;
                        bytes32?: undefined;
                        bytes4?: undefined;
                        bytes5?: undefined;
                        bytes6?: undefined;
                        bytes7?: undefined;
                        bytes8?: undefined;
                        bytes9?: undefined;
                        int104?: undefined;
                        int112?: undefined;
                        int120?: undefined;
                        int128?: undefined;
                        int136?: undefined;
                        int144?: undefined;
                        int152?: undefined;
                        int16?: undefined;
                        int160?: undefined;
                        int168?: undefined;
                        int176?: undefined;
                        int184?: undefined;
                        int192?: undefined;
                        int200?: undefined;
                        int208?: undefined;
                        int216?: undefined;
                        int224?: undefined;
                        int232?: undefined;
                        int24?: undefined;
                        int240?: undefined;
                        int248?: undefined;
                        int256?: undefined;
                        int32?: undefined;
                        int40?: undefined;
                        int48?: undefined;
                        int56?: undefined;
                        int64?: undefined;
                        int72?: undefined;
                        int8?: undefined;
                        int80?: undefined;
                        int88?: undefined;
                        int96?: undefined;
                        string?: undefined;
                        uint104?: undefined;
                        uint112?: undefined;
                        uint120?: undefined;
                        uint128?: undefined;
                        uint136?: undefined;
                        uint144?: undefined;
                        uint152?: undefined;
                        uint16?: undefined;
                        uint160?: undefined;
                        uint168?: undefined;
                        uint176?: undefined;
                        uint184?: undefined;
                        uint192?: undefined;
                        uint200?: undefined;
                        uint208?: undefined;
                        uint216?: undefined;
                        uint224?: undefined;
                        uint232?: undefined;
                        uint24?: undefined;
                        uint240?: undefined;
                        uint248?: undefined;
                        uint256?: undefined;
                        uint32?: undefined;
                        uint40?: undefined;
                        uint48?: undefined;
                        uint56?: undefined;
                        uint64?: undefined;
                        uint72?: undefined;
                        uint8?: undefined;
                        uint80?: undefined;
                        uint88?: undefined;
                        uint96?: undefined;
                        [key: string]: readonly TypedDataParameter[];
                        [key: `string[${string}]`]: undefined;
                        [key: `function[${string}]`]: undefined;
                        [key: `address[${string}]`]: undefined;
                        [key: `bool[${string}]`]: undefined;
                        [key: `bytes[${string}]`]: undefined;
                        [key: `bytes1[${string}]`]: undefined;
                        [key: `bytes2[${string}]`]: undefined;
                        [key: `bytes3[${string}]`]: undefined;
                        [key: `bytes32[${string}]`]: undefined;
                        [key: `bytes16[${string}]`]: undefined;
                        [key: `bytes4[${string}]`]: undefined;
                        [key: `bytes6[${string}]`]: undefined;
                        [key: `bytes18[${string}]`]: undefined;
                        [key: `bytes10[${string}]`]: undefined;
                        [key: `bytes5[${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: `bytes14[${string}]`]: undefined;
                        [key: `bytes15[${string}]`]: undefined;
                        [key: `bytes17[${string}]`]: undefined;
                        [key: `bytes19[${string}]`]: undefined;
                        [key: `bytes20[${string}]`]: undefined;
                        [key: `bytes21[${string}]`]: undefined;
                        [key: `bytes22[${string}]`]: undefined;
                        [key: `bytes23[${string}]`]: undefined;
                        [key: `bytes24[${string}]`]: undefined;
                        [key: `bytes25[${string}]`]: undefined;
                        [key: `bytes26[${string}]`]: undefined;
                        [key: `bytes27[${string}]`]: undefined;
                        [key: `bytes28[${string}]`]: undefined;
                        [key: `bytes29[${string}]`]: undefined;
                        [key: `bytes30[${string}]`]: undefined;
                        [key: `bytes31[${string}]`]: undefined;
                        [key: `int[${string}]`]: undefined;
                        [key: `int120[${string}]`]: undefined;
                        [key: `int64[${string}]`]: undefined;
                        [key: `int32[${string}]`]: undefined;
                        [key: `int16[${string}]`]: undefined;
                        [key: `int8[${string}]`]: undefined;
                        [key: `int24[${string}]`]: undefined;
                        [key: `int40[${string}]`]: undefined;
                        [key: `int48[${string}]`]: undefined;
                        [key: `int56[${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: `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: `uint120[${string}]`]: undefined;
                        [key: `uint64[${string}]`]: undefined;
                        [key: `uint32[${string}]`]: undefined;
                        [key: `uint16[${string}]`]: undefined;
                        [key: `uint8[${string}]`]: undefined;
                        [key: `uint24[${string}]`]: undefined;
                        [key: `uint40[${string}]`]: undefined;
                        [key: `uint48[${string}]`]: undefined;
                        [key: `uint56[${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: `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;
                    },
                primaryType extends string
                | number
                | symbol = keyof typedData,
            >(
                parameters: TypedDataDefinition<typedData, primaryType>,
            ) => Promise<`0x${string}`>;
            swap: (options: AccountSwapOptions) => Promise<SendSwapTransactionResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<{ transactionHash: `0x${string}` }>;
            type: "evm-server";
            useNetwork: <Network extends NetworkOrRpcUrl>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<
                            {
                                address: `0x${string}`;
                                fund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                listTokenBalances: (options: Omit<(...), (...)>) => Promise<(...)>;
                                name?: string;
                                policies?: (...)[];
                                quoteFund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                quoteSwap: (options: AccountQuoteSwapOptions) => Promise<(...)>;
                                requestFaucet: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sendTransaction: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sign: (parameters: { hash: ... }) => Promise<(...)>;
                                signMessage: (parameters: { message: ... }) => Promise<(...)>;
                                signTransaction: (
                                    transaction: TransactionSerializable,
                                ) => Promise<(...)>;
                                signTypedData: <
                                    const typedData extends (...)
                                    | (...),
                                    primaryType extends (...) | (...) | (...) = keyof (...),
                                >(
                                    parameters: TypedDataDefinition<(...), (...)>,
                                ) => Promise<(...)>;
                                swap: (options: AccountSwapOptions) => Promise<(...)>;
                                transfer: (options: TransferOptions) => Promise<(...)>;
                                type: "evm-server";
                                useNetwork: <Network extends NetworkOrRpcUrl>(network: Network) => Promise<{ [K in keyof (Omit<{ address: `0x${string}`; sign: (parameters: { hash: `0x${string}`; }) => Promise<`0x${string}`>; signMessage: (parameters: { message: SignableMessage; }) => Promise<...>; ... 14 more ...; useNetwork: ...; }, "transfer" | ... 4 more ....;
                                waitForFundOperationReceipt(
                                    options: WaitForFundOperationOptions,
                                ): Promise<WaitForFundOperationResult>;
                            },
                            | "transfer"
                            | "sendTransaction"
                            | "quoteSwap"
                            | "swap"
                            | "useNetwork"
                            | (keyof Actions),
                        > & {
                            [K in string | number | symbol]: (
                                {
                                    sendTransaction: ...;
                                    transfer: ...;
                                    waitForTransactionReceipt: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the newly created account.

             const account = await cdp.evm.createAccount();
             const account = await cdp.evm.createAccount({ name: "MyAccount" });
             const idempotencyKey = uuidv4();

    // First call
    await cdp.evm.createAccount({
    idempotencyKey,
    });

    // Second call with the same idempotency key will return the same account
    await cdp.evm.createAccount({
    idempotencyKey,
    });
  • Creates a new CDP EVM smart account.

    Parameters

    • options: CreateSmartAccountOptions

      Parameters for creating the smart account.

      Options for creating an EVM smart account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • Optionalname?: string

        The name of the account.

      • owner: EvmAccount

        The owner of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            getUserOperation: (
                options: Omit<GetUserOperationOptions, "smartAccount">,
            ) => Promise<UserOperation>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            owners: EvmAccount[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: SmartAccountQuoteSwapOptions,
            ) => Promise<SmartAccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendUserOperation: (
                options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
            ) => Promise<SendUserOperationReturnType>;
            swap: (
                options: SmartAccountSwapOptions,
            ) => Promise<SmartAccountSwapResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<SendUserOperationReturnType>;
            type: "evm-smart";
            useNetwork: <Network extends KnownEvmNetworks>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<EvmSmartAccountProperties, "useNetwork"> & {
                            [K in string | number | symbol]: (
                                {
                                    getUserOperation: ...;
                                    sendUserOperation: ...;
                                    waitForUserOperation: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForUserOperation: (
                options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
            ) => Promise<WaitForUserOperationReturnType>;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the newly created smart account.

             const account = await cdp.evm.createAccount();
    const smartAccount = await cdp.evm.createSmartAccount({
    owner: account,
    });
             // See https://viem.sh/docs/accounts/local/privateKeyToAccount
    const privateKey = generatePrivateKey();
    const account = privateKeyToAccount(privateKey);
    const smartAccount = await client.evm.createSmartAccount({
    owner: account,
    });
             const idempotencyKey = uuidv4();

    // First call
    await cdp.evm.createSmartAccount({
    owner: account,
    idempotencyKey,
    });

    // Second call with the same idempotency key will return the same smart account
    await cdp.evm.createSmartAccount({
    owner: account,
    idempotencyKey,
  • Creates a quote for a swap between two tokens on an EVM network.

    Parameters

    Returns Promise<CreateSwapQuoteResult | SwapUnavailableResult>

    A promise that resolves to the swap quote result or a response indicating that liquidity is unavailable.

    const swapQuote = await cdp.evm.createSwapQuote({
    network: "ethereum",
    toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
    fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
    fromAmount: BigInt("1000000000000000000"), // 1 WETH
    taker: "0x1234567890123456789012345678901234567890"
    });
  • Exports a CDP EVM account's private key. It is important to store the private key in a secure place after it's exported.

    Parameters

    • options: ExportServerAccountOptions

      Parameters for exporting the account.

      Options for exporting an EVM server account.

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

        The address of the account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • Optionalname?: string

        The name of the account.

    Returns Promise<string>

    A promise that resolves to the exported account’s 32-byte private key as a hex string, without the "0x" prefix.

    const privateKey = await cdp.evm.exportAccount({
    address: "0x1234567890123456789012345678901234567890",
    });
    const privateKey = await cdp.evm.exportAccount({
    name: "MyAccount",
    });
  • Gets a CDP EVM account.

    Parameters

    • options: GetServerAccountOptions

      Parameters for getting the account. Either address or name must be provided. If both are provided, lookup will be done by address and name will be ignored.

      Options for getting an EVM account.

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

        The address of the account.

      • Optionalname?: string

        The name of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            policies?: string[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: AccountQuoteSwapOptions,
            ) => Promise<AccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendTransaction: (
                options: Omit<SendTransactionOptions, "address">,
            ) => Promise<TransactionResult>;
            sign: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
            signMessage: (
                parameters: { message: SignableMessage },
            ) => Promise<`0x${string}`>;
            signTransaction: (
                transaction: TransactionSerializable,
            ) => Promise<`0x${string}`>;
            signTypedData: <
                const typedData extends
                    | Record<string, unknown>
                    | {
                        address?: undefined;
                        bool?: undefined;
                        bytes?: undefined;
                        bytes1?: undefined;
                        bytes10?: undefined;
                        bytes11?: undefined;
                        bytes12?: undefined;
                        bytes13?: undefined;
                        bytes14?: undefined;
                        bytes15?: undefined;
                        bytes16?: undefined;
                        bytes17?: undefined;
                        bytes18?: undefined;
                        bytes19?: undefined;
                        bytes2?: undefined;
                        bytes20?: undefined;
                        bytes21?: undefined;
                        bytes22?: undefined;
                        bytes23?: undefined;
                        bytes24?: undefined;
                        bytes25?: undefined;
                        bytes26?: undefined;
                        bytes27?: undefined;
                        bytes28?: undefined;
                        bytes29?: undefined;
                        bytes3?: undefined;
                        bytes30?: undefined;
                        bytes31?: undefined;
                        bytes32?: undefined;
                        bytes4?: undefined;
                        bytes5?: undefined;
                        bytes6?: undefined;
                        bytes7?: undefined;
                        bytes8?: undefined;
                        bytes9?: undefined;
                        int104?: undefined;
                        int112?: undefined;
                        int120?: undefined;
                        int128?: undefined;
                        int136?: undefined;
                        int144?: undefined;
                        int152?: undefined;
                        int16?: undefined;
                        int160?: undefined;
                        int168?: undefined;
                        int176?: undefined;
                        int184?: undefined;
                        int192?: undefined;
                        int200?: undefined;
                        int208?: undefined;
                        int216?: undefined;
                        int224?: undefined;
                        int232?: undefined;
                        int24?: undefined;
                        int240?: undefined;
                        int248?: undefined;
                        int256?: undefined;
                        int32?: undefined;
                        int40?: undefined;
                        int48?: undefined;
                        int56?: undefined;
                        int64?: undefined;
                        int72?: undefined;
                        int8?: undefined;
                        int80?: undefined;
                        int88?: undefined;
                        int96?: undefined;
                        string?: undefined;
                        uint104?: undefined;
                        uint112?: undefined;
                        uint120?: undefined;
                        uint128?: undefined;
                        uint136?: undefined;
                        uint144?: undefined;
                        uint152?: undefined;
                        uint16?: undefined;
                        uint160?: undefined;
                        uint168?: undefined;
                        uint176?: undefined;
                        uint184?: undefined;
                        uint192?: undefined;
                        uint200?: undefined;
                        uint208?: undefined;
                        uint216?: undefined;
                        uint224?: undefined;
                        uint232?: undefined;
                        uint24?: undefined;
                        uint240?: undefined;
                        uint248?: undefined;
                        uint256?: undefined;
                        uint32?: undefined;
                        uint40?: undefined;
                        uint48?: undefined;
                        uint56?: undefined;
                        uint64?: undefined;
                        uint72?: undefined;
                        uint8?: undefined;
                        uint80?: undefined;
                        uint88?: undefined;
                        uint96?: undefined;
                        [key: string]: readonly TypedDataParameter[];
                        [key: `string[${string}]`]: undefined;
                        [key: `function[${string}]`]: undefined;
                        [key: `address[${string}]`]: undefined;
                        [key: `bool[${string}]`]: undefined;
                        [key: `bytes[${string}]`]: undefined;
                        [key: `bytes1[${string}]`]: undefined;
                        [key: `bytes2[${string}]`]: undefined;
                        [key: `bytes3[${string}]`]: undefined;
                        [key: `bytes32[${string}]`]: undefined;
                        [key: `bytes16[${string}]`]: undefined;
                        [key: `bytes4[${string}]`]: undefined;
                        [key: `bytes6[${string}]`]: undefined;
                        [key: `bytes18[${string}]`]: undefined;
                        [key: `bytes10[${string}]`]: undefined;
                        [key: `bytes5[${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: `bytes14[${string}]`]: undefined;
                        [key: `bytes15[${string}]`]: undefined;
                        [key: `bytes17[${string}]`]: undefined;
                        [key: `bytes19[${string}]`]: undefined;
                        [key: `bytes20[${string}]`]: undefined;
                        [key: `bytes21[${string}]`]: undefined;
                        [key: `bytes22[${string}]`]: undefined;
                        [key: `bytes23[${string}]`]: undefined;
                        [key: `bytes24[${string}]`]: undefined;
                        [key: `bytes25[${string}]`]: undefined;
                        [key: `bytes26[${string}]`]: undefined;
                        [key: `bytes27[${string}]`]: undefined;
                        [key: `bytes28[${string}]`]: undefined;
                        [key: `bytes29[${string}]`]: undefined;
                        [key: `bytes30[${string}]`]: undefined;
                        [key: `bytes31[${string}]`]: undefined;
                        [key: `int[${string}]`]: undefined;
                        [key: `int120[${string}]`]: undefined;
                        [key: `int64[${string}]`]: undefined;
                        [key: `int32[${string}]`]: undefined;
                        [key: `int16[${string}]`]: undefined;
                        [key: `int8[${string}]`]: undefined;
                        [key: `int24[${string}]`]: undefined;
                        [key: `int40[${string}]`]: undefined;
                        [key: `int48[${string}]`]: undefined;
                        [key: `int56[${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: `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: `uint120[${string}]`]: undefined;
                        [key: `uint64[${string}]`]: undefined;
                        [key: `uint32[${string}]`]: undefined;
                        [key: `uint16[${string}]`]: undefined;
                        [key: `uint8[${string}]`]: undefined;
                        [key: `uint24[${string}]`]: undefined;
                        [key: `uint40[${string}]`]: undefined;
                        [key: `uint48[${string}]`]: undefined;
                        [key: `uint56[${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: `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;
                    },
                primaryType extends string
                | number
                | symbol = keyof typedData,
            >(
                parameters: TypedDataDefinition<typedData, primaryType>,
            ) => Promise<`0x${string}`>;
            swap: (options: AccountSwapOptions) => Promise<SendSwapTransactionResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<{ transactionHash: `0x${string}` }>;
            type: "evm-server";
            useNetwork: <Network extends NetworkOrRpcUrl>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<
                            {
                                address: `0x${string}`;
                                fund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                listTokenBalances: (options: Omit<(...), (...)>) => Promise<(...)>;
                                name?: string;
                                policies?: (...)[];
                                quoteFund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                quoteSwap: (options: AccountQuoteSwapOptions) => Promise<(...)>;
                                requestFaucet: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sendTransaction: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sign: (parameters: { hash: ... }) => Promise<(...)>;
                                signMessage: (parameters: { message: ... }) => Promise<(...)>;
                                signTransaction: (
                                    transaction: TransactionSerializable,
                                ) => Promise<(...)>;
                                signTypedData: <
                                    const typedData extends (...)
                                    | (...),
                                    primaryType extends (...) | (...) | (...) = keyof (...),
                                >(
                                    parameters: TypedDataDefinition<(...), (...)>,
                                ) => Promise<(...)>;
                                swap: (options: AccountSwapOptions) => Promise<(...)>;
                                transfer: (options: TransferOptions) => Promise<(...)>;
                                type: "evm-server";
                                useNetwork: <Network extends NetworkOrRpcUrl>(network: Network) => Promise<{ [K in keyof (Omit<{ address: `0x${string}`; sign: (parameters: { hash: `0x${string}`; }) => Promise<`0x${string}`>; signMessage: (parameters: { message: SignableMessage; }) => Promise<...>; ... 14 more ...; useNetwork: ...; }, "transfer" | ... 4 more ....;
                                waitForFundOperationReceipt(
                                    options: WaitForFundOperationOptions,
                                ): Promise<WaitForFundOperationResult>;
                            },
                            | "transfer"
                            | "sendTransaction"
                            | "quoteSwap"
                            | "swap"
                            | "useNetwork"
                            | (keyof Actions),
                        > & {
                            [K in string | number | symbol]: (
                                {
                                    sendTransaction: ...;
                                    transfer: ...;
                                    waitForTransactionReceipt: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the account.

             const account = await cdp.evm.getAccount({
    address: "0x1234567890123456789012345678901234567890",
    });
             const account = await cdp.evm.getAccount({
    name: "MyAccount",
    });
  • Gets a CDP EVM account, or creates one if it doesn't exist.

    Parameters

    • options: GetOrCreateServerAccountOptions

      Parameters for getting or creating the account.

      Options for getting an EVM account, or creating one if it doesn't exist.

      • name: string

        The name of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            policies?: string[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: AccountQuoteSwapOptions,
            ) => Promise<AccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendTransaction: (
                options: Omit<SendTransactionOptions, "address">,
            ) => Promise<TransactionResult>;
            sign: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
            signMessage: (
                parameters: { message: SignableMessage },
            ) => Promise<`0x${string}`>;
            signTransaction: (
                transaction: TransactionSerializable,
            ) => Promise<`0x${string}`>;
            signTypedData: <
                const typedData extends
                    | Record<string, unknown>
                    | {
                        address?: undefined;
                        bool?: undefined;
                        bytes?: undefined;
                        bytes1?: undefined;
                        bytes10?: undefined;
                        bytes11?: undefined;
                        bytes12?: undefined;
                        bytes13?: undefined;
                        bytes14?: undefined;
                        bytes15?: undefined;
                        bytes16?: undefined;
                        bytes17?: undefined;
                        bytes18?: undefined;
                        bytes19?: undefined;
                        bytes2?: undefined;
                        bytes20?: undefined;
                        bytes21?: undefined;
                        bytes22?: undefined;
                        bytes23?: undefined;
                        bytes24?: undefined;
                        bytes25?: undefined;
                        bytes26?: undefined;
                        bytes27?: undefined;
                        bytes28?: undefined;
                        bytes29?: undefined;
                        bytes3?: undefined;
                        bytes30?: undefined;
                        bytes31?: undefined;
                        bytes32?: undefined;
                        bytes4?: undefined;
                        bytes5?: undefined;
                        bytes6?: undefined;
                        bytes7?: undefined;
                        bytes8?: undefined;
                        bytes9?: undefined;
                        int104?: undefined;
                        int112?: undefined;
                        int120?: undefined;
                        int128?: undefined;
                        int136?: undefined;
                        int144?: undefined;
                        int152?: undefined;
                        int16?: undefined;
                        int160?: undefined;
                        int168?: undefined;
                        int176?: undefined;
                        int184?: undefined;
                        int192?: undefined;
                        int200?: undefined;
                        int208?: undefined;
                        int216?: undefined;
                        int224?: undefined;
                        int232?: undefined;
                        int24?: undefined;
                        int240?: undefined;
                        int248?: undefined;
                        int256?: undefined;
                        int32?: undefined;
                        int40?: undefined;
                        int48?: undefined;
                        int56?: undefined;
                        int64?: undefined;
                        int72?: undefined;
                        int8?: undefined;
                        int80?: undefined;
                        int88?: undefined;
                        int96?: undefined;
                        string?: undefined;
                        uint104?: undefined;
                        uint112?: undefined;
                        uint120?: undefined;
                        uint128?: undefined;
                        uint136?: undefined;
                        uint144?: undefined;
                        uint152?: undefined;
                        uint16?: undefined;
                        uint160?: undefined;
                        uint168?: undefined;
                        uint176?: undefined;
                        uint184?: undefined;
                        uint192?: undefined;
                        uint200?: undefined;
                        uint208?: undefined;
                        uint216?: undefined;
                        uint224?: undefined;
                        uint232?: undefined;
                        uint24?: undefined;
                        uint240?: undefined;
                        uint248?: undefined;
                        uint256?: undefined;
                        uint32?: undefined;
                        uint40?: undefined;
                        uint48?: undefined;
                        uint56?: undefined;
                        uint64?: undefined;
                        uint72?: undefined;
                        uint8?: undefined;
                        uint80?: undefined;
                        uint88?: undefined;
                        uint96?: undefined;
                        [key: string]: readonly TypedDataParameter[];
                        [key: `string[${string}]`]: undefined;
                        [key: `function[${string}]`]: undefined;
                        [key: `address[${string}]`]: undefined;
                        [key: `bool[${string}]`]: undefined;
                        [key: `bytes[${string}]`]: undefined;
                        [key: `bytes1[${string}]`]: undefined;
                        [key: `bytes2[${string}]`]: undefined;
                        [key: `bytes3[${string}]`]: undefined;
                        [key: `bytes32[${string}]`]: undefined;
                        [key: `bytes16[${string}]`]: undefined;
                        [key: `bytes4[${string}]`]: undefined;
                        [key: `bytes6[${string}]`]: undefined;
                        [key: `bytes18[${string}]`]: undefined;
                        [key: `bytes10[${string}]`]: undefined;
                        [key: `bytes5[${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: `bytes14[${string}]`]: undefined;
                        [key: `bytes15[${string}]`]: undefined;
                        [key: `bytes17[${string}]`]: undefined;
                        [key: `bytes19[${string}]`]: undefined;
                        [key: `bytes20[${string}]`]: undefined;
                        [key: `bytes21[${string}]`]: undefined;
                        [key: `bytes22[${string}]`]: undefined;
                        [key: `bytes23[${string}]`]: undefined;
                        [key: `bytes24[${string}]`]: undefined;
                        [key: `bytes25[${string}]`]: undefined;
                        [key: `bytes26[${string}]`]: undefined;
                        [key: `bytes27[${string}]`]: undefined;
                        [key: `bytes28[${string}]`]: undefined;
                        [key: `bytes29[${string}]`]: undefined;
                        [key: `bytes30[${string}]`]: undefined;
                        [key: `bytes31[${string}]`]: undefined;
                        [key: `int[${string}]`]: undefined;
                        [key: `int120[${string}]`]: undefined;
                        [key: `int64[${string}]`]: undefined;
                        [key: `int32[${string}]`]: undefined;
                        [key: `int16[${string}]`]: undefined;
                        [key: `int8[${string}]`]: undefined;
                        [key: `int24[${string}]`]: undefined;
                        [key: `int40[${string}]`]: undefined;
                        [key: `int48[${string}]`]: undefined;
                        [key: `int56[${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: `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: `uint120[${string}]`]: undefined;
                        [key: `uint64[${string}]`]: undefined;
                        [key: `uint32[${string}]`]: undefined;
                        [key: `uint16[${string}]`]: undefined;
                        [key: `uint8[${string}]`]: undefined;
                        [key: `uint24[${string}]`]: undefined;
                        [key: `uint40[${string}]`]: undefined;
                        [key: `uint48[${string}]`]: undefined;
                        [key: `uint56[${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: `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;
                    },
                primaryType extends string
                | number
                | symbol = keyof typedData,
            >(
                parameters: TypedDataDefinition<typedData, primaryType>,
            ) => Promise<`0x${string}`>;
            swap: (options: AccountSwapOptions) => Promise<SendSwapTransactionResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<{ transactionHash: `0x${string}` }>;
            type: "evm-server";
            useNetwork: <Network extends NetworkOrRpcUrl>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<
                            {
                                address: `0x${string}`;
                                fund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                listTokenBalances: (options: Omit<(...), (...)>) => Promise<(...)>;
                                name?: string;
                                policies?: (...)[];
                                quoteFund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                quoteSwap: (options: AccountQuoteSwapOptions) => Promise<(...)>;
                                requestFaucet: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sendTransaction: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sign: (parameters: { hash: ... }) => Promise<(...)>;
                                signMessage: (parameters: { message: ... }) => Promise<(...)>;
                                signTransaction: (
                                    transaction: TransactionSerializable,
                                ) => Promise<(...)>;
                                signTypedData: <
                                    const typedData extends (...)
                                    | (...),
                                    primaryType extends (...) | (...) | (...) = keyof (...),
                                >(
                                    parameters: TypedDataDefinition<(...), (...)>,
                                ) => Promise<(...)>;
                                swap: (options: AccountSwapOptions) => Promise<(...)>;
                                transfer: (options: TransferOptions) => Promise<(...)>;
                                type: "evm-server";
                                useNetwork: <Network extends NetworkOrRpcUrl>(network: Network) => Promise<{ [K in keyof (Omit<{ address: `0x${string}`; sign: (parameters: { hash: `0x${string}`; }) => Promise<`0x${string}`>; signMessage: (parameters: { message: SignableMessage; }) => Promise<...>; ... 14 more ...; useNetwork: ...; }, "transfer" | ... 4 more ....;
                                waitForFundOperationReceipt(
                                    options: WaitForFundOperationOptions,
                                ): Promise<WaitForFundOperationResult>;
                            },
                            | "transfer"
                            | "sendTransaction"
                            | "quoteSwap"
                            | "swap"
                            | "useNetwork"
                            | (keyof Actions),
                        > & {
                            [K in string | number | symbol]: (
                                {
                                    sendTransaction: ...;
                                    transfer: ...;
                                    waitForTransactionReceipt: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the account.

    const account = await cdp.evm.getOrCreateAccount({
    name: "MyAccount",
    });
  • Gets a CDP EVM smart account, or creates one if it doesn't exist. This method first attempts to retrieve an existing smart account with the given parameters. If no account exists, it creates a new one with the specified owner.

    Parameters

    • options: GetOrCreateSmartAccountOptions

      Configuration options for getting or creating the smart account.

      Options for getting an EVM account, or creating one if it doesn't exist.

      • name: string

        The name of the account.

      • owner: EvmAccount

        The owner of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            getUserOperation: (
                options: Omit<GetUserOperationOptions, "smartAccount">,
            ) => Promise<UserOperation>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            owners: EvmAccount[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: SmartAccountQuoteSwapOptions,
            ) => Promise<SmartAccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendUserOperation: (
                options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
            ) => Promise<SendUserOperationReturnType>;
            swap: (
                options: SmartAccountSwapOptions,
            ) => Promise<SmartAccountSwapResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<SendUserOperationReturnType>;
            type: "evm-smart";
            useNetwork: <Network extends KnownEvmNetworks>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<EvmSmartAccountProperties, "useNetwork"> & {
                            [K in string | number | symbol]: (
                                {
                                    getUserOperation: ...;
                                    sendUserOperation: ...;
                                    waitForUserOperation: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForUserOperation: (
                options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
            ) => Promise<WaitForUserOperationReturnType>;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the retrieved or newly created smart account.

    const smartAccount = await cdp.evm.getOrCreateSmartAccount({
    name: "MySmartAccount",
    owner: account,
    });
  • Gets a CDP EVM smart account.

    Parameters

    • options: GetSmartAccountOptions

      Parameters for getting the smart account. Either address or name must be provided. If both are provided, lookup will be done by address and name will be ignored.

      Options for getting an EVM smart account.

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

        The address of the account.

      • Optionalname?: string

        The name of the account.

      • owner: EvmAccount

        The owner of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            getUserOperation: (
                options: Omit<GetUserOperationOptions, "smartAccount">,
            ) => Promise<UserOperation>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            owners: EvmAccount[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: SmartAccountQuoteSwapOptions,
            ) => Promise<SmartAccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendUserOperation: (
                options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
            ) => Promise<SendUserOperationReturnType>;
            swap: (
                options: SmartAccountSwapOptions,
            ) => Promise<SmartAccountSwapResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<SendUserOperationReturnType>;
            type: "evm-smart";
            useNetwork: <Network extends KnownEvmNetworks>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<EvmSmartAccountProperties, "useNetwork"> & {
                            [K in string | number | symbol]: (
                                {
                                    getUserOperation: ...;
                                    sendUserOperation: ...;
                                    waitForUserOperation: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForUserOperation: (
                options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
            ) => Promise<WaitForUserOperationReturnType>;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the smart account.

    const smartAccount = await cdp.evm.getSmartAccount({
    address: "0x1234567890123456789012345678901234567890",
    owner: account,
    });
  • Gets the price for a swap between two tokens on an EVM network.

    Parameters

    Returns Promise<SwapUnavailableResult | GetSwapPriceResult>

    A promise that resolves to the swap price result or a response indicating that liquidity is unavailable.

    const price = await cdp.evm.getSwapPrice({
    network: "ethereum-mainnet",
    toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
    fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
    fromAmount: BigInt("1000000000000000000"), // 1 WETH
    taker: "0x1234567890123456789012345678901234567890"
    });
  • Gets a user operation for a smart account by user operation hash.

    Parameters

    • options: GetUserOperationOptions

      Parameters for getting the user operation.

      Options for getting a user operation.

      • smartAccount: {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            getUserOperation: (
                options: Omit<GetUserOperationOptions, "smartAccount">,
            ) => Promise<UserOperation>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            owners: EvmAccount[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: SmartAccountQuoteSwapOptions,
            ) => Promise<SmartAccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendUserOperation: (
                options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
            ) => Promise<SendUserOperationReturnType>;
            swap: (options: SmartAccountSwapOptions) => Promise<SmartAccountSwapResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<SendUserOperationReturnType>;
            type: "evm-smart";
            useNetwork: <Network extends KnownEvmNetworks>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<EvmSmartAccountProperties, "useNetwork"> & {
                            [K in string | number | symbol]: (
                                {
                                    getUserOperation: (options: ...) => ...;
                                    sendUserOperation: <const callData extends ...>(options: ...) => ...;
                                    waitForUserOperation: (options: ...) => ...;
                                } & (
                                    Network extends TransferNetworks ? { transfer: ... } : EmptyObject
                                ) & (
                                    Network extends ListTokenBalancesNetworks
                                        ? { listTokenBalances: ... }
                                        : EmptyObject
                                ) & (
                                    Network extends RequestFaucetNetworks
                                        ? { requestFaucet: ... }
                                        : EmptyObject
                                ) & (Network extends "base" ? { quoteFund: ... } : EmptyObject) & (
                                    Network extends "base"
                                        ? { fund: ...; waitForFundOperationReceipt: ... }
                                        : EmptyObject
                                ) & (
                                    Network extends QuoteSwapNetworks
                                        ? { quoteSwap: ... }
                                        : EmptyObject
                                ) & (Network extends SwapNetworks ? { swap: ... } : EmptyObject)
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForUserOperation: (
                options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
            ) => Promise<WaitForUserOperationReturnType>;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        }

        The smart account.

        • address: `0x${string}`

          The smart account's address.

        • fund: (options: Omit<FundOptions, "address">) => Promise<FundOperationResult>

          Funds an EVM account with the specified token amount.

          const fundOperation = await account.fund({
          network: "base",
          token: "usdc",
          amount: 1000000n,
          });
        • getUserOperation: (
              options: Omit<GetUserOperationOptions, "smartAccount">,
          ) => Promise<UserOperation>

          Gets a user operation by its hash.

          const userOp = await smartAccount.getUserOperation({
          userOpHash: "0x1234567890123456789012345678901234567890",
          });
        • listTokenBalances: (
              options: Omit<ListTokenBalancesOptions, "address">,
          ) => Promise<ListTokenBalancesResult>

          List the token balances of an account.

          const balances = await account.listTokenBalances({
          network: "base-sepolia",
          });
        • Optionalname?: string

          The name of the smart account.

        • owners: EvmAccount[]

          Array of accounts that own and can sign for the smart account (currently only supports one owner but will be extended to support multiple owners in the future).

        • quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>

          Gets a quote to fund an EVM account.

          const quote = await account.quoteFund({
          network: "base",
          token: "usdc",
          amount: 1000000n,
          });
        • quoteSwap: (options: SmartAccountQuoteSwapOptions) => Promise<SmartAccountQuoteSwapResult>

          Creates a swap quote without executing the transaction. This is useful when you need to get swap details before executing the swap. The taker is automatically set to the smart account's address.

          const swapQuote = await smartAccount.quoteSwap({
          network: "base",
          fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
          toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
          fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
          });

          if (swapQuote.liquidityAvailable) {
          console.log(`Can swap for ${swapQuote.toAmount} USDC`);
          }
        • requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<RequestFaucetResult>

          Requests funds from an EVM faucet.

          const result = await account.requestFaucet({
          network: "base-sepolia",
          token: "eth",
          });
        • sendUserOperation: (
              options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
          ) => Promise<SendUserOperationReturnType>

          Sends a user operation.

          const userOp = await smartAccount.sendUserOperation({
          network: "base-sepolia",
          calls: [
          {
          to: "0x1234567890123456789012345678901234567890",
          value: parseEther("0.000001"),
          data: "0x",
          },
          ],
          });
        • swap: (options: SmartAccountSwapOptions) => Promise<SmartAccountSwapResult>

          Executes a token swap on the specified network via a user operation. This method handles all the steps required for a swap, including Permit2 signatures if needed. The taker is automatically set to the smart account's address.

          If liquidity is not available when using inline options.

          // First create a swap quote
          const swapQuote = await cdp.evm.createSwapQuote({
          network: "base",
          toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
          fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
          fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
          taker: smartAccount.address,
          signerAddress: smartAccount.owners[0].address
          });

          // Check if liquidity is available
          if (!swapQuote.liquidityAvailable) {
          console.error("Insufficient liquidity for swap");
          return;
          }

          // Execute the swap
          const { userOpHash } = await smartAccount.swap({
          swapQuote: swapQuote
          });

          console.log(`Swap executed with user op hash: ${userOpHash}`);
          // Create and execute swap in one call
          const { userOpHash } = await smartAccount.swap({
          network: "base",
          toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
          fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
          fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
          });

          console.log(`Swap executed with user op hash: ${userOpHash}`);
        • transfer: (options: TransferOptions) => Promise<SendUserOperationReturnType>

          Transfer an amount of a token from an account to another account.

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: 10000n, // equivalent to 0.01 USDC
          token: "usdc",
          network: "base-sepolia",
          });

          Using parseUnits to specify USDC amount

          import { parseUnits } from "viem";

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: parseUnits("0.01", 6), // USDC uses 6 decimal places
          token: "usdc",
          network: "base-sepolia",
          });

          Transfer ETH

          import { parseEther } from "viem";

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: parseEther("0.000001"),
          token: "eth",
          network: "base-sepolia",
          });

          Using a contract address

          import { parseEther } from "viem";

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: parseEther("0.000001"),
          token: "0x4200000000000000000000000000000000000006", // WETH on Base Sepolia
          network: "base-sepolia",
          });

          Transfer to another account

          const sender = await cdp.evm.createAccount({ name: "Sender" });
          const receiver = await cdp.evm.createAccount({ name: "Receiver" });

          const { userOpHash } = await sender.transfer({
          to: receiver,
          amount: 10000n, // equivalent to 0.01 USDC
          token: "usdc",
          network: "base-sepolia",
          });
        • type: "evm-smart"

          Identifier for the smart account type.

        • useNetwork: <Network extends KnownEvmNetworks>(
              network: Network,
          ) => Promise<
              {
                  [K in string
                  | number
                  | symbol]: (
                      Omit<EvmSmartAccountProperties, "useNetwork"> & {
                          [K in string | number | symbol]: (
                              {
                                  getUserOperation: (options: ...) => ...;
                                  sendUserOperation: <const callData extends ...>(options: ...) => ...;
                                  waitForUserOperation: (options: ...) => ...;
                              } & (
                                  Network extends TransferNetworks ? { transfer: ... } : EmptyObject
                              ) & (
                                  Network extends ListTokenBalancesNetworks
                                      ? { listTokenBalances: ... }
                                      : EmptyObject
                              ) & (
                                  Network extends RequestFaucetNetworks
                                      ? { requestFaucet: ... }
                                      : EmptyObject
                              ) & (Network extends "base" ? { quoteFund: ... } : EmptyObject) & (
                                  Network extends "base"
                                      ? { fund: ...; waitForFundOperationReceipt: ... }
                                      : EmptyObject
                              ) & (
                                  Network extends QuoteSwapNetworks
                                      ? { quoteSwap: ... }
                                      : EmptyObject
                              ) & (Network extends SwapNetworks ? { swap: ... } : EmptyObject)
                          )[K]
                      } & { network: Network }
                  )[K]
              },
          >

          A function that returns a network-scoped smart account.

          // For known networks, type is inferred automatically:
          const baseAccount = await smartAccount.useNetwork("base");

          // For custom RPC URLs with type hints (requires casting):
          const typedAccount = await smartAccount.useNetwork<"base">("https://mainnet.base.org" as "base");

          // For custom RPC URLs without type hints (only sendTransaction, transfer and waitForTransactionReceipt methods available):
          const customAccount = await smartAccount.useNetwork("https://mainnet.base.org");
        • waitForUserOperation: (
              options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
          ) => Promise<WaitForUserOperationReturnType>

          Waits for a user operation to complete or fail.

          // Send a user operation and get the user operation hash
          const { userOpHash } = await smartAccount.sendUserOperation({
          network: "base-sepolia",
          calls: [
          {
          to: "0x0000000000000000000000000000000000000000",
          value: parseEther("0.000001"),
          data: "0x",
          },
          ],
          });

          // Wait for the user operation to complete or fail
          const result = await smartAccount.waitForUserOperation({
          userOpHash: userOp.userOpHash,
          });
        • waitForFundOperationReceipt:function
      • userOpHash: `0x${string}`

        The user operation hash.

    Returns Promise<UserOperation>

    A promise that resolves to the user operation.

    const userOp = await cdp.evm.getUserOperation({
    smartAccount,
    userOpHash: "0x1234567890123456789012345678901234567890123456789012345678901234",
    });
  • Imports a CDP EVM account from an external source.

    Parameters

    • options: ImportServerAccountOptions

      Parameters for importing the account.

      Options for importing an EVM server account.

      • OptionalencryptionPublicKey?: string

        The public RSA key used to encrypt the private key when importing an EVM account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • Optionalname?: string

        The name of the account.

      • privateKey: `0x${string}`

        The private key of the account.

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            policies?: string[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: AccountQuoteSwapOptions,
            ) => Promise<AccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendTransaction: (
                options: Omit<SendTransactionOptions, "address">,
            ) => Promise<TransactionResult>;
            sign: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
            signMessage: (
                parameters: { message: SignableMessage },
            ) => Promise<`0x${string}`>;
            signTransaction: (
                transaction: TransactionSerializable,
            ) => Promise<`0x${string}`>;
            signTypedData: <
                const typedData extends
                    | Record<string, unknown>
                    | {
                        address?: undefined;
                        bool?: undefined;
                        bytes?: undefined;
                        bytes1?: undefined;
                        bytes10?: undefined;
                        bytes11?: undefined;
                        bytes12?: undefined;
                        bytes13?: undefined;
                        bytes14?: undefined;
                        bytes15?: undefined;
                        bytes16?: undefined;
                        bytes17?: undefined;
                        bytes18?: undefined;
                        bytes19?: undefined;
                        bytes2?: undefined;
                        bytes20?: undefined;
                        bytes21?: undefined;
                        bytes22?: undefined;
                        bytes23?: undefined;
                        bytes24?: undefined;
                        bytes25?: undefined;
                        bytes26?: undefined;
                        bytes27?: undefined;
                        bytes28?: undefined;
                        bytes29?: undefined;
                        bytes3?: undefined;
                        bytes30?: undefined;
                        bytes31?: undefined;
                        bytes32?: undefined;
                        bytes4?: undefined;
                        bytes5?: undefined;
                        bytes6?: undefined;
                        bytes7?: undefined;
                        bytes8?: undefined;
                        bytes9?: undefined;
                        int104?: undefined;
                        int112?: undefined;
                        int120?: undefined;
                        int128?: undefined;
                        int136?: undefined;
                        int144?: undefined;
                        int152?: undefined;
                        int16?: undefined;
                        int160?: undefined;
                        int168?: undefined;
                        int176?: undefined;
                        int184?: undefined;
                        int192?: undefined;
                        int200?: undefined;
                        int208?: undefined;
                        int216?: undefined;
                        int224?: undefined;
                        int232?: undefined;
                        int24?: undefined;
                        int240?: undefined;
                        int248?: undefined;
                        int256?: undefined;
                        int32?: undefined;
                        int40?: undefined;
                        int48?: undefined;
                        int56?: undefined;
                        int64?: undefined;
                        int72?: undefined;
                        int8?: undefined;
                        int80?: undefined;
                        int88?: undefined;
                        int96?: undefined;
                        string?: undefined;
                        uint104?: undefined;
                        uint112?: undefined;
                        uint120?: undefined;
                        uint128?: undefined;
                        uint136?: undefined;
                        uint144?: undefined;
                        uint152?: undefined;
                        uint16?: undefined;
                        uint160?: undefined;
                        uint168?: undefined;
                        uint176?: undefined;
                        uint184?: undefined;
                        uint192?: undefined;
                        uint200?: undefined;
                        uint208?: undefined;
                        uint216?: undefined;
                        uint224?: undefined;
                        uint232?: undefined;
                        uint24?: undefined;
                        uint240?: undefined;
                        uint248?: undefined;
                        uint256?: undefined;
                        uint32?: undefined;
                        uint40?: undefined;
                        uint48?: undefined;
                        uint56?: undefined;
                        uint64?: undefined;
                        uint72?: undefined;
                        uint8?: undefined;
                        uint80?: undefined;
                        uint88?: undefined;
                        uint96?: undefined;
                        [key: string]: readonly TypedDataParameter[];
                        [key: `string[${string}]`]: undefined;
                        [key: `function[${string}]`]: undefined;
                        [key: `address[${string}]`]: undefined;
                        [key: `bool[${string}]`]: undefined;
                        [key: `bytes[${string}]`]: undefined;
                        [key: `bytes1[${string}]`]: undefined;
                        [key: `bytes2[${string}]`]: undefined;
                        [key: `bytes3[${string}]`]: undefined;
                        [key: `bytes32[${string}]`]: undefined;
                        [key: `bytes16[${string}]`]: undefined;
                        [key: `bytes4[${string}]`]: undefined;
                        [key: `bytes6[${string}]`]: undefined;
                        [key: `bytes18[${string}]`]: undefined;
                        [key: `bytes10[${string}]`]: undefined;
                        [key: `bytes5[${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: `bytes14[${string}]`]: undefined;
                        [key: `bytes15[${string}]`]: undefined;
                        [key: `bytes17[${string}]`]: undefined;
                        [key: `bytes19[${string}]`]: undefined;
                        [key: `bytes20[${string}]`]: undefined;
                        [key: `bytes21[${string}]`]: undefined;
                        [key: `bytes22[${string}]`]: undefined;
                        [key: `bytes23[${string}]`]: undefined;
                        [key: `bytes24[${string}]`]: undefined;
                        [key: `bytes25[${string}]`]: undefined;
                        [key: `bytes26[${string}]`]: undefined;
                        [key: `bytes27[${string}]`]: undefined;
                        [key: `bytes28[${string}]`]: undefined;
                        [key: `bytes29[${string}]`]: undefined;
                        [key: `bytes30[${string}]`]: undefined;
                        [key: `bytes31[${string}]`]: undefined;
                        [key: `int[${string}]`]: undefined;
                        [key: `int120[${string}]`]: undefined;
                        [key: `int64[${string}]`]: undefined;
                        [key: `int32[${string}]`]: undefined;
                        [key: `int16[${string}]`]: undefined;
                        [key: `int8[${string}]`]: undefined;
                        [key: `int24[${string}]`]: undefined;
                        [key: `int40[${string}]`]: undefined;
                        [key: `int48[${string}]`]: undefined;
                        [key: `int56[${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: `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: `uint120[${string}]`]: undefined;
                        [key: `uint64[${string}]`]: undefined;
                        [key: `uint32[${string}]`]: undefined;
                        [key: `uint16[${string}]`]: undefined;
                        [key: `uint8[${string}]`]: undefined;
                        [key: `uint24[${string}]`]: undefined;
                        [key: `uint40[${string}]`]: undefined;
                        [key: `uint48[${string}]`]: undefined;
                        [key: `uint56[${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: `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;
                    },
                primaryType extends string
                | number
                | symbol = keyof typedData,
            >(
                parameters: TypedDataDefinition<typedData, primaryType>,
            ) => Promise<`0x${string}`>;
            swap: (options: AccountSwapOptions) => Promise<SendSwapTransactionResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<{ transactionHash: `0x${string}` }>;
            type: "evm-server";
            useNetwork: <Network extends NetworkOrRpcUrl>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<
                            {
                                address: `0x${string}`;
                                fund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                listTokenBalances: (options: Omit<(...), (...)>) => Promise<(...)>;
                                name?: string;
                                policies?: (...)[];
                                quoteFund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                quoteSwap: (options: AccountQuoteSwapOptions) => Promise<(...)>;
                                requestFaucet: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sendTransaction: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sign: (parameters: { hash: ... }) => Promise<(...)>;
                                signMessage: (parameters: { message: ... }) => Promise<(...)>;
                                signTransaction: (
                                    transaction: TransactionSerializable,
                                ) => Promise<(...)>;
                                signTypedData: <
                                    const typedData extends (...)
                                    | (...),
                                    primaryType extends (...) | (...) | (...) = keyof (...),
                                >(
                                    parameters: TypedDataDefinition<(...), (...)>,
                                ) => Promise<(...)>;
                                swap: (options: AccountSwapOptions) => Promise<(...)>;
                                transfer: (options: TransferOptions) => Promise<(...)>;
                                type: "evm-server";
                                useNetwork: <Network extends NetworkOrRpcUrl>(network: Network) => Promise<{ [K in keyof (Omit<{ address: `0x${string}`; sign: (parameters: { hash: `0x${string}`; }) => Promise<`0x${string}`>; signMessage: (parameters: { message: SignableMessage; }) => Promise<...>; ... 14 more ...; useNetwork: ...; }, "transfer" | ... 4 more ....;
                                waitForFundOperationReceipt(
                                    options: WaitForFundOperationOptions,
                                ): Promise<WaitForFundOperationResult>;
                            },
                            | "transfer"
                            | "sendTransaction"
                            | "quoteSwap"
                            | "swap"
                            | "useNetwork"
                            | (keyof Actions),
                        > & {
                            [K in string | number | symbol]: (
                                {
                                    sendTransaction: ...;
                                    transfer: ...;
                                    waitForTransactionReceipt: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the imported account.

             const account = await cdp.evm.importAccount({
    privateKey: "0x123456"
    });
             const account = await cdp.evm.importAccount({
    privateKey: "0x123456",
    name: "MyAccount"
    });
             const idempotencyKey = uuidv4();

    // First call
    await cdp.evm.importAccount({
    privateKey: "0x123456",
    idempotencyKey,
    });

    // Second call with the same idempotency key will return the same account
    await cdp.evm.importAccount({
    privateKey: "0x123456"
    idempotencyKey,
    });
  • Lists CDP EVM accounts.

    Parameters

    • Optionaloptions: ListServerAccountsOptions = {}

      Optional parameters for listing the accounts.

      Options for listing EVM accounts.

      • OptionalpageSize?: number

        The page size to paginate through the accounts.

      • OptionalpageToken?: string

        The page token to paginate through the accounts.

    Returns Promise<ListServerAccountResult>

    A promise that resolves to an array of accounts, and a token to paginate through the accounts.

    const accounts = await cdp.evm.listAccounts();
    
             let page = await cdp.evm.listAccounts();

    while (page.nextPageToken) {
    page = await cdp.evm.listAccounts({ pageToken: page.nextPageToken });
    }
  • Lists CDP EVM smart accounts.

    Parameters

    • options: ListSmartAccountsOptions = {}

      Parameters for listing the smart accounts.

      Options for listing EVM smart accounts.

      • Optionalname?: string

        The name of the account.

      • OptionalpageSize?: number

        The page size to paginate through the accounts.

      • OptionalpageToken?: string

        The page token to paginate through the accounts.

    Returns Promise<ListSmartAccountResult>

    A promise that resolves to an array of smart accounts, and a token to paginate through the smart accounts.

    const smartAccounts = await cdp.evm.listSmartAccounts();
    
             let page = await cdp.evm.listSmartAccounts();

    while (page.nextPageToken) {
    page = await cdp.evm.listSmartAccounts({ pageToken: page.nextPageToken });
  • Lists CDP EVM token balances.

    Parameters

    • options: ListTokenBalancesOptions

      Parameters for listing the token balances.

      Options for listing EVM token balances.

      • address: `0x${string}`

        The address of the account.

      • network: ListEvmTokenBalancesNetwork

        The network.

      • OptionalpageSize?: number

        The page size to paginate through the token balances.

      • OptionalpageToken?: string

        The page token to paginate through the token balances.

    Returns Promise<ListTokenBalancesResult>

    A promise that resolves to an array of token balances, and a token to paginate through the token balances.

    const tokenBalances = await cdp.evm.listTokenBalances({
    address: "0x1234567890123456789012345678901234567890",
    network: "base-sepolia",
    });

    With pagination

    let page = await cdp.evm.listTokenBalances({
    address: "0x1234567890123456789012345678901234567890",
    network: "base-sepolia",
    });

    while (page.nextPageToken) {
    page = await cdp.evm.listTokenBalances({
    address: "0x1234567890123456789012345678901234567890",
    network: "base-sepolia",
    pageToken: page.nextPageToken,
    });
  • Prepares a user operation for a smart account.

    Parameters

    • options: PrepareUserOperationOptions

      Parameters for preparing the user operation.

      Options for preparing a user operation.

      • calls: readonly { data: `0x${string}`; to: `0x${string}`; value: bigint }[]

        The calls.

      • network: EvmUserOperationNetwork

        The network.

      • OptionalpaymasterUrl?: string

        The paymaster URL.

      • smartAccount: {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            getUserOperation: (
                options: Omit<GetUserOperationOptions, "smartAccount">,
            ) => Promise<UserOperation>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            owners: EvmAccount[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: SmartAccountQuoteSwapOptions,
            ) => Promise<SmartAccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendUserOperation: (
                options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
            ) => Promise<SendUserOperationReturnType>;
            swap: (options: SmartAccountSwapOptions) => Promise<SmartAccountSwapResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<SendUserOperationReturnType>;
            type: "evm-smart";
            useNetwork: <Network extends KnownEvmNetworks>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<EvmSmartAccountProperties, "useNetwork"> & {
                            [K in string | number | symbol]: (
                                {
                                    getUserOperation: (options: ...) => ...;
                                    sendUserOperation: <const callData extends ...>(options: ...) => ...;
                                    waitForUserOperation: (options: ...) => ...;
                                } & (
                                    Network extends TransferNetworks ? { transfer: ... } : EmptyObject
                                ) & (
                                    Network extends ListTokenBalancesNetworks
                                        ? { listTokenBalances: ... }
                                        : EmptyObject
                                ) & (
                                    Network extends RequestFaucetNetworks
                                        ? { requestFaucet: ... }
                                        : EmptyObject
                                ) & (Network extends "base" ? { quoteFund: ... } : EmptyObject) & (
                                    Network extends "base"
                                        ? { fund: ...; waitForFundOperationReceipt: ... }
                                        : EmptyObject
                                ) & (
                                    Network extends QuoteSwapNetworks
                                        ? { quoteSwap: ... }
                                        : EmptyObject
                                ) & (Network extends SwapNetworks ? { swap: ... } : EmptyObject)
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForUserOperation: (
                options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
            ) => Promise<WaitForUserOperationReturnType>;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        }

        The smart account.

        • address: `0x${string}`

          The smart account's address.

        • fund: (options: Omit<FundOptions, "address">) => Promise<FundOperationResult>

          Funds an EVM account with the specified token amount.

          const fundOperation = await account.fund({
          network: "base",
          token: "usdc",
          amount: 1000000n,
          });
        • getUserOperation: (
              options: Omit<GetUserOperationOptions, "smartAccount">,
          ) => Promise<UserOperation>

          Gets a user operation by its hash.

          const userOp = await smartAccount.getUserOperation({
          userOpHash: "0x1234567890123456789012345678901234567890",
          });
        • listTokenBalances: (
              options: Omit<ListTokenBalancesOptions, "address">,
          ) => Promise<ListTokenBalancesResult>

          List the token balances of an account.

          const balances = await account.listTokenBalances({
          network: "base-sepolia",
          });
        • Optionalname?: string

          The name of the smart account.

        • owners: EvmAccount[]

          Array of accounts that own and can sign for the smart account (currently only supports one owner but will be extended to support multiple owners in the future).

        • quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>

          Gets a quote to fund an EVM account.

          const quote = await account.quoteFund({
          network: "base",
          token: "usdc",
          amount: 1000000n,
          });
        • quoteSwap: (options: SmartAccountQuoteSwapOptions) => Promise<SmartAccountQuoteSwapResult>

          Creates a swap quote without executing the transaction. This is useful when you need to get swap details before executing the swap. The taker is automatically set to the smart account's address.

          const swapQuote = await smartAccount.quoteSwap({
          network: "base",
          fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
          toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
          fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
          });

          if (swapQuote.liquidityAvailable) {
          console.log(`Can swap for ${swapQuote.toAmount} USDC`);
          }
        • requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<RequestFaucetResult>

          Requests funds from an EVM faucet.

          const result = await account.requestFaucet({
          network: "base-sepolia",
          token: "eth",
          });
        • sendUserOperation: (
              options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
          ) => Promise<SendUserOperationReturnType>

          Sends a user operation.

          const userOp = await smartAccount.sendUserOperation({
          network: "base-sepolia",
          calls: [
          {
          to: "0x1234567890123456789012345678901234567890",
          value: parseEther("0.000001"),
          data: "0x",
          },
          ],
          });
        • swap: (options: SmartAccountSwapOptions) => Promise<SmartAccountSwapResult>

          Executes a token swap on the specified network via a user operation. This method handles all the steps required for a swap, including Permit2 signatures if needed. The taker is automatically set to the smart account's address.

          If liquidity is not available when using inline options.

          // First create a swap quote
          const swapQuote = await cdp.evm.createSwapQuote({
          network: "base",
          toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
          fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
          fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
          taker: smartAccount.address,
          signerAddress: smartAccount.owners[0].address
          });

          // Check if liquidity is available
          if (!swapQuote.liquidityAvailable) {
          console.error("Insufficient liquidity for swap");
          return;
          }

          // Execute the swap
          const { userOpHash } = await smartAccount.swap({
          swapQuote: swapQuote
          });

          console.log(`Swap executed with user op hash: ${userOpHash}`);
          // Create and execute swap in one call
          const { userOpHash } = await smartAccount.swap({
          network: "base",
          toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
          fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
          fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
          });

          console.log(`Swap executed with user op hash: ${userOpHash}`);
        • transfer: (options: TransferOptions) => Promise<SendUserOperationReturnType>

          Transfer an amount of a token from an account to another account.

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: 10000n, // equivalent to 0.01 USDC
          token: "usdc",
          network: "base-sepolia",
          });

          Using parseUnits to specify USDC amount

          import { parseUnits } from "viem";

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: parseUnits("0.01", 6), // USDC uses 6 decimal places
          token: "usdc",
          network: "base-sepolia",
          });

          Transfer ETH

          import { parseEther } from "viem";

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: parseEther("0.000001"),
          token: "eth",
          network: "base-sepolia",
          });

          Using a contract address

          import { parseEther } from "viem";

          const { userOpHash } = await sender.transfer({
          to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
          amount: parseEther("0.000001"),
          token: "0x4200000000000000000000000000000000000006", // WETH on Base Sepolia
          network: "base-sepolia",
          });

          Transfer to another account

          const sender = await cdp.evm.createAccount({ name: "Sender" });
          const receiver = await cdp.evm.createAccount({ name: "Receiver" });

          const { userOpHash } = await sender.transfer({
          to: receiver,
          amount: 10000n, // equivalent to 0.01 USDC
          token: "usdc",
          network: "base-sepolia",
          });
        • type: "evm-smart"

          Identifier for the smart account type.

        • useNetwork: <Network extends KnownEvmNetworks>(
              network: Network,
          ) => Promise<
              {
                  [K in string
                  | number
                  | symbol]: (
                      Omit<EvmSmartAccountProperties, "useNetwork"> & {
                          [K in string | number | symbol]: (
                              {
                                  getUserOperation: (options: ...) => ...;
                                  sendUserOperation: <const callData extends ...>(options: ...) => ...;
                                  waitForUserOperation: (options: ...) => ...;
                              } & (
                                  Network extends TransferNetworks ? { transfer: ... } : EmptyObject
                              ) & (
                                  Network extends ListTokenBalancesNetworks
                                      ? { listTokenBalances: ... }
                                      : EmptyObject
                              ) & (
                                  Network extends RequestFaucetNetworks
                                      ? { requestFaucet: ... }
                                      : EmptyObject
                              ) & (Network extends "base" ? { quoteFund: ... } : EmptyObject) & (
                                  Network extends "base"
                                      ? { fund: ...; waitForFundOperationReceipt: ... }
                                      : EmptyObject
                              ) & (
                                  Network extends QuoteSwapNetworks
                                      ? { quoteSwap: ... }
                                      : EmptyObject
                              ) & (Network extends SwapNetworks ? { swap: ... } : EmptyObject)
                          )[K]
                      } & { network: Network }
                  )[K]
              },
          >

          A function that returns a network-scoped smart account.

          // For known networks, type is inferred automatically:
          const baseAccount = await smartAccount.useNetwork("base");

          // For custom RPC URLs with type hints (requires casting):
          const typedAccount = await smartAccount.useNetwork<"base">("https://mainnet.base.org" as "base");

          // For custom RPC URLs without type hints (only sendTransaction, transfer and waitForTransactionReceipt methods available):
          const customAccount = await smartAccount.useNetwork("https://mainnet.base.org");
        • waitForUserOperation: (
              options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
          ) => Promise<WaitForUserOperationReturnType>

          Waits for a user operation to complete or fail.

          // Send a user operation and get the user operation hash
          const { userOpHash } = await smartAccount.sendUserOperation({
          network: "base-sepolia",
          calls: [
          {
          to: "0x0000000000000000000000000000000000000000",
          value: parseEther("0.000001"),
          data: "0x",
          },
          ],
          });

          // Wait for the user operation to complete or fail
          const result = await smartAccount.waitForUserOperation({
          userOpHash: userOp.userOpHash,
          });
        • waitForFundOperationReceipt:function

    Returns Promise<UserOperation>

    A promise that resolves to the user operation hash.

    const userOp = await cdp.evm.prepareUserOperation({
    smartAccount,
    network: "base-sepolia",
    calls: [
    {
    to: "0x1234567890123456789012345678901234567890",
    value: parseEther("0.000001"),
    data: "0x",
    },
    ],
    });
  • Requests funds from an EVM faucet.

    Parameters

    • options: RequestFaucetOptions

      Parameters for requesting funds from the EVM faucet.

      Options for requesting funds from an EVM faucet.

      • address: string

        The address of the account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • network: "base-sepolia" | "ethereum-sepolia"

        The network to request funds from.

      • token: "eth" | "usdc" | "eurc" | "cbbtc"

        The token to request funds for.

    Returns Promise<RequestFaucetResult>

    A promise that resolves to the transaction hash.

    const result = await cdp.evm.requestFaucet({
    address: "0x1234567890123456789012345678901234567890",
    network: "base-sepolia",
    token: "eth",
    });
  • Signs an EVM transaction and sends it to the specified network using the Coinbase API. This method handles nonce management and gas estimation automatically.

    Parameters

    Returns Promise<TransactionResult>

    A promise that resolves to the transaction hash.

    Sending an RLP-encoded transaction

    import { parseEther, serializeTransaction } from "viem";
    import { baseSepolia } from "viem/chains";

    const { transactionHash } = await cdp.evm.sendTransaction({
    address: account.address,
    transaction: serializeTransaction({
    to: "0x4252e0c9A3da5A2700e7d91cb50aEf522D0C6Fe8",
    value: parseEther("0.000001"),
    chainId: baseSepolia.id,
    // Fields below are optional, CDP API will populate them if omitted.
    // nonce
    // maxPriorityFeePerGas
    // maxFeePerGas
    // gas
    }),
    network: "base-sepolia",
    });

    Sending an EIP-1559 transaction request object

    const { transactionHash } = await cdp.evm.sendTransaction({
    address: account.address,
    transaction: {
    to: "0x4252e0c9A3da5A2700e7d91cb50aEf522D0C6Fe8",
    value: parseEther("0.000001"),
    // Fields below are optional, CDP API will populate them if omitted.
    // nonce
    // maxPriorityFeePerGas
    // maxFeePerGas
    // gas
    },
    network: "base-sepolia",
    });
  • Sends a user operation.

    Parameters

    • options: SendUserOperationOptions<unknown[]>

      Parameters for sending the user operation.

      • calls: Calls<T>

        Array of contract calls to execute in the user operation. Each call can either be:

        • A direct call with to, value, and data.
        • A contract call with to, abi, functionName, and args.
        const calls = [
        {
        to: "0x1234567890123456789012345678901234567890",
        value: parseEther("0.0000005"),
        data: "0x",
        },
        {
        to: "0x1234567890123456789012345678901234567890",
        abi: erc20Abi,
        functionName: "transfer",
        args: [to, amount],
        },
        ]
      • OptionalidempotencyKey?: string

        The idempotency key.

      • network: EvmUserOperationNetwork

        Chain ID of the network to execute on.

      • OptionalpaymasterUrl?: string

        Optional URL of the paymaster service to use for gas sponsorship. Must be ERC-7677 compliant.

      • smartAccount: EvmSmartAccount

        The smart account.

    Returns Promise<SendUserOperationReturnType>

    A promise that resolves to an object containing the smart account address, the user operation hash, and the status of the user operation.

    const userOp = await cdp.evm.sendUserOperation({
    smartAccount,
    network: "base-sepolia",
    calls: [
    {
    to: "0x1234567890123456789012345678901234567890",
    value: parseEther("0.000001"),
    data: "0x",
    },
    ],
    });
  • Signs an EVM hash.

    Parameters

    • options: SignHashOptions

      Parameters for signing the hash.

      Options for signing an EVM hash.

      • address: `0x${string}`

        The address of the account.

      • hash: `0x${string}`

        The hash to sign.

      • OptionalidempotencyKey?: string

        The idempotency key.

    Returns Promise<SignatureResult>

    A promise that resolves to the signature.

    // Create a new EVM server account to sign with
    const ethAccount = await cdp.createEvmServerAccount({});

    const signature = await cdp.evm.signHash({
    address: ethAccount.address,
    hash: "0x1234567890123456789012345678901234567890123456789012345678901234",
    });
  • Signs an EVM message.

    Parameters

    • options: SignMessageOptions

      Parameters for signing the message.

      Options for signing an EVM message.

      • address: `0x${string}`

        The address of the account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • message: string

        The message to sign.

    Returns Promise<SignatureResult>

    A promise that resolves to the signature.

    // Create a new EVM server account to sign with
    const ethAccount = await cdp.createEvmServerAccount({});

    const signature = await cdp.evm.signMessage({
    address: ethAccount.address,
    message: "Hello, world!",
    });
  • Signs an EVM transaction.

    Parameters

    Returns Promise<SignatureResult>

    A promise that resolves to the signature.

    import { parseEther, serializeTransaction } from "viem";
    import { baseSepolia } from "viem/chains";

    // Create a new EVM server account to sign with
    const ethAccount = await cdp.createEvmServerAccount({});

    const serializedTx = serializeTransaction(
    {
    chainId: baseSepolia.id,
    data: "0x",
    to: "0x4252e0c9A3da5A2700e7d91cb50aEf522D0C6Fe8",
    type: "eip1559",
    value: parseEther("0.000001"),
    },
    );

    const signature = await cdp.evm.signTransaction({
    address: ethAccount.address,
    transaction: serializedTx,
    });
  • Signs an EIP-712 message.

    Parameters

    Returns Promise<SignatureResult>

    A promise that resolves to the signature.

    const signature = await cdp.evm.signTypedData({
    address: account.address,
    domain: {
    name: "Permit2",
    chainId: 1,
    verifyingContract: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
    },
    types: {
    EIP712Domain: [
    { name: "name", type: "string" },
    { name: "chainId", type: "uint256" },
    { name: "verifyingContract", type: "address" },
    ],
    PermitTransferFrom: [
    { name: "permitted", type: "TokenPermissions" },
    { name: "spender", type: "address" },
    { name: "nonce", type: "uint256" },
    { name: "deadline", type: "uint256" },
    ],
    TokenPermissions: [
    { name: "token", type: "address" },
    { name: "amount", type: "uint256" },
    ],
    },
    primaryType: "PermitTransferFrom",
    message: {
    permitted: {
    token: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    amount: "1000000",
    },
    spender: "0xFfFfFfFFfFFfFFfFFfFFFFFffFFFffffFfFFFfFf",
    nonce: "0",
    deadline: "1717123200",
    },
    });
  • Updates a CDP EVM account.

    Parameters

    • Optionaloptions: UpdateEvmAccountOptions

      Optional parameters for creating the account.

      Options for creating an EVM server account.

      • address: string

        The address of the account.

      • OptionalidempotencyKey?: string

        The idempotency key.

      • update: UpdateEvmAccountBody

        The updates to apply to the account

    Returns Promise<
        {
            address: `0x${string}`;
            fund: (
                options: Omit<FundOptions, "address">,
            ) => Promise<FundOperationResult>;
            listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>;
            name?: string;
            policies?: string[];
            quoteFund: (options: Omit<QuoteFundOptions, "address">) => Promise<Quote>;
            quoteSwap: (
                options: AccountQuoteSwapOptions,
            ) => Promise<AccountQuoteSwapResult>;
            requestFaucet: (
                options: Omit<RequestFaucetOptions, "address">,
            ) => Promise<RequestFaucetResult>;
            sendTransaction: (
                options: Omit<SendTransactionOptions, "address">,
            ) => Promise<TransactionResult>;
            sign: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
            signMessage: (
                parameters: { message: SignableMessage },
            ) => Promise<`0x${string}`>;
            signTransaction: (
                transaction: TransactionSerializable,
            ) => Promise<`0x${string}`>;
            signTypedData: <
                const typedData extends
                    | Record<string, unknown>
                    | {
                        address?: undefined;
                        bool?: undefined;
                        bytes?: undefined;
                        bytes1?: undefined;
                        bytes10?: undefined;
                        bytes11?: undefined;
                        bytes12?: undefined;
                        bytes13?: undefined;
                        bytes14?: undefined;
                        bytes15?: undefined;
                        bytes16?: undefined;
                        bytes17?: undefined;
                        bytes18?: undefined;
                        bytes19?: undefined;
                        bytes2?: undefined;
                        bytes20?: undefined;
                        bytes21?: undefined;
                        bytes22?: undefined;
                        bytes23?: undefined;
                        bytes24?: undefined;
                        bytes25?: undefined;
                        bytes26?: undefined;
                        bytes27?: undefined;
                        bytes28?: undefined;
                        bytes29?: undefined;
                        bytes3?: undefined;
                        bytes30?: undefined;
                        bytes31?: undefined;
                        bytes32?: undefined;
                        bytes4?: undefined;
                        bytes5?: undefined;
                        bytes6?: undefined;
                        bytes7?: undefined;
                        bytes8?: undefined;
                        bytes9?: undefined;
                        int104?: undefined;
                        int112?: undefined;
                        int120?: undefined;
                        int128?: undefined;
                        int136?: undefined;
                        int144?: undefined;
                        int152?: undefined;
                        int16?: undefined;
                        int160?: undefined;
                        int168?: undefined;
                        int176?: undefined;
                        int184?: undefined;
                        int192?: undefined;
                        int200?: undefined;
                        int208?: undefined;
                        int216?: undefined;
                        int224?: undefined;
                        int232?: undefined;
                        int24?: undefined;
                        int240?: undefined;
                        int248?: undefined;
                        int256?: undefined;
                        int32?: undefined;
                        int40?: undefined;
                        int48?: undefined;
                        int56?: undefined;
                        int64?: undefined;
                        int72?: undefined;
                        int8?: undefined;
                        int80?: undefined;
                        int88?: undefined;
                        int96?: undefined;
                        string?: undefined;
                        uint104?: undefined;
                        uint112?: undefined;
                        uint120?: undefined;
                        uint128?: undefined;
                        uint136?: undefined;
                        uint144?: undefined;
                        uint152?: undefined;
                        uint16?: undefined;
                        uint160?: undefined;
                        uint168?: undefined;
                        uint176?: undefined;
                        uint184?: undefined;
                        uint192?: undefined;
                        uint200?: undefined;
                        uint208?: undefined;
                        uint216?: undefined;
                        uint224?: undefined;
                        uint232?: undefined;
                        uint24?: undefined;
                        uint240?: undefined;
                        uint248?: undefined;
                        uint256?: undefined;
                        uint32?: undefined;
                        uint40?: undefined;
                        uint48?: undefined;
                        uint56?: undefined;
                        uint64?: undefined;
                        uint72?: undefined;
                        uint8?: undefined;
                        uint80?: undefined;
                        uint88?: undefined;
                        uint96?: undefined;
                        [key: string]: readonly TypedDataParameter[];
                        [key: `string[${string}]`]: undefined;
                        [key: `function[${string}]`]: undefined;
                        [key: `address[${string}]`]: undefined;
                        [key: `bool[${string}]`]: undefined;
                        [key: `bytes[${string}]`]: undefined;
                        [key: `bytes1[${string}]`]: undefined;
                        [key: `bytes2[${string}]`]: undefined;
                        [key: `bytes3[${string}]`]: undefined;
                        [key: `bytes32[${string}]`]: undefined;
                        [key: `bytes16[${string}]`]: undefined;
                        [key: `bytes4[${string}]`]: undefined;
                        [key: `bytes6[${string}]`]: undefined;
                        [key: `bytes18[${string}]`]: undefined;
                        [key: `bytes10[${string}]`]: undefined;
                        [key: `bytes5[${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: `bytes14[${string}]`]: undefined;
                        [key: `bytes15[${string}]`]: undefined;
                        [key: `bytes17[${string}]`]: undefined;
                        [key: `bytes19[${string}]`]: undefined;
                        [key: `bytes20[${string}]`]: undefined;
                        [key: `bytes21[${string}]`]: undefined;
                        [key: `bytes22[${string}]`]: undefined;
                        [key: `bytes23[${string}]`]: undefined;
                        [key: `bytes24[${string}]`]: undefined;
                        [key: `bytes25[${string}]`]: undefined;
                        [key: `bytes26[${string}]`]: undefined;
                        [key: `bytes27[${string}]`]: undefined;
                        [key: `bytes28[${string}]`]: undefined;
                        [key: `bytes29[${string}]`]: undefined;
                        [key: `bytes30[${string}]`]: undefined;
                        [key: `bytes31[${string}]`]: undefined;
                        [key: `int[${string}]`]: undefined;
                        [key: `int120[${string}]`]: undefined;
                        [key: `int64[${string}]`]: undefined;
                        [key: `int32[${string}]`]: undefined;
                        [key: `int16[${string}]`]: undefined;
                        [key: `int8[${string}]`]: undefined;
                        [key: `int24[${string}]`]: undefined;
                        [key: `int40[${string}]`]: undefined;
                        [key: `int48[${string}]`]: undefined;
                        [key: `int56[${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: `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: `uint120[${string}]`]: undefined;
                        [key: `uint64[${string}]`]: undefined;
                        [key: `uint32[${string}]`]: undefined;
                        [key: `uint16[${string}]`]: undefined;
                        [key: `uint8[${string}]`]: undefined;
                        [key: `uint24[${string}]`]: undefined;
                        [key: `uint40[${string}]`]: undefined;
                        [key: `uint48[${string}]`]: undefined;
                        [key: `uint56[${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: `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;
                    },
                primaryType extends string
                | number
                | symbol = keyof typedData,
            >(
                parameters: TypedDataDefinition<typedData, primaryType>,
            ) => Promise<`0x${string}`>;
            swap: (options: AccountSwapOptions) => Promise<SendSwapTransactionResult>;
            transfer: (
                options: TransferOptions,
            ) => Promise<{ transactionHash: `0x${string}` }>;
            type: "evm-server";
            useNetwork: <Network extends NetworkOrRpcUrl>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<
                            {
                                address: `0x${string}`;
                                fund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                listTokenBalances: (options: Omit<(...), (...)>) => Promise<(...)>;
                                name?: string;
                                policies?: (...)[];
                                quoteFund: (options: Omit<(...), (...)>) => Promise<(...)>;
                                quoteSwap: (options: AccountQuoteSwapOptions) => Promise<(...)>;
                                requestFaucet: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sendTransaction: (options: Omit<(...), (...)>) => Promise<(...)>;
                                sign: (parameters: { hash: ... }) => Promise<(...)>;
                                signMessage: (parameters: { message: ... }) => Promise<(...)>;
                                signTransaction: (
                                    transaction: TransactionSerializable,
                                ) => Promise<(...)>;
                                signTypedData: <
                                    const typedData extends (...)
                                    | (...),
                                    primaryType extends (...) | (...) | (...) = keyof (...),
                                >(
                                    parameters: TypedDataDefinition<(...), (...)>,
                                ) => Promise<(...)>;
                                swap: (options: AccountSwapOptions) => Promise<(...)>;
                                transfer: (options: TransferOptions) => Promise<(...)>;
                                type: "evm-server";
                                useNetwork: <Network extends NetworkOrRpcUrl>(network: Network) => Promise<{ [K in keyof (Omit<{ address: `0x${string}`; sign: (parameters: { hash: `0x${string}`; }) => Promise<`0x${string}`>; signMessage: (parameters: { message: SignableMessage; }) => Promise<...>; ... 14 more ...; useNetwork: ...; }, "transfer" | ... 4 more ....;
                                waitForFundOperationReceipt(
                                    options: WaitForFundOperationOptions,
                                ): Promise<WaitForFundOperationResult>;
                            },
                            | "transfer"
                            | "sendTransaction"
                            | "quoteSwap"
                            | "swap"
                            | "useNetwork"
                            | (keyof Actions),
                        > & {
                            [K in string | number | symbol]: (
                                {
                                    sendTransaction: ...;
                                    transfer: ...;
                                    waitForTransactionReceipt: ...;
                                } & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...)) & (
                                    (...) extends (...) ? (...) : (...)
                                ) & ((...) extends (...) ? (...) : (...))
                            )[K]
                        } & { network: Network }
                    )[K]
                },
            >;
            waitForFundOperationReceipt(
                options: WaitForFundOperationOptions,
            ): Promise<WaitForFundOperationResult>;
        },
    >

    A promise that resolves to the updated account.

             const account = await cdp.evm.updateAccount({ address: "0x...", update: { name: "New Name" } });
             const account = await cdp.evm.updateAccount({ address: "0x...", update: { accountPolicy: "73bcaeeb-d7af-4615-b064-42b5fe83a31e" } });
             const idempotencyKey = uuidv4();

    // First call
    await cdp.evm.updateAccount({
    address: "0x...",
    update: { accountPolicy: "73bcaeeb-d7af-4615-b064-42b5fe83a31e" },
    idempotencyKey,
    });

    // Second call with the same idempotency key will not update
    await cdp.evm.updateAccount({
    address: '0x...',
    update: { name: "" },
    idempotencyKey,
    });
  • Waits for a user operation to complete or fail.

    Parameters

    • options: WaitForUserOperationOptions

      Parameters for waiting for the user operation.

      Options for waiting for a user operation.

      • smartAccountAddress: `0x${string}`

        The smart account address.

      • userOpHash: `0x${string}`

        The user operation hash.

      • OptionalwaitOptions?: WaitOptions

        The wait options.

    Returns Promise<WaitForUserOperationReturnType>

    A promise that resolves to the transaction receipt.

    // Send a user operation and get the user operation hash
    const { userOpHash } = await cdp.evm.sendUserOperation({
    smartAccount,
    network: "base-sepolia",
    calls: [
    {
    to: "0x0000000000000000000000000000000000000000",
    value: parseEther("0.000001"),
    data: "0x",
    },
    ],
    });

    // Wait for the user operation to complete or fail
    const result = await cdp.evm.waitForUserOperation({
    smartAccountAddress: smartAccount.address,
    userOpHash: userOp.userOpHash,
    });