import { Repository, SelectQueryBuilder, FindOptionsWhere, FindOptionsRelations, ObjectLiteral } 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[]; 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; } 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>;