import { SelectQueryBuilder, ObjectType } from 'typeorm';
import { OrderBy, PromisePagePagination, PagePagination, Nullable, Take } from './interfaces/paginator';
export interface PagePaginatorParams<TEntity, TColumnNames extends Record<string, string>> {
    columnNames?: TColumnNames | null;
    take?: Nullable<Take> | number | null;
    orderBy: OrderBy<TEntity & TColumnNames> | OrderBy<TEntity & TColumnNames>[];
}
export interface PagePaginatorPaginateParams<TEntity, TColumnNames extends Record<string, string>> {
    page?: number | null;
    take?: number | null;
    orderBy?: OrderBy<TEntity & TColumnNames> | OrderBy<TEntity & TColumnNames>[];
}
export declare class PagePaginator<TEntity, TColumnNames extends Record<string, string>> {
    entity: ObjectType<TEntity>;
    orderBy: OrderBy<TEntity> | OrderBy<TEntity>[];
    columnNames: Record<string, string>;
    takeOptions: Take;
    constructor(entity: ObjectType<TEntity>, { orderBy, columnNames, take, }: PagePaginatorParams<TEntity, TColumnNames>);
    paginate(qb: SelectQueryBuilder<TEntity>, params?: PagePaginatorPaginateParams<TEntity, TColumnNames>): Promise<PagePagination<TEntity>>;
    promisePaginate(qb: SelectQueryBuilder<TEntity>, params?: PagePaginatorPaginateParams<TEntity, TColumnNames>): PromisePagePagination<TEntity>;
}
