export interface DesignMdRef { $ref: string; } export type DesignMdValue = string | number | boolean | null | DesignMdRef | DesignMdNode | DesignMdValue[]; export interface DesignMdNode { [key: string]: DesignMdValue; } export interface ParsedDesignMd { frontmatter: DesignMdNode; body: string; } export interface FlattenedDesignToken { path: string; group: string; name: string; value: DesignMdValue; kind: "scalar" | "ref"; cssVar: string; ref?: string; } export interface ComponentDecl { id: string; aliases: string[]; variants: string[]; states: string[]; anatomy: string[]; tokens: Record; } export type DesignMdInitSource = "blank" | string | { kind: "blank"; } | { kind: "system"; id: string; } | { kind: "starter"; slug: string; } | { system_id?: string; starter_slug?: string; slug?: string; id?: string; blank?: boolean; }; export interface DesignMdInitResult extends ParsedDesignMd { path: string; tokens: FlattenedDesignToken[]; source: { kind: "blank"; } | { kind: "system"; id: string; } | { kind: "starter"; slug: string; }; } export interface DesignMdUpdateSet { group: string; name: string; value: DesignMdValue; } export interface DesignMdUpdateRename { group: string; from?: string; name?: string; to?: string; new_name?: string; } export interface DesignMdUpdateRemove { group: string; name?: string; path?: string; } export interface DesignMdUpdateResult extends ParsedDesignMd { path: string; tokens: FlattenedDesignToken[]; operation: { kind: "set"; path: string; } | { kind: "rename"; from: string; to: string; } | { kind: "remove"; path: string; }; } export declare function parseDesignMd(source: string): ParsedDesignMd; export declare function serializeDesignMd(doc: ParsedDesignMd): string; export declare function flattenDesignTokens(frontmatter: DesignMdNode): FlattenedDesignToken[]; export declare function extractComponentManifest(frontmatter: DesignMdNode): { components: ComponentDecl[]; problems: string[]; }; export declare function readDesignMd(path: string): ParsedDesignMd & { path: string; tokens: FlattenedDesignToken[]; }; export declare function initDesignMd(path: string, source: DesignMdInitSource): Promise; export declare function updateDesignMd(path: string, mutation: { set?: DesignMdUpdateSet; rename?: DesignMdUpdateRename; remove?: DesignMdUpdateRemove; }): DesignMdUpdateResult;