import type { AccessorFactory, ComponentDef, ComponentId, ComponentOptions, Schema } from '@ecsia/schema'; import type { ColumnLayout } from '../memory/index.js'; export declare const UNREGISTERED: ComponentId; export type DefKind = 'component' | 'relation-presence' | 'relation-overflow'; export interface ComponentRuntime extends ComponentDef { id: ComponentId; accessorFactory: AccessorFactory | null; readonly columnLayouts: readonly ColumnLayout[]; readonly defKind: DefKind; readonly restrictedToMainThread: boolean; /** True iff the component carries >=1 rich (sidecar-backed) field. */ readonly hasRichFields: boolean; } export declare function defineComponent(schema: S, options: ComponentOptions & ({ readonly name: N; readonly brand?: B; } | { readonly brand: B; readonly name?: N; })): ComponentDef; export declare function defineTag(name: N): ComponentDef, N>; export declare function registerComponentId(def: ComponentDef, id: ComponentId): void; //# sourceMappingURL=define.d.ts.map