// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace Microsoft.Maui.Platform.Linux.Services;
///
/// Interface for accessibility services using AT-SPI2.
/// Provides screen reader support on Linux.
///
public interface IAccessibilityService
{
///
/// Gets whether accessibility is enabled.
///
bool IsEnabled { get; }
///
/// Initializes the accessibility service.
///
void Initialize();
///
/// Registers an accessible object.
///
/// The accessible object to register.
void Register(IAccessible accessible);
///
/// Unregisters an accessible object.
///
/// The accessible object to unregister.
void Unregister(IAccessible accessible);
///
/// Notifies that focus has changed.
///
/// The newly focused accessible object.
void NotifyFocusChanged(IAccessible? accessible);
///
/// Notifies that a property has changed.
///
/// The accessible object.
/// The property that changed.
void NotifyPropertyChanged(IAccessible accessible, AccessibleProperty property);
///
/// Notifies that an accessible's state has changed.
///
/// The accessible object.
/// The state that changed.
/// The new value of the state.
void NotifyStateChanged(IAccessible accessible, AccessibleState state, bool value);
///
/// Announces text to the screen reader.
///
/// The text to announce.
/// The announcement priority.
void Announce(string text, AnnouncementPriority priority = AnnouncementPriority.Polite);
///
/// Shuts down the accessibility service.
///
void Shutdown();
}