/**
 * Multi-recipient encryption: encrypt the body ONCE with a random content key
 * (XSalsa20-Poly1305 via crypto_secretbox), then crypto_box_seal that 32-byte
 * content key once per recipient. Each recipient opens its sealed key and decrypts
 * the shared body, so message size does not scale with the number of recipients.
 *
 * Everything is packed into a single Uint8Array:
 *   [ count (1 byte) ][ nonce (NONCEBYTES) ][ sealedKey_0 ]...[ sealedKey_n ][ ciphertext ]
 * Each sealed key has a fixed length (crypto_box_SEALBYTES + content-key size).
 *
 * Public/private keys are X25519 (libsodium crypto_box) keys in hex, matching ecdh.ts.
 */
interface SealedParts {
    nonce: Uint8Array;
    sealedKeys: Uint8Array[];
    ciphertext: Uint8Array;
}
export declare const pack: ({ nonce, sealedKeys, ciphertext }: SealedParts) => Uint8Array;
export declare const unpack: (packed: Uint8Array) => SealedParts;
export declare const encryptSealedKeys: (msgBytes: Uint8Array, recipientPublicKeys: string[]) => Uint8Array;
export declare const decryptSealedKeys: (packed: Uint8Array, privateKey: string, publicKey: string, recipientIndex: number) => Buffer;
export {};
