import { DynamoDBSchemaProvider } from "../mappers/schemaBuilders";
import { DynamoDBRecordMapper } from "../mappers/recordMapper";
import { Delete } from "aws-sdk/clients/dynamodb";
import { WhenExpressionBuilder } from "./batchWriteBuilder";
import { ArrowStoreRecordId } from "../types";
import { DynamoDBClientResolver } from "../client";
export declare type TransactDeleteItemBuilder<TRecord extends {}> = {
    when<TContext>(predicate: (record: TRecord, context: TContext) => boolean, context?: TContext): TransactDeleteItemBuilder<TRecord>;
};
export declare type DeleteBuilder<TRecord extends {}> = {
    when<TContext>(predicate: (record: TRecord, context: TContext) => boolean, context?: TContext): DeleteBuilder<TRecord>;
    executeAsync(): Promise<boolean>;
};
export declare class DynamoDBBatchDeleteItemBuilder<TRecord extends {}> extends WhenExpressionBuilder<TRecord> implements TransactDeleteItemBuilder<TRecord> {
    private readonly _conditionExpressions;
    constructor(recordId: ArrowStoreRecordId, schemaProvider: DynamoDBSchemaProvider, recordMapper: DynamoDBRecordMapper);
    when<TContext>(predicate: (record: TRecord, context: TContext) => boolean, context: TContext | undefined): TransactDeleteItemBuilder<TRecord>;
    build(): Delete;
}
export declare class DynamoDBDeleteItemBuilder<TRecord extends {}> extends WhenExpressionBuilder<TRecord> implements DeleteBuilder<TRecord> {
    private readonly _clientResolver;
    private readonly _conditionExpressions;
    constructor(recordId: ArrowStoreRecordId, schemaProvider: DynamoDBSchemaProvider, recordMapper: DynamoDBRecordMapper, clientResolver: DynamoDBClientResolver);
    when<TContext>(predicate: (record: TRecord, context: TContext) => boolean, context: TContext | undefined): DeleteBuilder<TRecord>;
    executeAsync(): Promise<boolean>;
}
