import { FuelType } from '../../euets/src';
export declare enum Activity {
    Loading = "Loading",
    Discharging = "Discharging",
    Bunkering = "Bunkering",
    Delivered = "Delivered",
    ReDelivered = "ReDelivered"
}
export declare enum BunkerType {
    HSFO = "HSFO",
    LSFO = "LSFO",
    VLSFO = "VLSFO",
    ULSFO = "ULSFO",
    MGO = "MGO",
    LSMGO = "LSMGO",
    MDO = "MDO"
}
/**
 * BunkerType 到 EUTES FuelType 的映射
 */
export declare const BunkerTypeToFuelType: Record<string, FuelType>;
/**
 * 航次计划输入
 */
export interface ScheduleItem {
    port: string;
    activity: Activity;
    distanceTotal?: number;
    distanceSeca?: number;
    speed?: number;
    wf?: number;
    inPortDaysWork?: number;
    inPortDaysIdle?: number;
    portCosts?: number;
    euScope: boolean;
}
/**
 * 货物清单输入
 */
export interface CargoItem {
    cargoName: string;
    quantity: number;
    grossFreightRate: number;
    addComm: number;
    brokComm: number;
    frtTax: number;
}
/**
 * 单个设备的消耗配置 (主机或辅机)
 */
export interface EngineConsumption {
    type: BunkerType;
    cons: number;
}
/**
 * 船舶在特定状态(如Ballast/Non-SECA)下的消耗配置
 * 包含主机和辅机
 */
export interface ModeConsumption {
    main: EngineConsumption;
    aux: EngineConsumption;
}
export interface ConsumptionProfile {
    ballast: {
        nonSeca: ModeConsumption;
        seca: ModeConsumption;
    };
    laden: {
        nonSeca: ModeConsumption;
        seca: ModeConsumption;
    };
    working: {
        nonSeca: ModeConsumption;
        seca: ModeConsumption;
    };
    idle: {
        nonSeca: ModeConsumption;
        seca: ModeConsumption;
    };
}
export interface VesselParticulars {
    imo: string;
    dwt?: number;
    builtYear?: number;
    loa?: number;
    beam?: number;
    dailyHire: number;
    comm: number;
    ballastBonus?: number;
    canalCosts?: number;
    extraInsurance?: number;
    loadDischCosts?: number;
    miscCosts?: number;
    additionalCosts?: number;
    consumption: ConsumptionProfile;
    bunkerPrice: Record<string, number>;
}
export interface CarbonOptions {
    reportYear: number;
    euaPrice: number;
    exchangeRate: number;
    includeEuaCost: boolean;
    includeFuelEuPenalty: boolean;
}
/**
 * 计算结果输出
 */
/**
 * 航段计算结果 (Voyage Table Row)
 */
export interface VoyageLeg {
    from: string;
    to: string;
    distance: number;
    speed: number;
    atSeaDays: {
        total: number;
        nonSeca: number;
        seca: number;
    };
    inPortDays: {
        total: number;
        work: number;
        idle: number;
    };
    _internal?: {
        dayNonSeca: number;
        daySeca: number;
        dayWork: number;
        dayIdle: number;
        distNonSeca: number;
        distSeca: number;
        euScope: boolean;
        isPrevEu: boolean;
        activity: Activity;
        portCosts: number;
        isLaden: boolean;
    };
}
export interface CalculatedCargo {
    cargoName: string;
    quantity: number;
    grossFreight: number;
    netFreight: number;
}
export interface VesselSummary {
    dwt: number;
    builtYear: number;
    loa: number;
    beam: number;
    dailyHire: number;
    netHireDaily: number;
    ballastBonus: number;
    otherCosts: number;
    consumption: ConsumptionProfile;
}
export interface FreightCalculationResult {
    legs: VoyageLeg[];
    cargos: CalculatedCargo[];
    vessel: VesselSummary;
    voyageSummary: {
        durationNonSecaSea: number;
        durationSecaSea: number;
        durationWork: number;
        durationIdle: number;
        totalDuration: number;
        distanceNonSeca: number;
        distanceSeca: number;
        distanceTotal: number;
    };
    financials: {
        freightTons: number;
        grossFreight: number;
        netFreight: number;
        portCosts: number;
        fixCosts: number;
        totalCosts: number;
        tce: number;
        grossHire: number;
        netHire: number;
        voyEquiv: number;
        grossProfit: number;
        netProfit: number;
    };
    bunkerCosts: {
        items: {
            type: string;
            cons: number;
            price: number;
            cost: number;
        }[];
        totalCost: number;
    };
    carbonCosts: {
        euas: number;
        euaCost: number;
        fuelEuPenalty: number;
        totalCost: number;
    };
}
export declare class FreightHelper {
    /**
     * 计算单行货物的营收数据
     * 用于前端表格实时计算展示
     * 返回: { revenue (Gross Freight), netFreight }
     */
    static calculateCargoFinancials(cargo: CargoItem): {
        revenue: number;
        netFreight: number;
    };
    /**
     * 计算航程各段详细数据
     * 输入: 港口列表 (Schedule)
     * 输出: 航段列表 (Legs)
     */
    static calculateLegs(schedule: ScheduleItem[], vessel: VesselParticulars): VoyageLeg[];
    /**
     * 主要计算函数
     */
    static calculate(schedule: ScheduleItem[], cargos: CargoItem[], vessel: VesselParticulars, carbon: CarbonOptions): FreightCalculationResult;
}
