import { DemonicPactScorer } from "./DemonicPact";
export declare enum LeaguesSeason {
    Leagues7 = "Leagues 7"
}
export declare enum CombatStyle {
    Universal = "Universal",
    Melee = "Melee",
    Ranged = "Ranged",
    Magic = "Magic"
}
export declare enum PactNodeSize {
    Minor = "Minor",
    Major = "Major",
    Capstone = "Capstone"
}
export type PactEffectValue = number | string | null;
export interface PactEffect {
    key: string | null;
    value: PactEffectValue;
    description: string;
}
export interface DemonicPactDrawCoord {
    x: number;
    y: number;
}
export interface DemonicPact {
    id: string;
    name: string;
    description: string;
    rawDescription: string;
    style: CombatStyle;
    nodeSize: PactNodeSize;
    pointCost: number;
    linkedNodeIds: string[];
    effect: PactEffect;
    drawCoord: DemonicPactDrawCoord;
    icon: string;
}
export interface DemonicPactTree {
    season: LeaguesSeason;
    displayName: string;
    totalPointsAvailable: number;
    rootNodeId: string;
    source: string;
    pacts: DemonicPact[];
}
export type CombatMasterySkillTree = DemonicPactTree;
export type CombatMasteryNode = DemonicPact;
export interface UnlockEvaluation {
    unlockable: boolean;
    reason?: string;
    pointsRemaining: number;
    missingLinkedPactIds?: string[];
}
export interface DemonicPactOptimizerOptions {
    preferredStyles: readonly CombatStyle[];
    pointBudget?: number;
    startingPactIds?: readonly string[];
    requiredPactIds?: readonly string[];
    excludedPactIds?: readonly string[];
    beamWidth?: number;
    includeRoot?: boolean;
    scorer?: DemonicPactScorer;
}
export interface DemonicPactOptimizationResult {
    selectedPactIds: string[];
    unlockOrder: string[];
    selectedPacts: DemonicPact[];
    spentPoints: number;
    remainingPoints: number;
    score: number;
    unlockableNextPacts: DemonicPact[];
}
export interface DemonicPactScoringContext {
    tree: DemonicPactTree;
    selectedPactIds: readonly string[];
    preferredStyles: readonly CombatStyle[];
}
export interface DemonicPactPathingInfo {
    pactId: string;
    minimumUnlockHopsFromRoot: number;
    minimumPointSpendFromRoot: number;
    minimumUnlockPathPactIds: string[];
}
export interface DemonicPactStylePlanningSummary {
    style: CombatStyle;
    pactCount: number;
    capstonePactIds: string[];
    totalPointCost: number;
    cheapestAccessPactId: string;
    cheapestAccessPointSpend: number;
}
export interface DemonicPactPlanningData {
    totalPacts: number;
    totalPointsAvailable: number;
    rootPactId: string;
    capstonePactIds: string[];
    leafPactIds: string[];
    junctionPactIds: string[];
    pathingByPactId: Readonly<Record<string, DemonicPactPathingInfo>>;
    styleSummaries: Readonly<Record<CombatStyle, DemonicPactStylePlanningSummary>>;
}
//# sourceMappingURL=DemonicPact.model.d.ts.map