1885b47fbSopenharmony_ci/*
2885b47fbSopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3885b47fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"),
4885b47fbSopenharmony_ci * you may not use this file except in compliance with the License.
5885b47fbSopenharmony_ci * You may obtain a copy of the License at
6885b47fbSopenharmony_ci *
7885b47fbSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8885b47fbSopenharmony_ci *
9885b47fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10885b47fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11885b47fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12885b47fbSopenharmony_ci * See the License for the specific language governing permissions and
13885b47fbSopenharmony_ci * limitations under the License.
14885b47fbSopenharmony_ci */
15885b47fbSopenharmony_ci
16885b47fbSopenharmony_ciimport type accessibility from './@ohos.accessibility';
17885b47fbSopenharmony_ciimport type { KeyEvent } from './@ohos.multimodalInput.keyEvent';
18885b47fbSopenharmony_ciimport type {
19885b47fbSopenharmony_ci  AccessibilityElement as _AccessibilityElement,
20885b47fbSopenharmony_ci  ElementAttributeValues as _ElementAttributeValues,
21885b47fbSopenharmony_ci  FocusDirection as _FocusDirection,
22885b47fbSopenharmony_ci  FocusType as _FocusType,
23885b47fbSopenharmony_ci  WindowType as _WindowType,
24885b47fbSopenharmony_ci  Rect as _Rect,
25885b47fbSopenharmony_ci  Span as _Span,
26885b47fbSopenharmony_ci} from './application/AccessibilityExtensionContext';
27885b47fbSopenharmony_ciimport type * as _AccessibilityExtensionContext from './application/AccessibilityExtensionContext';
28885b47fbSopenharmony_ci
29885b47fbSopenharmony_ci
30885b47fbSopenharmony_ci/**
31885b47fbSopenharmony_ci * Indicates an accessibility element.
32885b47fbSopenharmony_ci * Supports querying element attributes, requesting execution actions, and finding child elements by condition.
33885b47fbSopenharmony_ci *
34885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
35885b47fbSopenharmony_ci * @since 10
36885b47fbSopenharmony_ci */
37885b47fbSopenharmony_ciexport type AccessibilityElement = _AccessibilityElement;
38885b47fbSopenharmony_ci
39885b47fbSopenharmony_ci/**
40885b47fbSopenharmony_ci * Indicates the possible attributes of the element and the type of the attribute value.
41885b47fbSopenharmony_ci *
42885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
43885b47fbSopenharmony_ci * @since 10
44885b47fbSopenharmony_ci */
45885b47fbSopenharmony_ciexport type ElementAttributeValues = _ElementAttributeValues;
46885b47fbSopenharmony_ci
47885b47fbSopenharmony_ci/**
48885b47fbSopenharmony_ci * Indicates the direction of the search focus.
49885b47fbSopenharmony_ci *
50885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
51885b47fbSopenharmony_ci * @since 10
52885b47fbSopenharmony_ci */
53885b47fbSopenharmony_ciexport type FocusDirection = _FocusDirection;
54885b47fbSopenharmony_ci
55885b47fbSopenharmony_ci/**
56885b47fbSopenharmony_ci * Indicates the key of the attribute value.
57885b47fbSopenharmony_ci *
58885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
59885b47fbSopenharmony_ci * @since 10
60885b47fbSopenharmony_ci */
61885b47fbSopenharmony_ciexport type ElementAttributeKeys = keyof ElementAttributeValues;
62885b47fbSopenharmony_ci
63885b47fbSopenharmony_ci/**
64885b47fbSopenharmony_ci * Indicates the type of the focus.
65885b47fbSopenharmony_ci *
66885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
67885b47fbSopenharmony_ci * @since 10
68885b47fbSopenharmony_ci */
69885b47fbSopenharmony_ciexport type FocusType = _FocusType;
70885b47fbSopenharmony_ci
71885b47fbSopenharmony_ci/**
72885b47fbSopenharmony_ci * Indicates the type of the window.
73885b47fbSopenharmony_ci *
74885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
75885b47fbSopenharmony_ci * @since 10
76885b47fbSopenharmony_ci */
77885b47fbSopenharmony_ciexport type WindowType = _WindowType;
78885b47fbSopenharmony_ci
79885b47fbSopenharmony_ci/**
80885b47fbSopenharmony_ci * Indicates rectangle.
81885b47fbSopenharmony_ci *
82885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
83885b47fbSopenharmony_ci * @since 10
84885b47fbSopenharmony_ci */
85885b47fbSopenharmony_ciexport type Rect = _Rect;
86885b47fbSopenharmony_ci
87885b47fbSopenharmony_ci/**
88885b47fbSopenharmony_ci * Indicates rectangle.
89885b47fbSopenharmony_ci *
90885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
91885b47fbSopenharmony_ci * @since 12
92885b47fbSopenharmony_ci */
93885b47fbSopenharmony_ciexport type Span = _Span;
94885b47fbSopenharmony_ci
95885b47fbSopenharmony_ci/**
96885b47fbSopenharmony_ci * The accessibility extension context. Used to configure, query information, and inject gestures.
97885b47fbSopenharmony_ci *
98885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
99885b47fbSopenharmony_ci * @since 10
100885b47fbSopenharmony_ci */
101885b47fbSopenharmony_ci
102885b47fbSopenharmony_ciexport type AccessibilityExtensionContext = _AccessibilityExtensionContext.default;
103885b47fbSopenharmony_ci
104885b47fbSopenharmony_ci/**
105885b47fbSopenharmony_ci * class of accessibility extension ability.
106885b47fbSopenharmony_ci *
107885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
108885b47fbSopenharmony_ci * @since 9
109885b47fbSopenharmony_ci */
110885b47fbSopenharmony_ciexport default class AccessibilityExtensionAbility {
111885b47fbSopenharmony_ci  /**
112885b47fbSopenharmony_ci   * Indicates accessibility extension ability context.
113885b47fbSopenharmony_ci   *
114885b47fbSopenharmony_ci   * @syscap SystemCapability.BarrierFree.Accessibility.Core
115885b47fbSopenharmony_ci   * @since 9
116885b47fbSopenharmony_ci   */
117885b47fbSopenharmony_ci  context: AccessibilityExtensionContext;
118885b47fbSopenharmony_ci
119885b47fbSopenharmony_ci  /**
120885b47fbSopenharmony_ci   * Called when extension ability is connected.
121885b47fbSopenharmony_ci   *
122885b47fbSopenharmony_ci   * @syscap SystemCapability.BarrierFree.Accessibility.Core
123885b47fbSopenharmony_ci   * @since 9
124885b47fbSopenharmony_ci   */
125885b47fbSopenharmony_ci  onConnect(): void;
126885b47fbSopenharmony_ci
127885b47fbSopenharmony_ci  /**
128885b47fbSopenharmony_ci   * Called when extension ability is disconnected.
129885b47fbSopenharmony_ci   *
130885b47fbSopenharmony_ci   * @syscap SystemCapability.BarrierFree.Accessibility.Core
131885b47fbSopenharmony_ci   * @since 9
132885b47fbSopenharmony_ci   */
133885b47fbSopenharmony_ci  onDisconnect(): void;
134885b47fbSopenharmony_ci
135885b47fbSopenharmony_ci  /**
136885b47fbSopenharmony_ci   * Called when an accessibility event occurs, such as when the user touches the application interface.
137885b47fbSopenharmony_ci   *
138885b47fbSopenharmony_ci   * @param { AccessibilityEvent } event Indicates an accessibility event.
139885b47fbSopenharmony_ci   * @syscap SystemCapability.BarrierFree.Accessibility.Core
140885b47fbSopenharmony_ci   * @since 9
141885b47fbSopenharmony_ci   */
142885b47fbSopenharmony_ci  onAccessibilityEvent(event: AccessibilityEvent): void;
143885b47fbSopenharmony_ci
144885b47fbSopenharmony_ci  /**
145885b47fbSopenharmony_ci   * Called when a physical key is pressed, such as when the user presses the volume button .
146885b47fbSopenharmony_ci   *
147885b47fbSopenharmony_ci   * @param { KeyEvent } keyEvent Indicates the physical key event.
148885b47fbSopenharmony_ci   * @returns { boolean }
149885b47fbSopenharmony_ci   * @syscap SystemCapability.BarrierFree.Accessibility.Core
150885b47fbSopenharmony_ci   * @since 9
151885b47fbSopenharmony_ci   */
152885b47fbSopenharmony_ci  onKeyEvent(keyEvent: KeyEvent): boolean;
153885b47fbSopenharmony_ci}
154885b47fbSopenharmony_ci
155885b47fbSopenharmony_ci/**
156885b47fbSopenharmony_ci * Indicates the accessibility event.
157885b47fbSopenharmony_ci * It provides the event type and the target element of the event if any.
158885b47fbSopenharmony_ci *
159885b47fbSopenharmony_ci * @typedef AccessibilityEvent
160885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
161885b47fbSopenharmony_ci * @since 9
162885b47fbSopenharmony_ci */
163885b47fbSopenharmony_cideclare interface AccessibilityEvent {
164885b47fbSopenharmony_ci  eventType: accessibility.EventType | accessibility.WindowUpdateType | TouchGuideType | GestureType | PageUpdateType;
165885b47fbSopenharmony_ci  target?: AccessibilityElement;
166885b47fbSopenharmony_ci  timeStamp?: number;
167885b47fbSopenharmony_ci  elementId?: number;
168885b47fbSopenharmony_ci  textAnnouncedForAccessibility?: string;
169885b47fbSopenharmony_ci}
170885b47fbSopenharmony_ci
171885b47fbSopenharmony_ci/**
172885b47fbSopenharmony_ci * Indicates the gesture type.
173885b47fbSopenharmony_ci *
174885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
175885b47fbSopenharmony_ci * @since 9
176885b47fbSopenharmony_ci */
177885b47fbSopenharmony_citype GestureType = 'left' | 'leftThenRight' | 'leftThenUp' | 'leftThenDown' |
178885b47fbSopenharmony_ci  'right' | 'rightThenLeft' | 'rightThenUp' | 'rightThenDown' |
179885b47fbSopenharmony_ci  'up' | 'upThenLeft' | 'upThenRight' | 'upThenDown' |
180885b47fbSopenharmony_ci  'down' | 'downThenLeft' | 'downThenRight' | 'downThenUp' |
181885b47fbSopenharmony_ci  'twoFingerSingleTap' | 'twoFingerDoubleTap' | 'twoFingerDoubleTapAndHold' | 'twoFingerTripleTap' |
182885b47fbSopenharmony_ci  'twoFingerTripleTapAndHold' | 'threeFingerSingleTap' | 'threeFingerDoubleTap' | 'threeFingerDoubleTapAndHold' |
183885b47fbSopenharmony_ci  'threeFingerTripleTap' | 'threeFingerTripleTapAndHold' | 'fourFingerSingleTap' | 'fourFingerDoubleTap' |
184885b47fbSopenharmony_ci  'fourFingerDoubleTapAndHold' | 'fourFingerTripleTap' | 'fourFingerTripleTapAndHold' |
185885b47fbSopenharmony_ci  'threeFingerSwipeUp' | 'threeFingerSwipeDown' | 'threeFingerSwipeLeft' | 'threeFingerSwipeRight' |
186885b47fbSopenharmony_ci  'fourFingerSwipeUp' | 'fourFingerSwipeDown' | 'fourFingerSwipeLeft' | 'fourFingerSwipeRight';
187885b47fbSopenharmony_ci
188885b47fbSopenharmony_ci/**
189885b47fbSopenharmony_ci * Indicates the page update type.
190885b47fbSopenharmony_ci *
191885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
192885b47fbSopenharmony_ci * @since 9
193885b47fbSopenharmony_ci */
194885b47fbSopenharmony_citype PageUpdateType = 'pageContentUpdate' | 'pageStateUpdate';
195885b47fbSopenharmony_ci
196885b47fbSopenharmony_ci/**
197885b47fbSopenharmony_ci * Indicates the type of touch event during touch browsing.
198885b47fbSopenharmony_ci *
199885b47fbSopenharmony_ci * @syscap SystemCapability.BarrierFree.Accessibility.Core
200885b47fbSopenharmony_ci * @since 9
201885b47fbSopenharmony_ci */
202885b47fbSopenharmony_citype TouchGuideType = 'touchBegin' | 'touchEnd';