import { IQueryParams } from "@leight-core/leight"; import { UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query"; import { TablePaginationConfig } from "antd"; import { PaginationConfig } from "antd/es/pagination"; export declare type IQueryOptions = Omit, "queryKey" | "queryFn">; export declare type IMutationOptions = Omit, "mutationKey" | "mutationFn">; export interface IHookPromise { (request?: TRequest): Promise; (): Promise; } export interface IPromiseQueryCallback { (link: string, query?: TQuery, request?: TRequest): IHookPromise; (link: string, query?: TQuery): IHookPromise; } export interface IPromiseMutationCallback { (link: string, query?: TQuery): IHookPromise; } export interface IQueryHookCallback { (request?: TRequest, query?: TQuery, options?: IQueryOptions): UseQueryResult; } export interface IMutationHookCallback { (query?: TQuery, options?: IMutationOptions): UseMutationResult; } export interface IQuery { /** currently requested page */ readonly page: number; /** limit number of items per page */ readonly size: number; /** support for ordering items */ readonly orderBy?: TOrderBy | null; /** * support for exact item filtering (like by an id or name or whatever) */ readonly filter?: TFilter | null; } export interface IQueryResult { /** number of total available items in the source */ readonly total: number; /** current page size */ readonly size: number; /** total available pages (precomputed based on total number of items and page size) */ readonly pages: number; /** number of items on the current page; usually same as page size, could be less */ readonly count: number; /** items on the page */ readonly items: TItem[]; } export interface ISourceContext { readonly result: UseQueryResult, any>; /** * Current page */ readonly page: number; /** * Set a new page (and eventually size). */ setPage(page: number, pageSize?: number): void; /** * Page size */ readonly size: number; /** * Set a new page size */ setSize(size: number): void; /** * Current order by. */ readonly orderBy?: TOrderBy | null; /** * Set new order by. */ setOrderBy(orderBy?: TOrderBy | null): void; /** * Merge the given orders with current state. */ mergeOrderBy(orderBy?: TOrderBy | null): void; readonly filter?: TFilter | null; setFilter(filter?: TFilter | null): void; /** * Merge current filters with the given one. */ mergeFilter(filter?: TFilter | null): void; /** * Access to current query used to fetch a page. */ readonly query: TQuery; /** * Set a new query. */ setQuery(query?: TQuery): void; /** * Merge queries with the given one. */ mergeQuery(query?: TQuery): void; pagination(): (TablePaginationConfig & PaginationConfig) | false | undefined; hasData(): boolean; map(mapper: (item: TResponse) => any): any; data(): IQueryResult; }