export type Category = 'chat' | 'image' | 'voice' | 'video' | 'code' | 'document' | 'music'; export type Mode = 'concise' | 'detailed' | 'structured' | 'step-by-step' | 'bullet-points' | 'technical' | 'simple'; export interface PlatformConfig { id: string; label: string; description: string; syntaxHints?: string[]; instructions?: string; instructionsFile?: string; isCustom?: boolean; } export interface ResolvedPlatformConfig extends PlatformConfig { resolvedInstructions?: string; } export interface CategoryConfig { id: Category; label: string; description: string; platforms?: PlatformConfig[]; defaultPlatform?: string; defaultMode: Mode; hasPlatforms: boolean; /** * When true, an optimization with NO explicit platform produces * platform-neutral output instead of falling back to `defaultPlatform`. * Set on text categories (chat/document/code) whose output is portable * prose — so the result isn't silently shaped to one vendor's syntax. * Creative categories (image/video/…) leave this off: their output needs * a concrete platform format to be usable, so the flagship default stands. */ portableByDefault?: boolean; } /** * The live table the rest of the engine reads from. Loaded once at module * import: YAML packs win where present, fallback entries fill any gaps. * * Side effect: missing-pack and parse-failure warnings are written to * stderr by the loader. We don't throw — better to boot with the fallback * than to refuse to start because of a malformed YAML edit. */ export declare const CATEGORIES: CategoryConfig[]; export declare const MODES: { id: Mode; label: string; description: string; }[]; export declare function getCategoryById(id: Category): CategoryConfig | undefined; export declare function getPlatformsForCategory(categoryId: Category): PlatformConfig[]; export declare function getPlatformById(categoryId: Category, platformId: string): PlatformConfig | undefined;