Interface of a Wallet, also referred to as a Standard Wallet.

A Standard Wallet implements and adheres to the Wallet Standard.

interface Wallet {
    accounts: readonly WalletAccount[];
    chains: IdentifierArray;
    features: Readonly<Record<`${string}:${string}`, unknown>>;
    icon:
        | `data:image/svg+xml;base64,${string}`
        | `data:image/webp;base64,${string}`
        | `data:image/png;base64,${string}`
        | `data:image/gif;base64,${string}`;
    id?: string;
    name: string;
    version: "1.0.0";
}

Implemented by

    Properties

    accounts: readonly WalletAccount[]

    Accounts that the app is authorized to use.

    This can be set by the Wallet so the app can use authorized accounts on the initial page load.

    The "@wallet-standard/features".ConnectFeature | standard:connect feature should be used to obtain authorization to the accounts.

    The "@wallet-standard/features".EventsFeature | standard:events feature should be used to notify the app if the value changes.

    Chains supported by the Wallet.

    A chain is an IdentifierString which identifies a blockchain in a canonical, human-readable format. CAIP-2 chain IDs are compatible with this, but are not required to be used.

    Each blockchain should define its own chains by extension of the Wallet Standard, using its own namespace. The standard and experimental namespaces are reserved by the Wallet Standard.

    The "@wallet-standard/features".EventsFeature | standard:events feature should be used to notify the app if the value changes.

    features: Readonly<Record<`${string}:${string}`, unknown>>

    Features supported by the Wallet.

    A feature name is an IdentifierString which identifies a feature in a canonical, human-readable format.

    Each blockchain should define its own features by extension of the Wallet Standard.

    The standard and experimental namespaces are reserved by the Wallet Standard.

    A feature may have any type. It may be a single method or value, or a collection of them.

    A conventional feature has the following structure:

     export type ExperimentalEncryptFeature = {
    // Name of the feature.
    'experimental:encrypt': {
    // Version of the feature.
    version: '1.0.0';
    // Properties of the feature.
    ciphers: readonly 'x25519-xsalsa20-poly1305'[];
    // Methods of the feature.
    encrypt (data: Uint8Array): Promise<Uint8Array>;
    };
    };

    The "@wallet-standard/features".EventsFeature | standard:events feature should be used to notify the app if the value changes.

    icon:
        | `data:image/svg+xml;base64,${string}`
        | `data:image/webp;base64,${string}`
        | `data:image/png;base64,${string}`
        | `data:image/gif;base64,${string}`

    Icon of the Wallet. This may be displayed by the app.

    Must be read-only, static, and canonically defined by the wallet extension or application.

    id?: string

    Unique identifier of the Wallet.

    If not provided, the wallet name will be used as the identifier.

    name: string

    Name of the Wallet. This may be displayed by the app.

    Must be read-only, static, descriptive, unique, and canonically defined by the wallet extension or application.

    version: "1.0.0"

    Version of the Wallet Standard implemented by the Wallet.

    Must be read-only, static, and canonically defined by the Wallet Standard.