import { EncryptionType } from '@livekit/rtc-ffi-bindings'; interface KeyProviderOptions { sharedKey?: Uint8Array; ratchetSalt?: Uint8Array; ratchetWindowSize?: number; failureTolerance?: number; } declare const defaultKeyProviderOptions: KeyProviderOptions; interface E2EEOptions { keyProviderOptions: KeyProviderOptions; encryptionType?: EncryptionType; } declare const defaultE2EEOptions: E2EEOptions; declare class KeyProvider { private roomHandle; options: KeyProviderOptions; /** internal */ constructor(roomHandle: bigint, opts: KeyProviderOptions); setSharedKey(sharedKey: Uint8Array, keyIndex: number): void; exportSharedKey(keyIndex: number): Uint8Array; ratchetSharedKey(keyIndex: number): Uint8Array; setKey(participantIdentity: string, keyIndex: number): void; exportKey(participantIdentity: string, keyIndex: number): Uint8Array; ratchetKey(participantIdentity: string, keyIndex: number): Uint8Array; } declare class FrameCryptor { private roomHandle; participantIdentity: string; keyIndex: number; enabled: boolean; constructor(roomHandle: bigint, participantIdentity: string, keyIndex: number, enabled: boolean); setEnabled(enabled: boolean): void; setKeyIndex(keyIndex: number): void; } declare class E2EEManager { private roomHandle; private options; private keyProvider; enabled: boolean; constructor(roomHandle: bigint, opts?: E2EEOptions); setEnabled(enabled: boolean): void; frameCryptors(): FrameCryptor[]; } export { E2EEManager, type E2EEOptions, FrameCryptor, KeyProvider, type KeyProviderOptions, defaultE2EEOptions, defaultKeyProviderOptions };