import { EventEmitter } from "../../stencil-public-runtime";
import { IcThemeMode } from "../../utils/types";
import { IcItemsPerPageChangeEventDetail, IcPageChangeEventDetail } from "./ic-pagination-bar.types";
import { IcPaginationAlignmentOptions, IcPaginationLabelTypes, IcPaginationTypes } from "../ic-pagination/ic-pagination.types";
export declare class PaginationBar {
    private PAGE_INPUT_FIELD_ID;
    private INVALID_PAGE_ERROR;
    private resizeObserver;
    private pageDropdownEl;
    private pageInputEl;
    private pageInputTooltipEl;
    private paginationBarEl?;
    private paginationEl;
    private userSetItemsPerPage;
    el: HTMLIcPaginationBarElement;
    capitalizedItemLabel: string;
    capitalizedPageLabel: string;
    activePage: number;
    displayedItemsPerPageOptions?: {
        label: string;
        value: string;
    }[];
    inputError: string;
    itemsPerPage: number;
    itemsPerPageString: string;
    lowerBound: number;
    lowerCaseItemLabel: string;
    lowerCasePageLabel: string;
    paginationWidth: number;
    paginationWrapped: boolean;
    totalPages: number;
    upperBound: number;
    /**
     * The accessible label passed down to the pagination component to provide context for screen reader users.
     */
    accessibleLabel?: string;
    /**
     * Sets the alignment of the items in the pagination bar.
     */
    alignment?: IcPaginationAlignmentOptions;
    /**
     * The current page number to be displayed on the pagination bar.
     */
    currentPage?: number;
    watchPageNumberHandler(): void;
    /**
     * The items per page option to be selected.
     */
    selectedItemsPerPage?: number;
    watchSelectedItemsPerPageHandler(): void;
    /**
     * If `true`, the 'All' option will be hidden from the 'items per page' select input.
     */
    hideAllFromItemsPerPage?: boolean;
    /**
     * If `true`, the current page of the simple pagination will not be displayed.
     */
    hideCurrentPage?: boolean;
    /**
     * If `true`, the first and last page buttons will not be displayed.
     */
    hideFirstAndLastPageButton?: boolean;
    /**
     * The text which will be used in place of 'Item' on the pagination bar.
     */
    itemLabel?: string;
    watchItemLabelHandler(): void;
    /**
     * The options which will be displayed for 'items per page' select input.
     */
    itemsPerPageOptions?: {
        label: string;
        value: string;
    }[];
    watchItemsPerPageOptionsHandler(newVal: {
        label: string;
        value: string;
    }[], oldVal: {
        label: string;
        value: string;
    }[]): void;
    /**
     * If `true`, the pagination bar will display as black in the light theme, and white in dark theme.
     */
    monochrome?: boolean;
    /**
     * Sets the theme color to the dark or light theme color. "inherit" will set the color based on the system settings or ic-theme component.
     */
    theme?: IcThemeMode;
    /**
     * Whether the displayed pagination is simple or complex.
     */
    type?: IcPaginationTypes;
    /**
     * Whether total number of items and current item range or total number of pages and current page is displayed.
     */
    rangeLabelType?: IcPaginationLabelTypes;
    /**
     * The text which will be used in place of 'Page' on the pagination bar.
     */
    pageLabel?: string;
    watchPageLabelHandler(): void;
    /**
     * If `true`, the 'go to page' control should be displayed.
     */
    showGoToPageControl?: boolean;
    /**
     * If `true`, the number of total items and current item range or number of total pages and current page will be hidden.
     */
    hideRangeLabel?: boolean;
    /**
     * If `false`, the value in the items per page control will be set immediately on ArrowUp and ArrowDown instead of when Enter is pressed.
     */
    selectItemsPerPageOnEnter: boolean;
    /**
     * If `true`, the select input to control 'items per page' should be displayed.
     */
    showItemsPerPageControl?: boolean;
    /**
     * Total number of items to be displayed across all pages.
     */
    totalItems: number;
    watchTotalItemsHandler(): void;
    /**
     If `true`, the pagination bar is set to the first page when the 'items per page' changes
     */
    setToFirstPageOnPaginationChange?: boolean;
    watchSetToFirstPageOnPaginationChange(): void;
    /**
     * Emitted when a page is navigated to via the 'go to' input.
     * The `detail` property contains `value` (i.e. the page number) and a `fromItemsPerPage` flag to indicate if the event was triggered by the `icItemsPerPageChange` event also occurring.
     */
    icPageChange: EventEmitter<IcPageChangeEventDetail>;
    /**
     * Emitted when the items per page option is changed.
     */
    icItemsPerPageChange: EventEmitter<IcItemsPerPageChangeEventDetail>;
    disconnectedCallback(): void;
    componentWillLoad(): void;
    componentDidLoad(): void;
    pageChangeHandler(ev: CustomEvent): void;
    private setSelectedItemsPerPage;
    private changeItemsPerPage;
    private changePage;
    private focusElFromLabel;
    private goToPage;
    private goToPageLabelClickHandler;
    private handleBlur;
    private handleFocus;
    private handleInputChange;
    private handleKeydown;
    private handleKeyUp;
    private itemsPerPageLabelClickHandler;
    private paginationShouldWrap;
    private runResizeObserver;
    private setInputError;
    private setToFirstPage;
    private setItemsPerPage;
    private setPaginationBarContent;
    private setUpperBound;
    render(): any;
}
