import { type BlockRegistry } from "../registry.js"; import { type BlockSpec } from "../types.js"; /** * Canonical React-free specs for the standard library, used by BOTH apps' server * / shared registries (`plan-block-registry.ts`, `nfm-registry.ts`). Each carries * only the parts the server path touches — `schema` + `mdx` + metadata for the * agent schema export — with a render-only `Read` stub. The full client specs * (with real React `Read`/`Edit`) live in `./specs.tsx`; both share the identical * `schema`/`mdx` config so inline source can never drift from what renders. * * `table` keeps the core default `type` here; content's server registry renames * it to `table-block` via {@link LibraryBlockConfigOverrides}. The descriptions * are the neutral agent-schema phrasing; an app that curates a longer * description for a block (e.g. plan's hand-drawn Mermaid, plan's detailed file * tree) passes an override rather than re-authoring the spec. */ export declare const libraryBlockConfigs: BlockSpec[]; /** * Per-block overrides for {@link registerLibraryBlockConfigs}, keyed by canonical * `type`. Servers tweak only the agent-facing fields that legitimately differ: * content re-types `table` → `table-block`; plan curates a longer Mermaid and * file-tree description. The `schema` / `mdx` config always stays shared. */ export type LibraryBlockConfigOverrides = Record, "type" | "label" | "description" | "notionCompatible">>>; /** * Register the React-free standard-library config stubs into a server / shared * {@link BlockRegistry}. Both `plan-block-registry.ts` and `nfm-registry.ts` call * this, then register only their app-specific block configs (plan adds callout / * diagram / wireframe / question-form) on top — so the shared library lives in * exactly one place across browser AND server registries. */ export declare function registerLibraryBlockConfigs(registry: BlockRegistry, options?: { overrides?: LibraryBlockConfigOverrides; }): void; //# sourceMappingURL=server-specs.d.ts.map