//! 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!(
    pub unsafe trait UIDataSourceTranslating: NSObjectProtocol + IsMainThreadOnly {
        #[method(presentationSectionIndexForDataSourceSectionIndex:)]
        unsafe fn presentationSectionIndexForDataSourceSectionIndex(
            &self,
            data_source_section_index: NSInteger,
        ) -> NSInteger;

        #[method(dataSourceSectionIndexForPresentationSectionIndex:)]
        unsafe fn dataSourceSectionIndexForPresentationSectionIndex(
            &self,
            presentation_section_index: NSInteger,
        ) -> NSInteger;

        #[method_id(@__retain_semantics Other presentationIndexPathForDataSourceIndexPath:)]
        unsafe fn presentationIndexPathForDataSourceIndexPath(
            &self,
            data_source_index_path: Option<&NSIndexPath>,
        ) -> Option<Retained<NSIndexPath>>;

        #[method_id(@__retain_semantics Other dataSourceIndexPathForPresentationIndexPath:)]
        unsafe fn dataSourceIndexPathForPresentationIndexPath(
            &self,
            presentation_index_path: Option<&NSIndexPath>,
        ) -> Option<Retained<NSIndexPath>>;

        #[cfg(feature = "block2")]
        #[method(performUsingPresentationValues:)]
        unsafe fn performUsingPresentationValues(
            &self,
            actions_to_translate: &block2::Block<dyn Fn() + '_>,
        );
    }

    unsafe impl ProtocolType for dyn UIDataSourceTranslating {}
);
