import { type MutableRefObject, type RefObject } from "react";
import { type xy } from "@synnaxlabs/x";
import { type Stage, type Trigger } from './triggers';
export interface UseEvent {
    triggers: Trigger[];
    stage: Stage;
    cursor: xy.XY;
}
export interface UseProps {
    triggers: Trigger[];
    callback?: (e: UseEvent) => void;
    region?: RefObject<HTMLElement>;
    loose?: boolean;
}
export declare const use: ({ triggers, callback: f, region, loose }: UseProps) => void;
export interface UseHeldReturn {
    triggers: Trigger[];
    held: boolean;
}
export interface UseHeldProps {
    triggers: Trigger[];
    loose?: boolean;
}
export declare const useHeldRef: ({ triggers, loose, }: UseHeldProps) => MutableRefObject<UseHeldReturn>;
export declare const useHeld: ({ triggers, loose }: UseHeldProps) => UseHeldReturn;
