import * as DynamoDB from 'aws-sdk/clients/dynamodb';
import { Observable } from 'rxjs';
import { Metadata } from '../../../decorator/metadata';
import { randomExponentialBackoffTimer } from '../../../helper';
import { ModelConstructor } from '../../../model';
import { DynamoRx } from '../../dynamo-rx';
export declare class BatchWriteSingleTableRequest<T> {
    private readonly toKey;
    readonly dynamoRx: DynamoRx;
    readonly modelClazz: ModelConstructor<T>;
    readonly metadata: Metadata<T>;
    readonly tableName: string;
    readonly params: DynamoDB.BatchWriteItemInput;
    private readonly logger;
    private keyFn;
    constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>);
    returnConsumedCapacity(value: DynamoDB.ReturnConsumedCapacity): void;
    returnItemCollectionMetrics(value: DynamoDB.ReturnItemCollectionMetrics): void;
    delete(items: T[]): BatchWriteSingleTableRequest<T>;
    put(items: T[]): BatchWriteSingleTableRequest<T>;
    /**
     *
     * @param backoffTimer generator for how much timeSlots should be waited before requesting next batch. only used when capacity was exceeded. default randomExponentialBackoffTimer
     * @param throttleTimeSlot defines how long one timeSlot is for throttling, default 1 second
     */
    exec(backoffTimer?: typeof randomExponentialBackoffTimer, throttleTimeSlot?: number): Observable<void>;
    execFullResponse(backoffTimer?: typeof randomExponentialBackoffTimer, throttleTimeSlot?: number): Observable<DynamoDB.BatchWriteItemOutput>;
    private write;
    private createDeleteRequest;
    private createPutRequest;
}
