import { SourceBlueprintDetails } from "./Source";
import { Trial } from "./Trial";
export interface IBlueprintChallengeSetup {
    name: string;
    allowedItems?: string[];
    bannedItems?: string[];
    entityCountRequirements?: IEntityCountRange[];
}
export declare class BlueprintChallenge {
    name: string;
    allowedEntities: string[];
    bannedEntities: string[];
    entityCountRequirements: IEntityCountRange[];
    validateSubmission(bc: BlueprintChallenge, bp: SourceBlueprintDetails): boolean;
    validationErrors: string[];
    scoreSubmission(bc: BlueprintChallenge, bp: SourceBlueprintDetails, trial: Trial): IBlueprintChallengeScore;
    constructor(params: IBlueprintChallengeSetup, validateSubmission?: (bc: BlueprintChallenge, bp: SourceBlueprintDetails) => boolean, scoreSubmission?: (bc: BlueprintChallenge, bp: SourceBlueprintDetails, trial: Trial) => IBlueprintChallengeScore);
}
export interface IBlueprintChallengeScore {
    submission: SourceBlueprintDetails;
    trial: Trial;
    totalScore: number;
    breakdown: IBlueprintChallengeScoreBreakdown[];
}
export interface IBlueprintChallengeScoreBreakdown {
    name: string;
    desc: string;
    score: number;
}
export interface IEntityCountRange {
    label: string;
    maxCount?: number;
    minCount?: number;
}
