import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { TimesheetLineInput } from "../schemas/index.js"; import type { JsonApiResource, JsonApiResponse } from "../types.js"; /** * One CRA line, as the API stores it: nested `workUnitType`, `project`, * `delivery`, `batch` objects around the flat ids the schema takes. A missing * project / delivery / batch is sent as `null`, which is how the API itself * represents an absence line (`GET /times-reports/{id}` → `"project": null`). */ export declare function buildTimeLine(line: TimesheetLineInput): Record; /** Build the `/times-reports` payload: convenience ids → relationships, lines → nested objects. */ export declare function buildTimesheetBody(params: Record): unknown; /** * Render `/times-reports/default` down to what a caller needs to write lines. * * The response is the only place the work-unit-type codes are published — on * the included **resource** (`workUnitTypesAllowed`), not on the agency and not * in `/application/dictionary` — together with the (project, delivery) pairs * chargeable that month and the `plannedTimes` derived from the deliveries' * planning, which are the lines a filled CRA usually repeats. */ export declare function formatTimesheetDefaults(response: JsonApiResponse): string; /** * One line per times report. The rows carry no name / title, so the generic * summary would print a bare `[timesreport #id]`; this names the window, the * state and the totals instead. Truncation, the `shown/total` banner and the * `fields` projection come from `formatListResponse` (#243) — this file used * to carry its own formatter that cut mid-line and crashed on `data: null`. */ export declare function timesheetSummary(item: JsonApiResource): string; export declare function registerTimesheetTools(server: McpServer): void; //# sourceMappingURL=timesheets.d.ts.map