# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.1.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property
from abc import abstractmethod

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.ui.xaml.interop as windows_ui_xaml_interop
import winui3.microsoft.ui.xaml as microsoft_ui_xaml

from winui3.microsoft.ui.xaml.data import BindingMode, RelativeSourceMode, UpdateSourceTrigger
from winui3.microsoft.ui.xaml.data import CurrentChangingEventHandler, PropertyChangedEventHandler

Self = typing.TypeVar('Self')

@typing.final
class LoadMoreItemsResult:
    @_property
    def count(self) -> winrt.system.UInt32: ...
    def __new__(cls, count: winrt.system.UInt32 = 0) -> LoadMoreItemsResult: ...
    def __replace__(self, /, **changes: typing.Any) -> LoadMoreItemsResult: ...

class Binding_Static(BindingBase_Static):
    pass

class Binding(BindingBase, metaclass=Binding_Static):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Microsoft.UI.Xaml.Data.UpdateSourceTrigger Microsoft.UI.Xaml.Data.Binding::get_UpdateSourceTrigger()
    @_property
    def update_source_trigger(self) -> UpdateSourceTrigger: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_UpdateSourceTrigger(Microsoft.UI.Xaml.Data.UpdateSourceTrigger)
    @update_source_trigger.setter
    @typing.final
    def update_source_trigger(self, value: UpdateSourceTrigger) -> None: ...
    # System.Object Microsoft.UI.Xaml.Data.Binding::get_TargetNullValue()
    @_property
    def target_null_value(self) -> winrt.system.Object: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_TargetNullValue(System.Object)
    @target_null_value.setter
    @typing.final
    def target_null_value(self, value: winrt.system.Object) -> None: ...
    # System.Object Microsoft.UI.Xaml.Data.Binding::get_Source()
    @_property
    def source(self) -> winrt.system.Object: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_Source(System.Object)
    @source.setter
    @typing.final
    def source(self, value: winrt.system.Object) -> None: ...
    # Microsoft.UI.Xaml.Data.RelativeSource Microsoft.UI.Xaml.Data.Binding::get_RelativeSource()
    @_property
    def relative_source(self) -> RelativeSource: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_RelativeSource(Microsoft.UI.Xaml.Data.RelativeSource)
    @relative_source.setter
    @typing.final
    def relative_source(self, value: RelativeSource) -> None: ...
    # Microsoft.UI.Xaml.PropertyPath Microsoft.UI.Xaml.Data.Binding::get_Path()
    @_property
    def path(self) -> microsoft_ui_xaml.PropertyPath: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_Path(Microsoft.UI.Xaml.PropertyPath)
    @path.setter
    @typing.final
    def path(self, value: microsoft_ui_xaml.PropertyPath) -> None: ...
    # Microsoft.UI.Xaml.Data.BindingMode Microsoft.UI.Xaml.Data.Binding::get_Mode()
    @_property
    def mode(self) -> BindingMode: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_Mode(Microsoft.UI.Xaml.Data.BindingMode)
    @mode.setter
    @typing.final
    def mode(self, value: BindingMode) -> None: ...
    # System.Object Microsoft.UI.Xaml.Data.Binding::get_FallbackValue()
    @_property
    def fallback_value(self) -> winrt.system.Object: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_FallbackValue(System.Object)
    @fallback_value.setter
    @typing.final
    def fallback_value(self, value: winrt.system.Object) -> None: ...
    # System.String Microsoft.UI.Xaml.Data.Binding::get_ElementName()
    @_property
    def element_name(self) -> str: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_ElementName(System.String)
    @element_name.setter
    @typing.final
    def element_name(self, value: str) -> None: ...
    # System.Object Microsoft.UI.Xaml.Data.Binding::get_ConverterParameter()
    @_property
    def converter_parameter(self) -> winrt.system.Object: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_ConverterParameter(System.Object)
    @converter_parameter.setter
    @typing.final
    def converter_parameter(self, value: winrt.system.Object) -> None: ...
    # System.String Microsoft.UI.Xaml.Data.Binding::get_ConverterLanguage()
    @_property
    def converter_language(self) -> str: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_ConverterLanguage(System.String)
    @converter_language.setter
    @typing.final
    def converter_language(self, value: str) -> None: ...
    # Microsoft.UI.Xaml.Data.IValueConverter Microsoft.UI.Xaml.Data.Binding::get_Converter()
    @_property
    def converter(self) -> IValueConverter: ...
    # System.Void Microsoft.UI.Xaml.Data.Binding::put_Converter(Microsoft.UI.Xaml.Data.IValueConverter)
    @converter.setter
    @typing.final
    def converter(self, value: IValueConverter) -> None: ...

