import { DynamoDB } from 'aws-sdk';
import { Observable } from 'rxjs';
import { randomExponentialBackoffTimer } from '../../helper';
import { ModelConstructor } from '../../model';
export declare class BatchWriteRequest {
    readonly params: DynamoDB.BatchWriteItemInput;
    private readonly dynamoRx;
    private itemCount;
    constructor();
    returnConsumedCapacity(value: DynamoDB.ReturnConsumedCapacity): BatchWriteRequest;
    returnItemCollectionMetrics(value: DynamoDB.ReturnItemCollectionMetrics): BatchWriteRequest;
    delete<T>(modelClazz: ModelConstructor<T>, items: Array<Partial<T>>): BatchWriteRequest;
    put<T>(modelClazz: ModelConstructor<T>, items: T[]): BatchWriteRequest;
    /**
     *
     * @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 requestItems;
    private write;
    private createDeleteRequest;
    private createPutRequest;
}
