/**
 * 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.
 */
import type { Language } from '@isomorphic/locatorGenerators';
import type { ParsedSelector } from '@isomorphic/selectorParser';
import type { InjectedScript } from './injectedScript';
type Rect = {
    x: number;
    y: number;
    width: number;
    height: number;
};
export type HighlightEntry = {
    element?: Element;
    box?: Rect;
    color: string;
    borderColor?: string;
    fadeDuration?: number;
    tooltipText?: string;
    cssStyle?: string;
};
export declare class Highlight {
    private _glassPaneElement;
    private _glassPaneShadow;
    private _renderedEntries;
    private _actionPointElement;
    private _titleElement;
    private _userOverlayContainer;
    private _userOverlays;
    private _userOverlayHidden;
    private _isUnderTest;
    private _injectedScript;
    private _rafRequest;
    private _language;
    private _elementHighlightSelectors;
    constructor(injectedScript: InjectedScript);
    install(): void;
    private _bringToFront;
    setLanguage(language: Language): void;
    addElementHighlight(selector: ParsedSelector, cssStyle?: string): void;
    removeElementHighlight(selector: ParsedSelector): void;
    private _ensureElementHighlightRaf;
    uninstall(): void;
    showActionPoint(x: number, y: number, fadeDuration?: number): void;
    hideActionPoint(): void;
    showActionTitle(text: string, fadeDuration: number, position?: string, fontSize?: number): void;
    hideActionTitle(): void;
    addUserOverlay(id: string, html: string): string;
    getUserOverlay(id: string): HTMLElement | undefined;
    removeUserOverlay(id: string): void;
    setUserOverlaysVisible(visible: boolean): void;
    clearHighlight(): void;
    maskElements(elements: Element[], color: string): void;
    updateHighlight(entries: HighlightEntry[]): void;
    firstBox(): DOMRect | undefined;
    firstTooltipBox(): DOMRect | undefined;
    tooltipPosition(box: DOMRect, tooltipElement: HTMLElement): {
        anchorLeft: number;
        anchorTop: number;
    };
    private _highlightIsUpToDate;
    private _createHighlightElement;
    appendChild(element: Element): void;
    onGlassPaneClick(handler: (event: MouseEvent) => void): void;
    offGlassPaneClick(handler: (event: MouseEvent) => void): void;
}
export {};
//# sourceMappingURL=highlight.d.ts.map