import type { DerivationIndexEntry } from './SigningWallet/HDWallet/HDWallet';
/** All supported wallet type identifiers. */
export declare const WALLET_TYPES: readonly ["phrase", "seed", "xpriv", "privateKey", "xpub", "publicKey"];
/** Union of all wallet type string literals. */
export type WalletType = (typeof WALLET_TYPES)[number];
/** Wallet types that support encryption. */
export declare const SECRET_WALLET_TYPES: readonly ["phrase", "seed", "xpriv", "privateKey"];
/** Union of secret (signing) wallet type string literals. */
export type SecretWalletType = (typeof SECRET_WALLET_TYPES)[number];
interface EncryptedFields {
    ciphertext: string;
    iv: string;
    salt: string;
}
interface HDRestoreFields {
    masterPublicKey?: string;
    derivationIndex?: DerivationIndexEntry[];
}
/** Serialized form of a {@link PhraseWallet}. */
export type PhraseWalletSerialized = ({
    type: 'phrase';
    phrase: string;
} & HDRestoreFields) | ({
    type: 'phrase';
} & EncryptedFields & HDRestoreFields);
/** Serialized form of a {@link SeedWallet}. */
export type SeedWalletSerialized = ({
    type: 'seed';
    seed: string;
} & HDRestoreFields) | ({
    type: 'seed';
} & EncryptedFields & HDRestoreFields);
/** Serialized form of an {@link XprivWallet}. */
export type XprivWalletSerialized = ({
    type: 'xpriv';
    xpriv: string;
} & HDRestoreFields) | ({
    type: 'xpriv';
} & EncryptedFields & HDRestoreFields);
/** Serialized form of a {@link PrivateKeyWallet}. */
export type PrivateKeyWalletSerialized = {
    type: 'privateKey';
    privateKey: string;
    publicKey?: string;
} | ({
    type: 'privateKey';
} & EncryptedFields & {
    publicKey?: string;
});
/** Serialized form of an {@link XpubWallet}. */
export interface XpubWalletSerialized {
    type: 'xpub';
    xpub: string;
}
/** Serialized form of a {@link PublicKeyWallet}. */
export interface PublicKeyWalletSerialized {
    type: 'publicKey';
    publicKey: string;
}
/** Union of all serialized wallet shapes. Validate with {@link isValidSerialized}. */
export type WalletSerialized = PhraseWalletSerialized | SeedWalletSerialized | XprivWalletSerialized | PrivateKeyWalletSerialized | XpubWalletSerialized | PublicKeyWalletSerialized;
export {};
