import { type Keypair } from "@solana/web3.js"; import type { CompactNoteCipher } from "../compactNote.js"; export declare const VEILO_VIEW_KEY_DOMAIN = "Veilo view key v1"; export declare const VEILO_VIEW_KEY_SALT = "veilo_view_x25519_v1"; export declare const VEILO_VIEW_KEY_INFO = "x25519"; export interface ViewKeypair { /** 32-byte clamped X25519 scalar. Secret: decrypts every v2 note sent to it. */ viewSecretKey: Uint8Array; /** 32-byte X25519 public key. Safe to publish as the v2 encryption target. */ viewPublicKey: Uint8Array; } /** Exact, human-readable bytes the wallet signs to grant view access. */ export declare function getViewKeyMessage(walletPublicKey: string, index?: number): Uint8Array; /** Convert the view-domain signature into a root unrelated to spend authority. */ export declare function deriveViewRootFromSignature(signature: Uint8Array): Uint8Array; /** Derive the X25519 keypair from a view-only root. */ export declare function deriveViewKeypairFromViewRoot(viewRoot: Uint8Array): ViewKeypair; /** * Derive through wallet-standard `signMessage` and verify the wallet signed the * exact requested bytes. A prefixed/transformed signature fails loudly. */ export declare function deriveViewKeypairWithSigner(signMessage: (message: Uint8Array) => Promise, walletPublicKey: string, index?: number): Promise; /** Convenience for Veilo's first-party wallet and extension implementations. */ export declare function deriveViewKeypairFromKeypair(keypair: Keypair, index?: number): ViewKeypair; /** Open one fixed-layout note encrypted to a v2 X25519 view public key. */ export declare function openCompactNoteWithViewKey(viewSecretKey: Uint8Array, cipher: CompactNoteCipher): { blinding: Uint8Array; amount: bigint; } | null;