import Dexie from 'dexie'; export declare const tableEncryptionOptions: { readonly NON_INDEXED_FIELDS: "NON_INDEXED_FIELDS"; readonly UNENCRYPTED_LIST: "UNENCRYPTED_LIST"; readonly ENCRYPT_LIST: "ENCRYPT_LIST"; }; export declare type TableType = T extends Dexie.Table ? U : never; export declare type EncryptionOption = 'NON_INDEXED_FIELDS' | { type: 'UNENCRYPTED_LIST' | 'ENCRYPT_LIST'; fields: (keyof TableType)[]; }; export declare const cryptoOptions: { readonly NON_INDEXED_FIELDS: "NON_INDEXED_FIELDS"; readonly UNENCRYPTED_LIST: "UNENCRYPTED_LIST"; readonly ENCRYPT_LIST: "ENCRYPT_LIST"; }; export declare type CryptoSettings = Partial<{ [U in keyof T]: T[U] extends Dexie.Table ? EncryptionOption : never; }>; export declare type TablesOf = { [U in keyof T]: T[U] extends Dexie.Table ? T[U] : never; }; export declare type TableOf = TablesOf[keyof TablesOf]; export declare type CryptoSettingsTableType = { settings: CryptoSettings; keyChangeDetection: Uint8Array; }; export declare type CryptoSettingsTable = Dexie.Table, number>; export declare type EncryptionMethod = (encryptionKey: Uint8Array, input: any, nonceOverride?: Uint8Array) => Uint8Array; export declare type DecryptionMethod = (encryptionKey: Uint8Array, input: Uint8Array) => any; export interface EncryptDatabaseParams { db: T; encryptionKey: Uint8Array | Promise; tableSettings: CryptoSettings; onKeyChange: (db: T) => Promise; encrypt: EncryptionMethod; decrypt: DecryptionMethod; _nonceOverrideForTesting?: Uint8Array; }