import { StoreApi } from 'zustand/vanilla'; import { Character } from '../Character/types'; import { Enemy } from '../Enemy/types'; import { Encounter } from '../World/types'; import { MapName } from '../World/map.library'; import { Item, Equipment, EquipmentSlot } from '../Items/types'; import { DialogueTree, DialogueChoice } from '../NPCs/types'; import { PhilosophicalAlignment } from '../Philosophy/types'; import { GameState } from './types'; import { GameAction } from './actions.types'; import { GameEventEmitter } from './events'; import { PersistenceAdapter } from './persistence/types'; export interface CombatEndReport { outcome: 'victory' | 'defeat' | 'friendship' | 'flee'; xpGained: number; loot: Item[]; friendshipReward?: { narrative?: string; alignmentShift?: PhilosophicalAlignment; codexEntryUnlocked?: { id: string; title: string; }; factionReputationShift?: { [factionId: string]: number; }; }; } export interface GameActions { dispatch: (action: GameAction) => void; startCombat: (target: Enemy | Encounter) => void; endCombat: (outcome: CombatEndReport['outcome'], finalPlayer?: Character) => CombatEndReport; moveToNode: (nodeId: string) => void; travelToMap: (mapName: MapName) => void; processNode: () => void; applyDialogue: (tree: DialogueTree, choice: DialogueChoice) => void; addItem: (item: Item) => void; removeItem: (itemId: string) => void; useConsumable: (itemId: string) => void; stackItem: (itemId: string, amount: number) => void; equipItem: (item: Equipment) => void; unequipItem: (slot: EquipmentSlot) => void; levelUp: () => void; allocateStatPoint: (stat: 'heart' | 'body' | 'mind') => void; learnSkill: (skillId: string) => void; save: () => void; shiftMoralMeter: (delta: number, gating?: { min?: number; max?: number; }) => void; shiftPhilosophicalAlignment: (delta: Partial) => void; resetRun: (opts: { keepCharacter: boolean; }) => GameState; unlockCodexEntry: (entryId: string) => void; } export type GameStore = GameState & GameActions; export declare function createGameStore(adapter: PersistenceAdapter, overrides?: Partial, emitter?: GameEventEmitter): StoreApi; export type { StoreApi }; export declare const selectPlayer: (s: GameStore) => Character; export declare const selectIsInCombat: (s: GameStore) => boolean; export declare const selectInventory: (s: GameStore) => Item[]; export declare const selectVersion: (s: GameStore) => number; export declare const selectMoralMeter: (s: GameStore) => number; //# sourceMappingURL=store.d.ts.map