import { CSSResult, PropertyValues, TemplateResult } from "lit";
import { DataEntity, DataNamespace } from "@api-client/core/build/browser.js";
import ApiElement from "../ApiElement.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-icon.js';
/**
 * An editor for a data entity.
 *
 * @fires change - When the entity has changed.
 * @fires namechange - When a name of the entity has changed.
 */
export default class EntityFormElement extends ApiElement {
    static get styles(): CSSResult[];
    /**
     * The key of the entity to edit.
     * @attribute
     */
    key?: string;
    /**
     * The read data namespace.
     */
    root?: DataNamespace;
    /**
     * When set it activates the drop zone in the parents list to support drag and drop.
     * @attribute
     */
    parentDropZone?: boolean;
    /**
     * The computed entity when the key or root change.
     */
    protected _entity?: DataEntity;
    protected willUpdate(cp: PropertyValues<this>): void;
    /**
     * Adds a parent entity to this entity.
     * @param parentKey The key of the parent to add.
     */
    addParent(parentKey: string): 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 _computeEntity(): void;
    protected _infoChangeHandler(e: Event): void;
    protected _checkedHandler(e: Event): void;
    protected _dragoverHandler(e: DragEvent): void;
    protected _dropHandler(e: DragEvent): void;
    protected _parentRemoveHandler(e: Event): void;
    /**
     * Removes a parent with the given key.
     * @param key The key of the parent to remove.
     */
    removeParent(key: string): void;
    protected render(): TemplateResult;
    protected _parentsEditorTemplate(entity: DataEntity): TemplateResult;
    protected _parentDropZoneTemplate(): TemplateResult;
    protected _parentsTemplate(entity: DataEntity): TemplateResult;
    protected renderEmptyParentsMessage(): TemplateResult;
    protected _parentsListTemplate(parents: DataEntity[]): TemplateResult;
    protected _parentItemTemplate(item: DataEntity): TemplateResult;
}
//# sourceMappingURL=EntityFormElement.d.ts.map