import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import type { MetricsSnapshot } from "./metrics.js"; import type { Tripwire } from "../session/types.js"; import type { JsonCodec } from "../ports/codec.js"; import { type McpToolName } from "../contracts/output-schemas.js"; import { type BurdenByKind, type BurdenKind } from "./burden.js"; export type McpToolResult = CallToolResult; export interface ReceiptBudget { readonly total: number; readonly consumed: number; readonly remaining: number; readonly fraction: number; } export interface ReceiptCumulative { readonly reads: number; readonly outlines: number; readonly refusals: number; readonly cacheHits: number; readonly bytesReturned: number; readonly bytesAvoided: number; readonly nonReadBytesReturned: number; readonly burdenByKind: Readonly; } export interface ReceiptBurden { readonly kind: BurdenKind; readonly nonRead: boolean; } export interface McpToolReceipt { readonly sessionId: string; readonly traceId: string; readonly seq: number; readonly ts: string; readonly tool: McpToolName; readonly projection: string; readonly reason: string; readonly latencyMs: number; readonly fileBytes: number | null; readonly returnedBytes: number; readonly burden: ReceiptBurden; readonly cumulative: ReceiptCumulative; readonly budget?: ReceiptBudget; readonly compressionRatio?: number | null; } export interface ReceiptDeps { readonly sessionId: string; readonly traceId: string; readonly seq: number; readonly latencyMs: number; readonly metrics: MetricsSnapshot; readonly tripwires: Tripwire[]; readonly codec: JsonCodec; readonly budget?: ReceiptBudget | null; } /** * Build a tool response with an attached receipt. * Returns the finalized MCP result and the byte count of the serialized text * so the caller can feed it back into cumulative metrics. */ export declare function buildReceiptResult(tool: McpToolName, data: Record, deps: ReceiptDeps): { result: McpToolResult; textBytes: number; receipt: McpToolReceipt; }; //# sourceMappingURL=receipt.d.ts.map