import type { NobjcObject } from "objc-js";
import type { _NSCoder } from "../Foundation/NSCoder.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSEvent } from "./NSEvent.js";
import type { _NSGestureRecognizerDelegate } from "./NSGestureRecognizerDelegate.js";
import type { _NSPressureConfiguration } from "./NSPressureConfiguration.js";
import type { _NSView } from "./NSView.js";
import type { CGPoint } from "../structs/CGPoint.js";
import type { NSEventModifierFlags } from "./NSEventModifierFlags.js";
import type { NSGestureRecognizerState } from "./NSGestureRecognizerState.js";
import type { NSTouchTypeMask } from "./NSTouchTypeMask.js";
export declare class _NSGestureRecognizer extends _NSObject {
    static alloc(): _NSGestureRecognizer;
    static new(): _NSGestureRecognizer;
    init(): _NSGestureRecognizer;
    /**
     * valid action method signatures: -(void)handleGesture; -(void)handleGesture:(NSGestureRecognizer*)gestureRecognizer;
     */
    initWithTarget$action$(target: NobjcObject | null, action: string | null): _NSGestureRecognizer;
    initWithCoder$(coder: _NSCoder): _NSGestureRecognizer | null;
    /**
     * individual NSGestureRecognizer subclasses may provide subclass-specific location information. see individual subclasses for details
     */
    locationInView$(view: _NSView | null): CGPoint;
    /**
     * called automatically by the runtime after the gesture state has been set to NSGestureRecognizerStateEnded any internal state should be reset to prepare for a new attempt to recognize the gesture after this is received all remaining active touches will be ignored (no further updates will be received for touches that had already begun but haven't ended)
     */
    reset(): void;
    /**
     * same behavior as the equivalent delegate methods, but can be used by subclasses to define class-wide prevention rules for example, a NSTapGestureRecognizer never prevents another NSClickGestureRecognizer with a higher click count
     */
    canPreventGestureRecognizer$(preventedGestureRecognizer: _NSGestureRecognizer): boolean;
    canBePreventedByGestureRecognizer$(preventingGestureRecognizer: _NSGestureRecognizer): boolean;
    /**
     * same behavior as the equivalent delegate methods, but can be used by subclasses to define class-wide failure requirements
     */
    shouldRequireFailureOfGestureRecognizer$(otherGestureRecognizer: _NSGestureRecognizer): boolean;
    shouldBeRequiredToFailByGestureRecognizer$(otherGestureRecognizer: _NSGestureRecognizer): boolean;
    /**
     * mirror of the event-delivery methods on NSResponder NSGestureRecognizers aren't in the responder chain, but observe events hit-tested to their view and their view's subviews NSGestureRecognizers receive events before the view to which the event was hit-tested
     */
    mouseDown$(event: _NSEvent): void;
    rightMouseDown$(event: _NSEvent): void;
    otherMouseDown$(event: _NSEvent): void;
    mouseUp$(event: _NSEvent): void;
    rightMouseUp$(event: _NSEvent): void;
    otherMouseUp$(event: _NSEvent): void;
    mouseDragged$(event: _NSEvent): void;
    rightMouseDragged$(event: _NSEvent): void;
    otherMouseDragged$(event: _NSEvent): void;
    mouseCancelled$(event: _NSEvent): void;
    keyDown$(event: _NSEvent): void;
    keyUp$(event: _NSEvent): void;
    flagsChanged$(event: _NSEvent): void;
    tabletPoint$(event: _NSEvent): void;
    magnifyWithEvent$(event: _NSEvent): void;
    rotateWithEvent$(event: _NSEvent): void;
    pressureChangeWithEvent$(event: _NSEvent): void;
    touchesBeganWithEvent$(event: _NSEvent): void;
    touchesMovedWithEvent$(event: _NSEvent): void;
    touchesEndedWithEvent$(event: _NSEvent): void;
    touchesCancelledWithEvent$(event: _NSEvent): void;
    target(): NobjcObject | null;
    setTarget$(value: NobjcObject | null): void;
    action(): string | null;
    setAction$(value: string | null): void;
    /** the current state of the gesture recognizer */
    state(): NSGestureRecognizerState;
    /** the gesture recognizer's delegate */
    delegate(): _NSGestureRecognizerDelegate | null;
    setDelegate$(value: _NSGestureRecognizerDelegate | null): void;
    /**
     * default is YES. disabled gesture recognizers will not receive events. when changed to NO the gesture recognizer will be cancelled if it's currently recognizing a gesture
     */
    enabled(): boolean;
    setEnabled$(value: boolean): void;
    /**
     * an NSGestureRecognizer receives events hit-tested to its view and any of that view's subviews the view the gesture is attached to. set by adding the recognizer to a NSView using the addGestureRecognizer: method
     */
    view(): _NSView | null;
    /**
     * The pressure configuration the view should use when this recognizer is eligible for recognition. At any point in time during recognition the view's effective pressure configuration will be the most compatible configuration among the set of active recognizers. This property may be set at any time before or during recognition. If recognition fails, the effective configuration will revert to the view's -pressureConfiguration.
     */
    pressureConfiguration(): _NSPressureConfiguration;
    setPressureConfiguration$(value: _NSPressureConfiguration): void;
    /** default is NO. */
    delaysPrimaryMouseButtonEvents(): boolean;
    setDelaysPrimaryMouseButtonEvents$(value: boolean): void;
    /** default is NO. */
    delaysSecondaryMouseButtonEvents(): boolean;
    setDelaysSecondaryMouseButtonEvents$(value: boolean): void;
    /** default is NO. */
    delaysOtherMouseButtonEvents(): boolean;
    setDelaysOtherMouseButtonEvents$(value: boolean): void;
    /** default is NO. */
    delaysKeyEvents(): boolean;
    setDelaysKeyEvents$(value: boolean): void;
    /** default is NO. */
    delaysMagnificationEvents(): boolean;
    setDelaysMagnificationEvents$(value: boolean): void;
    /** default is NO. */
    delaysRotationEvents(): boolean;
    setDelaysRotationEvents$(value: boolean): void;
    name(): _NSString;
    setName$(value: _NSString): void;
    modifierFlags(): NSEventModifierFlags;
    /** Currently, only NSTouchTypeDirect is supported. Defaults to 0 */
    allowedTouchTypes(): NSTouchTypeMask;
    setAllowedTouchTypes$(value: NSTouchTypeMask): void;
}
