import { DataNamespace, DataProperty, DataPropertyType } from "@api-client/core/build/browser.js";
import { CSSResult, TemplateResult, nothing, PropertyValues } from "lit";
import ApiElement from "../ApiElement.js";
import type { SupportedInputTypes } from "../../types/input.js";
import '../../define/ui/ui-text-field.js';
import '../../define/ui/ui-checkbox.js';
import '../../define/ui/ui-divider.js';
import '../../define/ui/ui-icon-button.js';
import '../../define/ui/ui-list.js';
import '../../define/ui/ui-list-item.js';
import '../../define/ui/ui-dropdown-list.js';
import '../../define/ui/ui-icon.js';
interface IInputTemplateOptions {
    type: DataPropertyType;
    name: string;
    label: string;
    handler: (e: Event) => void;
    value?: unknown;
    addButton?: boolean;
}
export default class PropertyFormElement extends ApiElement {
    static get styles(): CSSResult[];
    /**
     * The key of the property to edit.
     */
    key?: string;
    /**
     * The read data namespace.
     */
    root?: DataNamespace;
    /**
     * The computed entity when the key or root change.
     */
    protected _property?: DataProperty;
    willUpdate(cp: PropertyValues<this>): void;
    /**
     * Computes the view value for the property.
     * This should be called before the update is complete so this won't trigger another update.
     */
    protected _computeProperty(): void;
    protected _infoChangeHandler(e: Event): void;
    setType(value: DataPropertyType): void;
    protected typeSelectHandler(e: CustomEvent): void;
    protected _checkedHandler(e: Event): void;
    protected defaultValueHandler(e: CustomEvent): void;
    /**
     * Sets a new defaultValue on the property schema
     * @param value The default value to set. Empty to remove.
     */
    setDefaultValue(value?: string): void;
    /**
     * Adds an example value to the current property's schema.
     * @param value The example value to add
     */
    addExample(value: string): void;
    /**
     * Removes an example value at position.
     * @param index The position from which to remove the example value.
     */
    removeExample(index: number): void;
    protected exampleAddHandler(e: Event): void;
    protected exampleRemoveHandler(e: Event): void;
    /**
     * Adds an enum value to the current property's schema.
     * @param value The enum value to add
     */
    addEnum(value: string): void;
    /**
     * Removes an enum value at position.
     * @param index The position from which to remove the enum value.
     */
    removeEnum(index: number): void;
    protected enumAddHandler(e: Event): void;
    protected enumRemoveHandler(e: Event): void;
    protected _getAdapted(dataProperty: DataProperty): DataProperty;
    protected render(): TemplateResult;
    protected renderSchemaEditor(item: DataProperty): TemplateResult | typeof nothing;
    protected renderDefaultValueInput(item: DataProperty): TemplateResult | typeof nothing;
    protected renderExamplesEditor(item: DataProperty, examples?: string[]): TemplateResult | typeof nothing;
    protected renderExampleInput(item: DataProperty): TemplateResult;
    protected renderExampleList(examples?: string[]): TemplateResult;
    protected renderEnumEditor(item: DataProperty, values?: string[]): TemplateResult | typeof nothing;
    protected renderEnumInput(item: DataProperty): TemplateResult;
    protected renderEnumList(values?: string[]): TemplateResult;
    protected propertyToInputType(type: DataPropertyType): SupportedInputTypes;
    /**
     * Renders an input that depends on the property type.
     */
    protected renderTypedInput(opts: IInputTemplateOptions): TemplateResult;
    protected renderTextField(opts: IInputTemplateOptions): TemplateResult;
    protected renderNilInput(opts: IInputTemplateOptions): TemplateResult;
    protected renderBooleanInput(opts: IInputTemplateOptions): TemplateResult;
    protected renderTypeSelector(item: DataProperty): TemplateResult;
}
export {};
//# sourceMappingURL=PropertyFormElement.d.ts.map