import { CharacterInDungeon, ResourcesType } from './character.types';
import { Stats } from './stats.types';
export type ActionType = 'attack' | 'combo' | 'special' | 'item';
export interface CombatContext {
    turnNumber: number;
    roomIndex: number;
    waveIndex: number;
    dungeonId: string;
}
export interface Action {
    type: ActionType;
    actor: string;
    targets: string[];
    value: number;
    effects?: StatusEffect[];
}
export interface StatusEffect {
    type: 'buff' | 'debuff' | 'dot' | 'hot';
    stat: keyof Stats;
    value: number;
    duration: number;
    source: string;
}
export interface TurnInfo {
    round: number;
    activeEntity: string;
    availableActions: ActionType[];
    timeline: string[];
}
export interface TargetingCriteria {
    healthThreshold?: number;
    preferredTargets?: string[];
    excludedTargets?: string[];
    targetCount: number;
    targetCondition?: (target: CharacterInDungeon) => boolean;
}
export interface ActionConditions {
    resourceCost?: number;
    resourceType?: ResourcesType;
    cooldown?: boolean;
    customCondition?: (character: CharacterInDungeon) => boolean;
}
export interface ActionStrategy {
    type: CombatActionType;
    conditions: ActionConditions;
    targeting: TargetingCriteria;
    priority: number;
}
export declare enum CombatActionType {
    ATTACK = "attack",
    HEAL = "heal",
    ITEM = "item",
    COMBO = "combo",
    SPECIAL = "special",
    DEATH = "death",
    WAVE_COMPLETE = "wave_complete",
    ROOM_COMPLETE = "room_complete",
    DUNGEON_COMPLETE = "dungeon_complete",
    DUNGEON_FAILED = "dungeon_failed"
}
export interface CombatResources {
    health: number;
    maxHealth: number;
    mana: number;
    maxMana: number;
}
export interface CombatRewards {
    experience?: number;
    gold?: number;
    items?: string[];
}
export interface CombatAction {
    type: CombatActionType;
    sourceId: string;
    targetId?: string;
    damage?: number;
    isCritical?: boolean;
    timestamp?: Date;
    resources?: CombatResources;
    effects?: string[];
    rewards?: CombatRewards;
    turnNumber: number;
    roomNumber: number;
    waveNumber: number;
    dungeonId: string;
}
export interface CombatTurn {
    turnNumber: number;
    roomNumber: number;
    waveNumber: number;
    actions: CombatAction[];
    timestamp: Date;
}
//# sourceMappingURL=combat.types.d.ts.map