//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern_protocol!(
    #[cfg(feature = "UIView")]
    pub unsafe trait UITextSelectionHandleView:
        UICoordinateSpace + IsMainThreadOnly
    {
        #[cfg(feature = "UIGeometry")]
        #[method(direction)]
        unsafe fn direction(&self) -> NSDirectionalRectEdge;

        #[cfg(feature = "UIGeometry")]
        #[method(setDirection:)]
        unsafe fn setDirection(&self, direction: NSDirectionalRectEdge);

        #[method(isVertical)]
        unsafe fn isVertical(&self) -> bool;

        #[cfg(feature = "UIBezierPath")]
        #[method_id(@__retain_semantics Other customShape)]
        unsafe fn customShape(&self) -> Option<Retained<UIBezierPath>>;

        #[cfg(feature = "UIBezierPath")]
        #[method(setCustomShape:)]
        unsafe fn setCustomShape(&self, custom_shape: Option<&UIBezierPath>);

        #[method(preferredFrameForRect:)]
        unsafe fn preferredFrameForRect(&self, rect: CGRect) -> CGRect;
    }

    #[cfg(feature = "UIView")]
    unsafe impl ProtocolType for dyn UITextSelectionHandleView {}
);
