import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
import { Subject } from "rxjs";
import { IFilter, IFilterPub, IRange } from "../../services/data-source/public-api";
import { LoggerService } from "../../services/log-service";
import { PopupContainerService } from "../popup/popup-container.service";
import { InputValueTypes } from "../select-v2/types";
import { ISelectChangedEvent } from "../select/public-api";
import { IPaginatorItem } from "./public-api";
export declare const defaultPageSizeSet: number[];
/**
 * Component used for pagination of data
 * <example-url>./../examples/index.html#/paginator</example-url>
 */
export declare class PaginatorComponent implements OnInit, OnChanges, OnDestroy, IFilterPub {
    private logger;
    private popupContainer;
    private cd;
    itemsList: Array<IPaginatorItem>;
    /**
     * Current page number
     */
    page: number;
    /**
     * Size of the page. For example: 10, 25, 50, 100;
     */
    pageSize: number;
    /**
     * Array of page numbers
     */
    pageSizeSet: number[];
    /**
     * Total number of items
     */
    total: number;
    /**
     * Paginator separator symbol.
     */
    dots: string;
    /**
     * Hide paginator if all items of data can be displayed on one page
     */
    hideIfEmpty: boolean;
    /**
     * Make paginator hidden
     */
    hide: boolean;
    /**
     * Paginator active item class
     */
    activeClass: string;
    /**
     * Paginator disabled item class
     */
    disabledClass: string;
    /**
     * Number of items displayed before separator
     */
    adjacent: number;
    /**
     * Maximum number of items in paginator
     */
    maxElements: number;
    /**
     * Show previous and next buttons
     */
    showPrevNext: boolean;
    /**
     * Display popup above paginator if equals to 'true'
     */
    popupDirectionTop: boolean;
    /**
     * Popup parent element css class used determining of popup direction
     */
    popupBaseElementSelector: string;
    /**
     * inner nui-select appendToBody input
     */
    appendToBody: boolean;
    /**
     * Action occurs on page change
     */
    pagerAction: EventEmitter<any>;
    pageChange: EventEmitter<number>;
    onDestroy$: Subject<void>;
    private selectComponent;
    private virtualScrollViewport;
    private _dotsPagesPerRow;
    get dotsPagesPerRow(): number;
    private mainRangeStart;
    private mainRangeEnd;
    constructor(logger: LoggerService, popupContainer: PopupContainerService, cd: ChangeDetectorRef);
    /**
     * Component initialization
     */
    ngOnInit(): void;
    /**
     * Redraw component when 'total' or 'page' propery was changed
     * @param changes Changed properties
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Initialize set of pages
     */
    initPageSizeSet(): void;
    getFilters(): IFilter<IRange<number>>;
    resetFilter(): void;
    /**
     * Change page number
     * @param page Page number
     */
    goToPage(page: number): void;
    /**
     * @deprecated - remove in v12. Needs only for backward compatibility - Removal: NUI-5837
     */
    onPageSizeChange(value: InputValueTypes): void;
    /**
     * Set items per page that should displayed
     * @param changedEvent select change event
     */
    setItemsPerPage(changedEvent: ISelectChangedEvent<number>): void;
    /**
     * Get number of pages
     */
    getPageCount(): number;
    /**
     * Display paginator component
     */
    showPaginator(): boolean;
    /**
     * Get sequence number of first item of currently displayed paginated list
     */
    getFirstItemOnPage(): number;
    /**
     * Get sequence number of last item of currently displayed paginated repeat
     */
    getLastItemOnPage(): number | undefined;
    /**
     * Return range for info section
     */
    getRange(total: number): string;
    /**
     * Re-renders the virtual scroll viewport to properly display items within the virtual scroll viewport
     */
    handleDotsClick(): void;
    /**
     * Add items to paginator component
     */
    private assemble;
    /**
     * Fills mainRangeStart and mainRangeEnd properties with proper values. Those properties
     * are used for displaying of page numbers between 'dots' separators.
     */
    private prepareSeparators;
    private addSeparator;
    private addPrev;
    private addNext;
    private addItem;
    private add;
    private addRange;
    ngOnDestroy(): void;
}
