import type { FullIssueContext } from "../domain/context.js"; /** * Output budget enforcement. * * The rule that matters is not "stay small" but "never lie about being small". * Anything dropped here is reported through `overflow` so the caller can put it * in completeness metadata; silent truncation is a release blocker. * * Drop order is the inverse of the design's keep-priority: * core metadata > description > links/dependencies > comments > changelog */ /** Rough proxy for tokens. Cheap, dependency-free, tuned against real payloads later. */ export declare function estimateTokens(value: unknown): number; export type BudgetOutcome = { issues: FullIssueContext[]; /** Which parts were dropped, e.g. ["comments", "description"]. */ overflow: string[]; complete: boolean; commentsComplete: boolean; linksComplete: boolean; droppedComments: number; }; export declare function applyOutputBudget(input: FullIssueContext[], budgetTokens: number): BudgetOutcome;