import { EventEmitter } from '@angular/core';
import type { TuiContext } from '@taiga-ui/cdk/types';
import type { TuiHorizontalDirection, TuiSizeL, TuiSizeS, TuiSizeXS } from '@taiga-ui/core/types';
import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
import * as i0 from "@angular/core";
export declare class TuiPagination {
    private readonly els;
    private readonly el;
    protected readonly texts$: import("rxjs").Observable<readonly [previous_page: string, next_page: string]>;
    protected readonly icons: import("@taiga-ui/core/tokens").TuiSpinIcons;
    length: number;
    focusable: boolean;
    size: TuiSizeL | TuiSizeS;
    readonly disabled = false;
    /**
     * Amount of visible pages around active page
     */
    activePadding: number;
    /**
     * Amount of visible pages at the edges
     */
    sidePadding: number;
    /**
     * Customization for page number display.
     */
    content: PolymorpheusContent<TuiContext<number>>;
    /**
     * Active page index
     */
    index: number;
    readonly indexChange: EventEmitter<number>;
    get nativeFocusableElement(): HTMLElement | null;
    get focused(): boolean;
    get arrowIsDisabledLeft(): boolean;
    get arrowIsDisabledRight(): boolean;
    /**
     * Number of items in a container.
     */
    protected get elementsLength(): number;
    protected get buttonSize(): TuiSizeXS;
    protected elementIsFocusable(index: number): boolean;
    /**
     * Get index by element index
     * @param elementIndex
     * @returns index or null (for '…')
     */
    protected getItemIndexByElementIndex(elementIndex: number): number | null;
    protected getElementMode(index: number): string;
    protected onElementClick(index: number): void;
    protected onElementKeyDownArrowLeft(element: HTMLElement): void;
    protected onElementKeyDownArrowRight(element: HTMLElement): void;
    protected onArrowClick(direction: TuiHorizontalDirection): void;
    /**
     * Active index from the end
     */
    private get reverseIndex();
    /**
     * Max number of elements in half (not counting the middle one).
     */
    private get maxHalfLength();
    /**
     * Is there '...' anywhere
     */
    private get itemsFit();
    /**
     * Max number of elements
     */
    private get maxElementsLength();
    private get lastIndex();
    private get lastElementIndex();
    /**
     * Are there collapsed items at that index
     * @param index
     * @returns there are collapsed items
     */
    private hasCollapsedItems;
    private tryChangeTo;
    private focusActive;
    private updateIndex;
    static ɵfac: i0.ɵɵFactoryDeclaration<TuiPagination, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TuiPagination, "tui-pagination", never, { "length": { "alias": "length"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "activePadding": { "alias": "activePadding"; "required": false; }; "sidePadding": { "alias": "sidePadding"; "required": false; }; "content": { "alias": "content"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, { "indexChange": "indexChange"; }, never, never, true, never>;
}
