import { ClientConfig } from '../../../rest-service'; interface Kek { name?: string; kmsType?: string; kmsKeyId?: string; kmsProps?: { [key: string]: string; }; doc?: string; shared?: boolean; ts?: number; deleted?: boolean; } interface Dek { kekName?: string; subject?: string; version?: number; algorithm?: string; encryptedKeyMaterial?: string; encryptedKeyMaterialBytes?: Buffer; keyMaterial?: string; keyMaterialBytes?: Buffer; ts?: number; deleted?: boolean; } interface DekClient { config(): ClientConfig; registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean, kmsProps?: { [key: string]: string; }, doc?: string): Promise; getKek(name: string, deleted: boolean): Promise; registerDek(kekName: string, subject: string, algorithm: string, version: number, encryptedKeyMaterial?: string): Promise; getDek(kekName: string, subject: string, algorithm: string, version: number, deleted: boolean): Promise; getDekEncryptedKeyMaterialBytes(dek: Dek): Promise; getDekKeyMaterialBytes(dek: Dek): Promise; setDekKeyMaterial(dek: Dek, keyMaterialBytes: Buffer): Promise; close(): Promise; } declare class DekRegistryClient implements DekClient { private clientConfig; private restService; private kekCache; private dekCache; private kekMutex; private dekMutex; constructor(config: ClientConfig); static newClient(config: ClientConfig): DekClient; config(): ClientConfig; registerKek(name: string, kmsType: string, kmsKeyId: string, shared: boolean, kmsProps?: { [key: string]: string; }, doc?: string): Promise; getKek(name: string, deleted?: boolean): Promise; registerDek(kekName: string, subject: string, algorithm: string, version?: number, encryptedKeyMaterial?: string): Promise; private createDek; getDek(kekName: string, subject: string, algorithm: string, version?: number, deleted?: boolean): Promise; getDekEncryptedKeyMaterialBytes(dek: Dek): Promise; getDekKeyMaterialBytes(dek: Dek): Promise; setDekKeyMaterial(dek: Dek, keyMaterialBytes: Buffer): Promise; close(): Promise; checkLatestDekInCache(kekName: string, subject: string, algorithm: string): Promise; } export { DekRegistryClient, DekClient, Kek, Dek };