import { Key } from 'aws-sdk/clients/dynamodb';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { QueryRequest } from '../request/query/query.request';
import { QueryResponse } from '../request/query/query.response';
import { ScanRequest } from '../request/scan/scan.request';
import { ScanResponse } from '../request/scan/scan.response';
import { Pageable } from './pageable';
import { PagedRequestMeta } from './paged-request-meta';
export declare class PagedDataSource<T, R extends QueryRequest<T> | ScanRequest<T>, O extends QueryResponse<T> | ScanResponse<T>> {
    private pageSize;
    loadingSubject: BehaviorSubject<boolean>;
    nextSubject: Subject<void>;
    metaSubject: BehaviorSubject<PagedRequestMeta>;
    data: T[];
    count$: Observable<number>;
    loading$: Observable<boolean>;
    hasMore$: Observable<boolean>;
    lastKey: Key | null;
    meta$: Observable<PagedRequestMeta>;
    constructor(request$: Observable<Pageable<T, R, O>>, pageSize?: number);
    next(): void;
    /**
     * removes the given item if it exists in data set, and updates the counter.
     * @param item
     */
    removeItem(item: T): void;
    addItem(item: T): void;
    /**
     * will search for the item using _.findIndex(predicate) and replaces the found item with the updatedItem,
     * logs an error if the item to replace could not be found
     */
    editItem(updatedItem: T, predicate: any): void;
    private reset;
    private fetchData;
}
