import { AbstractTableDataSource, AbstractTableDataSourceMetadata, FilterLike, Sort, SortLike } from '@rxap/data-source/table';
import { BaseDataSourceViewer } from '@rxap/data-source';
import { PageEvent, PaginatorLike } from '@rxap/data-source/pagination';
import { PaginationData } from '@rxap/data-source/http/pagination';
import { Observable, TeardownLogic } from 'rxjs';
import { Constructor } from '@rxap/utilities';
import type { OpenApiDataSource } from '@rxap/open-api/data-source';
import { OpenApiDataSourceViewer } from '@rxap/open-api/data-source';
import * as i0 from "@angular/core";
export interface TableEvent {
    page: PageEvent;
    sort: Sort | null;
    filter: Record<string, any> | string | null;
}
export interface OpenApiTableDataSourceViewer extends BaseDataSourceViewer {
    readonly viewChange: Observable<TableEvent>;
}
export interface OpenApiTableDataSourceMetadata extends AbstractTableDataSourceMetadata {
}
export type TableEventToOpenApiParametersFunction<Parameters extends Record<string, any>> = (event: TableEvent) => Parameters | Observable<Parameters> | Promise<Parameters>;
export declare class OpenApiTableDataSource<Data extends object = any, Parameters extends Record<string, any> = any> extends AbstractTableDataSource<Data> {
    private readonly dataSource;
    constructor(dataSource: OpenApiDataSource<PaginationData<Data>>, paginator?: PaginatorLike | null, tableEventToOpenApiParameters?: any | null, sort?: SortLike | null, filter?: FilterLike | null, parameters?: Observable<Parameters> | null, metadata?: OpenApiTableDataSourceMetadata | null);
    tableEventToOpenApiParameters(event: TableEvent): Parameters | Observable<Parameters> | Promise<Parameters>;
    protected _connect(viewer: OpenApiDataSourceViewer): [Observable<Data[]>, TeardownLogic];
    static ɵfac: i0.ɵɵFactoryDeclaration<OpenApiTableDataSource<any, any>, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OpenApiTableDataSource<any, any>>;
}
export declare function RxapOpenApiTableDataSource<Data extends object, Parameters extends Record<string, any>>(metadata: OpenApiTableDataSourceMetadata, className?: string, packageName?: string): (target: Constructor<OpenApiTableDataSource<Data, Parameters>>) => void;
