import type { Quest } from '@codewithdan/ai-repo-adventures-core/adventure'; export type OutputFormat = 'html' | 'md' | 'txt' | 'json' | 'xml'; export interface AdventureData { title: string; story: string; theme: string; quests: Quest[]; questContents: Map; } /** * Strategy interface for formatting adventure data */ export interface FormatStrategy { /** * Format the adventure data according to the strategy * Optional for multi-file formats that use generateFiles() instead */ format?(data: AdventureData): string; /** * Generate files for multi-file formats (e.g., HTML with multiple pages) * Optional for single-file formats that use format() instead */ generateFiles?(): Promise; /** * Get the file extension for this format */ getFileExtension(): string; /** * Get the output filename * Not applicable for multi-file formats */ getFileName(): string; /** * Check if this strategy generates multiple files */ isMultiFile(): boolean; } /** * Base abstract class for format strategies with common utilities */ export declare abstract class BaseFormatStrategy implements FormatStrategy { format?(data: AdventureData): string; generateFiles?(): Promise; abstract getFileExtension(): string; getFileName(): string; isMultiFile(): boolean; protected getQuestContent(quest: Quest, data: AdventureData): string | null; } //# sourceMappingURL=format-strategy.d.ts.map