export type ReaderDecisionOwner = 'agent' | 'system-prefetch' | 'user'; export type ReaderExpectedUse = 'structure-probe' | 'answer-evidence' | 'table-extraction' | 'ocr' | 'full-import'; export type SystemPrefetchTrigger = 'user-open-detail' | 'user-scroll-near-unread-page' | 'user-search-within-document'; export interface DocumentReaderPolicy { provider: string; model: string; l0: { readExternal: false; decisionOwner: 'agent'; allowContextInference: boolean; allowLightweightPreview: boolean; suggestion: { localPreviewPages: number; localPreviewBytes: number; }; }; decision: { owner: 'agent'; defaultSuggestion: { initialPages: number; structureProbeMaxPages: number; pageWindow: number; maxPageWindow: number; }; allowAgentOverride: boolean; requireReason: boolean; exposeBudgetToAgent: boolean; overBudgetBehavior: 'ask-user-or-degrade'; }; systemPrefetch: { owner: 'system'; triggers: SystemPrefetchTrigger[]; lookAheadPages: number; maxLookAheadPages: number; respectHardLimits: boolean; }; hardLimits: { maxPagesPerRun: number; maxPagesPerFilePerDay: number; maxDailyProviderBudgetRatio: number; }; } export interface ReaderUsageSnapshot { runUsedPages: number; fileUsedPagesToday: number; providerUsedPagesToday: number; providerDailyPages?: number; } export interface ReaderBudgetSnapshot { runRemainingPages: number; fileRemainingPagesToday: number; providerRemainingPagesToday?: number; providerSoftBudgetPagesToday?: number; providerSoftRemainingPagesToday?: number; } export interface ReaderRequest { owner: ReaderDecisionOwner; source: string; pageRange: string; reason?: string; expectedUse?: ReaderExpectedUse; userConfirmed?: boolean; trigger?: SystemPrefetchTrigger; lookAheadPages?: number; } export interface ReaderRequestEvaluation { status: 'allow' | 'needs_user_confirmation' | 'deny'; pageCount: number; budget: ReaderBudgetSnapshot; reasons: string[]; } export interface SystemPrefetchInput { source: string; trigger: SystemPrefetchTrigger; visiblePage: number; totalPages?: number; readRanges?: string[]; } export interface SystemPrefetchRequest extends ReaderRequest { owner: 'system-prefetch'; trigger: SystemPrefetchTrigger; visiblePage: number; lookAheadPages: number; } export declare const DEFAULT_DOCUMENT_READER_POLICY: DocumentReaderPolicy; export declare function countPagesInRange(pageRange: string): number; export declare function computeReaderBudget(policy: DocumentReaderPolicy, usage: ReaderUsageSnapshot): ReaderBudgetSnapshot; export declare function evaluateReaderRequest(policy: DocumentReaderPolicy, request: ReaderRequest, usage: ReaderUsageSnapshot): ReaderRequestEvaluation; export declare function planSystemPrefetch(policy: DocumentReaderPolicy, input: SystemPrefetchInput): SystemPrefetchRequest | undefined;