/**
 * Copyright (c) Microsoft Corporation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
export type AriaRole = 'alert' | 'alertdialog' | 'application' | 'article' | 'banner' | 'blockquote' | 'button' | 'caption' | 'cell' | 'checkbox' | 'code' | 'columnheader' | 'combobox' | 'complementary' | 'contentinfo' | 'definition' | 'deletion' | 'dialog' | 'directory' | 'document' | 'emphasis' | 'feed' | 'figure' | 'form' | 'generic' | 'grid' | 'gridcell' | 'group' | 'heading' | 'img' | 'insertion' | 'link' | 'list' | 'listbox' | 'listitem' | 'log' | 'main' | 'mark' | 'marquee' | 'math' | 'meter' | 'menu' | 'menubar' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'navigation' | 'none' | 'note' | 'option' | 'paragraph' | 'presentation' | 'progressbar' | 'radio' | 'radiogroup' | 'region' | 'row' | 'rowgroup' | 'rowheader' | 'scrollbar' | 'search' | 'searchbox' | 'separator' | 'slider' | 'spinbutton' | 'status' | 'strong' | 'subscript' | 'superscript' | 'switch' | 'tab' | 'table' | 'tablist' | 'tabpanel' | 'term' | 'textbox' | 'time' | 'timer' | 'toolbar' | 'tooltip' | 'tree' | 'treegrid' | 'treeitem';
export type AriaProps = {
    checked?: boolean | 'mixed';
    disabled?: boolean;
    expanded?: boolean;
    active?: boolean;
    level?: number;
    pressed?: boolean | 'mixed';
    selected?: boolean;
};
export type AriaBox = {
    visible: boolean;
    inline: boolean;
    cursor?: string;
};
export type AriaNode = AriaProps & {
    role: AriaRole | 'fragment' | 'iframe';
    name: string;
    ref?: string;
    children: (AriaNode | string)[];
    box: AriaBox;
    receivesPointerEvents: boolean;
    props: Record<string, string>;
};
export declare function ariaNodesEqual(a: AriaNode, b: AriaNode): boolean;
export declare function hasPointerCursor(ariaNode: AriaNode): boolean;
export type AriaRegex = {
    pattern: string;
};
export type AriaTextValue = {
    raw: string;
    normalized: string;
};
export type AriaTemplateTextNode = {
    kind: 'text';
    text: AriaTextValue;
};
export type AriaTemplateRoleNode = AriaProps & {
    kind: 'role';
    role: AriaRole | 'fragment';
    name?: AriaRegex | string;
    children?: AriaTemplateNode[];
    props?: Record<string, AriaTextValue>;
    containerMode?: 'contain' | 'equal' | 'deep-equal';
};
export type AriaTemplateNode = AriaTemplateRoleNode | AriaTemplateTextNode;
import type * as yamlTypes from 'yaml';
type YamlLibrary = {
    parseDocument: typeof yamlTypes.parseDocument;
    Scalar: typeof yamlTypes.Scalar;
    YAMLMap: typeof yamlTypes.YAMLMap;
    YAMLSeq: typeof yamlTypes.YAMLSeq;
    LineCounter: typeof yamlTypes.LineCounter;
};
type ParsedYamlPosition = {
    line: number;
    col: number;
};
type ParsingOptions = yamlTypes.ParseOptions;
export type ParsedYamlError = {
    message: string;
    range: [ParsedYamlPosition, ParsedYamlPosition];
};
export declare function parseAriaSnapshotUnsafe(yaml: YamlLibrary, text: string, options?: ParsingOptions): AriaTemplateNode;
export declare function parseAriaSnapshot(yaml: YamlLibrary, text: string, options?: ParsingOptions): {
    fragment: AriaTemplateNode;
    errors: ParsedYamlError[];
};
export declare function textValue(value: string): AriaTextValue;
export declare class KeyParser {
    private _input;
    private _pos;
    private _length;
    static parse(text: yamlTypes.Scalar<string>, options: ParsingOptions, errors: ParsedYamlError[]): AriaTemplateRoleNode | null;
    constructor(input: string);
    private _peek;
    private _next;
    private _eof;
    private _isWhitespace;
    private _skipWhitespace;
    private _readIdentifier;
    private _readString;
    private _throwError;
    private _readRegex;
    private _readStringOrRegex;
    private _readAttributes;
    _parse(): AriaTemplateRoleNode;
    private _applyAttribute;
    private _assert;
}
export declare class ParserError extends Error {
    readonly pos: number;
    constructor(message: string, pos: number);
}
export declare function findNewNode(from: AriaNode | undefined, to: AriaNode): AriaNode | undefined;
export {};
//# sourceMappingURL=ariaSnapshot.d.ts.map