import type { GraphImpactCatalogIdentity, GraphImpactResult, ImpactFunction, ImpactPackage, ImpactTrustCoverage, ImpactTrustFallback, ImpactUncertaintyCode, ImpactTrustSource } from '@opensip-cli/contracts'; export declare const MAX_IMPACT_REPORT_PROJECTION_BYTES = 1048576; export interface GraphImpactReportOmittedCounts { readonly changedFiles: number; readonly changedFunctions: number; readonly impactedFunctions: number; readonly impactedFiles: number; readonly impactedPackages: number; readonly recommendedCommands: number; } export interface GraphImpactReportBasis { readonly type: GraphImpactResult['basis']['type']; readonly source?: 'git'; readonly ref?: string; readonly mergeBase?: string; readonly isShallow?: boolean; readonly warningCodes: readonly string[]; } export interface GraphImpactReportUncertainty { readonly code: ImpactUncertaintyCode; readonly source: ImpactTrustSource; readonly message: string; readonly filePath?: string; } export interface GraphImpactReportTrust { readonly coverage: ImpactTrustCoverage; readonly fallback: ImpactTrustFallback; readonly fullyVerified: boolean; readonly uncertainties: readonly GraphImpactReportUncertainty[]; } export interface GraphImpactReportProjection { readonly catalog?: GraphImpactCatalogIdentity; readonly basis: GraphImpactReportBasis; readonly changedFiles: readonly string[]; readonly changedFunctions: readonly ImpactFunction[]; readonly impactedFunctions: readonly ImpactFunction[]; readonly impactedFiles: readonly string[]; readonly impactedPackages: readonly ImpactPackage[]; readonly trust: GraphImpactReportTrust; readonly recommendedCommands: readonly string[]; readonly truncated: boolean; readonly omitted: GraphImpactReportOmittedCounts; readonly detailTruncated: boolean; readonly metadataOmitted: boolean; } /** Project the full impact result to fixed per-collection report bounds. */ export declare function projectImpactForReport(result: GraphImpactResult): GraphImpactReportProjection; /** * Deterministically trim collection tails to a UTF-8 byte budget. * * Returns `undefined` only when the scalar skeleton itself cannot fit. The * caller can then persist the ordinary graph session with an explicit overflow * status instead of changing the analysis verdict. */ export declare function fitProjectionToByteBudget(projection: GraphImpactReportProjection, maxBytes: number): GraphImpactReportProjection | undefined; //# sourceMappingURL=impact-report-projection.d.ts.map