export interface Hooks { values: T[]; deps: unknown[][]; effects: (() => void | (() => void))[]; cleanup: (() => void)[]; } export declare function hooks(config: { oncreate?: (h: Hooks, c: Component, i: number) => T; onupdate?: (h: Hooks, c: Component, i: number) => T; }): T; export declare abstract class Component extends HTMLElement { private updating; $root: ShadowRoot; hooks: Hooks; protected abstract render(): void; protected connectedCallback(): void; protected disconnectedCallback(): void; update(): void; private affect; }