import { Page, PageGroups, Pager, PagerManager, Pages } from "@internal/domain/content";
export declare class PaginatorImpl {
    private paginatedElements;
    private _pagers;
    private base;
    private total;
    private size;
    constructor(paginatedElements: any[][], total: number, size: number, base: string);
    totalPages(): number;
    pagers(): PagerImpl[];
    getElement(pageNumber: number): any[];
    getBase(): string;
    getPagers(): PagerImpl[];
    getAllPages(): Pages;
}
declare class PagerImpl implements Pager {
    private number;
    private paginator;
    constructor(number: number, paginator: PaginatorImpl);
    pageNumber(): number;
    totalPages(): number;
    url(): string;
    pages(): Pages;
    allPages(): Pages;
    pagers(): Pager[];
    first(): Pager;
    last(): Pager;
    hasPrev(): boolean;
    prev(): Pager | null;
    hasNext(): boolean;
    next(): Pager | null;
    private element;
    private pathJoin;
}
export interface PagerSvc {
    pageSize(): number;
    globalRegularPages(): Promise<any[]>;
}
export declare class PaginatorManagerImpl implements PagerManager {
    private currentPager;
    private initialized;
    private svc;
    private page;
    constructor(svc: PagerSvc, page: Page);
    current(): Promise<Pager>;
    setCurrent(current: Pager): void;
    paginate(groups: PageGroups): Promise<Pager>;
    paginate(pages: Pages): Promise<Pager>;
    paginator(): Promise<Pager>;
    private initializePaginator;
    private newPaginatorFromPages;
    private newPaginatorFromPageGroups;
    private splitPages;
}
export {};
