import React from 'react';
import type { Nullable } from '../../typings/utility-types';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { SizeProp } from '../../lib/types/props';
export interface ItemComponentProps {
    /** Определяет, является ли страница текущей. */
    active: boolean;
    /** @ignore */
    children?: React.ReactNode;
    /** Задает HTML-атрибут class. */
    className: string;
    /** Задает функцию, которая вызывается при клике на элемент. */
    onClick: () => void;
    /** Задает номер текущей страницы. */
    pageNumber: number | 'forward';
    /** Задает HTML-атрибут `tabindex`. */
    tabIndex: number;
}
export interface PagingProps extends CommonProps {
    activePage: number;
    /** Компонент обертки по умолчанию.
     * @default <span/> */
    component?: React.ComponentType<ItemComponentProps>;
    /** Задает функцию, которая вызывается при переключении страницы. */
    onPageChange: (pageNumber: number) => void;
    /** Задает общее количество страниц. */
    pagesCount: number;
    /** Задает размер контрола.
     * @default 'small', начиная с версии темы 5.3. До этого по умолчанию стоит старый размер 'legacy'. */
    size?: SizeProp;
    /** Делает компонент недоступным. */
    disabled?: boolean;
    /** Отключает навигационные подсказки.
     * По-умолчанию подсказки появляются, когда доступно управление с клавиатуры (либо элемент в фокусе, либо globalListeners === true). */
    withoutNavigationHint?: boolean;
    /** Задает подпить у пейджинга. */
    caption?: string;
    /** Глобальный слушатель **keyDown**, для навигации клавишами без фокуса на компоненте.
     * Если на странице используется несколько элементов **Paging** с useGlobalListener === true,
     * то обработчик keyDown будет вызываться на каждом из них. Такие случаи лучше обрабатывать отдельно. */
    useGlobalListener?: boolean;
}
export interface PagingState {
    focusedByTab: boolean;
    focusedItem: Nullable<ItemType>;
    keyboardControl: boolean;
}
export type ItemType = number | '.' | 'forward';
export declare const PagingDataTids: {
    readonly root: "Paging__root";
    readonly dots: "Paging__dots";
    readonly forwardLink: "Paging__forwardLink";
    readonly pageLinkWrapper: "Paging__pageLinkWrapper";
    readonly pageLink: "Paging__pageLink";
};
type DefaultProps = Required<Pick<PagingProps, 'component' | 'useGlobalListener'>>;
/**
 * Постраничная навигация `Paging` (пейджинг или пагинация) — способ представления большого количества однородной информации, когда контент разбивается на страницы.
 */
export declare class Paging extends React.PureComponent<PagingProps, PagingState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    getRootNode: TGetRootNode;
    private setRootNode;
    static isForward(pageNumber: number | 'forward'): boolean;
    state: PagingState;
    private theme;
    private readonly locale;
    private isMobile;
    private sizeClassNames;
    private addedGlobalListener;
    private container;
    componentDidMount(): void;
    componentDidUpdate(prevProps: PagingProps): void;
    componentWillUnmount(): void;
    render(): React.JSX.Element | null;
    private renderMain;
    private renderItem;
    private renderDots;
    private renderForwardLink;
    private renderPageLink;
    private renderNavigationHint;
    private handleMouseDown;
    private handleMouseDownPageLink;
    private handleKeyDown;
    private handleFocus;
    private handleBlur;
    private getItems;
    private getFocusedItem;
    private isItemFocusable;
    private isItemDisabled;
    private executeItemAction;
    private moveFocusLeft;
    private moveFocusRight;
    private moveFocus;
    private canGoBackward;
    private canGoForward;
    private goBackward;
    private goForward;
    private goToPage;
    private addGlobalListener;
    private removeGlobalListener;
    private refContainer;
    private getPagingSizeClassNames;
    private getDotsIcon;
    private getForwardIcon;
    private getSize;
}
export {};
