import type { z } from 'zod'; import type { TNode } from '@tempots/dom'; export interface ComponentNameChecker { has(name: string): boolean; } export interface DefinedComponent = z.ZodObject> { name: string; props: T; description: string; renderer: (props: z.infer, children: TNode[]) => TNode; } export interface PromptOptions { examples?: boolean; additionalRules?: string[]; groups?: ComponentGroup[]; } export interface ComponentGroup { name: string; description: string; components: string[]; } export interface Library extends ComponentNameChecker { readonly components: ReadonlyMap; readonly root: string | undefined; get(name: string): DefinedComponent | undefined; has(name: string): boolean; prompt(options?: PromptOptions): string; toJSONSchema(): Record; extend(config: { components?: DefinedComponent[]; root?: string; }): Library; }