import { Equipment } from "./item.types";
import { DamageType, ExtendedStats, Stats } from "./stats.types";
export interface AnimationConfig {
    key: string;
    frameStart: number;
    frameEnd: number;
    frameRate?: number;
    repeat: boolean;
}
export interface CharacterAnimations {
    idle?: AnimationConfig;
    attack?: AnimationConfig;
    combo?: AnimationConfig;
    special?: AnimationConfig;
    hurt?: AnimationConfig;
    death?: AnimationConfig;
    skill?: AnimationConfig;
    walk?: AnimationConfig;
    heal?: AnimationConfig;
}
export declare enum Role {
    TANK = "tank",
    MELEE = "melee",
    RANGED = "ranged",
    HEALER = "healer"
}
export interface TeamSlots {
    tank: number | null;
    melee: number | null;
    ranged: number | null;
    healer: number | null;
}
export declare enum ResourcesType {
    NONE = "none",
    MANA = "mana",
    RAGE = "rage",
    ENERGY = "energy"
}
export declare enum SkillType {
    ATTACK = "attack",
    COMBO = "combo",
    SPECIAL = "special",
    SKILL = "skill",
    HEAL = "heal",
    BUFF = "buff",
    DEBUFF = "debuff",
    DOT = "dot",
    HOT = "hot",
    ITEM = "item"
}
export interface Skill {
    id: string;
    resourceType: ResourcesType;
    name: string;
    type: SkillType;
    damage?: number;
    healing?: number;
    cost: number;
    cooldown: number;
    currentCooldown: number;
    effects: string[];
    animationName?: string;
}
export interface CharacterCreateDto {
    name: string;
    stats: Stats;
    role: Role;
}
export interface CharacterUpdateDto {
    name?: string;
    level?: number;
    experience?: number;
    stats?: Partial<Stats>;
}
export interface CharacterDatabase {
    id?: number;
    name: string;
    role: Role;
    level?: number;
    experience?: number;
    stats: Stats;
    resources: ResourcesType;
    damageType: DamageType;
    equipments?: Equipment[];
    skills?: Skill[];
}
export interface CharacterInDungeon extends CharacterDatabase {
    stats: ExtendedStats;
    buffs: string[];
    debuffs: string[];
    inCombat: boolean;
    lastAction: number;
    targetId: string | null;
    isAlive: boolean;
}
export interface CharacterFrontend extends CharacterDatabase {
    animations: CharacterAnimations;
    position?: {
        x: number;
        y: number;
    };
}
export declare const CHARACTER_DEFAULTS: Record<string, CharacterFrontend>;
//# sourceMappingURL=character.types.d.ts.map