class BindingBase_Static(microsoft_ui_xaml.DependencyObject_Static):
    pass

class BindingBase(microsoft_ui_xaml.DependencyObject, metaclass=BindingBase_Static):
    def __new__(cls: typing.Type[Self]) -> Self: ...

class BindingExpression_Static(BindingExpressionBase_Static):
    pass

class BindingExpression(BindingExpressionBase, metaclass=BindingExpression_Static):
    @typing.final
    # System.Void Microsoft.UI.Xaml.Data.BindingExpression::UpdateSource()
    def update_source(self) -> None: ...
    # System.Object Microsoft.UI.Xaml.Data.BindingExpression::get_DataItem()
    @_property
    @typing.final
    def data_item(self) -> winrt.system.Object: ...
    # Microsoft.UI.Xaml.Data.Binding Microsoft.UI.Xaml.Data.BindingExpression::get_ParentBinding()
    @_property
    @typing.final
    def parent_binding(self) -> Binding: ...

class BindingExpressionBase_Static(winrt._winrt.IInspectable_Static):
    pass

class BindingExpressionBase(winrt.system.Object, metaclass=BindingExpressionBase_Static):
    pass

@typing.final
class BindingOperations_Static(winrt._winrt.IInspectable_Static):
    # System.Void Microsoft.UI.Xaml.Data.BindingOperations::SetBinding(Microsoft.UI.Xaml.DependencyObject,Microsoft.UI.Xaml.DependencyProperty,Microsoft.UI.Xaml.Data.BindingBase)
    def set_binding(cls, target: microsoft_ui_xaml.DependencyObject, dp: microsoft_ui_xaml.DependencyProperty, binding: BindingBase, /) -> None: ...

@typing.final
class BindingOperations(winrt.system.Object, metaclass=BindingOperations_Static):
    pass

@typing.final
class CollectionViewSource_Static(microsoft_ui_xaml.DependencyObject_Static):
    # Microsoft.UI.Xaml.DependencyProperty Microsoft.UI.Xaml.Data.CollectionViewSource::get_IsSourceGroupedProperty()
    @_property
    def is_source_grouped_property(cls) -> microsoft_ui_xaml.DependencyProperty: ...
    # Microsoft.UI.Xaml.DependencyProperty Microsoft.UI.Xaml.Data.CollectionViewSource::get_ItemsPathProperty()
    @_property
    def items_path_property(cls) -> microsoft_ui_xaml.DependencyProperty: ...
    # Microsoft.UI.Xaml.DependencyProperty Microsoft.UI.Xaml.Data.CollectionViewSource::get_SourceProperty()
    @_property
    def source_property(cls) -> microsoft_ui_xaml.DependencyProperty: ...
    # Microsoft.UI.Xaml.DependencyProperty Microsoft.UI.Xaml.Data.CollectionViewSource::get_ViewProperty()
    @_property
    def view_property(cls) -> microsoft_ui_xaml.DependencyProperty: ...

