/**
 * Union of all supported secret types that can be stored in a data asset.
 */
export type SecretData = PlainTextAsset | UserAndPasswordAsset | RecoveryCodeAsset | PINCodeAsset | ApiKeyAsset | PrivateKeyAsset | SeedPhraseAsset | PaymentDebitCardAsset | PaymentCreditCardAsset | MediaAsset;
/**
 * Enumerates all possible asset types.
 */
export type DataAssetType = 'PLAIN-TEXT' | 'ONLINE-ACCOUNT' | 'RECOVERY-CODE' | 'PIN-CODE' | 'API-KEY' | 'PRIVATE-KEY' | 'SEED-PHRASE' | 'PAYMENT-DEBIT-CARD' | 'PAYMENT-CREDIT-CARD' | 'DOCUMENT' | 'IMAGE' | 'VIDEO' | 'PDF';
/**
 * A secure, named asset that contains sensitive information such as passwords, keys, or account details.
 */
export type DataAsset = {
    /**
     * Unique identifier of the asset.
     */
    id: string;
    /**
     * The type of secret stored. Used to determine how to parse and display the `secret` field.
     */
    type: DataAssetType;
    /**
     * Metadata describing the asset (e.g., name, notes).
     */
    meta: {
        /**
         * Display name for the asset.
         */
        name: string;
        /**
         * Optional notes or context for the asset.
         */
        notes?: string;
        /**
         * MIME type of the asset content (e.g. "application/pdf", "video/mp4").
         * Required when isMedia is true.
         */
        mimeType?: string;
        /**
         * True for binary media assets (DOCUMENT, IMAGE, VIDEO). When true, mimeType must be provided.
         * Used to correctly encode/decode the secret data during share generation and revelation.
         */
        isMedia?: boolean;
    };
    /**
     * The actual sensitive data, varying by asset type.
     */
    secret: SecretData;
};
/**
 * A simple plain text asset.
 */
export type PlainTextAsset = {
    text: string;
};
/**
 * Credentials for logging into an app or website.
 */
export type UserAndPasswordAsset = {
    appOrWebsite: string;
    email: string;
    username?: string;
    password: string;
};
/**
 * Backup recovery code for 2FA apps or websites.
 */
export type RecoveryCodeAsset = {
    appOrWebsite: string;
    code: string;
};
/**
 * PIN code for a device or app.
 */
export type PINCodeAsset = {
    deviceOrApp: string;
    code: string;
};
/**
 * API key for external services or apps.
 */
export type ApiKeyAsset = {
    app: string;
    apiKey: string;
};
/**
 * Cryptocurrency private key and its associated public address.
 */
export type PrivateKeyAsset = {
    publicAddress: string;
    privateKey: string;
};
/**
 * A seed phrase (mnemonic words) used to recover a crypto wallet.
 */
export type SeedPhraseAsset = {
    words: string[];
};
/**
 * Sensitive information related to a debit card.
 */
export type PaymentDebitCardAsset = {
    cardNumber: string;
    bank?: string;
    accountNumber?: string;
    cardHolderName?: string;
    expiryDate?: string;
    pinCode?: string;
    code?: string;
    clientId?: string;
};
/**
 * Sensitive information related to a credit card.
 */
export type PaymentCreditCardAsset = {
    cardNumber: string;
    bank?: string;
    accountNumber?: string;
    cardHolderName?: string;
    expiryDate?: string;
    pinCode?: string;
    code?: string;
    clientId?: string;
};
/**
 * A binary media asset (document, image, or video file).
 *
 * When creating/sharing: `data` is a base64-encoded string.
 * When revealed via parseAssets({ denormalize: true }): `data` is a Blob with the correct MIME type.
 *
 * `mimeType` is stored inside the secret so it survives the SSDP+ round-trip
 * and is available during reconstruction without any extra metadata lookup.
 */
export type MediaAsset = {
    /** Base64-encoded string (stored/shared) or a reconstructed Blob (after reveal). */
    data: string | Blob;
    /** MIME type of the content, e.g. "application/pdf" or "video/mp4". */
    mimeType: string;
};
