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