/// <reference types="node" />
import EventEmitter from 'events';
import { Knex } from 'knex';
import { LogProvider } from '../logger';
import { IClientInstance, IClientInstanceStore, INewClientInstance } from '../types/stores/client-instance-store';
export default class ClientInstanceStore implements IClientInstanceStore {
    private db;
    private logger;
    private eventBus;
    private metricTimer;
    private timer;
    constructor(db: Knex, eventBus: EventEmitter, getLogger: LogProvider);
    _removeInstancesOlderThanTwoDays(): Promise<void>;
    setLastSeen({ appName, instanceId, environment, clientIp, }: INewClientInstance): Promise<void>;
    bulkUpsert(instances: INewClientInstance[]): Promise<void>;
    delete({ appName, instanceId, }: Pick<INewClientInstance, 'appName' | 'instanceId'>): Promise<void>;
    deleteAll(): Promise<void>;
    get({ appName, instanceId, }: Pick<INewClientInstance, 'appName' | 'instanceId'>): Promise<IClientInstance>;
    exists({ appName, instanceId, }: Pick<INewClientInstance, 'appName' | 'instanceId'>): Promise<boolean>;
    insert(details: INewClientInstance): Promise<void>;
    getAll(): Promise<IClientInstance[]>;
    getByAppName(appName: string): Promise<IClientInstance[]>;
    getDistinctApplications(): Promise<string[]>;
    deleteForApplication(appName: string): Promise<void>;
    destroy(): void;
}
