import { BaseRemoteMethod } from '@rxap/remote-method';
import { TableEvent } from '@rxap/data-source/table';
import type { OpenApiRemoteMethod } from './open-api.remote-method';
import { PaginatorLike } from '@rxap/data-source/pagination';
export interface GetPageRemoteMethodParameters {
    pageIndex: number;
    pageSize: number;
    sortBy?: string;
    sortDirection?: 'desc' | 'asc' | undefined | '' | string;
    filter: string[];
}
export interface GetPageResponse<Data extends Record<string, any>> {
    total: number;
    rows: Data[];
    [key: string]: any;
}
export interface GetPageAdapterDefaultOptions {
    sortBy?: string;
    sortDirection?: 'asc' | 'desc' | string;
}
export declare class GetPageAdapterRemoteMethod<Data extends Record<string, any>> extends BaseRemoteMethod<Data[], TableEvent> {
    private readonly remoteMethod;
    private readonly paginator?;
    private readonly options?;
    constructor(remoteMethod: OpenApiRemoteMethod<GetPageResponse<Data>, GetPageRemoteMethodParameters>, paginator?: PaginatorLike | undefined, options?: GetPageAdapterDefaultOptions | undefined);
    static BuildFilter(filterEvent?: string | Record<string, any> | null): string[];
    protected _call(event: TableEvent): Promise<Data[]>;
}
export declare function GetPageAdapterFactory(remoteMethod: OpenApiRemoteMethod, paginator?: PaginatorLike): GetPageAdapterRemoteMethod<Record<string, any>>;
export declare function GetPageAdapterFactoryWithOptions(options?: GetPageAdapterDefaultOptions): (remoteMethod: OpenApiRemoteMethod, paginator?: PaginatorLike) => GetPageAdapterRemoteMethod<Record<string, any>>;
