import type { QualityIntelligence } from "@oscharko-dev/keiko-contracts";
type Envelope = QualityIntelligence.QualityIntelligenceSourceEnvelope;
type EnvelopeId = QualityIntelligence.QualityIntelligenceSourceEnvelopeId;
type SourceKind = QualityIntelligence.QualityIntelligenceSourceKind;
/** Per-kind priority weight: lower number = higher priority (planned earlier). */
export declare const SOURCE_KIND_PRIORITY: Readonly<Record<SourceKind, number>>;
export interface SourceMixPlanOptions {
    /**
     * Envelope display-label byte budget. An envelope whose label exceeds this is flagged
     * as oversize but NOT dropped — the consumer decides what to do. Defaults to 256.
     */
    readonly maxLabelBytes?: number;
    /**
     * Hard cap on the number of envelopes the planner will keep. Defaults to 256. Extras
     * appear in `droppedForCap` in original priority order.
     */
    readonly maxEnvelopes?: number;
}
export interface SourceMixPlanEntry {
    readonly envelopeId: EnvelopeId;
    readonly kind: SourceKind;
    readonly priority: number;
    readonly oversize: boolean;
}
export interface SourceMixPlan {
    readonly entries: readonly SourceMixPlanEntry[];
    readonly droppedForDuplicate: readonly EnvelopeId[];
    readonly droppedForCap: readonly EnvelopeId[];
    readonly oversizeCount: number;
}
/**
 * Build a deterministic plan from a list of envelopes. Stable, pure.
 */
export declare const planSourceMix: (envelopes: readonly Envelope[], options?: SourceMixPlanOptions) => SourceMixPlan;
export {};
//# sourceMappingURL=sourceMixPlanning.d.ts.map