export type TokenWasteDecisionKind = 'include' | 'summarize' | 'exclude' | 'recommend' | 'avoid' | 'warn' | 'override';
export type TokenWasteConfidence = 'high' | 'medium' | 'low';
export type TokenWasteAction = string;
export interface TokenWastePolicyLoadOptions {
    defaultPolicyPath?: string;
}
export interface TokenWasteEvidence {
    source: 'policy' | 'project-config' | 'runtime' | 'spec' | 'tool-registry' | 'host-capability';
    key: string;
    value?: string | number | boolean;
}
export interface TokenWasteDecision {
    decision: TokenWasteDecisionKind;
    target: string;
    reason: string;
    evidence: TokenWasteEvidence[];
    confidence: TokenWasteConfidence;
}
export interface TokenWasteOutputStrategy {
    maxLines: number;
    keepFailures?: boolean;
    uniqueOnly?: boolean;
    summarizeKeys?: boolean;
}
export interface TokenWastePolicy {
    version: 1;
    enabled: boolean;
    context: {
        generatedPatterns: string[];
        stalePatterns: string[];
        summarizePatterns: string[];
        staleSessionMinutes: number;
        safetyOverrideActions: string[];
    };
    outputs: {
        strategies: Record<string, TokenWasteOutputStrategy>;
    };
    tools: {
        groups: Record<string, string[]>;
        maxRecommended: number;
    };
    loops: {
        thresholds: Record<string, number>;
        safetyOverrideActions: string[];
    };
    modelEffort: {
        lowRisk: string;
        default: string;
        highRisk: string;
        maxRisk: string;
    };
    redaction: {
        maxSnippetChars: number;
        redactPatterns: string[];
    };
}
export interface LoadedTokenWastePolicy {
    policy: TokenWastePolicy;
    evidence: TokenWasteEvidence[];
}
export interface ContextCandidate {
    path: string;
    reason?: string;
}
export interface ContextPreflightInput {
    action: TokenWasteAction;
    policy: TokenWastePolicy;
    candidates: ContextCandidate[];
    spec?: {
        id?: string;
        status?: string;
        risk?: string;
        target?: string;
    };
}
export interface ContextPreflightResult {
    include: TokenWasteDecision[];
    summarize: TokenWasteDecision[];
    exclude: TokenWasteDecision[];
}
export interface VerboseOutputInput {
    kind: string;
    text: string;
    policy: TokenWastePolicy;
    fullOutputRef?: string;
}
export interface VerboseOutputResult {
    text: string;
    originalLines: number;
    returnedLines: number;
    fullOutputRef?: string;
    decisions: TokenWasteDecision[];
}
export interface ToolRelevanceInput {
    action: TokenWasteAction;
    intentSignals: string[];
    tools: {
        name: string;
        description?: string;
    }[];
    policy: TokenWastePolicy;
    hostUnsupportedTools?: string[];
}
export interface ToolRelevanceResult {
    recommended: TokenWasteDecision[];
    avoided: TokenWasteDecision[];
}
export interface TokenWasteRuntimeEvent {
    type: string;
    key: string;
    timestamp?: string;
    changedSincePrevious?: boolean;
}
export interface TokenWasteLoopResult {
    warnings: TokenWasteDecision[];
}
export interface TokenWasteModelAdvice {
    effort: string;
    reason: string;
    evidence: TokenWasteEvidence[];
}
export interface TokenWasteAutopilotInput {
    action: TokenWasteAction;
    policy: TokenWastePolicy;
    context?: ContextPreflightResult;
    output?: VerboseOutputResult;
    tools?: ToolRelevanceResult;
    loops?: TokenWasteLoopResult;
    spec?: {
        id?: string;
        risk?: string;
        scope?: string;
    };
}
export interface TokenWasteReport {
    actionsTaken: TokenWasteDecision[];
    recommendations: TokenWasteDecision[];
    risks: TokenWasteDecision[];
    evidence: TokenWasteEvidence[];
    modelEffort: TokenWasteModelAdvice;
}
//# sourceMappingURL=token-waste-autopilot.d.ts.map