import type { DataDomain } from '@api-client/core/modeling/DataDomain.js';
import { LitElement, PropertyValues } from 'lit';
/**
 * Base class for modeling elements
 *
 * @fires change - When something changed
 * @fires error - When an error occurred. The event detail will contain an Exception object.
 */
export declare class ModelingElement extends LitElement {
    /**
     * The instance of the root DataNamespace.
     */
    accessor root: DataDomain | undefined;
    /**
     * The parent namespace this element belongs to.
     * When rendering a foreign domain, this will be the namespace of the foreign domain.
     * Normally, this is the `key` of the root DataDomain.
     */
    accessor namespace: string | undefined;
    /**
     * The selected object that this element is interested in.
     * @attribute
     */
    accessor selected: string | undefined;
    /**
     * If true, the element is in read-only mode.
     * This means that the element will not allow any modifications to the data.
     * @attribute
     */
    accessor readOnly: boolean | undefined;
    /**
     * Computed property that indicates if the element is a foreign element.
     * A foreign element is one that is not part of the root DataDomain.
     */
    protected get isForeignElement(): boolean;
    /**
     * Computed property that indicates if the element can be edited.
     * An element can be edited if it is not read-only and is not a foreign element.
     */
    protected get canEdit(): boolean;
    constructor();
    protected willUpdate(cp: PropertyValues<this>): void;
    protected handleDomainChange(): void;
    /**
     * A common way for an element to notify a change.
     */
    notifyChange(): void;
    /**
     * Reports an error to the element.
     * It will dispatch an 'error' event with the Exception object as the detail.
     * It unifies the error handling across the application.
     * @param error The error to report.
     */
    reportError(error: Error): void;
}
//# sourceMappingURL=ModelingElement.d.ts.map