import { BaseDataSourceViewer } from '@rxap/data-source';
import type { HttpDataSource } from '@rxap/data-source/http';
import { HttpDataSourceOptions, HttpDataSourceViewer } from '@rxap/data-source/http';
import { PaginationData } from '@rxap/data-source/http/pagination';
import { PaginatorLike } from '@rxap/data-source/pagination';
import { AbstractTableDataSource, AbstractTableDataSourceMetadata, FilterLike, SortLike, TableEvent } from '@rxap/data-source/table';
import { Constructor } from '@rxap/utilities';
import { Observable, TeardownLogic } from 'rxjs';
import * as i0 from "@angular/core";
export interface HttpTableDataSourceViewer extends BaseDataSourceViewer {
    readonly viewChange: Observable<TableEvent>;
}
export type HttpTableDataSourceMetadata = AbstractTableDataSourceMetadata;
export type TableEventToHttpOptionsFunction = (event: TableEvent) => HttpDataSourceOptions | Observable<HttpDataSourceOptions> | Promise<HttpDataSourceOptions>;
export declare class HttpTableDataSource<Data extends Record<any, any>, Parameters = any> extends AbstractTableDataSource<Data> {
    private readonly dataSource;
    constructor(dataSource: HttpDataSource<PaginationData<Data>>, paginator?: PaginatorLike | null, tableEventToHttpOptions?: any | null, sort?: SortLike | null, filter?: FilterLike | null, parameters?: Observable<Parameters> | null, metadata?: HttpTableDataSourceMetadata | null);
    tableEventToHttpOptions(event: TableEvent): HttpDataSourceOptions | Observable<HttpDataSourceOptions> | Promise<HttpDataSourceOptions>;
    protected _connect(viewer: HttpDataSourceViewer): [Observable<Data[]>, TeardownLogic];
    static ɵfac: i0.ɵɵFactoryDeclaration<HttpTableDataSource<any, any>, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<HttpTableDataSource<any, any>>;
}
export declare function RxapHttpTableDataSource<Data extends Record<any, any>>(metadata: HttpTableDataSourceMetadata, className?: string, packageName?: string): (target: Constructor<HttpTableDataSource<Data>>) => void;
