import * as React from 'react';
export interface StateProps {
    /**
     * Указывает, должен ли компонент реагировать на `hover`-состояние.
     */
    hasHover?: boolean;
    /**
     * Позволяет управлять `hovered`-состоянием извне.
     */
    hovered?: boolean;
    /**
     * Позволяет управлять `activated`-состоянием извне.
     */
    activated?: boolean;
    /**
     * Указывает, должен ли компонент реагировать на `active`-состояние.
     */
    hasActive?: boolean;
    /**
     * Позволяет родительскому компоненту
     * иметь `hovered`-cостояние при наведении
     * на любой дочерний элемент.
     * По умолчанию состояние hovered у родителя сбрасывается.
     *
     * Присваивается родителькому компоненту.
     *
     * @example
     * <Tappable hasHoverWithChildren>
     *   <IconButton />
     *   <IconButton />
     *   <IconButton />
     * </Tappable>
     */
    hasHoverWithChildren?: boolean;
    /**
     * Позволяет родительскому компоненту показывать hovered-состояние при наведении
     * на текущий дочерний компонент.
     *
     * Присваивается дочернему компоненту.
     *
     * @example
     * <Tappable>
     *   <IconButton unlockParentHover />
     *   <IconButton unlockParentHover />
     *   <IconButton />
     * </Tappable>
     */
    unlockParentHover?: boolean;
    /**
     * Длительность показа `active`-состояния.
     */
    activeEffectDelay?: number;
    /**
     * Стиль подсветки `active`-состояния.
     */
    activeClassName?: string;
    /**
     * Стиль подсветки `hover`-состояния.
     */
    hoverClassName?: string;
}
export declare const DEFAULT_ACTIVE_EFFECT_DELAY = 600;
interface UseHoverProps extends Pick<StateProps, 'hovered' | 'hasHover'> {
    /**
     * Блокирование активации состояний.
     */
    lockState?: boolean;
    setParentStateLock?: (v: boolean) => void;
}
/**
 * Управляет наведением на компонент, игнорирует тач события.
 */
export declare function useHover({ hovered, hasHover, lockState, setParentStateLock, }?: UseHoverProps): {
    isHovered: boolean;
    onPointerEnter: React.PointerEventHandler<any>;
    onPointerLeave: () => void;
};
interface ClickableLockStateContextInterface {
    lockHoverStateBubbling?: (v: boolean) => void;
    lockActiveStateBubbling?: (v: boolean) => void;
}
export declare const ClickableLockStateContext: React.Context<ClickableLockStateContextInterface>;
/**
 * Управляет состоянием компонента.
 */
export declare function useState({ hovered, hasHover, activated, hasActive, activeEffectDelay, unlockParentHover, hoverClassName, activeClassName, }: StateProps): {
    stateClassName: string;
    setLockHoverBubblingImmediate: (...args: any[]) => void;
    setLockActiveBubblingImmediate: (...args: any[]) => void;
};
export {};
//# sourceMappingURL=useState.d.ts.map