export declare enum State {
    IDLE = 0,
    BECOMING_VISIBLE = 1,
    VISIBLE = 2,
    LEAVING_VISIBLE = 3
}
declare class TooltipStore {
    state: State;
    /**
     ContextId allows us to persist some data around, in Tooltip all we use
     is the id of the current tooltip being interacted with.
     */
    contextId: string | null;
    becomingVisibleTimeout: number | undefined;
    leavingVisibleTimeout: number | undefined;
    /**
     Subscriptions:
     We could require apps to render a <TooltipProvider> around the app and use
     React context to notify Tooltips of changes to our state machine, instead
     we manage subscriptions ourselves and simplify the Tooltip API.
  
     Maybe if default context could take a hook (instead of just a static value)
     that was rendered at the root for us, that'd be cool! But it doesn't.
     */
    subscriptions: Function[];
    constructor();
    subscribe: (fn: Function) => () => void;
    notify: () => void;
    setState: (newState: State, contextId?: string) => void;
    /**
     Timeouts:
     Manages when the user "rests" on an element. Keeps the interface from being
     flashing tooltips all the time as the user moves the mouse around the screen.
     */
    startBecomingVisibleTimeout: (id: string, openDelay?: number) => void;
    clearBecomingVisibleTimeout: () => void;
    startLeavingVisibleTimeout: (closeDelay?: number) => void;
    isVisible: () => boolean;
}
export declare const store: TooltipStore;
export {};
