import type { _NSEvent } from "./NSEvent.js";
import type { _NSGestureRecognizer } from "./NSGestureRecognizer.js";
import type { _NSTouch } from "./NSTouch.js";
export interface _NSGestureRecognizerDelegate {
    /**
     * called when the window begins a new recognition stream return YES to allow the recognizer to process events. return NO to fail recognition and opt the recognizer out of the event stream
     */
    gestureRecognizer$shouldAttemptToRecognizeWithEvent$?(gestureRecognizer: _NSGestureRecognizer, event: _NSEvent): boolean;
    /**
     * called when a gesture recognizer attempts to transition out of NSGestureRecognizerStatePossible. returning NO causes it to transition to NSGestureRecognizerStateFailed
     */
    gestureRecognizerShouldBegin$?(gestureRecognizer: _NSGestureRecognizer): boolean;
    /**
     * called when the recognition of one of gestureRecognizer or otherGestureRecognizer would be blocked by the other return YES to allow both to recognize simultaneously. the default implementation returns NO (by default no two gestures can be recognized simultaneously) note: returning YES is guaranteed to allow simultaneous recognition. returning NO is not guaranteed to prevent simultaneous recognition, as the other gesture's delegate may return YES
     */
    gestureRecognizer$shouldRecognizeSimultaneouslyWithGestureRecognizer$?(gestureRecognizer: _NSGestureRecognizer, otherGestureRecognizer: _NSGestureRecognizer): boolean;
    /**
     * called once per attempt to recognize, so failure requirements can be determined lazily and may be set up between recognizers across view hierarchies return YES to set up a dynamic failure requirement between gestureRecognizer and otherGestureRecognizer note: returning YES is guaranteed to set up the failure requirement. returning NO does not guarantee that there will not be a failure requirement as the other gesture's counterpart delegate or subclass methods may return YES
     */
    gestureRecognizer$shouldRequireFailureOfGestureRecognizer$?(gestureRecognizer: _NSGestureRecognizer, otherGestureRecognizer: _NSGestureRecognizer): boolean;
    gestureRecognizer$shouldBeRequiredToFailByGestureRecognizer$?(gestureRecognizer: _NSGestureRecognizer, otherGestureRecognizer: _NSGestureRecognizer): boolean;
    /**
     * called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch
     */
    gestureRecognizer$shouldReceiveTouch$?(gestureRecognizer: _NSGestureRecognizer, touch: _NSTouch): boolean;
}
