@mycelium-sdk/core
    Preparing search index...

    Class DefaultSmartWallet

    Default ERC-4337 smart wallet implementation. Implements main methods that a user can use to interact with DeFi protocols and use all related functionalities

    Backed by Coinbase Smart Account and compatible with ERC-4337 UserOperations Supports multi-owner wallets (EVM addresses or WebAuthn owners), gas-sponsored flows, and cross-chain operations via ChainManager

    Index

    Account

    • Resolves the smart wallet address

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

      Promise that resolves to the wallet address

      If deploymentAddress is known, returns it. Otherwise derives a deterministic address via the factory (getAddress) using owners and nonce (CREATE2-style)

      Error if no supported chains are configured

      Error if an owner has an invalid type

    • Fetches balances (ETH + ERC-20) for a smart account across supported chains

      Returns Promise<TokenBalance[]>

      Promise resolving to a list of TokenBalance

    • get signer(): {
          address: `0x${string}`;
          nonceManager?: NonceManager;
          publicKey: `0x${string}`;
          sign?: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
          signAuthorization?: (
              parameters: AuthorizationRequest,
          ) => Promise<SignAuthorizationReturnType>;
          signMessage: (
              __namedParameters: { message: SignableMessage },
          ) => Promise<`0x${string}`>;
          signTransaction: <
              serializer extends
                  SerializeTransactionFn<TransactionSerializable> = SerializeTransactionFn<
                  TransactionSerializable,
              >,
              transaction extends
                  OneOf<TransactionSerializable> = Parameters<serializer>[0],
          >(
              transaction: transaction,
              options?: { serializer?: serializer },
          ) => Promise<`0x${string}`>;
          signTypedData: <
              const typedData extends
                  | Record<string, unknown>
                  | {
                      address?: undefined;
                      bool?: undefined;
                      bytes?: undefined;
                      bytes1?: undefined;
                      bytes10?: undefined;
                      bytes11?: undefined;
                      bytes12?: undefined;
                      bytes13?: undefined;
                      bytes14?: undefined;
                      bytes15?: undefined;
                      bytes16?: undefined;
                      bytes17?: undefined;
                      bytes18?: undefined;
                      bytes19?: undefined;
                      bytes2?: undefined;
                      bytes20?: undefined;
                      bytes21?: undefined;
                      bytes22?: undefined;
                      bytes23?: undefined;
                      bytes24?: undefined;
                      bytes25?: undefined;
                      bytes26?: undefined;
                      bytes27?: undefined;
                      bytes28?: undefined;
                      bytes29?: undefined;
                      bytes3?: undefined;
                      bytes30?: undefined;
                      bytes31?: undefined;
                      bytes32?: undefined;
                      bytes4?: undefined;
                      bytes5?: undefined;
                      bytes6?: undefined;
                      bytes7?: undefined;
                      bytes8?: undefined;
                      bytes9?: undefined;
                      int104?: undefined;
                      int112?: undefined;
                      int120?: undefined;
                      int128?: undefined;
                      int136?: undefined;
                      int144?: undefined;
                      int152?: undefined;
                      int16?: undefined;
                      int160?: undefined;
                      int168?: undefined;
                      int176?: undefined;
                      int184?: undefined;
                      int192?: undefined;
                      int200?: undefined;
                      int208?: undefined;
                      int216?: undefined;
                      int224?: undefined;
                      int232?: undefined;
                      int24?: undefined;
                      int240?: undefined;
                      int248?: undefined;
                      int256?: undefined;
                      int32?: undefined;
                      int40?: undefined;
                      int48?: undefined;
                      int56?: undefined;
                      int64?: undefined;
                      int72?: undefined;
                      int8?: undefined;
                      int80?: undefined;
                      int88?: undefined;
                      int96?: undefined;
                      string?: undefined;
                      uint104?: undefined;
                      uint112?: undefined;
                      uint120?: undefined;
                      uint128?: undefined;
                      uint136?: undefined;
                      uint144?: undefined;
                      uint152?: undefined;
                      uint16?: undefined;
                      uint160?: undefined;
                      uint168?: undefined;
                      uint176?: undefined;
                      uint184?: undefined;
                      uint192?: undefined;
                      uint200?: undefined;
                      uint208?: undefined;
                      uint216?: undefined;
                      uint224?: undefined;
                      uint232?: undefined;
                      uint24?: undefined;
                      uint240?: undefined;
                      uint248?: undefined;
                      uint256?: undefined;
                      uint32?: undefined;
                      uint40?: undefined;
                      uint48?: undefined;
                      uint56?: undefined;
                      uint64?: undefined;
                      uint72?: undefined;
                      uint8?: undefined;
                      uint80?: undefined;
                      uint88?: undefined;
                      uint96?: undefined;
                      [key: string]: readonly TypedDataParameter[];
                      [key: `string[${string}]`]: undefined;
                      [key: `function[${string}]`]: undefined;
                      [key: `address[${string}]`]: undefined;
                      [key: `bool[${string}]`]: undefined;
                      [key: `bytes[${string}]`]: undefined;
                      [key: `bytes1[${string}]`]: undefined;
                      [key: `bytes18[${string}]`]: undefined;
                      [key: `bytes2[${string}]`]: undefined;
                      [key: `bytes3[${string}]`]: undefined;
                      [key: `bytes4[${string}]`]: undefined;
                      [key: `bytes5[${string}]`]: undefined;
                      [key: `bytes6[${string}]`]: undefined;
                      [key: `bytes7[${string}]`]: undefined;
                      [key: `bytes8[${string}]`]: undefined;
                      [key: `bytes9[${string}]`]: undefined;
                      [key: `bytes10[${string}]`]: undefined;
                      [key: `bytes11[${string}]`]: undefined;
                      [key: `bytes12[${string}]`]: undefined;
                      [key: `bytes13[${string}]`]: undefined;
                      [key: `bytes14[${string}]`]: undefined;
                      [key: `bytes15[${string}]`]: undefined;
                      [key: `bytes16[${string}]`]: undefined;
                      [key: `bytes17[${string}]`]: undefined;
                      [key: `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: `bytes32[${string}]`]: undefined;
                      [key: `int[${string}]`]: undefined;
                      [key: `int8[${string}]`]: undefined;
                      [key: `int16[${string}]`]: undefined;
                      [key: `int24[${string}]`]: undefined;
                      [key: `int32[${string}]`]: undefined;
                      [key: `int40[${string}]`]: undefined;
                      [key: `int48[${string}]`]: undefined;
                      [key: `int56[${string}]`]: undefined;
                      [key: `int64[${string}]`]: undefined;
                      [key: `int72[${string}]`]: undefined;
                      [key: `int80[${string}]`]: undefined;
                      [key: `int88[${string}]`]: undefined;
                      [key: `int96[${string}]`]: undefined;
                      [key: `int104[${string}]`]: undefined;
                      [key: `int112[${string}]`]: undefined;
                      [key: `int120[${string}]`]: undefined;
                      [key: `int128[${string}]`]: undefined;
                      [key: `int136[${string}]`]: undefined;
                      [key: `int144[${string}]`]: undefined;
                      [key: `int152[${string}]`]: undefined;
                      [key: `int160[${string}]`]: undefined;
                      [key: `int168[${string}]`]: undefined;
                      [key: `int176[${string}]`]: undefined;
                      [key: `int184[${string}]`]: undefined;
                      [key: `int192[${string}]`]: undefined;
                      [key: `int200[${string}]`]: undefined;
                      [key: `int208[${string}]`]: undefined;
                      [key: `int216[${string}]`]: undefined;
                      [key: `int224[${string}]`]: undefined;
                      [key: `int232[${string}]`]: undefined;
                      [key: `int240[${string}]`]: undefined;
                      [key: `int248[${string}]`]: undefined;
                      [key: `int256[${string}]`]: undefined;
                      [key: `uint[${string}]`]: undefined;
                      [key: `uint8[${string}]`]: undefined;
                      [key: `uint16[${string}]`]: undefined;
                      [key: `uint24[${string}]`]: undefined;
                      [key: `uint32[${string}]`]: undefined;
                      [key: `uint40[${string}]`]: undefined;
                      [key: `uint48[${string}]`]: undefined;
                      [key: `uint56[${string}]`]: undefined;
                      [key: `uint64[${string}]`]: undefined;
                      [key: `uint72[${string}]`]: undefined;
                      [key: `uint80[${string}]`]: undefined;
                      [key: `uint88[${string}]`]: undefined;
                      [key: `uint96[${string}]`]: undefined;
                      [key: `uint104[${string}]`]: undefined;
                      [key: `uint112[${string}]`]: undefined;
                      [key: `uint120[${string}]`]: undefined;
                      [key: `uint128[${string}]`]: undefined;
                      [key: `uint136[${string}]`]: undefined;
                      [key: `uint144[${string}]`]: undefined;
                      [key: `uint152[${string}]`]: undefined;
                      [key: `uint160[${string}]`]: undefined;
                      [key: `uint168[${string}]`]: undefined;
                      [key: `uint176[${string}]`]: undefined;
                      [key: `uint184[${string}]`]: undefined;
                      [key: `uint192[${string}]`]: undefined;
                      [key: `uint200[${string}]`]: undefined;
                      [key: `uint208[${string}]`]: undefined;
                      [key: `uint216[${string}]`]: undefined;
                      [key: `uint224[${string}]`]: undefined;
                      [key: `uint232[${string}]`]: undefined;
                      [key: `uint240[${string}]`]: undefined;
                      [key: `uint248[${string}]`]: undefined;
                      [key: `uint256[${string}]`]: undefined;
                  },
              primaryType extends string
              | number
              | symbol = keyof typedData,
          >(
              parameters: TypedDataDefinition<typedData, primaryType>,
          ) => Promise<`0x${string}`>;
          source: string;
          type: "local";
      }

      Returns the signer account for this smart wallet

      Returns {
          address: `0x${string}`;
          nonceManager?: NonceManager;
          publicKey: `0x${string}`;
          sign?: (parameters: { hash: `0x${string}` }) => Promise<`0x${string}`>;
          signAuthorization?: (
              parameters: AuthorizationRequest,
          ) => Promise<SignAuthorizationReturnType>;
          signMessage: (
              __namedParameters: { message: SignableMessage },
          ) => Promise<`0x${string}`>;
          signTransaction: <
              serializer extends
                  SerializeTransactionFn<TransactionSerializable> = SerializeTransactionFn<
                  TransactionSerializable,
              >,
              transaction extends
                  OneOf<TransactionSerializable> = Parameters<serializer>[0],
          >(
              transaction: transaction,
              options?: { serializer?: serializer },
          ) => Promise<`0x${string}`>;
          signTypedData: <
              const typedData extends
                  | Record<string, unknown>
                  | {
                      address?: undefined;
                      bool?: undefined;
                      bytes?: undefined;
                      bytes1?: undefined;
                      bytes10?: undefined;
                      bytes11?: undefined;
                      bytes12?: undefined;
                      bytes13?: undefined;
                      bytes14?: undefined;
                      bytes15?: undefined;
                      bytes16?: undefined;
                      bytes17?: undefined;
                      bytes18?: undefined;
                      bytes19?: undefined;
                      bytes2?: undefined;
                      bytes20?: undefined;
                      bytes21?: undefined;
                      bytes22?: undefined;
                      bytes23?: undefined;
                      bytes24?: undefined;
                      bytes25?: undefined;
                      bytes26?: undefined;
                      bytes27?: undefined;
                      bytes28?: undefined;
                      bytes29?: undefined;
                      bytes3?: undefined;
                      bytes30?: undefined;
                      bytes31?: undefined;
                      bytes32?: undefined;
                      bytes4?: undefined;
                      bytes5?: undefined;
                      bytes6?: undefined;
                      bytes7?: undefined;
                      bytes8?: undefined;
                      bytes9?: undefined;
                      int104?: undefined;
                      int112?: undefined;
                      int120?: undefined;
                      int128?: undefined;
                      int136?: undefined;
                      int144?: undefined;
                      int152?: undefined;
                      int16?: undefined;
                      int160?: undefined;
                      int168?: undefined;
                      int176?: undefined;
                      int184?: undefined;
                      int192?: undefined;
                      int200?: undefined;
                      int208?: undefined;
                      int216?: undefined;
                      int224?: undefined;
                      int232?: undefined;
                      int24?: undefined;
                      int240?: undefined;
                      int248?: undefined;
                      int256?: undefined;
                      int32?: undefined;
                      int40?: undefined;
                      int48?: undefined;
                      int56?: undefined;
                      int64?: undefined;
                      int72?: undefined;
                      int8?: undefined;
                      int80?: undefined;
                      int88?: undefined;
                      int96?: undefined;
                      string?: undefined;
                      uint104?: undefined;
                      uint112?: undefined;
                      uint120?: undefined;
                      uint128?: undefined;
                      uint136?: undefined;
                      uint144?: undefined;
                      uint152?: undefined;
                      uint16?: undefined;
                      uint160?: undefined;
                      uint168?: undefined;
                      uint176?: undefined;
                      uint184?: undefined;
                      uint192?: undefined;
                      uint200?: undefined;
                      uint208?: undefined;
                      uint216?: undefined;
                      uint224?: undefined;
                      uint232?: undefined;
                      uint24?: undefined;
                      uint240?: undefined;
                      uint248?: undefined;
                      uint256?: undefined;
                      uint32?: undefined;
                      uint40?: undefined;
                      uint48?: undefined;
                      uint56?: undefined;
                      uint64?: undefined;
                      uint72?: undefined;
                      uint8?: undefined;
                      uint80?: undefined;
                      uint88?: undefined;
                      uint96?: undefined;
                      [key: string]: readonly TypedDataParameter[];
                      [key: `string[${string}]`]: undefined;
                      [key: `function[${string}]`]: undefined;
                      [key: `address[${string}]`]: undefined;
                      [key: `bool[${string}]`]: undefined;
                      [key: `bytes[${string}]`]: undefined;
                      [key: `bytes1[${string}]`]: undefined;
                      [key: `bytes18[${string}]`]: undefined;
                      [key: `bytes2[${string}]`]: undefined;
                      [key: `bytes3[${string}]`]: undefined;
                      [key: `bytes4[${string}]`]: undefined;
                      [key: `bytes5[${string}]`]: undefined;
                      [key: `bytes6[${string}]`]: undefined;
                      [key: `bytes7[${string}]`]: undefined;
                      [key: `bytes8[${string}]`]: undefined;
                      [key: `bytes9[${string}]`]: undefined;
                      [key: `bytes10[${string}]`]: undefined;
                      [key: `bytes11[${string}]`]: undefined;
                      [key: `bytes12[${string}]`]: undefined;
                      [key: `bytes13[${string}]`]: undefined;
                      [key: `bytes14[${string}]`]: undefined;
                      [key: `bytes15[${string}]`]: undefined;
                      [key: `bytes16[${string}]`]: undefined;
                      [key: `bytes17[${string}]`]: undefined;
                      [key: `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: `bytes32[${string}]`]: undefined;
                      [key: `int[${string}]`]: undefined;
                      [key: `int8[${string}]`]: undefined;
                      [key: `int16[${string}]`]: undefined;
                      [key: `int24[${string}]`]: undefined;
                      [key: `int32[${string}]`]: undefined;
                      [key: `int40[${string}]`]: undefined;
                      [key: `int48[${string}]`]: undefined;
                      [key: `int56[${string}]`]: undefined;
                      [key: `int64[${string}]`]: undefined;
                      [key: `int72[${string}]`]: undefined;
                      [key: `int80[${string}]`]: undefined;
                      [key: `int88[${string}]`]: undefined;
                      [key: `int96[${string}]`]: undefined;
                      [key: `int104[${string}]`]: undefined;
                      [key: `int112[${string}]`]: undefined;
                      [key: `int120[${string}]`]: undefined;
                      [key: `int128[${string}]`]: undefined;
                      [key: `int136[${string}]`]: undefined;
                      [key: `int144[${string}]`]: undefined;
                      [key: `int152[${string}]`]: undefined;
                      [key: `int160[${string}]`]: undefined;
                      [key: `int168[${string}]`]: undefined;
                      [key: `int176[${string}]`]: undefined;
                      [key: `int184[${string}]`]: undefined;
                      [key: `int192[${string}]`]: undefined;
                      [key: `int200[${string}]`]: undefined;
                      [key: `int208[${string}]`]: undefined;
                      [key: `int216[${string}]`]: undefined;
                      [key: `int224[${string}]`]: undefined;
                      [key: `int232[${string}]`]: undefined;
                      [key: `int240[${string}]`]: undefined;
                      [key: `int248[${string}]`]: undefined;
                      [key: `int256[${string}]`]: undefined;
                      [key: `uint[${string}]`]: undefined;
                      [key: `uint8[${string}]`]: undefined;
                      [key: `uint16[${string}]`]: undefined;
                      [key: `uint24[${string}]`]: undefined;
                      [key: `uint32[${string}]`]: undefined;
                      [key: `uint40[${string}]`]: undefined;
                      [key: `uint48[${string}]`]: undefined;
                      [key: `uint56[${string}]`]: undefined;
                      [key: `uint64[${string}]`]: undefined;
                      [key: `uint72[${string}]`]: undefined;
                      [key: `uint80[${string}]`]: undefined;
                      [key: `uint88[${string}]`]: undefined;
                      [key: `uint96[${string}]`]: undefined;
                      [key: `uint104[${string}]`]: undefined;
                      [key: `uint112[${string}]`]: undefined;
                      [key: `uint120[${string}]`]: undefined;
                      [key: `uint128[${string}]`]: undefined;
                      [key: `uint136[${string}]`]: undefined;
                      [key: `uint144[${string}]`]: undefined;
                      [key: `uint152[${string}]`]: undefined;
                      [key: `uint160[${string}]`]: undefined;
                      [key: `uint168[${string}]`]: undefined;
                      [key: `uint176[${string}]`]: undefined;
                      [key: `uint184[${string}]`]: undefined;
                      [key: `uint192[${string}]`]: undefined;
                      [key: `uint200[${string}]`]: undefined;
                      [key: `uint208[${string}]`]: undefined;
                      [key: `uint216[${string}]`]: undefined;
                      [key: `uint224[${string}]`]: undefined;
                      [key: `uint232[${string}]`]: undefined;
                      [key: `uint240[${string}]`]: undefined;
                      [key: `uint248[${string}]`]: undefined;
                      [key: `uint256[${string}]`]: undefined;
                  },
              primaryType extends string
              | number
              | symbol = keyof typedData,
          >(
              parameters: TypedDataDefinition<typedData, primaryType>,
          ) => Promise<`0x${string}`>;
          source: string;
          type: "local";
      }

      Used to authorize UserOperations and on-chain transactions

    Earn

    • Reads current deposit balance from the selected protocol’s vault Method to read the current deposit balance from the selected protocol’s vault for a smart account

      Returns Promise<VaultBalance | null>

      Vault balance or null if nothing deposited

    • Withdraws from the selected protocol’s vault

      Parameters

      • amount: string

        Human-readable amount string

      Returns Promise<VaultTxnResult>

      Transaction result for the withdrawal

      Error if the withdrawal fails

      Error a user didn't deposit anything

    Funding

    • Cashout token from smart wallet to fiat currency via Coinbase CDP off-ramp service

      Parameters

      • country: string

        Country code (e.g., "US")

      • paymentMethod: string

        Payment method (e.g., "CARD"). To get the ful list, visit ""

      • redirectUrl: string

        URL to redirect to after the off-ramp is complete. It's required to be a valid URL

      • sellAmount: string

        Amount of token that a user wants to sell (e.g., "100", "1.5")

      • OptionalcashoutCurrency: string

        Cashout currency (e.g., "USD", "EUR"). To get the ful list, visit ""

      • OptionalsellCurrency: string

        Sell currency (e.g., "USDC", "ETH"). To get the ful list, visit ""

      Returns Promise<CashOutUrlResponse>

      If Coinbase CDP is not initialized, the method will throw an error. For more details, visit

    • Funds the smart wallet with the specified amount of the specified token via Coinbase CDP on-ramp service

      Parameters

      • amount: string

        Amount of token that a user wants to purchase and top up his account with (e.g., "100", "1.5")

      • redirectUrl: string

        URL to redirect to after the on-ramp is complete. It's required to be a valid URL

      • OptionalpurchaseCurrency: string

        Purchase currency (e.g., "USDC", "ETH")

      • OptionalpaymentCurrency: string

        Payment currency (e.g., "USD", "EUR")

      • OptionalpaymentMethod: string

        Payment method (e.g., "CARD")

      • Optionalcountry: string

        Country code (e.g., "US")

      Returns Promise<TopUpUrlResponse>

      If Coinbase CDP is not initialized, the method will throw an error. For more details, visit

    Transactions

    • Builds a UserOperation and submits via the bundler, then waits for inclusion

      Parameters

      • transactionData: TransactionData

        Transaction details (to, value, data)

      • chainId: number

        Target chain ID

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

      Promise that resolves to the UserOperation hash

      Error with a readable message if submission or inclusion fails

    • Builds a UserOperation from several onchain transactions and submits via the bundler, then waits for inclusion

      Parameters

      • transactionData: TransactionData[]

        An array of calls to execute

      • chainId: number

        Target chain ID

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

      Promise that resolves to the UserOperation hash for the batch

      Error with a readable message if submission or inclusion fails

    • Send tokens from a smart account to another address

      Parameters

      • amount: number

        Human-readable amount (e.g., 1.5)

      • asset: string

        Asset symbol (e.g., "usdc", "eth") or token address

      • recipientAddress: `0x${string}`

        Destination address

      Returns Promise<TransactionData>

      Transaction data suitable for inclusion in a UserOperation/call

      Error if recipientAddress is missing, amount ≤ 0, or asset cannot be resolved