import { UmbLitElement } from '../lit-element/index.js';
import type { ClassConstructor, ManifestElementAndApi } from '../../../libs/extension-api/index.js';
export declare abstract class UmbExtensionElementAndApiSlotElementBase<ManifestType extends ManifestElementAndApi> extends UmbLitElement {
    #private;
    get alias(): string | undefined;
    set alias(newVal: string | undefined);
    set props(newVal: Record<string, unknown> | undefined);
    get props(): Record<string, unknown> | undefined;
    protected _api: ManifestType['API_TYPE'] | undefined;
    protected _element: ManifestType['ELEMENT_TYPE'] | undefined;
    abstract getExtensionType(): string;
    abstract getDefaultElementName(): string;
    getDefaultApiConstructor?(): ClassConstructor<any>;
    /**
     * Called when the API is changed.
     * @protected
     * @param {(ManifestType['API_TYPE'] | undefined)} api
     * @memberof UmbExtensionElementAndApiSlotElementBase
     */
    protected apiChanged(api: ManifestType['API_TYPE'] | undefined): void;
    /**
     * Called when the element is changed.
     * @protected
     * @param {(ManifestType['ELEMENT_TYPE'] | undefined)} element
     * @memberof UmbExtensionElementAndApiSlotElementBase
     */
    protected elementChanged(element: ManifestType['ELEMENT_TYPE'] | undefined): void;
    /**
     * Render the element.
     * @returns {*}
     * @memberof UmbExtensionElementAndApiSlotElementBase
     */
    render(): ManifestType["ELEMENT_TYPE"] | undefined;
    /**
     * Disable the Shadow DOM for this element. This is needed because this is a wrapper element and should not stop the event propagation.
     */
    protected createRenderRoot(): this;
}
