/** * void_payroll: the "safe void", over * `POST /api/v1/payroll/:id/void`. * * Two calls, never one. Without `confirmation_code` the API writes nothing and * answers with the payroll (employees, period, gross, pay date) and a code * that works for 10 minutes, bound to that payroll and this key. The void * happens only when the code comes back, so the assistant has to show the * family what it is about to undo and get a yes. * * Only a draft, or a scheduled direct deposit whose debit has not started. * Anything with money on the move, and every completed payroll, is refused * with a link to void it in the app: money that is already on the move is * never voided from an assistant. * * ⛔ The tool passes the API's answer through. It never retries a refusal and * never mints or remembers a code itself; the API owns both. */ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { type ToolContext } from "../context.ts"; export declare const voidPayrollTool: { readonly name: "void_payroll"; readonly description: string; }; export declare function executeVoidPayroll(args: { payroll_id: string; confirmation_code?: string; reason?: string; employer_id?: string; }, context?: ToolContext): Promise; /** * Registered from this module, like `list_payrolls`, so the tool owns its * whole surface. Two calls: the first returns the payroll and a confirmation * code and writes nothing; the second, with the code, voids. Only a draft or a * scheduled direct deposit whose debit has not started; the API refuses * everything else with a link to the app. */ export declare function registerVoidPayroll(server: McpServer, context?: ToolContext): void;