import { ChangeDetectorRef, EventEmitter, OnChanges, OnInit, SimpleChanges, ElementRef } from '@angular/core';
import { StDropDownMenuItem } from '../st-dropdown-menu/st-dropdown-menu.interface';
import { Paginate, PaginateOptions, PaginateTexts } from './st-pagination.interface';
/**
 * @description {Component} [Table]
 *
 * The pagination component has been designed to allow content to be displayed per pages. This informs user about the
 * number of the current page, the items displayed per page and the total of items. Moreover, when there are a lot of
 * items, it allows user to customize the number of items displayed per page.
 *
 * It is made by two sub-components:
 * - A range selector, that allows the user provides a dropdown to set how many items he wants to be displayed per page.
 * - A page navigation control, in order to let the user where he is and where he can go to.
 *
 * @example
 *
 * {html}
 *
 * ```
 * <div class="pagination">
 *     <st-pagination [total]="items.length" [perPage]="perPage" [currentPage]="page" [id]="'pagination-demo'"
 *     (change)="onChangePage($event)">
 *     </st-pagination>
 *     </div>
 * ```
 *
 */
export declare class StPaginationComponent implements OnInit, OnChanges {
    private _cd;
    private _paginationElement;
    /** @Input {number} [perPage=20] The maximum number of items displayed per page */
    perPage: number;
    /** @Input {number} [total=''] Total of items */
    total: number;
    /** @Input {PaginateTexts} [label={element: 'Rows', perPage: 'per page', of: 'of'}] Translated texts displayed at the pagination */
    label: PaginateTexts;
    /** @Input {PaginateOptions[]}
     * [perPageOptions=Array( Object( value: 20, showFrom: 0 ),Object( value: 50, showFrom: 50 ), Object( value: 200, showFrom: 200 ))]
     *  List of options displayed at a selector where user can change the number of items displayed per page
     */
    perPageOptions: PaginateOptions[];
    /** @Output {Paginate} [change=''] Event emitted when user interacts with some of the elements in the pagination.
     *  This sends the new pagination status (current page and items per page)
     */
    change: EventEmitter<Paginate>;
    /** @Output {PaginateOptions} [changePerPage='']  Event emitted when user interacts with some of the elements in the selector of items displayed per page.
     * This sends the current items per page.
     */
    changePerPage: EventEmitter<number>;
    /** @Input {number} [currentPage=1] Number of the current page */
    currentPage: number;
    disableNextButton: boolean;
    disablePrevButton: boolean;
    firstItem: number;
    lastItem: number;
    items: StDropDownMenuItem[];
    selectedItem: StDropDownMenuItem;
    private _currentPage;
    constructor(_cd: ChangeDetectorRef, _paginationElement: ElementRef);
    readonly hasOptions: boolean;
    readonly paginationId: string | null;
    readonly selectId: string;
    readonly buttonPrevId: string;
    readonly buttonNextId: string;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    generateItems(): void;
    nextPage(): void;
    prevPage(): void;
    onChangePerPage(perPage: number): void;
    private addPageOption;
    private updatePages;
}
