CDP SDK TypeScript - v1.31.0
    Preparing search index...

    The namespace containing all EVM methods.

    Implements

    Index

    Constructors

    Methods

    • Creates a new CDP EVM account.

      Parameters

      • Optionaloptions: CreateServerAccountOptions = {}

        Optional parameters for creating the account.

        Options for creating an EVM server account.

        • Optionalname?: string

          The name of the account.

        • OptionalaccountPolicy?: string

          The policy ID to apply to the account.

        • OptionalidempotencyKey?: string

          The idempotency key.

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

      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,
      });
    • 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.

        • Optionalname?: string

          The name of the account.

        • OptionalidempotencyKey?: string

          The idempotency key.

        • privateKey: `0x${string}`

          The private key of the account.

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

      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,
      });
    • 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.

        • Optionalname?: string

          The name of the account.

        • OptionalidempotencyKey?: string

          The idempotency key.

      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",
      });
    • Creates a new CDP EVM smart account.

      Parameters

      • options: CreateSmartAccountOptions

        Parameters for creating the smart account.

        Options for creating an EVM smart account.

        • owner: EvmAccount

          The owner of the account.

        • OptionalidempotencyKey?: string

          The idempotency key.

        • Optionalname?: string

          The name of the account.

        • Optional__experimental_enableSpendPermission?: boolean

          Experimental! This method name will change, and is subject to other breaking changes.

          The flag to enable spend permission.

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

      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 spend permission for a smart account.

      Parameters

      • options: CreateSpendPermissionOptions

        Parameters for creating the spend permission.

        • spendPermission: SpendPermission

          The spend permission.

        • network: EvmUserOperationNetwork

          The network.

        • OptionalpaymasterUrl?: string

          The paymaster URL.

        • OptionalidempotencyKey?: string

          The idempotency key.

      Returns Promise<UserOperation>

      A promise that resolves to the spend permission.

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

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

        • owner: EvmAccount

          The owner of the account.

        • Optionalname?: string

          The name of the account.

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

      A promise that resolves to the smart account.

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

      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.

        • Optional__experimental_enableSpendPermission?: boolean

          Experimental! This method name will change, and is subject to other breaking changes.

          The flag to enable spend permission.

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

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

      const smartAccount = await cdp.evm.getOrCreateSmartAccount({
      name: "MySmartAccount",
      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"
      });
    • 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"
      });
    • 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:
              | `0x${string}`
              | {
                  address: `0x${string}`;
                  name?: string;
                  owners: EvmAccount[];
                  type: "evm-smart";
                  policies: undefined
                  | string[];
                  useNetwork: <Network extends KnownEvmNetworks>(
                      network: Network,
                  ) => Promise<
                      {
                          [K in string
                          | number
                          | symbol]: (
                              Omit<EvmSmartAccountProperties, "useNetwork"> & {
                                  [K in string | number | symbol]: (
                                      {
                                          sendUserOperation: ...;
                                          waitForUserOperation: ...;
                                          getUserOperation: ...;
                                      } & ((...) extends (...) ? (...) : (...)) & (
                                          (...) extends (...) ? (...) : (...)
                                      ) & ((...) extends (...) ? (...) : (...)) & (
                                          (...) extends (...) ? (...) : (...)
                                      ) & ((...) extends (...) ? (...) : (...)) & (
                                          (...) extends (...) ? (...) : (...)
                                      ) & ((...) extends (...) ? (...) : (...)) & (
                                          (...) extends (...) ? (...) : (...)
                                      )
                                  )[K]
                              } & { network: Network }
                          )[K]
                      },
                  >;
                  listTokenBalances: (
                      options: Omit<ListTokenBalancesOptions, "address">,
                  ) => Promise<ListTokenBalancesResult>;
                  requestFaucet: (
                      options: Omit<RequestFaucetOptions, "address">,
                  ) => Promise<RequestFaucetResult>;
                  quoteFund: (
                      options: Omit<EvmQuoteFundOptions, "address">,
                  ) => Promise<EvmQuote>;
                  fund: (
                      options: Omit<EvmFundOptions, "address">,
                  ) => Promise<FundOperationResult>;
                  waitForFundOperationReceipt(
                      options: WaitForFundOperationOptions,
                  ): Promise<WaitForFundOperationResult>;
                  transfer: (
                      options: SmartAccountTransferOptions,
                  ) => Promise<SendUserOperationReturnType>;
                  sendUserOperation: (
                      options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
                  ) => Promise<SendUserOperationReturnType>;
                  waitForUserOperation: (
                      options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
                  ) => Promise<WaitForUserOperationReturnType>;
                  getUserOperation: (
                      options: Omit<GetUserOperationOptions, "smartAccount">,
                  ) => Promise<UserOperation>;
                  quoteSwap: (
                      options: SmartAccountQuoteSwapOptions,
                  ) => Promise<SmartAccountQuoteSwapResult>;
                  swap: (
                      options: SmartAccountSwapOptions,
                  ) => Promise<SmartAccountSwapResult>;
                  signTypedData: (
                      options: Omit<SignTypedDataOptions, "address"> & {
                          network: KnownEvmNetworks;
                      },
                  ) => Promise<`0x${string}`>;
                  __experimental_useSpendPermission: (
                      options: UseSpendPermissionOptions,
                  ) => Promise<SendUserOperationReturnType>;
              }
              | ReadonlySmartAccount

          The smart account.

        • 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",
      });
    • 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 token balances.

      Parameters

      • options: ListTokenBalancesOptions

        Parameters for listing the token balances.

        • pageSize

          The number of token balances to return.

        • pageToken

          The page token to begin listing from. This is obtained by previous calls to this method.

      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,
      });
    • 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 });
      }
    • Prepares a user operation for a smart account.

      Parameters

      • options: PrepareUserOperationOptions

        Parameters for preparing the user operation.

        Options for preparing a user operation.

        • smartAccount: {
              address: `0x${string}`;
              name?: string;
              owners: EvmAccount[];
              type: "evm-smart";
              policies: undefined | string[];
              useNetwork: <Network extends KnownEvmNetworks>(
                  network: Network,
              ) => Promise<
                  {
                      [K in string
                      | number
                      | symbol]: (
                          Omit<EvmSmartAccountProperties, "useNetwork"> & {
                              [K in string | number | symbol]: (
                                  {
                                      sendUserOperation: <const callData extends ...>(
                                          options: ...,
                                      ) => ...;
                                      waitForUserOperation: (options: ...) => ...;
                                      getUserOperation: (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) & (
                                      Network extends SpendPermissionNetworks
                                          ? { __experimental_useSpendPermission: ... }
                                          : EmptyObject
                                  )
                              )[K]
                          } & { network: Network }
                      )[K]
                  },
              >;
              listTokenBalances: (
                  options: Omit<ListTokenBalancesOptions, "address">,
              ) => Promise<ListTokenBalancesResult>;
              requestFaucet: (
                  options: Omit<RequestFaucetOptions, "address">,
              ) => Promise<RequestFaucetResult>;
              quoteFund: (
                  options: Omit<EvmQuoteFundOptions, "address">,
              ) => Promise<EvmQuote>;
              fund: (
                  options: Omit<EvmFundOptions, "address">,
              ) => Promise<FundOperationResult>;
              waitForFundOperationReceipt(
                  options: WaitForFundOperationOptions,
              ): Promise<WaitForFundOperationResult>;
              transfer: (
                  options: SmartAccountTransferOptions,
              ) => Promise<SendUserOperationReturnType>;
              sendUserOperation: (
                  options: Omit<SendUserOperationOptions<unknown[]>, "smartAccount">,
              ) => Promise<SendUserOperationReturnType>;
              waitForUserOperation: (
                  options: Omit<WaitForUserOperationOptions, "smartAccountAddress">,
              ) => Promise<WaitForUserOperationReturnType>;
              getUserOperation: (
                  options: Omit<GetUserOperationOptions, "smartAccount">,
              ) => Promise<UserOperation>;
              quoteSwap: (
                  options: SmartAccountQuoteSwapOptions,
              ) => Promise<SmartAccountQuoteSwapResult>;
              swap: (options: SmartAccountSwapOptions) => Promise<SmartAccountSwapResult>;
              signTypedData: (
                  options: Omit<SignTypedDataOptions, "address"> & {
                      network: KnownEvmNetworks;
                  },
              ) => Promise<`0x${string}`>;
              __experimental_useSpendPermission: (
                  options: UseSpendPermissionOptions,
              ) => Promise<SendUserOperationReturnType>;
          }

          The smart account.

          • address: `0x${string}`

            The smart account's address.

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

          • type: "evm-smart"

            Identifier for the smart account type.

          • policies: undefined | string[]

            The list of policy IDs that apply to the smart account. This will include both the project-level policy and the account-level policy, if one exists.

          • useNetwork: <Network extends KnownEvmNetworks>(
                network: Network,
            ) => Promise<
                {
                    [K in string
                    | number
                    | symbol]: (
                        Omit<EvmSmartAccountProperties, "useNetwork"> & {
                            [K in string | number | symbol]: (
                                {
                                    sendUserOperation: <const callData extends ...>(
                                        options: ...,
                                    ) => ...;
                                    waitForUserOperation: (options: ...) => ...;
                                    getUserOperation: (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) & (
                                    Network extends SpendPermissionNetworks
                                        ? { __experimental_useSpendPermission: ... }
                                        : 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");
          • listTokenBalances: (
                options: Omit<ListTokenBalancesOptions, "address">,
            ) => Promise<ListTokenBalancesResult>

            List the token balances of an account.

            const balances = await account.listTokenBalances({
            network: "base-sepolia",
            });
          • requestFaucet: (options: Omit<RequestFaucetOptions, "address">) => Promise<RequestFaucetResult>

            Requests funds from an EVM faucet.

            const result = await account.requestFaucet({
            network: "base-sepolia",
            token: "eth",
            });
          • quoteFund: (options: Omit<EvmQuoteFundOptions, "address">) => Promise<EvmQuote>

            Gets a quote to fund an EVM account.

            const quote = await account.quoteFund({
            network: "base",
            token: "usdc",
            amount: 1000000n,
            });
          • fund: (options: Omit<EvmFundOptions, "address">) => Promise<FundOperationResult>

            Funds an EVM account with the specified token amount.

            const fundOperation = await account.fund({
            network: "base",
            token: "usdc",
            amount: 1000000n,
            });
          • waitForFundOperationReceipt: function
            • Waits for a fund operation to complete and returns the transfer receipt.

              Parameters

              • options: WaitForFundOperationOptions

                The options for the wait for fund operation.

                • transferId

                  The ID of the transfer to wait for.

              Returns Promise<WaitForFundOperationResult>

              A promise that resolves to the completed transfer receipt containing details about the funding operation.

              const completedTransfer = await account.waitForFundOperationReceipt({
              transferId: "transfer_123",
              });
          • transfer: (options: SmartAccountTransferOptions) => 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",
            });
          • 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",
            },
            ],
            });
          • 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,
            });
          • getUserOperation: (
                options: Omit<GetUserOperationOptions, "smartAccount">,
            ) => Promise<UserOperation>

            Gets a user operation by its hash.

            const userOp = await smartAccount.getUserOperation({
            userOpHash: "0x1234567890123456789012345678901234567890",
            });
          • 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`);
            }
          • 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}`);
          • signTypedData: (
                options: Omit<SignTypedDataOptions, "address"> & {
                    network: KnownEvmNetworks;
                },
            ) => Promise<`0x${string}`>

            Signs a typed data message.

            const signature = await smartAccount.signTypedData({
            network: "base-sepolia",
            typedData: {
            domain: {
            name: "Test",
            chainId: 84532,
            verifyingContract: "0x0000000000000000000000000000000000000000",
            },
            types: {
            Test: [{ name: "name", type: "string" }],
            },
            primaryType: "Test",
            message: {
            name: "John Doe",
            },
            },
            });
          • __experimental_useSpendPermission: (options: UseSpendPermissionOptions) => Promise<SendUserOperationReturnType>

            Experimental! This method name will change, and is subject to other breaking changes.

            Uses a spend permission to execute a transaction via user operation. This allows the smart account to spend tokens that have been approved via a spend permission.

            If the network doesn't support spend permissions via CDP API.

            const spendPermission = {
            account: "0x1234...", // Smart account that owns the tokens
            spender: smartAccount.address, // This smart account that can spend
            token: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH
            allowance: parseEther("0.01"),
            period: 86400, // 1 day
            start: 0,
            end: 281474976710655,
            salt: 0n,
            extraData: "0x",
            };

            const result = await smartAccount.__experimental_useSpendPermission({
            spendPermission,
            value: parseEther("0.001"), // Spend 0.001 ETH
            network: "base-sepolia",
            });
        • network: EvmUserOperationNetwork

          The network.

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

          The calls.

        • OptionalpaymasterUrl?: string

          The paymaster URL.

      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.

        • address

          The address to request funds for.

        • network

          The network to request funds from.

        • token

          The token to request funds for.

        • idempotencyKey

          An idempotency key.

      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

      • options: SendTransactionOptions

        Configuration options for sending the transaction.

      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.

        • smartAccount

          The smart account sending the user operation.

        • network

          The network to send the user operation on.

        • calls

          The calls to include in the user operation.

        • paymasterUrl

          The optional paymaster URL to use for the user operation.

        • idempotencyKey

          An idempotency key.

      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 EIP-191 message.

      Parameters

      • options: SignMessageOptions

        Parameters for signing the message.

        Options for signing an EVM message.

        • address: `0x${string}`

          The address of the account.

        • message: string

          The message 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.signMessage({
      address: ethAccount.address,
      message: "Hello, world!",
      });
    • 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",
      },
      });
    • 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,
      });
    • Updates a CDP EVM account.

      Parameters

      • Optionaloptions: UpdateEvmAccountOptions

        Optional parameters for creating the account.

        Options for creating an EVM server account.

        • address: `0x${string}`

          The address of the account.

        • update: UpdateEvmAccountBody

          The updates to apply to the account

        • OptionalidempotencyKey?: string

          The idempotency key.

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

      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,
      });
    • Updates a CDP EVM smart account.

      Parameters

      • Optionaloptions: UpdateEvmSmartAccountOptions

        Optional parameters for updating the account.

        Options for updating an EVM smart account.

        • address: `0x${string}`

          The address of the account.

        • update: UpdateEvmSmartAccountBody

          The updates to apply to the account

        • OptionalidempotencyKey?: string

          The idempotency key.

        • owner: EvmAccount

          The owner of the account.

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

      A promise that resolves to the updated account.

    • 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,
      });