/** * Component registration registry. * * The registry is responsible for coordinating when and how custom elements are * defined. It supports eager constructors as well as lazy loaders, ensuring * we never attempt to define the same tag twice (regardless of SSR or runtime). */ export interface ComponentRegistration { /** Custom element tag name (will be normalised to lower-case). */ tag: string; /** Optional constructor for eager registration. */ element?: CustomElementConstructor; /** * Lazy loader returning a constructor or a module with a default export. The * loader can be used for code splitting or progressive enhancement. */ loader?: () => Promise; /** Whether the component should be registered immediately (default: true). */ eager?: boolean; /** Native Custom Elements options (e.g. extends). */ options?: ElementDefinitionOptions; } /** * Determines whether a tag has already been registered (either eagerly or via * native customElements registry). */ export declare function hasComponent(tag: string): boolean; /** * Returns all tags that have been registered through the registry. Native * customElements definitions that bypassed the registry are not guaranteed to * be present. */ export declare function getRegisteredComponents(): string[]; /** * Registers a component. The operation is idempotent; attempting to register * the same tag twice is a no-op unless the next registration attempts to supply * a different constructor (in which case an error is thrown). */ export declare function registerComponent(config: ComponentRegistration): Promise; /** * Resolves the constructor for the provided registration and ensures the * custom element is defined (when run in a browser environment). */ export declare function resolveComponent(tag: string): Promise; //# sourceMappingURL=component-registry.d.ts.map