/** * [WHO]: Provides BuddyPetController + BuddyPetContext — desktop-pet lifecycle * (syncBuddyPet enable/species handling, setBuddyPetState with reset timer) * [FROM]: Depends on injected host capability closures + BuddyPetComponent; * no InteractiveMode reference * [TO]: Consumed by modes/interactive/interactive-mode.ts (held lazily as `this.buddyPetHost` * behind thin delegators: syncBuddyPet / setBuddyPetState) * [HERE]: modes/interactive/controllers/buddy-pet-controller.ts — P7 C-3d (extracted from * InteractiveMode; behavior-preserving move) */ import type { Container, TUI } from "@catui/tui"; import type { SettingsManager } from "../../../core/platform/config/settings-manager.js"; import { type BuddyState } from "../components/buddy/pet-sprites.js"; /** Host capabilities needed by the buddy-pet controller. */ export interface BuddyPetContext { readonly settingsManager: SettingsManager; readonly buddySlot: Container; readonly ui: TUI; renderWidgets(): void; requestRender(): void; } export declare class BuddyPetController { private readonly ctx; private pet; private species; private resetTimer; constructor(ctx: BuddyPetContext); /** Stop the pet and cancel any pending reset timer (shutdown path). */ dispose(): void; private clearBuddyPetResetTimer; syncBuddyPet(): void; setBuddyPetState(state: BuddyState, speechBubble?: string, options?: { resetTo?: BuddyState; afterMs?: number; }): void; }