import type { Dimensions } from "../../../../core/domain/types.js"; import type { FishMarineLife } from "../../domain/models/OceanModels.js"; import type { IFishAnimator } from "../contracts/IFishAnimator.js"; import type { IFishFactory } from "../contracts/IFishFactory.js"; import type { IFishSpineController } from "../contracts/IFishSpineController.js"; import type { IFishMovementController } from "../contracts/IFishMovementController.js"; import type { IFishFlockingCalculator } from "../contracts/IFishFlockingCalculator.js"; import type { IFishVisualUpdater } from "../contracts/IFishVisualUpdater.js"; import type { IFishMoodManager } from "../contracts/IFishMoodManager.js"; import type { IFishWobbleAnimator } from "../contracts/IFishWobbleAnimator.js"; import type { IFishInteractionHandler } from "../contracts/IFishInteractionHandler.js"; import type { IFishRareBehaviorHandler } from "../contracts/IFishRareBehaviorHandler.js"; import type { IFishHomeZoneHandler } from "../contracts/IFishHomeZoneHandler.js"; import type { IFishHuntingHandler } from "../contracts/IFishHuntingHandler.js"; import type { SpineChain } from "../../physics/SpineChain.js"; import type { IFishCursorAvoidance, PointerState } from "../contracts/IFishCursorAvoidance.js"; /** * FishAnimator - Orchestrates fish animation subsystems * * Coordinates creation, physics, movement, flocking, mood, and visual updates * by delegating to specialized services. Manages spawn scheduling and * fish lifecycle. */ export declare class FishAnimator implements IFishAnimator { private readonly fishFactory; private readonly spineController; private readonly movementController; private readonly flockingCalculator; private readonly visualUpdater; private pendingSpawns; private moodManager; private wobbleAnimator; private interactionHandler; private rareBehaviorHandler; private homeZoneHandler; private huntingHandler; private cursorAvoidance; constructor(fishFactory: IFishFactory, spineController: IFishSpineController, movementController: IFishMovementController, flockingCalculator: IFishFlockingCalculator, visualUpdater: IFishVisualUpdater, moodManager?: IFishMoodManager, wobbleAnimator?: IFishWobbleAnimator, interactionHandler?: IFishInteractionHandler, rareBehaviorHandler?: IFishRareBehaviorHandler, homeZoneHandler?: IFishHomeZoneHandler, huntingHandler?: IFishHuntingHandler, cursorAvoidance?: IFishCursorAvoidance); initializeFish(dimensions: Dimensions, count: number, useSpineChain?: boolean, spawnOnScreen?: boolean): Promise; createFish(dimensions: Dimensions, useSpineChain?: boolean, spawnOnScreen?: boolean): FishMarineLife; private static DEBUG_POSITION_JUMPS; private static JUMP_THRESHOLD; updateFish(fish: FishMarineLife[], dimensions: Dimensions, frameMultiplier: number, animationTime: number, pointer?: PointerState | null): FishMarineLife[]; /** * Get spine chain for a fish (for external access) */ getSpineChain(fish: FishMarineLife): SpineChain | undefined; /** * Get wobble offset for a fish (for rendering) */ getWobbleOffset(fish: FishMarineLife): import("../../domain/types/fish-personality-types.js").WobbleOffset; /** * Reposition a fish's spine chain by a delta * Call this after manually moving a fish's position to keep physics in sync */ repositionFish(fish: FishMarineLife, dx: number, dy: number): void; getFishCount(quality: string): number; scheduleSpawn(spawnTime: number): void; processPendingSpawns(dimensions: Dimensions, currentTime: number): FishMarineLife[]; private randomInRange; /** * Get the rare behavior handler for manual triggering in lab */ getRareBehaviorHandler(): IFishRareBehaviorHandler; /** * Get the home zone handler for visualization in lab */ getHomeZoneHandler(): IFishHomeZoneHandler; /** * Get the interaction handler for manual triggering in lab */ getInteractionHandler(): IFishInteractionHandler; /** * Get the hunting handler for visualization and manual triggering in lab */ getHuntingHandler(): IFishHuntingHandler; } //# sourceMappingURL=FishAnimator.d.ts.map