import type { Context, WorkletFunction, NativeEvent } from '../commonTypes';
import type { DependencyList } from './commonTypes';
interface Handler<T, TContext extends Context> extends WorkletFunction {
    (event: T, context: TContext, isCanceledOrFailed?: boolean): void;
}
export interface GestureHandlers<T, TContext extends Context> {
    [key: string]: Handler<T, TContext> | undefined;
    onStart?: Handler<T, TContext>;
    onActive?: Handler<T, TContext>;
    onEnd?: Handler<T, TContext>;
    onFail?: Handler<T, TContext>;
    onCancel?: Handler<T, TContext>;
    onFinish?: Handler<T, TContext>;
}
declare const EventType: {
    UNDETERMINED: number;
    FAILED: number;
    BEGAN: number;
    CANCELLED: number;
    ACTIVE: number;
    END: number;
};
interface GestureHandlerNativeEvent {
    handlerTag: number;
    numberOfPointers: number;
    state: (typeof EventType)[keyof typeof EventType];
}
export interface GestureHandlerEvent<T> extends NativeEvent<T> {
    nativeEvent: T;
}
type InferArgument<T> = T extends GestureHandlerEvent<infer E> ? E extends GestureHandlerNativeEvent ? E : never : never;
export declare function useAnimatedGestureHandler<T extends GestureHandlerEvent<any>, TContext extends Context = Context, Payload = InferArgument<T>>(handlers: GestureHandlers<Payload, TContext>, dependencies?: DependencyList): (e: T) => void;
export {};
