import { BehaviorSubject, Subject } from 'rxjs';
import { IDatasource, IAdapterItem, IAdapter } from './vscroll';
interface IReactiveOverride<Item = unknown> {
    init$: Subject<boolean>;
    isLoading$: Subject<boolean>;
    loopPending$: Subject<boolean>;
    firstVisible$: BehaviorSubject<IAdapterItem<Item>>;
    lastVisible$: BehaviorSubject<IAdapterItem<Item>>;
    bof$: Subject<boolean>;
    eof$: Subject<boolean>;
}
declare type _Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
interface IAngularAdapter<Data = unknown> extends _Omit<IAdapter<Data>, keyof IReactiveOverride<Data>>, IReactiveOverride<Data> {
}
interface IAngularDatasource<Data = unknown> extends _Omit<IDatasource<Data>, 'adapter'> {
    adapter?: IAngularAdapter<Data>;
}
declare const AngularDatasource: {
    new <T = unknown>(_ds: IAngularDatasource<T>): {
        get: import("vscroll/dist/typings/interfaces").DatasourceGet<T>;
        settings?: import("vscroll/dist/typings/interfaces").Settings<T> | undefined;
        devSettings?: import("vscroll/dist/typings/interfaces").DevSettings | undefined;
        adapter: IAngularAdapter<T>;
    };
};
export { IAngularAdapter as IAdapter, IAngularDatasource as IDatasource, AngularDatasource as Datasource, };
