import { EventEmitter, ElementRef, OnChanges } from '@angular/core';
import { MenuItem } from '../../controls/menu/menu.component';
import { NavGroup } from '../../controls/navigation/nav-group';
import * as i0 from "@angular/core";
export interface PagingInfo {
    /**Number of items to skip to get to this page*/
    skip: number;
    /**Number of items in this page*/
    pageSize: number;
    /**The number of the page*/
    pageNumber: number;
}
interface PageRange {
    firstPage: number;
    lastPage: number;
}
export declare class TablePaginationComponent implements OnChanges {
    private el;
    id?: string;
    /**
     * Total number of rows that we need to page through.
     * i.e. the sum of all rows on all pages.
     */
    totalItems: number;
    /**
     * Max size of a page.
     */
    pageSize: number;
    /**
     * Number of the current page.
     * Initial value is 1, can be overridden to change the starting page number.
     */
    pageNumber: number;
    /**
     * Maximum number of page tabs to show
     */
    maxTabs?: number;
    /** When true the tabs and the more pages dropdown will be disabled */
    disablePaginationControls?: boolean;
    /**
     * Emits when the page changes.
     *
     * Bind to the event in a template using a function that uses the "skip" and "pageSize"
     * properties to slice the new page from your data set.
     *
     * @example
     * //.html
     * (pageChanged)="onPageChanged($event)"
     * //.ts
     * public onPageChanged(event: PagingInfo) {
     *  this.currentPageItems = this.paginatedTableItems.slice(event.skip, event.skip + event.pageSize);
     * }
     * //Since pageChanged doesn't emit for the initial page, onPageChanged should be manually called during initialization
     * //using getPagingInfo:
     * this.onPageChanged(TablePaginationComponent.getPagingInfo(this.startingPageNumber, this.pageSize));
     */
    pageChanged: EventEmitter<PagingInfo>;
    /**
     * All possible items in the dropdown menu.
     */
    dropdownItems: MenuItem<PageRange>[];
    /**
     * Current tabs being displayed.
     */
    currentTabs: NavGroup;
    constructor(el: ElementRef);
    ngOnChanges(): void;
    /**
     * Given the number of a page and the pageSize, return the PagingInfo object for that page.
     */
    static getPagingInfo(pageNumber: number, pageSize: number): {
        skip: number;
        pageSize: number;
        pageNumber: number;
    };
    onItemSelected(menuItem: MenuItem<PageRange>): void;
    /**
     * Create a tab for each item in the range represented in the MenuItem
     */
    private setTabs;
    private onPageChange;
    /**
     * Create all the items for the dropdown menu.
     * A dropdown item represents a page range (e.g. 1-10, 11-20, or 21-25).
     * A single dropdown item can represent a range of up to 10 pages (the last item could have less than 10).
     */
    private setDropdownItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<TablePaginationComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TablePaginationComponent, "ec-table-pagination", never, { "id": { "alias": "id"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "pageNumber": { "alias": "pageNumber"; "required": false; }; "maxTabs": { "alias": "maxTabs"; "required": false; }; "disablePaginationControls": { "alias": "disablePaginationControls"; "required": false; }; }, { "pageChanged": "pageChanged"; }, never, never, false, never>;
}
export {};
