import { Weapon } from "../interface/weapon";
import { StatType } from "../../build/value_object/stat_type";
import { TargetType } from "../../enemy/value_object/target_type";
import { ElementalEffect } from "../value_object/elemental_effect";
import { RedTextEnum } from "../../build/object/red_text";
import { Context } from "../../context";
export declare class DamageService {
    private weapon;
    private context;
    private statService;
    constructor(weapon: Weapon, context: Context);
    getDps(): number;
    getCritDps(): number;
    getTargetTypeDps(targetType: TargetType): number;
    getTargetTypeCritDps(targetType: TargetType): number;
    getDamage(targetType?: TargetType): number;
    getFirstShotDamage(targetType?: TargetType): number;
    protected getBaseDamage(targetType?: TargetType): number;
    protected getFirstShotBaseDamage(targetType?: TargetType): number;
    getCritDamage(targetType?: TargetType): number;
    getFirstShotCritDamage(targetType?: TargetType): number;
    getElementalDps(targetType?: TargetType): number;
    protected calculateDps(damage: number, firstBulletDamage: number): number;
    protected getWeaponCritMultiplier(): number;
    protected getWeaponCritBaseBonus(): number;
    protected getWeaponCritPenalty(): number;
    protected getReloadSpeed(): number;
    protected getFireRate(): number;
    protected getMagazineSize(): number;
    protected getElementalEffectiveness(targetType: TargetType, elementalEffect?: ElementalEffect): number;
    getSplashDamage(targetType?: TargetType): number;
    protected getSplashDamageMultiplier(): number;
    protected getStat(statType: StatType): number;
    protected getRedTextStat(statType: StatType, redText?: RedTextEnum): number;
}
