import * as DynamoDB from 'aws-sdk/clients/dynamodb';
import { Observable } from 'rxjs';
import { ModelConstructor } from '../model/model-constructor';
import { DynamoApiOperations } from './dynamo-api-operations.type';
import { BatchGetSingleTableRequest } from './request/batchgetsingletable/batch-get-single-table.request';
import { BatchWriteSingleTableRequest } from './request/batchwritesingletable/batch-write-single-table.request';
import { DeleteRequest } from './request/delete/delete.request';
import { GetRequest } from './request/get/get.request';
import { PutRequest } from './request/put/put.request';
import { QueryRequest } from './request/query/query.request';
import { ScanRequest } from './request/scan/scan.request';
import { UpdateRequest } from './request/update/update.request';
import { SessionValidityEnsurer } from './session-validity-ensurer.type';
import { TableNameResolver } from './table-name-resolver.type';
export declare class DynamoStore<T> {
    private modelClazz;
    private readonly dynamoRx;
    readonly tableName: string;
    constructor(modelClazz: ModelConstructor<T>, tableNameResolver?: TableNameResolver, sessionValidityEnsurer?: SessionValidityEnsurer);
    readonly dynamoDb: DynamoDB;
    put(item: T): PutRequest<T>;
    get(partitionKey: any, sortKey?: any): GetRequest<T>;
    update(partitionKey: any, sortKey?: any): UpdateRequest<T>;
    delete(partitionKey: any, sortKey?: any): DeleteRequest<T>;
    /**
     * This is a special implementation of batchWriteItem request, because it only supports one table,
     * if you wish to write items to multiple tables
     * create an instance of BatchWriteItemInput and use store.makeRequest with it.
     */
    batchWrite(): BatchWriteSingleTableRequest<T>;
    scan(): ScanRequest<T>;
    query(): QueryRequest<T>;
    /**
     * This is a special implementation of BatchGetItem request, because it only supports one table,
     * if you wish to retrieve items from multiple tables
     * create an instance of BatchGetItemInput and use store.makeRequest with it.
     */
    batchGetItem(keys: any[]): BatchGetSingleTableRequest<T>;
    makeRequest<Z>(operation: DynamoApiOperations, params?: {
        [key: string]: any;
    }): Observable<Z>;
}