@typing.final
class CollectionViewSource(microsoft_ui_xaml.DependencyObject, metaclass=CollectionViewSource_Static):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Object Microsoft.UI.Xaml.Data.CollectionViewSource::get_Source()
    @_property
    def source(self) -> winrt.system.Object: ...
    # System.Void Microsoft.UI.Xaml.Data.CollectionViewSource::put_Source(System.Object)
    @source.setter
    def source(self, value: winrt.system.Object) -> None: ...
    # Microsoft.UI.Xaml.PropertyPath Microsoft.UI.Xaml.Data.CollectionViewSource::get_ItemsPath()
    @_property
    def items_path(self) -> microsoft_ui_xaml.PropertyPath: ...
    # System.Void Microsoft.UI.Xaml.Data.CollectionViewSource::put_ItemsPath(Microsoft.UI.Xaml.PropertyPath)
    @items_path.setter
    def items_path(self, value: microsoft_ui_xaml.PropertyPath) -> None: ...
    # System.Boolean Microsoft.UI.Xaml.Data.CollectionViewSource::get_IsSourceGrouped()
    @_property
    def is_source_grouped(self) -> bool: ...
    # System.Void Microsoft.UI.Xaml.Data.CollectionViewSource::put_IsSourceGrouped(System.Boolean)
    @is_source_grouped.setter
    def is_source_grouped(self, value: bool) -> None: ...
    # Microsoft.UI.Xaml.Data.ICollectionView Microsoft.UI.Xaml.Data.CollectionViewSource::get_View()
    @_property
    def view(self) -> ICollectionView: ...

class CurrentChangingEventArgs_Static(winrt._winrt.IInspectable_Static):
    pass

class CurrentChangingEventArgs(winrt.system.Object, metaclass=CurrentChangingEventArgs_Static):
    @typing.overload
    def __new__(cls: typing.Type[Self]) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], is_cancelable: bool) -> Self: ...
    # System.Boolean Microsoft.UI.Xaml.Data.CurrentChangingEventArgs::get_Cancel()
    @_property
    def cancel(self) -> bool: ...
    # System.Void Microsoft.UI.Xaml.Data.CurrentChangingEventArgs::put_Cancel(System.Boolean)
    @cancel.setter
    @typing.final
    def cancel(self, value: bool) -> None: ...
    # System.Boolean Microsoft.UI.Xaml.Data.CurrentChangingEventArgs::get_IsCancelable()
    @_property
    @typing.final
    def is_cancelable(self) -> bool: ...

@typing.final
class DataErrorsChangedEventArgs(winrt.system.Object):
    def __new__(cls: typing.Type[Self], name: str) -> Self: ...
    # System.String Microsoft.UI.Xaml.Data.DataErrorsChangedEventArgs::get_PropertyName()
    @_property
    def property_name(self) -> str: ...
    # System.Void Microsoft.UI.Xaml.Data.DataErrorsChangedEventArgs::put_PropertyName(System.String)
    @property_name.setter
    def property_name(self, value: str) -> None: ...

class ItemIndexRange_Static(winrt._winrt.IInspectable_Static):
    pass

class ItemIndexRange(winrt.system.Object, metaclass=ItemIndexRange_Static):
    def __new__(cls: typing.Type[Self], first_index: winrt.system.Int32, length: winrt.system.UInt32) -> Self: ...
    # System.Int32 Microsoft.UI.Xaml.Data.ItemIndexRange::get_FirstIndex()
    @_property
    @typing.final
    def first_index(self) -> winrt.system.Int32: ...
    # System.Int32 Microsoft.UI.Xaml.Data.ItemIndexRange::get_LastIndex()
    @_property
    @typing.final
    def last_index(self) -> winrt.system.Int32: ...
    # System.UInt32 Microsoft.UI.Xaml.Data.ItemIndexRange::get_Length()
    @_property
    @typing.final
    def length(self) -> winrt.system.UInt32: ...

class PropertyChangedEventArgs_Static(winrt._winrt.IInspectable_Static):
    pass

class PropertyChangedEventArgs(winrt.system.Object, metaclass=PropertyChangedEventArgs_Static):
    def __new__(cls: typing.Type[Self], name: str) -> Self: ...
    # System.String Microsoft.UI.Xaml.Data.PropertyChangedEventArgs::get_PropertyName()
    @_property
    @typing.final
    def property_name(self) -> str: ...

class RelativeSource_Static(microsoft_ui_xaml.DependencyObject_Static):
    pass

class RelativeSource(microsoft_ui_xaml.DependencyObject, metaclass=RelativeSource_Static):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Microsoft.UI.Xaml.Data.RelativeSourceMode Microsoft.UI.Xaml.Data.RelativeSource::get_Mode()
    @_property
    def mode(self) -> RelativeSourceMode: ...
    # System.Void Microsoft.UI.Xaml.Data.RelativeSource::put_Mode(Microsoft.UI.Xaml.Data.RelativeSourceMode)
    @mode.setter
    @typing.final
    def mode(self, value: RelativeSourceMode) -> None: ...

