/** @packageDocumentation
 * @module Notification
 */
import "./Pointer.scss";
import * as React from "react";
import { XAndY } from "@itwin/core-geometry";
import { OutputMessagePriority } from "@itwin/core-frontend";
import { PointProps, RelativePosition, UiEvent } from "@itwin/appui-abstract";
import { CommonProps } from "@itwin/core-react";
import { NotifyMessageDetailsType, NotifyMessageType } from "./ReactNotifyMessageDetails";
/** Properties of [[PointerMessage]] component.
 * @public
 */
export interface PointerMessageProps extends CommonProps {
    /** Text to display */
    message?: string;
}
/** [[PointerMessage]] state.
 * @internal
 */
interface PointerMessageState {
    isVisible: boolean;
    message: NotifyMessageType;
    detailedMessage?: NotifyMessageType;
    position: PointProps;
    messageDetails?: NotifyMessageDetailsType;
}
/** [[PointerMessageChangedEvent]] arguments.
 * @public
 */
export interface PointerMessageChangedEventArgs {
    isVisible: boolean;
    priority: OutputMessagePriority;
    message: NotifyMessageType;
    detailedMessage?: NotifyMessageType;
    relativePosition?: RelativePosition;
    viewport?: HTMLElement;
    pt?: XAndY;
    messageDetails?: NotifyMessageDetailsType;
}
/** Pointer Message Changed Event emitted by the [[PointerMessage]] component
 * @public
 */
export declare class PointerMessageChangedEvent extends UiEvent<PointerMessageChangedEventArgs> {
}
/** Pointer message pops up near pointer when attempting an invalid interaction.
 * @public
 */
export declare class PointerMessage extends React.Component<PointerMessageProps, PointerMessageState> {
    private static _pointerMessageChangedEvent;
    private static readonly _onPointerMessagePositionChangedEvent;
    static get onPointerMessageChangedEvent(): PointerMessageChangedEvent;
    static showMessage(message: NotifyMessageDetailsType): void;
    static updateMessage(displayPoint: XAndY, relativePosition: RelativePosition): void;
    static hideMessage(): void;
    readonly state: Readonly<PointerMessageState>;
    private _relativePosition?;
    private _viewport?;
    private _position?;
    private _size;
    render(): React.ReactNode;
    componentDidMount(): void;
    componentWillUnmount(): void;
    private _handleSizeChanged;
    private _handlePointerMessageChangedEvent;
    private _handlePointerMessagePositionChangedEvent;
    private updatePosition;
}
export {};
//# sourceMappingURL=Pointer.d.ts.map