import { AllHTMLAttributes, Component, ElementType, RefCallback } from 'react'; import { TouchEventHandler, TouchProps } from '../Touch/Touch'; import { VKUITouchEventHander } from '../../lib/touch'; import { HasPlatform, HasRootRef, Ref } from '../../types'; import { AdaptivityProps } from '../../hoc/withAdaptivity'; export interface TappableProps extends AllHTMLAttributes, HasRootRef, HasPlatform, AdaptivityProps { Component?: ElementType; activeEffectDelay?: number; stopPropagation?: boolean; hasHover?: boolean; hasActive?: boolean; } export interface TappableState { clicks?: { [index: string]: { x: number; y: number; }; }; hovered?: boolean; active?: boolean; ts?: number; hasHover?: boolean; hasActive?: boolean; } export interface RootComponentProps extends TouchProps { ref?: Ref; } export interface StorageItem { activeTimeout: number; timeout?: number; stop(): void; } export interface Storage { [index: string]: StorageItem; } export declare type GetStorage = () => StorageItem; export declare const ACTIVE_DELAY = 70; export declare const ACTIVE_EFFECT_DELAY = 600; declare class Tappable extends Component { constructor(props: TappableProps); id: string; isSlide: boolean; insideTouchRoot: boolean; container: HTMLElement; timeout: number; wavesTimeout: number; static defaultProps: { Component: string; role: string; stopPropagation: boolean; disabled: boolean; hasHover: boolean; hasActive: boolean; activeEffectDelay: number; }; onStart: TouchEventHandler; onMove: TouchEventHandler; onEnd: TouchEventHandler; onDown: VKUITouchEventHander; onEnter: () => void; onLeave: () => void; start: VoidFunction; stop: VoidFunction; getStorage: GetStorage; getRef: RefCallback; containerHasTransparentBackground: () => boolean; componentWillUnmount(): void; componentDidUpdate(prevProps: TappableProps): void; render(): JSX.Element; } declare const _default: typeof Tappable; export default _default;