import { ScanInput, ScanOutput } from 'aws-sdk/clients/dynamodb';
import { Observable } from 'rxjs';
import { ModelConstructor } from '../../../model';
import { DynamoRx } from '../../dynamo-rx';
import { ConditionExpressionDefinitionFunction, RequestConditionFunction } from '../../expression/type';
import { Pageable } from '../../paged';
import { Request } from '../request.model';
import { ScanResponse } from './scan.response';
export declare class ScanRequest<T> extends Request<T, ScanRequest<T>, ScanInput, ScanResponse<T>> implements Pageable<T, ScanRequest<T>, ScanResponse<T>> {
    private readonly logger;
    constructor(dynamoRx: DynamoRx, modelClazz: ModelConstructor<T>, tableName: string);
    whereAttribute(attributePath: keyof T): RequestConditionFunction<ScanRequest<T>>;
    where(...conditionDefFns: ConditionExpressionDefinitionFunction[]): ScanRequest<T>;
    execFullResponse(): Observable<ScanResponse<T>>;
    execNoMap(): Observable<ScanOutput>;
    exec(): Observable<T[]>;
    execSingle(): Observable<T | null>;
    execCount(): Observable<number>;
    /**
     * fetches all pages. may uses all provisionedOutput, therefore for client side use cases rather use pagedDatasource (exec)
     */
    execFetchAll(): Observable<T[]>;
}
