import type { Usage } from "../types.js"; export type CacheLayer = "tools" | "system" | "project" | "messages"; export declare const CACHE_LAYER_ORDER: readonly CacheLayer[]; export type CacheRetention = "long" | "short" | "none"; export interface LayerBlock { layer: CacheLayer; /** Canonical UTF-8 bytes that form the layer's stable prefix. */ bytes: string; /** At most one breakpoint per layer on breakpoint-capable providers. */ breakpoint?: boolean; } export interface CachePolicy { retention: CacheRetention; /** If true, the provider supports explicit breakpoints (Anthropic-style). */ supportsBreakpoints: boolean; } export interface LayeredPayload { layers: LayerBlock[]; policy: CachePolicy; } export declare function defaultPolicy(): CachePolicy; export interface CacheUsageReport { cachedInputTokens: number; cacheWriteTokens: number; uncachedInputTokens: number; } export declare function totalInputTokens(u: CacheUsageReport): number; export interface RetentionResolveContext { roleDefault: CacheRetention; /** CLI flag --cache=long|short|none overrides role default. */ cliFlag?: CacheRetention; /** CaveKit phase override takes precedence over role default but * is still overridden by an explicit CLI flag. */ cavekitPhaseOverride?: CacheRetention; } export declare function resolveRetention(ctx: RetentionResolveContext): CacheRetention; /** Enforce R1: at most one breakpoint per layer, layers in canonical order. */ export declare function validateLayers(layers: LayerBlock[]): void; export declare function usageToCacheReport(usage: Usage): CacheUsageReport; //# sourceMappingURL=policy.d.ts.map