/** @packageDocumentation
 * @module AccuDraw
 */
import { BeUiEvent } from "@itwin/core-bentley";
import type { BeButtonEvent } from "@itwin/core-frontend";
import { AccuDraw, CompassMode, ItemField } from "@itwin/core-frontend";
import { ConditionalBooleanValue } from "@itwin/appui-abstract";
import type { UserSettingsProvider } from "../UiFramework";
import type { AccuDrawUiSettings } from "./AccuDrawUiSettings";
import type { UiStateStorage } from "../uistate/UiStateStorage";
/** Arguments for [[AccuDrawSetFieldFocusEvent]]
 * @public
 * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.
 */
export interface AccuDrawSetFieldFocusEventArgs {
    field: ItemField;
}
/** AccuDraw Set Field Focus event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {
}
/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]
 * @public
 * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.
 */
export interface AccuDrawSetFieldValueToUiEventArgs {
    field: ItemField;
    value: number;
    formattedValue: string;
}
/** AccuDraw Set Field Value to Ui event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {
}
/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]
 * @public
 * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.
 */
export interface AccuDrawSetFieldValueFromUiEventArgs {
    field: ItemField;
    stringValue: string;
}
/** AccuDraw Set Field Value from Ui event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {
}
/** Arguments for [[AccuDrawSetFieldLockEvent]]
 * @public
 * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.
 */
export interface AccuDrawSetFieldLockEventArgs {
    field: ItemField;
    lock: boolean;
}
/** AccuDraw Set Field Lock event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {
}
/** Arguments for [[AccuDrawSetCompassModeEvent]]
 * @public
 * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.
 */
export interface AccuDrawSetCompassModeEventArgs {
    mode: CompassMode;
}
/** AccuDraw Set Compass Mode event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {
}
/** AccuDraw Grab Input Focus event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> {
}
/** AccuDraw Ui Settings Changed event
 * @public
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> {
}
/** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.
 *
 * This implementation will generate the required events for the AppUI provided UI to update correctly.
 *
 * ```ts
 * await IModelApp.startup({
 *   accuDraw: new FrameworkAccuDraw()
 * });
 * ```
 * @public
 */
export declare class FrameworkAccuDraw extends AccuDraw implements UserSettingsProvider {
    private static _displayNotifications;
    private static _uiSettings;
    private static _settingsNamespace;
    private static _notificationsKey;
    readonly providerId = "FrameworkAccuDraw";
    /** AccuDraw Set Field Focus event. */
    static readonly onAccuDrawSetFieldFocusEvent: AccuDrawSetFieldFocusEvent;
    /** AccuDraw Set Field Value to Ui event. */
    static readonly onAccuDrawSetFieldValueToUiEvent: AccuDrawSetFieldValueToUiEvent;
    /** AccuDraw Set Field Value from Ui event. */
    static readonly onAccuDrawSetFieldValueFromUiEvent: AccuDrawSetFieldValueFromUiEvent;
    /** AccuDraw Set Field Lock event. */
    static readonly onAccuDrawSetFieldLockEvent: AccuDrawSetFieldLockEvent;
    /** AccuDraw Set Mode event. */
    static readonly onAccuDrawSetCompassModeEvent: AccuDrawSetCompassModeEvent;
    /** AccuDraw Grab Input Focus event. */
    static readonly onAccuDrawGrabInputFocusEvent: AccuDrawGrabInputFocusEvent;
    /** Determines if AccuDraw.rotationMode === RotationMode.Top */
    static readonly isTopRotationConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.rotationMode === RotationMode.Front */
    static readonly isFrontRotationConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.rotationMode === RotationMode.Side */
    static readonly isSideRotationConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.rotationMode === RotationMode.View */
    static readonly isViewRotationConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.rotationMode === RotationMode.ACS */
    static readonly isACSRotationConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.rotationMode === RotationMode.Context */
    static readonly isContextRotationConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.compassMode === CompassMode.Polar */
    static readonly isPolarModeConditional: ConditionalBooleanValue;
    /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */
    static readonly isRectangularModeConditional: ConditionalBooleanValue;
    /** AccuDraw Grab Input Focus event. */
    static readonly onAccuDrawUiSettingsChangedEvent: AccuDrawUiSettingsChangedEvent;
    /** Determines if notifications should be displayed for AccuDraw changes */
    static get displayNotifications(): boolean;
    static set displayNotifications(v: boolean);
    loadUserSettings(storage: UiStateStorage): Promise<void>;
    /** AccuDraw User Interface settings */
    static get uiStateStorage(): AccuDrawUiSettings | undefined;
    static set uiStateStorage(v: AccuDrawUiSettings | undefined);
    constructor();
    private handleSetFieldValueFromUiEvent;
    onCompassModeChange(): void;
    onRotationModeChange(): void;
    onFieldLockChange(index: ItemField): void;
    onFieldValueChange(index: ItemField): void;
    private fieldValuesChanged;
    setFocusItem(index: ItemField): void;
    /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.
     * Should also choose active x or y input field in rectangular mode based on cursor position when
     * axis isn't locked to support "smart lock".
     */
    onMotion(_ev: BeButtonEvent): void;
    /** Determine if the AccuDraw UI has focus. */
    get hasInputFocus(): boolean;
    /** Implement this method to set focus to the AccuDraw UI. */
    grabInputFocus(): void;
    /** Gets the display value for an AccuDraw field */
    static getFieldDisplayValue(index: ItemField): string;
    /** AccuDraw Set Field Value from Ui. */
    static setFieldValueFromUi(field: ItemField, stringValue: string): void;
    private outputInfoMessage;
    private outputCompassModeMessage;
    private outputRotationMessage;
}
//# sourceMappingURL=FrameworkAccuDraw.d.ts.map