/**
 * OwlCoda Native Read Tool
 *
 * Reads file contents with optional line range and byte offset/limit.
 */
import type { NativeToolDef, ReadInput } from './types.js';
import type { TaskExecutionState } from '../protocol/types.js';
interface NudgeResult {
    prefix: string | null;
    count: number;
}
export declare function recordReadAndBuildNudge(taskState: TaskExecutionState | undefined, realpath: string, rangeKey: string, mtimeMs: number, size: number): NudgeResult;
/** Test-only: clear the ledger for a given task. Production callers must not use this. */
export declare function __resetReadRepetitionLedgerForTask(taskState: TaskExecutionState): void;
/**
 * 0.13.70 execution_economics_v1 — production_gate_v1.
 *
 * Aggregate stats over the read-repetition ledger so the
 * conversation loop can decide whether the model has done enough
 * investigation to warrant a production-gate nudge. `distinctFiles`
 * counts unique realpaths regardless of range. `totalReads` sums
 * the per-entry `count` (one entry per `(realpath, rangeKey)`).
 *
 * Returns zeros when no ledger exists for this task — calling
 * before the first read is safe. Does not allocate a ledger as a
 * side effect.
 */
export declare function getReadLedgerStats(taskState: TaskExecutionState | undefined): {
    distinctFiles: number;
    totalReads: number;
};
export declare function createReadTool(): NativeToolDef<ReadInput>;
export {};
