import { DataSource } from 'typeorm';
import { UserCommunication } from './UserCommunication';
import { KeyManager } from '../storage/keymanager';
import { StorageFactory } from '../storage/storage';
import { VerificationTypeEnum } from '../types/VerificationTypeEnum';
import { IdentityVerificationStorageManager } from '../storage/identityVerificationStorageManager';
import { KYCPayload, PersonCredentialType } from '../util/veriff';
import { IUserDataVault } from '../types/User';
import { VeriffStatusEnum } from '../types/VeriffStatusEnum';
export declare class UserDataVault extends UserCommunication implements IUserDataVault {
    protected readonly idVerificationManager: IdentityVerificationStorageManager;
    protected readonly dataSource: DataSource;
    constructor(keyManager: KeyManager, storageFactory: StorageFactory, dataSource: DataSource);
    checkTableExists(tableName: string): Promise<boolean>;
    initializeKycDataSource(): Promise<void>;
    /**
     * Handle a verification update message by parsing it and updating the verification record
     * @param message The verification message
     * @throws {Error} If message type is incorrect or verification update fails
     */
    private handleVerificationUpdate;
    /**
     * Waits for the next Veriff verification message, calls the handler, and returns the KYCPayload of the message.
     * Used for one-time waiting scenarios (e.g., frontend waiting screen).
     *
     * @returns {Promise<KYCPayload>}
     */
    waitForNextVeriffVerification(): Promise<KYCPayload>;
    fetchVerificationData(type: VerificationTypeEnum, status?: VeriffStatusEnum): Promise<PersonCredentialType>;
    fetchReuseableKycCount(type?: VerificationTypeEnum): Promise<number>;
    updateReuseableKycCount(type: VerificationTypeEnum): Promise<void>;
}
//# sourceMappingURL=UserDataVault.d.ts.map