import { type TemplateResult } from 'lit';
import type { DomainProperty } from '@api-client/core/modeling/DomainProperty.js';
import type { DomainEntity } from '@api-client/core/modeling/DomainEntity.js';
import { DialogBuilder } from '../../builders/DialogBuilder.js';
import '../../md/checkbox/ui-checkbox.js';
import '../../md/text-field/ui-outlined-text-field.js';
import '../../md/select/ui-select.js';
import '../../md/select/ui-option.js';
export declare abstract class TaxonomyDialog<T extends object = Record<string, unknown>> extends DialogBuilder {
    /**
     * A reference to the form element
     */
    renderRoot?: HTMLFormElement;
    static title: string;
    /**
     * The configuration object for the taxonomy.
     * This object is used to store the state of the form.
     */
    config: T;
    /**
     * The original configuration object used to track changes.
     * This is a deep clone of the config passed to the constructor.
     */
    private originalConfig;
    constructor(config: T);
    /**
     * Checks if there are unsaved changes by comparing the current config
     * with the original config.
     */
    protected hasUnsavedChanges(): boolean;
    protected createForm(): HTMLFormElement;
    protected formCallback(event: Event): Promise<void>;
    /**
     * Removes the dialog from the DOM and removes all listeners.
     * The dialog does not call any lifecycle methods.
     */
    dispose(): void;
    run(): Promise<void>;
    requestUpdate(): void;
    /**
     * A handler for any of the checkboxes in the form.
     * Updates the `config`
     */
    protected handleBooleanChange(e: Event): void;
    protected handleTextChange(e: Event): void;
    protected handleSelectChange(e: Event): void;
    listComputedProperties(entity: DomainEntity, opts?: {
        exclude?: string[];
        types?: string[];
    }): DomainProperty[];
    abstract render(): TemplateResult;
}
//# sourceMappingURL=TaxonomyDialog.d.ts.map