/**
 * Privacy Address
 *
 * A privacy address encodes both the recipient's Master Public Key (MPK)
 * and their viewing public key into a single address string.
 *
 * Format: 0x<MPK:64><ViewingPubKeyX:64><ViewingPubKeyY:64>
 * - MPK: 32 bytes (64 hex chars) - used for note ownership
 * - ViewingPubKeyX: 32 bytes (64 hex chars) - X coordinate of viewing public key
 * - ViewingPubKeyY: 32 bytes (64 hex chars) - Y coordinate of viewing public key
 * - Total: 96 bytes = 192 hex chars + "0x" prefix = 194 characters
 *
 * This format enables private transfers where:
 * - MPK is used to derive the note public key (NPK) for ownership
 * - Viewing public key is used for HPKE encryption of note contents
 */
import type { Hex } from './common';
import type { Point } from './crypto';
/**
 * Privacy address type - a 96-byte hex string (0x + 192 hex chars)
 */
export type PrivacyAddress = Hex;
/**
 * Decoded privacy address components
 */
export interface DecodedPrivacyAddress {
    /** Master Public Key - used for note ownership */
    mpk: bigint;
    /** Viewing public key - used for encryption */
    viewingPublicKey: Point;
}
/** Length of privacy address in hex characters (excluding 0x prefix) */
export declare const PRIVACY_ADDRESS_HEX_LENGTH = 192;
/** Length of privacy address including 0x prefix */
export declare const PRIVACY_ADDRESS_LENGTH = 194;
/** Length of each component in hex characters */
export declare const COMPONENT_HEX_LENGTH = 64;
export declare function encodePrivacyAddress(mpk: bigint, viewingPublicKey: Point): PrivacyAddress;
/**
 * Decode a privacy address into its components
 *
 * @param address - Privacy address (96-byte hex string)
 * @returns Decoded MPK and viewing public key
 * @throws Error if address format is invalid
 *
 * @example
 * ```typescript
 * const { mpk, viewingPublicKey } = decodePrivacyAddress(address);
 * ```
 */
export declare function decodePrivacyAddress(address: PrivacyAddress): DecodedPrivacyAddress;
/**
 * Check if a string is a valid privacy address format.
 *
 * **Format validation only** — checks prefix, length, and hex characters.
 * Does not verify that the encoded keys are cryptographically valid
 * (e.g., on the correct curve).
 *
 * @param address - String to validate
 * @returns true if valid privacy address format
 *
 * @example
 * ```typescript
 * if (isValidPrivacyAddress(input)) {
 *   const { mpk, viewingPublicKey } = decodePrivacyAddress(input);
 * }
 * ```
 */
export declare function isValidPrivacyAddress(address: string): address is PrivacyAddress;
/**
 * Validate a privacy address and return detailed result
 *
 * @param address - String to validate
 * @returns Validation result with message
 */
export declare function validatePrivacyAddress(address: string): {
    valid: boolean;
    message: string;
};
/**
 * Extract just the MPK from a privacy address (for display purposes)
 *
 * @param address - Privacy address
 * @returns MPK as hex string (0x + 64 chars)
 */
export declare function extractMpkFromPrivacyAddress(address: PrivacyAddress): Hex;
/**
 * Format a privacy address for display (truncated)
 *
 * @param address - Privacy address
 * @param startChars - Number of characters to show at start (default: 10)
 * @param endChars - Number of characters to show at end (default: 8)
 * @returns Truncated address string
 */
export declare function formatPrivacyAddress(address: string, startChars?: number, endChars?: number): string;
//# sourceMappingURL=address.d.ts.map