import { MonitoringExecutor } from '@meshwatch/types';
import { Pool, QueryResult } from 'pg';
import { MonitorExecutorCheck } from '../../types';
import { LatencyRow } from './latency/types';
declare type IdentifiableMonitorExecutorCheck<T extends MonitorExecutorCheck> = {
    userId: string;
    monitorId: string;
    region: string;
    created: Date;
    data: T;
};
export interface MonitorCheckStorage {
    createChecksSchema: () => Promise<QueryResult>;
    insertCheckData: <T extends MonitorExecutorCheck>(data: IdentifiableMonitorExecutorCheck<T>, executorType: MonitoringExecutor) => Promise<LatencyRow>;
}
export declare class TimescaleMonitorCheckStorage implements MonitorCheckStorage {
    private latencyStorage;
    private postgresPool;
    constructor(postgresPool?: Pool);
    createChecksSchema: () => Promise<QueryResult>;
    insertCheckData: <T extends MonitorExecutorCheck>(data: IdentifiableMonitorExecutorCheck<T>, executorType: MonitoringExecutor) => Promise<LatencyRow>;
}
declare const timescaleMonitorCheckStorage: TimescaleMonitorCheckStorage;
export default timescaleMonitorCheckStorage;
