import { FindOptionsRelationByString, FindOptionsRelations, FindOptionsWhere, ObjectLiteral, Repository, SelectQueryBuilder } from 'typeorm'; import { PaginateQuery } from './decorator'; import { Column, RelationColumn, SortBy } from './helper'; import { FilterOperator, FilterSuffix } from './filter'; export { FilterOperator, FilterSuffix }; export declare class Paginated { data: T[]; meta: { itemsPerPage: number; totalItems: number; currentPage: number; totalPages: number; sortBy: SortBy; searchBy: Column[]; search: string; select: string[]; filter?: { [column: string]: string | string[]; }; }; links: { first?: string; previous?: string; current: string; next?: string; last?: string; }; } export declare enum PaginationType { LIMIT_AND_OFFSET = "limit", TAKE_AND_SKIP = "take" } export interface PaginateConfig { relations?: FindOptionsRelations | RelationColumn[] | FindOptionsRelationByString; sortableColumns: Column[]; nullSort?: 'first' | 'last'; searchableColumns?: Column[]; select?: Column[] | string[]; maxLimit?: number; defaultSortBy?: SortBy; defaultLimit?: number; where?: FindOptionsWhere | FindOptionsWhere[]; filterableColumns?: { [key in Column | string]?: (FilterOperator | FilterSuffix)[] | true; }; loadEagerRelations?: boolean; withDeleted?: boolean; paginationType?: PaginationType; relativePath?: boolean; origin?: string; ignoreSearchByInQueryParam?: boolean; ignoreSelectInQueryParam?: boolean; } export declare const DEFAULT_MAX_LIMIT = 100; export declare const DEFAULT_LIMIT = 20; export declare const NO_PAGINATION = 0; export declare function paginate(query: PaginateQuery, repo: Repository | SelectQueryBuilder, config: PaginateConfig): Promise>;