import { CreateStatusPageDTO, StatusPageDTO } from '@meshwatch/types';
import { CreateTableOutput, DeleteItemOutput } 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';
export interface StatusPageDatasource {
    getStatusPage(id: string): Promise<StatusPageDTO>;
    lookupStatusPage(customDomain: string): Promise<StatusPageDTO>;
    createStatusPage(params: CreateStatusPageDTO): Promise<StatusPageDTO>;
    findStatusPages(userId: string): Promise<StatusPageDTO[]>;
    deleteStatusPage(id: string): Promise<PromiseResult<DeleteItemOutput, AWSError>>;
    updateStatusPage(params: StatusPageDTO): Promise<StatusPageDTO>;
}
export declare class DynamoStatusPageDatasource implements StatusPageDatasource {
    private readonly dynamoClient;
    constructor(dynamoClient?: DynamoDBClient);
    createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
    updateStatusPage: (params: import("@meshwatch/types/dist/common").WithCreated<CreateStatusPageDTO & {
        id: string;
    }>) => Promise<import("@meshwatch/types/dist/common").WithCreated<CreateStatusPageDTO & {
        id: string;
    }>>;
    createStatusPage: (params: CreateStatusPageDTO) => Promise<import("@meshwatch/types/dist/common").WithCreated<CreateStatusPageDTO & {
        id: string;
    }>>;
    private putStatusPage;
    findStatusPages: (userId: string) => Promise<import("@meshwatch/types/dist/common").WithCreated<CreateStatusPageDTO & {
        id: string;
    }>[]>;
    deleteStatusPage: (id: string) => Promise<PromiseResult<import("aws-sdk/clients/dynamodb").DocumentClient.DeleteItemOutput, AWSError>>;
    lookupStatusPage: (customDomain: string) => Promise<import("@meshwatch/types/dist/common").WithCreated<CreateStatusPageDTO & {
        id: string;
    }>>;
    getStatusPage: (id: string) => Promise<import("@meshwatch/types/dist/common").WithCreated<CreateStatusPageDTO & {
        id: string;
    }>>;
    private statusPageToDynamoItem;
    private statusPageFromDynamoItem;
    private encodeId;
    private encodeUserId;
    private decodeHashKey;
}
declare const dynamoStatusPageDatasource: DynamoStatusPageDatasource;
export default dynamoStatusPageDatasource;
