/**
 * Iframe Isolation Protocol
 *
 * Message types for postMessage communication between the parent page
 * (IframeKeyVault) and the cross-origin iframe (KeyVaultHost).
 */
export declare const PROTOCOL_ID: "privacy-boost-vault";
export declare const PROTOCOL_VERSION = 1;
export declare const DEFAULT_IFRAME_URL = "https://vault.privacyboost.io/v1/vault.html";
export declare const TIMEOUT_DEFAULT = 10000;
export declare const TIMEOUT_LONG = 60000;
export declare const TIMEOUT_WALLET = 300000;
export type MessageDirection = 'request' | 'response';
export interface VaultMessage {
    protocol: typeof PROTOCOL_ID;
    version: number;
    id: string;
    type: string;
    direction: MessageDirection;
    payload?: unknown;
    error?: {
        message: string;
        code?: string;
    };
}
export interface VaultRequest extends VaultMessage {
    direction: 'request';
    payload?: unknown;
}
export interface VaultResponse extends VaultMessage {
    direction: 'response';
    payload?: unknown;
    error?: {
        message: string;
        code?: string;
    };
}
export declare const VaultOps: {
    readonly INIT: "init";
    readonly DISPOSE: "dispose";
    readonly AUTHENTICATE: "keys.authenticate";
    readonly SUBMIT_CREDENTIAL: "keys.submitCredential";
    readonly PROCEED_AFTER_MNEMONIC: "keys.proceedAfterMnemonic";
    readonly LOGOUT: "keys.logout";
    readonly CLEAR_SESSION: "keys.clearSession";
    readonly GET_STORED_SESSION: "keys.getStoredSession";
    readonly GET_KEY_STATUS: "keys.getStatus";
    readonly GET_PUBLIC_KEYS: "keys.getPublicKeys";
    readonly DELETE_VAULT: "keys.deleteVault";
    readonly BUILD_SHIELD_COMMITMENT: "crypto.buildShieldCommitment";
    readonly ENCRYPT_DEPOSIT_CIPHERTEXT: "crypto.encryptDepositCiphertext";
    readonly COMPUTE_NULLIFIERS: "crypto.computeNullifiers";
    readonly GENERATE_NPK: "crypto.generateNpk";
    readonly COMPUTE_OUTPUT_COMMITMENT: "crypto.computeOutputCommitment";
    readonly DERIVE_ECDH_KEYS: "crypto.deriveEcdhKeys";
    readonly ENCRYPT_TRANSFER_CIPHERTEXT: "crypto.encryptTransferCiphertext";
    readonly SIGN_SPENDING: "crypto.signSpending";
    readonly COMPUTE_TRANSFER_DIGEST: "crypto.computeTransferDigest";
    readonly COMPUTE_WITHDRAWAL_DIGEST: "crypto.computeWithdrawalDigest";
    readonly COMPUTE_WITHDRAWAL_COMMITMENT: "crypto.computeWithdrawalCommitment";
    readonly SIGN_VIEW_AUTH: "auth.signViewAuth";
    readonly GET_REGISTRATION_DATA: "auth.getRegistrationData";
    readonly WALLET_SIGN_MESSAGE: "wallet.signMessage";
    readonly WALLET_SIGN_TYPED_DATA: "wallet.signTypedData";
    readonly WALLET_SEND_TRANSACTION: "wallet.sendTransaction";
    readonly WALLET_GET_ADDRESS: "wallet.getAddress";
    readonly WALLET_GET_CHAIN_ID: "wallet.getChainId";
    readonly WALLET_WAIT_RECEIPT: "wallet.waitForTransactionReceipt";
    readonly API_FETCH: "api.fetch";
    readonly SHIELD: "ops.shield";
    readonly SEND: "ops.send";
    readonly UNSHIELD: "ops.unshield";
    readonly UNWRAP_WETH: "ops.unwrapWeth";
    readonly CONSOLIDATE_NOTES: "ops.consolidateNotes";
    readonly HTTP_PROXY: "http.proxy";
};
export type VaultOp = (typeof VaultOps)[keyof typeof VaultOps];
export declare function getTimeout(op: string): number;
export declare function createMessageId(): string;
export declare function isProtocolMessage(data: unknown): data is VaultMessage;
/** Returns true for any iframe→parent bridge operation (wallet ops + API fetch). */
export declare function isIframeBridgeOp(type: string): boolean;
//# sourceMappingURL=protocol.d.ts.map