@typing.final
class _ICollectionView: ...

class ICollectionView(windows_foundation_collections.IObservableVector[winrt.system.Object], windows_foundation_collections.IVector[winrt.system.Object], windows_foundation_collections.IIterable[winrt.system.Object], winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperation`1<Microsoft.UI.Xaml.Data.LoadMoreItemsResult> Microsoft.UI.Xaml.Data.ICollectionView::LoadMoreItemsAsync(System.UInt32)
    @abstractmethod
    def load_more_items_async(self, count: winrt.system.UInt32, /) -> windows_foundation.IAsyncOperation[LoadMoreItemsResult]: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::MoveCurrentTo(System.Object)
    @abstractmethod
    def move_current_to(self, item: winrt.system.Object, /) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::MoveCurrentToFirst()
    @abstractmethod
    def move_current_to_first(self) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::MoveCurrentToLast()
    @abstractmethod
    def move_current_to_last(self) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::MoveCurrentToNext()
    @abstractmethod
    def move_current_to_next(self) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::MoveCurrentToPosition(System.Int32)
    @abstractmethod
    def move_current_to_position(self, index: winrt.system.Int32, /) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::MoveCurrentToPrevious()
    @abstractmethod
    def move_current_to_previous(self) -> bool: ...
    # Windows.Foundation.EventRegistrationToken Microsoft.UI.Xaml.Data.ICollectionView::add_CurrentChanged(Windows.Foundation.EventHandler`1<System.Object>)
    @abstractmethod
    def add_current_changed(self, handler: windows_foundation.EventHandler[winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Microsoft.UI.Xaml.Data.ICollectionView::remove_CurrentChanged(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_current_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Microsoft.UI.Xaml.Data.ICollectionView::add_CurrentChanging(Microsoft.UI.Xaml.Data.CurrentChangingEventHandler)
    @abstractmethod
    def add_current_changing(self, handler: CurrentChangingEventHandler, /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Microsoft.UI.Xaml.Data.ICollectionView::remove_CurrentChanging(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_current_changing(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IObservableVector`1<System.Object> Microsoft.UI.Xaml.Data.ICollectionView::get_CollectionGroups()
    @_property
    @abstractmethod
    def collection_groups(self) -> windows_foundation_collections.IObservableVector[winrt.system.Object]: ...
    # System.Object Microsoft.UI.Xaml.Data.ICollectionView::get_CurrentItem()
    @_property
    @abstractmethod
    def current_item(self) -> winrt.system.Object: ...
    # System.Int32 Microsoft.UI.Xaml.Data.ICollectionView::get_CurrentPosition()
    @_property
    @abstractmethod
    def current_position(self) -> winrt.system.Int32: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::get_HasMoreItems()
    @_property
    @abstractmethod
    def has_more_items(self) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::get_IsCurrentAfterLast()
    @_property
    @abstractmethod
    def is_current_after_last(self) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICollectionView::get_IsCurrentBeforeFirst()
    @_property
    @abstractmethod
    def is_current_before_first(self) -> bool: ...

@typing.final
class _ICollectionViewFactory: ...

class ICollectionViewFactory(winrt._winrt.IInspectable):
    # Microsoft.UI.Xaml.Data.ICollectionView Microsoft.UI.Xaml.Data.ICollectionViewFactory::CreateView()
    @abstractmethod
    def create_view(self) -> ICollectionView: ...

@typing.final
class _ICollectionViewGroup: ...

class ICollectionViewGroup(winrt._winrt.IInspectable):
    # System.Object Microsoft.UI.Xaml.Data.ICollectionViewGroup::get_Group()
    @_property
    @abstractmethod
    def group(self) -> winrt.system.Object: ...
    # Windows.Foundation.Collections.IObservableVector`1<System.Object> Microsoft.UI.Xaml.Data.ICollectionViewGroup::get_GroupItems()
    @_property
    @abstractmethod
    def group_items(self) -> windows_foundation_collections.IObservableVector[winrt.system.Object]: ...

@typing.final
class _ICustomProperty: ...

class ICustomProperty(winrt._winrt.IInspectable):
    # System.Object Microsoft.UI.Xaml.Data.ICustomProperty::GetIndexedValue(System.Object,System.Object)
    @abstractmethod
    def get_indexed_value(self, target: winrt.system.Object, index: winrt.system.Object, /) -> winrt.system.Object: ...
    # System.Object Microsoft.UI.Xaml.Data.ICustomProperty::GetValue(System.Object)
    @abstractmethod
    def get_value(self, target: winrt.system.Object, /) -> winrt.system.Object: ...
    # System.Void Microsoft.UI.Xaml.Data.ICustomProperty::SetIndexedValue(System.Object,System.Object,System.Object)
    @abstractmethod
    def set_indexed_value(self, target: winrt.system.Object, value: winrt.system.Object, index: winrt.system.Object, /) -> None: ...
    # System.Void Microsoft.UI.Xaml.Data.ICustomProperty::SetValue(System.Object,System.Object)
    @abstractmethod
    def set_value(self, target: winrt.system.Object, value: winrt.system.Object, /) -> None: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICustomProperty::get_CanRead()
    @_property
    @abstractmethod
    def can_read(self) -> bool: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ICustomProperty::get_CanWrite()
    @_property
    @abstractmethod
    def can_write(self) -> bool: ...
    # System.String Microsoft.UI.Xaml.Data.ICustomProperty::get_Name()
    @_property
    @abstractmethod
    def name(self) -> str: ...
    # Windows.UI.Xaml.Interop.TypeName Microsoft.UI.Xaml.Data.ICustomProperty::get_Type()
    @_property
    @abstractmethod
    def type(self) -> windows_ui_xaml_interop.TypeName: ...

@typing.final
class _ICustomPropertyProvider: ...

class ICustomPropertyProvider(winrt._winrt.IInspectable):
    # Microsoft.UI.Xaml.Data.ICustomProperty Microsoft.UI.Xaml.Data.ICustomPropertyProvider::GetCustomProperty(System.String)
    @abstractmethod
    def get_custom_property(self, name: str, /) -> ICustomProperty: ...
    # Microsoft.UI.Xaml.Data.ICustomProperty Microsoft.UI.Xaml.Data.ICustomPropertyProvider::GetIndexedProperty(System.String,Windows.UI.Xaml.Interop.TypeName)
    @abstractmethod
    def get_indexed_property(self, name: str, type: typing.Union[windows_ui_xaml_interop.TypeName, typing.Tuple[str, windows_ui_xaml_interop.TypeKind]], /) -> ICustomProperty: ...
    # System.String Microsoft.UI.Xaml.Data.ICustomPropertyProvider::GetStringRepresentation()
    @abstractmethod
    def get_string_representation(self) -> str: ...
    # Windows.UI.Xaml.Interop.TypeName Microsoft.UI.Xaml.Data.ICustomPropertyProvider::get_Type()
    @_property
    @abstractmethod
    def type(self) -> windows_ui_xaml_interop.TypeName: ...

@typing.final
class _IItemsRangeInfo: ...

class IItemsRangeInfo(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # System.Void Microsoft.UI.Xaml.Data.IItemsRangeInfo::RangesChanged(Microsoft.UI.Xaml.Data.ItemIndexRange,Windows.Foundation.Collections.IVectorView`1<Microsoft.UI.Xaml.Data.ItemIndexRange>)
    @abstractmethod
    def ranges_changed(self, visible_range: ItemIndexRange, tracked_items: typing.Sequence[ItemIndexRange], /) -> None: ...

@typing.final
class _INotifyDataErrorInfo: ...

class INotifyDataErrorInfo(winrt._winrt.IInspectable):
    # Windows.Foundation.Collections.IIterable`1<System.Object> Microsoft.UI.Xaml.Data.INotifyDataErrorInfo::GetErrors(System.String)
    @abstractmethod
    def get_errors(self, property_name: str, /) -> typing.Iterable[winrt.system.Object]: ...
    # Windows.Foundation.EventRegistrationToken Microsoft.UI.Xaml.Data.INotifyDataErrorInfo::add_ErrorsChanged(Windows.Foundation.EventHandler`1<Microsoft.UI.Xaml.Data.DataErrorsChangedEventArgs>)
    @abstractmethod
    def add_errors_changed(self, handler: windows_foundation.EventHandler[DataErrorsChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Microsoft.UI.Xaml.Data.INotifyDataErrorInfo::remove_ErrorsChanged(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_errors_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Microsoft.UI.Xaml.Data.INotifyDataErrorInfo::get_HasErrors()
    @_property
    @abstractmethod
    def has_errors(self) -> bool: ...

@typing.final
class _INotifyPropertyChanged: ...

class INotifyPropertyChanged(winrt._winrt.IInspectable):
    # Windows.Foundation.EventRegistrationToken Microsoft.UI.Xaml.Data.INotifyPropertyChanged::add_PropertyChanged(Microsoft.UI.Xaml.Data.PropertyChangedEventHandler)
    @abstractmethod
    def add_property_changed(self, handler: PropertyChangedEventHandler, /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Microsoft.UI.Xaml.Data.INotifyPropertyChanged::remove_PropertyChanged(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_property_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...

@typing.final
class _ISelectionInfo: ...

class ISelectionInfo(winrt._winrt.IInspectable):
    # System.Void Microsoft.UI.Xaml.Data.ISelectionInfo::DeselectRange(Microsoft.UI.Xaml.Data.ItemIndexRange)
    @abstractmethod
    def deselect_range(self, item_index_range: ItemIndexRange, /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Microsoft.UI.Xaml.Data.ItemIndexRange> Microsoft.UI.Xaml.Data.ISelectionInfo::GetSelectedRanges()
    @abstractmethod
    def get_selected_ranges(self) -> typing.Sequence[ItemIndexRange]: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ISelectionInfo::IsSelected(System.Int32)
    @abstractmethod
    def is_selected(self, index: winrt.system.Int32, /) -> bool: ...
    # System.Void Microsoft.UI.Xaml.Data.ISelectionInfo::SelectRange(Microsoft.UI.Xaml.Data.ItemIndexRange)
    @abstractmethod
    def select_range(self, item_index_range: ItemIndexRange, /) -> None: ...

@typing.final
class _ISupportIncrementalLoading: ...

class ISupportIncrementalLoading(winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperation`1<Microsoft.UI.Xaml.Data.LoadMoreItemsResult> Microsoft.UI.Xaml.Data.ISupportIncrementalLoading::LoadMoreItemsAsync(System.UInt32)
    @abstractmethod
    def load_more_items_async(self, count: winrt.system.UInt32, /) -> windows_foundation.IAsyncOperation[LoadMoreItemsResult]: ...
    # System.Boolean Microsoft.UI.Xaml.Data.ISupportIncrementalLoading::get_HasMoreItems()
    @_property
    @abstractmethod
    def has_more_items(self) -> bool: ...

@typing.final
class _IValueConverter: ...

class IValueConverter(winrt._winrt.IInspectable):
    # System.Object Microsoft.UI.Xaml.Data.IValueConverter::Convert(System.Object,Windows.UI.Xaml.Interop.TypeName,System.Object,System.String)
    @abstractmethod
    def convert(self, value: winrt.system.Object, target_type: typing.Union[windows_ui_xaml_interop.TypeName, typing.Tuple[str, windows_ui_xaml_interop.TypeKind]], parameter: winrt.system.Object, language: str, /) -> winrt.system.Object: ...
    # System.Object Microsoft.UI.Xaml.Data.IValueConverter::ConvertBack(System.Object,Windows.UI.Xaml.Interop.TypeName,System.Object,System.String)
    @abstractmethod
    def convert_back(self, value: winrt.system.Object, target_type: typing.Union[windows_ui_xaml_interop.TypeName, typing.Tuple[str, windows_ui_xaml_interop.TypeKind]], parameter: winrt.system.Object, language: str, /) -> winrt.system.Object: ...

