import * as t from "io-ts"; import * as Knex from "knex"; import { Dict, Maybe } from "./utils/util-types"; import { ColumnSelection } from "./SingleSourceQueryOperationResolver"; import { AliasHierarchyVisitor } from "./AliasHierarchyVisitor"; export declare const BasePaginationConfigRT: t.PartialC<{ pageSize: t.UnionC<[t.NumberC, t.PartialC<{ max: t.NumberC; default: t.NumberC; }>]>; }>; export declare const AutoPaginationConfigRT: t.IntersectionC<[t.TypeC<{ cursorColumn: t.StringC; }>, t.PartialC<{ pageSize: t.UnionC<[t.NumberC, t.PartialC<{ max: t.NumberC; default: t.NumberC; }>]>; }>]>; export declare const ControlledPaginationConfigRT: t.IntersectionC<[t.PartialC<{ pageSize: t.UnionC<[t.NumberC, t.PartialC<{ max: t.NumberC; default: t.NumberC; }>]>; }>, t.TypeC<{ interceptQuery: t.FunctionC; getNextCursor: t.FunctionC; getPrevCursor: t.FunctionC; getTotalCount: t.FunctionC; }>]>; export declare const PaginationConfigRT: t.UnionC<[t.IntersectionC<[t.TypeC<{ cursorColumn: t.StringC; }>, t.PartialC<{ pageSize: t.UnionC<[t.NumberC, t.PartialC<{ max: t.NumberC; default: t.NumberC; }>]>; }>]>, t.IntersectionC<[t.PartialC<{ pageSize: t.UnionC<[t.NumberC, t.PartialC<{ max: t.NumberC; default: t.NumberC; }>]>; }>, t.TypeC<{ interceptQuery: t.FunctionC; getNextCursor: t.FunctionC; getPrevCursor: t.FunctionC; getTotalCount: t.FunctionC; }>]>]>; export interface AutoPaginationConfig extends t.TypeOf { } export interface ControlledPaginationConfig extends t.TypeOf { interceptQuery(qb: Knex.QueryBuilder, cursor: Maybe, pageSize: number, selectedColumns: ColumnSelection, ahv: AliasHierarchyVisitor): Knex.QueryBuilder; getNextCursor(results: Dict[], ahv: AliasHierarchyVisitor): string; getPrevCursor(results: Dict[], ahv: AliasHierarchyVisitor): string; getTotalCount(qb: Knex.QueryBuilder, ahv: AliasHierarchyVisitor): Promise; } export declare type PaginationConfig = AutoPaginationConfig | ControlledPaginationConfig; export declare const isAutoPaginationConfig: (config: PaginationConfig) => config is AutoPaginationConfig;