import { DynamoDBQueryResult } from "../types";
import { DynamoDBSchemaProvider } from "../mappers/schemaBuilders";
import { DynamoDBClientResolver } from "../client";
import { DynamoDBRecordMapper } from "../mappers/recordMapper";
import { WhenExpressionBuilder } from "./batchWriteBuilder";
import { ArrowStoreRecordId, ArrowStoreTypeRecordId } from "../types";
export declare type ListQueryBuilder<TRecord> = {
    where<TContext>(predicate: (record: TRecord, context: TContext) => boolean, context?: TContext): ListQueryBuilder<TRecord>;
    skipTo(recordId: ArrowStoreRecordId): ListQueryBuilder<TRecord>;
    take(takeRecords: number): ListQueryBuilder<TRecord>;
    sortByAscending(): ListQueryBuilder<TRecord>;
    sortByDescending(): ListQueryBuilder<TRecord>;
    listAsync(): Promise<DynamoDBQueryResult<TRecord>>;
};
export declare class DynamoDBListQueryBuilder<TRecord> extends WhenExpressionBuilder<TRecord> implements ListQueryBuilder<TRecord> {
    private readonly _recordQuery;
    private readonly _clientResolver;
    private readonly _filterExpressions;
    private _scanIndexFwd;
    private _exclusiveStartKey;
    private _limit;
    constructor(recordQuery: ArrowStoreRecordId | ArrowStoreTypeRecordId<TRecord>, schemaProvider: DynamoDBSchemaProvider, recordMapper: DynamoDBRecordMapper, clientResolver: DynamoDBClientResolver);
    where<TContext>(predicate: (record: TRecord, context: TContext) => boolean, context?: TContext): ListQueryBuilder<TRecord>;
    skipTo(recordId: ArrowStoreRecordId): ListQueryBuilder<TRecord>;
    take(takeRecords: number): ListQueryBuilder<TRecord>;
    sortByAscending(): ListQueryBuilder<TRecord>;
    sortByDescending(): ListQueryBuilder<TRecord>;
    listAsync(): Promise<DynamoDBQueryResult<TRecord>>;
    private _fromLastEvaluatedKey;
    private _toPrimaryKey;
    private static _toQueryKeyExpression;
}
