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 { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';
export interface StickyProps extends Omit<CommonProps, 'children'> {
    /** Задает сторону залипания. */
    side: 'top' | 'bottom';
    /** Задает отступ от края экрана в пикселях, на который сдвигается элемент в залипшем состоянии.
     * @default 0 */
    offset?: number;
    /** Задает функцию, которая возвращает DOM-элемент, который нельзя пересекать. */
    getStop?: () => Nullable<HTMLElement>;
    /** @ignore */
    children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);
}
export interface StickyState {
    fixed: boolean;
    deltaHeight: number;
    height?: number;
    width?: number;
    left?: number;
    stopped: boolean;
    relativeTop: number;
}
export declare const StickyDataTids: {
    readonly root: "Sticky__root";
};
type DefaultProps = Required<Pick<StickyProps, 'offset'>>;
/**
 * `Sticky` позволяет закреплять элемент интерфейса в определенной позиции на экране при прокрутке страницы.
 * Это полезно для создания "прилипающих" элементов, которые остаются видимыми при прокрутке содержимого.
 */
export declare class Sticky extends React.Component<StickyProps, StickyState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    state: StickyState;
    private wrapper;
    private inner;
    private layoutSubscription;
    private reflowCounter;
    getRootNode: TGetRootNode;
    private setRootNode;
    featureFlags: ReactUIFeatureFlags;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: StickyProps, prevState: StickyState): void;
    render(): React.JSX.Element;
    private renderMain;
    private refWrapper;
    private refInner;
    /**
     * Пересчитать габариты и позицию залипшего элемента
     *
     * @public
     */
    reflow: () => void;
}
export {};
