/**
 * MCP Helper Functions
 */
import { z } from 'zod';
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { CallToolResult, ServerRequest, ServerNotification } from '@modelcontextprotocol/sdk/types.js';
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
import type { Ticket } from '../pmo/types.js';
import type { McpToolResult } from './types.js';
/**
 * Register an MCP tool with strict parameter validation.
 *
 * Uses z.object().strict() so that unknown/extra parameters are rejected
 * with a clear error instead of being silently stripped.
 * See: https://github.com/anthropics/proletariat/issues/366
 */
export declare function strictTool<T extends Record<string, z.ZodType>>(server: McpServer, name: string, description: string, shape: T, handler: (params: {
    [K in keyof T]: z.infer<T[K]>;
}, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => CallToolResult | Promise<CallToolResult>): void;
export declare function formatTicket(t: Ticket): {
    id: string;
    title: string;
    priority: string | undefined;
    category: string | undefined;
    statusName: string | undefined;
    statusCategory: import("../pmo/types.js").StateCategory | undefined;
    projectId: string | undefined;
    assignee: string | undefined;
    owner: string | undefined;
    branch: string | undefined;
    epicId: string | undefined;
    position: number | undefined;
};
export declare function formatTicketCompact(t: Ticket): {
    id: string;
    title: string;
    priority: string | undefined;
    category: string | undefined;
    assignee: string | undefined;
    statusName: string | undefined;
};
export declare function formatTicketFull(t: Ticket): {
    description: string | undefined;
    subtasks: import("../pmo/types.js").Subtask[];
    labels: string[];
    metadata: Record<string, string>;
    blockedBy: string[] | undefined;
    acceptanceCriteria: import("../pmo/types.js").AcceptanceCriterion[] | undefined;
    specId: string | undefined;
    createdAt: string;
    updatedAt: string;
    id: string;
    title: string;
    priority: string | undefined;
    category: string | undefined;
    statusName: string | undefined;
    statusCategory: import("../pmo/types.js").StateCategory | undefined;
    projectId: string | undefined;
    assignee: string | undefined;
    owner: string | undefined;
    branch: string | undefined;
    epicId: string | undefined;
    position: number | undefined;
};
export declare function successResponse(data: Record<string, unknown>): McpToolResult;
export declare function errorResponse(error: unknown): McpToolResult;
export declare function textResponse(text: string): McpToolResult;
