import { OnInit, OnDestroy, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { EuiAppShellService } from '@eui/core';
import { EuiPaginationEvent } from './models/pagination-event.model';
import * as i0 from "@angular/core";
/**
 * @description
 * The eui-paginator component is in charge of the pagination by splitting up content or data into several pages and adding visual controls for better user experience like:
 * - identifying the current page: clearly identify which page the user is on by displaying the current page number.
 * - providing context into how many pages there are in total: can help provide clarity around the data displayed.
 * - providing various options for navigating: previous and next chevrons or links are the most useful way for the user to move forward or backward through pages of data.
 * - items per page: allows selecting the amount of data displayed per page.
 *
 *  Best practices & Usage
 * Generally, pagination is recommended to be used if there are more than 25 items displayed in one view. The default number of displayed items may vary depending on the context.
 *
 * The main benefits of using pagination:
 * - delivers structure and feedback over the displayed data
 * - supports embedded navigation (and in particular back and forward, first and last)
 * - pagination is accessible (see A11Y)
 * - pagination typically means smaller, shorter pages and as a result reduced load times
 * - compared to infinite scroll display, it helps to focus the user's mind and not continue to offer more and more choices.
 *
 */
export declare class EuiPaginatorComponent implements OnInit, OnDestroy, OnChanges {
    /**
     * Sets the `data-e2e` attribute for the host element.
     *
     * @default 'eui-paginator'
     */
    e2eAttr: string;
    /**
     * Sets the `class` attribute for the host element.
     *
     * @returns A string with all CSS classes applied.
     */
    get cssClasses(): string;
    /**
     * Sets the page size options that will be displayed in the dropdown.
     *
     * @default [5, 10, 25, 50, 100]
     */
    pageSizeOptions: number[];
    /**
     * Sets the number of items displayed in the page.
     *
     * @default 10
     */
    pageSize: number;
    /**
     * Sets the current page number.
     *
     * @default 0
     */
    page: number;
    /**
     * Sets the total number of items.
     *
     * @default 0
     */
    length: number;
    /**
     * In combination with `hasPageNumberNavigation`, sets the number of page numbers displayed in the paginator.
     *
     * @default 5
     */
    nbPageNumberNavigation: number;
    /**
     * Sets the aria-label attribute for the paginator. It needs to be unique when multiple paginators are used on the same page.
     *
     * @default 'Pagination'
     */
    paginationAriaLabel: string;
    /**
     * Whether the paginator is hidden or not.
     *
     * @default false (visible)
     */
    isHidden: boolean;
    /**
     * Whether the paginator is in basic mode or not.
     * In this mode, the paginator will only display the previous and next buttons.
     *
     * @default false
     */
    isBasicMode: boolean;
    /**
     * Whether the page number is displayed or not.
     *
     * @default false
     */
    hasPageNumberNavigation: boolean;
    /**
     * Whether the datasource length is dynamic or not.
     *
     * @default false
     */
    hasDynamicLength: boolean;
    /**
     * Whether the page size is displayed or not. Default: true.
     *
     * @default true
     */
    hasPageSize: boolean;
    /** Event emitted when the page has changed. */
    pageChange: EventEmitter<EuiPaginationEvent>;
    /**
     * Observable that emits the current page number, the page size and the number of pages.
     */
    page$: BehaviorSubject<EuiPaginationEvent>;
    /**
     * Observable that emits the length of the datasource
     */
    length$: BehaviorSubject<number>;
    /**
     * The range of items displayed in the paginator.
     */
    range: string;
    /**
     * The range length of items displayed in the paginator.
     */
    rangeLength: string;
    /**
     * The number of pages.
     */
    nbPage: number;
    EuiAppShellService: EuiAppShellService;
    private nbPageNumberNav;
    private destroy$;
    private decimal;
    ngOnChanges(c: SimpleChanges): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * Returns the page number navigation array.
     *
     * @returns An array of page numbers.
     */
    get pageNumberNavigation(): number[];
    /**
     * Changes the page size by the one provided as parameter.
     *
     * @param size New page size.
     */
    changePageSize(size: string): void;
    /**
     * Sets the page number to the one provided as parameter.
     *
     * @param page New page
     * @param options
     * `emitEvent`: When true or not provided, event is emitted. When false, no events are emitted
     */
    goToPage(page: number, options?: {
        emitEvent: boolean;
    }): void;
    /**
     * Sets the page number to 0 (first page).
     *
     * @param options
     * `emitEvent`: When true or not provided, event is emitted. When false, no events are emitted
     */
    goFirstPage(options?: {
        emitEvent: boolean;
    }): void;
    /**
     * Sets the page number to current - 1.
     */
    goPreviousPage(): void;
    /**
     * Sets the page number to current + 1.
     */
    goNextPage(): void;
    /**
     * Sets the page number to last page.
     */
    goLastPage(): void;
    /**
     * Gives new values to page number, page size and number of pages.
     */
    setPage(page: EuiPaginationEvent): void;
    /**
     * Gives new value to the length of the datasource.
     */
    setLength(length: number): void;
    /**
     * Calculates the range of items displayed in the paginator.
     */
    getRange(): void;
    /**
     * Change the pagination to the given page number
     *
     * @param page 0-based page number to be displayed
     * @param options
     * `emitEvent`: When true or not provided, event is emitted. When false, no events are emitted
     */
    getPage(page: number, options?: {
        emitEvent: boolean;
    }): void;
    /**
     * Returns the current pagination state.
     *
     * @returns An object with the properties of the paginator state.
     */
    getCurrentPagination(): EuiPaginationEvent;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiPaginatorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiPaginatorComponent, "eui-paginator", never, { "e2eAttr": { "alias": "e2eAttr"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "page": { "alias": "page"; "required": false; }; "length": { "alias": "length"; "required": false; }; "nbPageNumberNavigation": { "alias": "nbPageNumberNavigation"; "required": false; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": false; }; "isHidden": { "alias": "isHidden"; "required": false; }; "isBasicMode": { "alias": "isBasicMode"; "required": false; }; "hasPageNumberNavigation": { "alias": "hasPageNumberNavigation"; "required": false; }; "hasDynamicLength": { "alias": "hasDynamicLength"; "required": false; }; "hasPageSize": { "alias": "hasPageSize"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
    static ngAcceptInputType_isHidden: unknown;
    static ngAcceptInputType_isBasicMode: unknown;
    static ngAcceptInputType_hasPageNumberNavigation: unknown;
    static ngAcceptInputType_hasDynamicLength: unknown;
    static ngAcceptInputType_hasPageSize: unknown;
}
//# sourceMappingURL=eui-paginator.component.d.ts.map