import { type HTMLTemplateResult, type ReactiveElement } from 'lit'; import { Controller } from '../Controller/index.js'; /** * A part of a component, extracted into a class of its own without introducing a component boundary. * * A part contributes a `template` to its host and may declare its own state, queries, events and * event listeners with the very same decorators a component uses. As a part shares the update * lifecycle of its host, changing its state re-renders the host as a whole - no properties have to * be passed down and no updates have to be propagated by hand. * * This makes a part the tool of choice to break up a large component, whereas a component should be * introduced whenever the extracted unit is reusable on its own. */ export declare abstract class ComponentPart extends Controller { protected readonly host: THost; constructor(host: THost); /** The template of the part which its host renders. */ get template(): HTMLTemplateResult; /** * Requests an update of the host. * * When a property key is provided, the change is tracked in the host's `changedProperties` * by a key unique to this part and property, so that it can neither collide with a property * of the host nor with one of another part. */ requestUpdate(propertyKey?: PropertyKey, oldValue?: unknown): void; } //# sourceMappingURL=ComponentPart.d.ts.map