import type { ElementTemplateHandleSlotsCommand, RuntimeOptionsCommand, SerializableValue, TypedElementAttributesCommand, UpdateTypedListItemCommand } from '../protocol/types.js';
export declare const BUILTIN_RAW_TEXT_TEMPLATE_KEY = "_et_builtin_raw_text";
export declare class BackgroundElementTemplateInstance {
    instanceId: number;
    type: string;
    parent: BackgroundElementTemplateInstance | null;
    firstChild: BackgroundElementTemplateInstance | null;
    lastChild: BackgroundElementTemplateInstance | null;
    nextSibling: BackgroundElementTemplateInstance | null;
    previousSibling: BackgroundElementTemplateInstance | null;
    __slotIndex: number;
    attributeSlots: SerializableValue[];
    private rawAttributeSlots;
    protected isMaterializedOnMainThread: boolean;
    private listItemPlatformInfo;
    get parentNode(): BackgroundElementTemplateInstance | null;
    get childNodes(): BackgroundElementTemplateInstance[];
    get elementSlots(): BackgroundElementTemplateInstance[][];
    nodeType: number;
    constructor(type: string, initialAttributeSlots?: SerializableValue[]);
    emitCreate(): void;
    private needsMainThreadCreate;
    private markSubtreeDetachedFromMainThread;
    releaseDetachedSubtreeFromManager(): void;
    private restoreManagerRegistration;
    private releaseSubtreeFromManager;
    emitMainThreadCreateIfNeeded(): void;
    protected canEmitUpdatePatch(): boolean;
    protected cleanupDetachedChildForLifetimeRemoval(child: BackgroundElementTemplateInstance, canEmitUpdatePatch: boolean): void;
    appendChild(child: BackgroundElementTemplateInstance): void;
    insertBefore(child: BackgroundElementTemplateInstance, beforeChild: BackgroundElementTemplateInstance | null, silent?: boolean): void;
    removeChild(child: BackgroundElementTemplateInstance, silent?: boolean): void;
    tearDown(): void;
    queueRefCleanupForSubtree(): void;
    getRawAttributeSlot(attrSlotIndex: number): unknown;
    markMaterializedByHydration(): void;
    prepareAttributeSlotsForNative(options?: {
        publishRefEffects?: boolean;
    }): void;
    prepareAttributeSlotsForHydration(): void;
    setAttribute(key: string, value: unknown): void;
    get text(): string;
    set text(value: string);
    get data(): string;
    set data(value: string);
    getListItemPlatformInfo(): Record<string, SerializableValue>;
    private notifyParentListOfLogicalChildUpdate;
}
export declare class BackgroundTypedElementTemplateInstance extends BackgroundElementTemplateInstance {
    constructor(type: string);
    emitCreate(): void;
    setAttribute(key: string, value: unknown): void;
    protected getTypedAttributesForCreate(): TypedElementAttributesCommand | null;
    protected getElementSlotsForCreate(): ElementTemplateHandleSlotsCommand | null;
    protected getRuntimeOptionsForCreate(): RuntimeOptionsCommand | null;
}
export declare class BackgroundListElementTemplateInstance extends BackgroundTypedElementTemplateInstance {
    constructor();
    protected getRuntimeOptionsForCreate(): RuntimeOptionsCommand;
    insertBefore(child: BackgroundElementTemplateInstance, beforeChild: BackgroundElementTemplateInstance | null, silent?: boolean): void;
    removeChild(child: BackgroundElementTemplateInstance, silent?: boolean): void;
    notifyLogicalChildUpdated(child: BackgroundElementTemplateInstance): void;
    private emitTypedListItemInsert;
    private emitTypedListItemRemove;
    private emitTypedListItemUpdate;
}
export declare function toUpdateTypedListItemCommand(child: BackgroundElementTemplateInstance): UpdateTypedListItemCommand;
export declare function collectElementTemplateSubtreeHandleIds(root: BackgroundElementTemplateInstance): number[];
