/** The `config.json` block shape — dependencies, description, and inference-modal settings. */ export interface InferenceConfig { title?: string; dataTitle?: string; submitTitle?: string; } export interface BulbConfig { dependencies?: Record; description?: string; inference?: InferenceConfig; ts?: { jsxImportSource?: string; }; } /** Parse the `config.json` block, returning {} for empty or malformed JSON. */ export declare function parseConfig(config: string): BulbConfig; /** Where typebulb.com-hosted bulb assets serve from (TB-Assets-Push.md Invariant 1). */ export declare const HOSTED_ASSETS_ORIGIN = "https://assets.typebulb.com"; /** The hosted-assets base derived from a bulb's identity (TB-Assets-Push.md Invariant 2: * derived, never stored). An identity-less bulb has no remote base — it can't push either. */ export declare const hostedAssetsBase: (userSlug: string, slug: string) => string; /** * Content type for a served file, from its extension. `.wasm` must be `application/wasm` * for `WebAssembly.instantiateStreaming`; `.svg` must be `image/svg+xml` or an `` * won't render it (no sniffing for SVG). Unknown extensions are `application/octet-stream` * — browsers download those, never render. Shared by the CLI's static routes (which serve * real `.js`: the mirror's bundled client, `--replace` dirs) and the API worker's asset PUT * — which derives the stored type from this table, never the upload header, and refuses * document/script extensions before consulting it, so the `.js`/`.css` rows are unreachable * on the hosted-asset path (TB-Assets-Push.md Invariant 9). */ export declare function contentTypeFor(filePath: string): string; /** The offending extension when a path names browser code/markup — refused as an asset * everywhere (the hosted PUT and the local `/assets/` route alike): a bulb's code and * markup live in the bulb; assets are media and data (TB-Assets-Push.md Invariant 9). * `undefined` for everything else — media, data, and unknown extensions all serve. */ export declare function forbiddenAssetExt(relpath: string): string | undefined; /** Strip inline markdown (links, emphasis, code, headings) for plain-text contexts like meta descriptions. */ export declare function stripMarkdown(text: string): string; /** Plain-text description from a `config.json` string: markdown stripped, single line, ≤200 chars. * Logic duplicated in client/_worker.js (edge runtime, no build step). */ export declare function extractDescription(config: string | undefined): string; //# sourceMappingURL=config.d.ts.map