import { CreateMonitorDTO, MonitorDTO } from '@meshwatch/types';
import { CreateTableOutput, DeleteItemOutput, DocumentClient } from 'aws-sdk/clients/dynamodb';
import { AWSError } from 'aws-sdk/lib/error';
import { PromiseResult } from 'aws-sdk/lib/request';
import { DynamoDBClient } from '../../shared/aws/dynamodb';
import DynamoMonitoringDatasource from '../db/datasource';
export interface MonitorDatasource {
    createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
    createMonitor: (monitor: CreateMonitorDTO) => Promise<MonitorDTO>;
    updateMonitor: (monitor: MonitorDTO) => Promise<MonitorDTO>;
    deleteMonitor: (userId: string, monitorId: string) => Promise<PromiseResult<DeleteItemOutput, AWSError>>;
    getMonitor: (userId: string, monitorId: string) => Promise<MonitorDTO>;
    searchMonitors: (userId: string) => Promise<MonitorDTO[]>;
    bookmarkMonitor: (userId: string, monitorId: string, bookmarked: boolean) => Promise<MonitorDTO>;
    getMonitorsByScheduler: (schedulerName: string) => Promise<MonitorDTO[]>;
}
export declare class DynamoMonitorDatasource extends DynamoMonitoringDatasource implements MonitorDatasource {
    private readonly userDatasource;
    constructor(dynamoClient?: DynamoDBClient);
    bookmarkMonitor: (userId: string, monitorId: string, bookmarked: boolean) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>>;
    getMonitor: (userId: string, monitorId: string) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>>;
    deleteMonitor: (userId: string, monitorId: string) => Promise<PromiseResult<DocumentClient.DeleteItemOutput, AWSError>>;
    searchMonitors: (userId: string) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>[]>;
    getMonitorsByScheduler: (scheduler: string) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>[]>;
    createMonitor: (payload: CreateMonitorDTO) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>>;
    updateMonitor: (updateMonitorPayload: import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>>;
    _putMonitor: (monitor: import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>) => Promise<import("@meshwatch/types/dist/common").WithCreated<import("@meshwatch/types").UpdateMonitorDTO>>;
    private monitorToDynamoItem;
    private mapDynamoRows;
    private encodeSortKey;
}
declare const dynamoMonitorDatasource: DynamoMonitorDatasource;
export default dynamoMonitorDatasource;
