/// import { OpenApiComponents } from '@i3m/cloud-vault-server/types/openapi'; import { KeyObject } from 'crypto'; import { EventEmitter } from 'events'; import { AxiosResponse } from 'axios'; declare class SecretKey { private readonly key; readonly alg: OpenApiComponents.Schemas.VaultConfiguration['key_derivation']['enc']['enc_algorithm']; constructor(key: KeyObject, alg: OpenApiComponents.Schemas.VaultConfiguration['key_derivation']['enc']['enc_algorithm']); encrypt(input: Buffer): Buffer; decrypt(input: Buffer): Buffer; } interface ScryptOptions { N: number; r: number; p: number; maxmem: number; } interface KeyDerivationOptions extends OpenApiComponents.Schemas.KeyDerivationOptions { salt: Buffer; } declare class KeyManager { private _encKey; private _authKey; username: string; derivationOptions: OpenApiComponents.Schemas.VaultConfiguration['key_derivation']; initialized: Promise; private _initialized; constructor(username: string, password: string, opts: OpenApiComponents.Schemas.VaultConfiguration['key_derivation']); private init; get authKey(): string; get encKey(): SecretKey; } declare function deriveKey(password: string, opts: KeyDerivationOptions): Promise; declare function deriveKey(key: KeyObject, opts: KeyDerivationOptions): Promise; interface RetryOptions { retries: number; retryDelay: number; } interface CallOptions { bearerToken?: string; responseStatus?: number; sequential?: boolean; beforeRequestFinish?: (data: T) => Promise; } declare class Request { private readonly axios; _defaultCallOptions: CallOptions; _defaultUrl?: string; private _stop; ongoingRequests: { [url: string]: Array>; }; constructor(opts?: { retryOptions?: RetryOptions; defaultCallOptions?: CallOptions; defaultUrl?: string; }); get defaultUrl(): string | undefined; set defaultUrl(url: string | undefined); get defaultCallOptions(): CallOptions; set defaultCallOptions(opts: CallOptions); private getAxiosInstance; waitForOngoingRequestsToFinsh(url?: string): Promise; stop(): Promise; private request; delete(url: string, options?: CallOptions): Promise; delete(options?: CallOptions): Promise; get(url: string, options?: CallOptions): Promise; get(options?: CallOptions): Promise; post(url: string, requestBody: any, options?: CallOptions): Promise; post(requestBody: any, options?: CallOptions): Promise; put(url: string, requestBody: any, options?: CallOptions): Promise; put(requestBody: any, options?: CallOptions): Promise; } declare const VAULT_STATE: { readonly NOT_INITIALIZED: 0; readonly INITIALIZED: 1; readonly LOGGED_IN: 2; readonly CONNECTED: 3; }; type VaultState = typeof VAULT_STATE['NOT_INITIALIZED'] | typeof VAULT_STATE['INITIALIZED'] | typeof VAULT_STATE['LOGGED_IN'] | typeof VAULT_STATE['CONNECTED']; type VaultEvent = { 'state-changed': [ state: VaultState ]; 'empty-storage': never; 'storage-updated': [ timestamp: number ]; 'storage-deleted': never; 'sync-start': [ startTime: number ]; 'sync-stop': [ startTime: number, stopTime: number ]; }; type VaultEventName = keyof VaultEvent; type ArgsForEvent = VaultEvent[T]; interface PasswordStrengthOptions { minLength?: number; uppercase?: boolean; lowercase?: boolean; numbers?: boolean; symbols?: boolean; allowedSymbols?: string; } declare const defaultPasswordStrengthOptions: Required; declare function passwordCheck(password: string, options?: PasswordStrengthOptions): void; type CbOnEventFn = (...args: ArgsForEvent) => void; interface VaultStorage { storage: Buffer; timestamp?: number; } interface VaultClientOpts { name?: string; defaultRetryOptions?: RetryOptions; passwordStrengthOptions?: PasswordStrengthOptions; } interface LoginOptions { username: string; password: string; timestamp?: number; } declare class VaultClient extends EventEmitter { timestamp?: number; token?: string; name: string; serverUrl?: string; wellKnownCvsConfiguration?: OpenApiComponents.Schemas.CvsConfiguration; state: Promise; private readonly request; private keyManager?; private es?; private switchingState; constructor(opts?: VaultClientOpts); emit(eventName: T, ...args: ArgsForEvent): boolean; on(event: T, cb: CbOnEventFn): this; once(event: T, cb: CbOnEventFn): this; protected switchToState(newState: VaultState, opts?: LoginOptions): Promise; private _switchToStatePromise; private _switchToState; private _initEventSourceClient; private _initKeyManager; init(serverUrl: string): Promise; login(username: string, password: string, timestamp?: number): Promise; logout(): Promise; close(): Promise; getRemoteStorageTimestamp(): Promise; getStorage(): Promise; updateStorage(storage: VaultStorage, force?: boolean): Promise; deleteStorage(): Promise; getRegistrationUrl(username: string, password: string, did: string, passwordStrengthOptions?: PasswordStrengthOptions): Promise; private computeAuthKey; } type VaultErrorData = { 'not-initialized': any; 'http-connection-error': { request: { method?: string; url?: string; headers?: { [header: string]: string; }; data?: any; }; response?: { status?: number; headers?: { [header: string]: string; }; data?: any; }; }; 'http-request-canceled': { request: { method?: string; url?: string; headers?: { [header: string]: string; }; data?: any; }; }; 'no-uploaded-storage': any; 'sse-connection-error': any; 'quota-exceeded': string; conflict: { localTimestamp?: number; remoteTimestamp?: number; }; unauthorized: any; 'invalid-credentials': any; 'weak-password': string; 'invalid-timestamp': any; error: Error; unknown: any; validation: { description?: string; data?: any; }; }; type VaultErrorName = keyof VaultErrorData; type DataForError = VaultErrorData[T]; declare class VaultError extends Error { data: any; message: T; constructor(message: T, data: DataForError, options?: ErrorOptions); static from(error: unknown): VaultError; } declare function checkErrorType(err: VaultError, type: T): err is VaultError; export { CbOnEventFn, DataForError, KeyDerivationOptions, KeyManager, PasswordStrengthOptions, Request, RetryOptions, ScryptOptions, SecretKey, VAULT_STATE, VaultClient, VaultClientOpts, VaultError, VaultErrorData, VaultErrorName, VaultState, VaultStorage, checkErrorType, defaultPasswordStrengthOptions, deriveKey, passwordCheck };