/** * Volume projection lens — "what would this look like at GB/month?" * * Complement to the SIEM lens (lib/siem/lens.ts). The SIEM lens reprices the * SAME real volumes at a different destination and NEVER touches volume. The * volume lens does the opposite: it scales the real per-pattern volume basis * to a caller-stated monthly volume, holding every per-pattern SHARE, trend, * and pattern identity fixed. Only absolute magnitudes (bytes, dollars, * savings) move, by one uniform factor, so coverage_pct and shares are * unchanged by construction. * * This is a PROJECTION, not a measurement. It answers "model my environment at * 5 TB/mo" for a prospect on the small demo env, and "what happens to my bill * if I grow 3x" for a user on a real env. It is general, not a demo hack. * * Honesty contract (enforced by callers): a lensed run ALWAYS stamps * volume_actual_gb / volume_projected_gb / volume_scale_factor and surfaces the * projection note, so a receipt reader can see the numbers were scaled from * real ones. The pattern MIX is still the environment's own measured mix; the * note says so and points at the POC for the caller's real patterns. */ export interface VolumeLensResolution { /** The environment's real monthly bytes (the measured basis). null when unknown/zero. */ actual_monthly_bytes: number | null; /** The caller's stated monthly bytes (actual × factor). null when not lensed. */ projected_monthly_bytes: number | null; /** Uniform multiplier applied to every absolute magnitude. 1 when not lensed. */ factor: number; /** True iff a positive monthly_volume_gb was supplied AND a real basis existed. */ lensed: boolean; /** Why the lens is / isn't active. */ basis: 'requested' | 'none' | 'no_basis'; /** One-line, render-ready provenance note when lensed (or when a request had no basis); null otherwise. */ disclosure: string | null; } /** * Resolve the volume projection for a tool run. * * @param requestedMonthlyGb the tool's `monthly_volume_gb` arg (decimal GB/month) * @param actualMonthlyBytes the environment's measured monthly bytes (the basis to scale) */ export declare function resolveVolumeLens(requestedMonthlyGb: number | undefined | null, actualMonthlyBytes: number): VolumeLensResolution; /** source_disclosure stamp for a lensed run (empty object when not lensed). */ export declare function volumeLensDisclosure(res: VolumeLensResolution): Record;