// Companion types export type CompanionType = "fee" | "einhorn" | "fuchs" | "eule"; export type KeyboardLayout = "de" | "ch"; // Level status for the forest map export type LevelStatus = "locked" | "current" | "completed"; // Progress store export interface Progress { id: 1; // singleton row currentLevel: number; completedLevels: number[]; totalSessions: number; sessionDates: string[]; // ISO date strings (days only) selectedCharacter: CompanionType; selectedLayout: KeyboardLayout; } // Companion assets store export interface CompanionAssets { characterType: CompanionType; characterSheet: Blob; avatarImage: Blob; generatedAt: string; // ISO date } // Style reference store export interface StyleReference { id: 1; // singleton imageBlob: Blob; generatedAt: string; } // Forest element store export interface ForestElement { id?: number; // auto-increment levelCompleted: number; imageBlob: Blob; imagePrompt: string; description: string; companionText: string; position: { x: number; y: number }; createdAt: string; } // Settings store export interface Settings { id: 1; // singleton audioEnabled: boolean; apiKey: string; } // Level definition (used in game/levels.ts) export interface Level { level: number; newKeys: string[]; allKeys: string[]; // cumulative keys up to this level fingerMap: Record; // key -> CSS variable name for finger color } // Typing exercise state export interface TypingExerciseState { currentLetterIndex: number; letters: string[]; intervalMs: number; correctStreak: number; totalCorrect: number; totalErrors: number; } // Screen names export type ScreenName = "welcome" | "forest" | "lesson" | "reward" | "parent";