import type { ArtifactObligation, ProviderConfig, RequestBudgetSnapshot, RunPhaseName, SessionUsageOperation } from "@best-agent/protocol";
import type { AgentProfile } from "../../agent/profile-registry.js";
import type { ProviderToolOption } from "../../provider/model-provider.js";
import type { AdvancedPhaseLoopState, PendingCompactionFollowUpMarker, ProviderCorrectionTrace } from "../checkpoint-codec.js";
import type { RequiredToolConstraint } from "./tool-constraint-types.js";
export type ProviderTurnBudgetSnapshot = {
    enabled: boolean;
    max: number;
    used: number;
};
export type ProviderTurnInvokeContext = {
    activeSkillIds: string[];
    advancedPhase?: AdvancedPhaseLoopState;
    artifactObligations?: ArtifactObligation[];
    availableTools?: ProviderToolOption[];
    budget: ProviderTurnBudget;
    compactionFollowUpMarker?: PendingCompactionFollowUpMarker;
    correctionTrace?: ProviderCorrectionTrace;
    downgradeEligible?: boolean;
    escalationLevel?: number;
    fixedRouteConfigOverride?: boolean;
    objective?: string;
    phaseName?: RunPhaseName;
    profile: AgentProfile;
    profileName: string;
    requiredToolConstraint?: RequiredToolConstraint;
    routeConfigOverride?: ProviderConfig;
    requestBudgetSnapshot?: RequestBudgetSnapshot;
    supersedePendingProviderRequest?: boolean;
    toolStepCount?: number;
};
export declare class ProviderTurnBudget {
    #private;
    readonly enabled: boolean;
    readonly max: number;
    constructor(input: ProviderTurnBudgetSnapshot);
    consume(reason: SessionUsageOperation): number;
    get used(): number;
    snapshot(): ProviderTurnBudgetSnapshot;
}
//# sourceMappingURL=provider-turn-budget.d.ts.map