|
|
export interface LoadingState { |
|
|
isLoading: boolean; |
|
|
message: string; |
|
|
progress: number; |
|
|
} |
|
|
|
|
|
export interface CharacterProfile { |
|
|
name: string; |
|
|
description: string; |
|
|
} |
|
|
|
|
|
export interface Panel { |
|
|
panelNumber: number; |
|
|
description: string; |
|
|
dialogue: string; |
|
|
speaker: string; |
|
|
} |
|
|
|
|
|
export interface MangaPage { |
|
|
pageNumber: number; |
|
|
panels: Panel[]; |
|
|
} |
|
|
|
|
|
export type MangaStyle = 'Shonen' | 'Shojo' | 'Seinen' | 'Chibi' | 'Wacky' | 'I don\'t know'; |
|
|
|
|
|
export interface StoryTemplate { |
|
|
id: string; |
|
|
name: string; |
|
|
description: string; |
|
|
structure: string; |
|
|
genre: string; |
|
|
prompt: string; |
|
|
icon: string; |
|
|
} |
|
|
|
|
|
export interface ComicGenerationOptions { |
|
|
includeDialogue: boolean; |
|
|
title: string; |
|
|
story: string; |
|
|
author: string; |
|
|
style: MangaStyle; |
|
|
} |
|
|
|
|
|
export interface NarrativeStructure { |
|
|
act: number; |
|
|
name: string; |
|
|
description: string; |
|
|
keyElements: string[]; |
|
|
} |
|
|
|
|
|
export interface StoryProgression { |
|
|
id: string; |
|
|
title: string; |
|
|
description: string; |
|
|
direction: 'sequel' | 'prequel' | 'side_story' | 'alternate_ending'; |
|
|
synopsis: string; |
|
|
estimatedPages: number; |
|
|
thematicFocus: string; |
|
|
newCharacters?: string[]; |
|
|
plotHooks: string[]; |
|
|
} |
|
|
|
|
|
export interface ComicIteration { |
|
|
id: string; |
|
|
title: string; |
|
|
story: string; |
|
|
author: string; |
|
|
style: MangaStyle; |
|
|
includeDialogue?: boolean; |
|
|
images: string[]; |
|
|
characters: CharacterProfile[]; |
|
|
pages: MangaPage[]; |
|
|
generatedAt: Date; |
|
|
} |
|
|
|
|
|
export interface ComicSeries { |
|
|
seriesTitle: string; |
|
|
author: string; |
|
|
iterations: ComicIteration[]; |
|
|
totalPages: number; |
|
|
createdAt: Date; |
|
|
lastUpdated: Date; |
|
|
totalGenerationTime?: number; |
|
|
performanceSummary?: PerformanceTiming[]; |
|
|
} |
|
|
|
|
|
export interface ExplorationPrompt { |
|
|
showPrompt: boolean; |
|
|
onContinue: () => void; |
|
|
onFinish: (removeApiKey: boolean) => void; |
|
|
generationTime: number; |
|
|
totalPages: number; |
|
|
} |
|
|
|
|
|
export interface OptimizedImage { |
|
|
compressed: string; |
|
|
full: string; |
|
|
width: number; |
|
|
height: number; |
|
|
compressedSize: number; |
|
|
fullSize: number; |
|
|
} |
|
|
|
|
|
export interface CharacterSketch { |
|
|
characterName: string; |
|
|
sketchImage: string; |
|
|
description: string; |
|
|
} |
|
|
|
|
|
export interface EnvironmentSketch { |
|
|
environmentName: string; |
|
|
sketchImage: string; |
|
|
description: string; |
|
|
} |
|
|
|
|
|
export interface GenerationProgress { |
|
|
phase: 'character_analysis' | 'character_sketches' | 'environment_sketches' | 'script_writing' | 'page_generation' | 'completion'; |
|
|
message: string; |
|
|
progress: number; |
|
|
characterSketches?: CharacterSketch[]; |
|
|
environmentSketches?: EnvironmentSketch[]; |
|
|
generatedPages?: { pageNumber: number; image: string; title: string }[]; |
|
|
storyArcSummary?: string; |
|
|
currentStepStartTime?: number; |
|
|
stepTimings?: PerformanceTiming[]; |
|
|
estimatedTimeRemaining?: number; |
|
|
} |
|
|
|
|
|
export interface PerformanceTiming { |
|
|
stepName: string; |
|
|
startTime: number; |
|
|
endTime: number; |
|
|
duration: number; |
|
|
timestamp: string; |
|
|
} |
|
|
|
|
|
export interface StoryArcSummary { |
|
|
overallTheme: string; |
|
|
keyEvents: string[]; |
|
|
characterDevelopment: string[]; |
|
|
narrativeProgression: string; |
|
|
emotionalJourney: string; |
|
|
} |