/** * The spec's `hostContext.styles.variables` record, complete (guuey#1128). * * `@modelcontextprotocol/ext-apps` types `McpUiStyles` as * `Record` — every key PRESENT, * value optional — and says why in its own doc: "rather than * `Partial>` for compatibility with Zod schema generation. * Both are functionally equivalent for validation." So a host that announces * a partial palette must hand the type a complete record whose unset slots * are `undefined`. On the wire the two are the same bytes (`JSON.stringify` * drops `undefined`), the app-side `applyHostStyleVariables` skips * `undefined` values, and ggui's bridge takes `string | undefined` per slot. * * {@link EMPTY_HOST_STYLE_VARIABLES} is that complete record with nothing * set — a MIRROR of the spec's key union that the compiler enforces both * ways (`Record`: a key missing here or a * key the spec dropped is a type error the moment the dependency moves), and * `host-style-variables.test.ts` pins it against the spec's own zod schema * at runtime. {@link hostStyleVariablesRecord} completes a partial palette. */ import type { McpUiStyleVariableKey, McpUiStyles } from "@modelcontextprotocol/ext-apps"; export type { McpUiStyleVariableKey, McpUiStyles }; /** Every spec style-variable key, unset. Spread a partial palette over it. */ export declare const EMPTY_HOST_STYLE_VARIABLES: Readonly>; /** The spec-typed record for a partial palette: the announced slots set, every other slot `undefined`. */ export declare function hostStyleVariablesRecord(partial: Readonly>): McpUiStyles; /** The slots a record actually announces (the wire's view of it). */ export declare function announcedHostStyleVariables(record: Readonly): Partial>; //# sourceMappingURL=host-style-variables.d.ts.map