import * as defs from "./FormDefinition";
import { FormatOptions } from "./numberFormatter";
import { Calendar } from "./components/Calendar";
/** Concrete types of facilities which deviate in terms of functionality. */
export declare type Facility = "browser" | "globalize" | "moment";
/** Exposes various features to components that require features of the environment. */
export interface FormPresenterHost {
    /** Indicates if the form is enabled or not. */
    enabled: boolean;
    /** The form to render. */
    form: defs.Form;
    /** Posts an event. */
    post(type: "changed" | "cancel" | "clicked" | "custom" | "dragged" | "suggest", event?: defs.Event): void;
    /** Disposes the form. */
    dispose(): void;
    /** References all elements. */
    refs: {};
    /** Refreshes the entire form. */
    refresh(): void;
    /** Renders a custom element. */
    renderCustom(component: {}, element: defs.Element): any;
    /** Renders the focus. */
    renderFocus(target: Node, name?: string): boolean;
    /** Renders form text to HTML. */
    renderHtml(text: defs.Text, htmlContentCategory?: defs.HTMLContentCategory): string;
    /** Renders form text to display text. */
    renderText(text: defs.Text | undefined): string;
    /** Renders a component's visual. */
    renderVisual(component: {}): any;
    /** Renders a component's state. */
    renderState(name: string, type: "geometry", state?: defs.GeometryState[]): boolean;
    /** Renders a component's state. */
    renderState(name: string, type: string, state?: {}): boolean;
    /** Find the element. */
    find(name: string | {
        name: string;
    }): defs.Element;
    /** Coerces a number from a value. */
    coerceNumber(value: string): number;
    /** Formats a value into a string. If 'useBrowserIntlApi' is true then options must be of type 'FormatOptions'. */
    formatNumber(value: number, options: Intl.NumberFormatOptions | FormatOptions, useBrowserIntlApi?: boolean): string;
    /** Formats a value into a string. */
    deriveCalendar(format: defs.DateTimeFormat): Calendar;
    /**
     * Derives the current locale based on the provided facility. If the facility is undefined
     *  then the workflow locale set by the host application (or default if undefined) will be returned.
     */
    deriveLocale(facility?: Facility): string;
    /** Derives the current time zone. */
    deriveTimeZone(facility: Facility): string;
}
