import { CreateMonitorPayload, Monitor } from '@meshwatch/types';
import DynamoDB, { CreateTableOutput, DeleteItemOutput, DocumentClient } from 'aws-sdk/clients/dynamodb';
import { AWSError } from 'aws-sdk/lib/error';
import { PromiseResult } from 'aws-sdk/lib/request';
export interface MonitorStorage {
    createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
    createMonitor: (monitor: CreateMonitorPayload) => Promise<Monitor>;
    updateMonitor: (monitor: Monitor) => Promise<Monitor>;
    deleteMonitor: (userId: string, monitorId: string) => Promise<PromiseResult<DeleteItemOutput, AWSError>>;
    getMonitor: (userId: string, monitorId: string) => Promise<Monitor>;
    searchMonitors: (userId: string) => Promise<Monitor[]>;
    bookmarkMonitor: (userId: string, monitorId: string, bookmarked: boolean) => Promise<Monitor>;
    getMonitorsByScheduler: (schedulerName: string) => Promise<Monitor[]>;
}
export declare class DynamoMonitorStorage implements MonitorStorage {
    private documentClient;
    private dynamoDB;
    constructor(documentClient?: DocumentClient, dynamoDB?: DynamoDB);
    createTable: () => Promise<PromiseResult<DynamoDB.CreateTableOutput, AWSError>>;
    bookmarkMonitor: (userId: string, monitorId: string, bookmarked: boolean) => Promise<Monitor>;
    getMonitor: (userId: string, monitorId: string) => Promise<Monitor>;
    deleteMonitor: (userId: string, monitorId: string) => Promise<PromiseResult<DynamoDB.DocumentClient.DeleteItemOutput, AWSError>>;
    searchMonitors: (userId: string) => Promise<Monitor[]>;
    getMonitorsByScheduler: (scheduler: string) => Promise<Monitor[]>;
    createMonitor: (createMonitorPayload: CreateMonitorPayload) => Promise<Monitor>;
    updateMonitor: (updateMonitorPayload: Monitor) => Promise<Monitor>;
    _putMonitor: (monitor: Monitor) => Promise<Monitor>;
    private monitorToDynamoItem;
    private monitorFromDynamoItem;
    private mapDynamoRows;
    private encodeHashKey;
    private decodeHashKey;
    private encodeSortKey;
    private decodeSortKey;
}
declare const dynamoMonitorStorage: DynamoMonitorStorage;
export default dynamoMonitorStorage;
