import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  ConnectionParams,
  CreateConnectionRequest,
  CreateConnectionResponse,
  DeleteConnectionResponse,
  GetConnectionsResponse,
  GetToolsResponse,
  RefreshToolsRequest,
  RefreshToolsResponse,
  UpdateConnectionRequest,
  UpdateConnectionResponse,
} from "./types"

/**
 * MCP (Model Context Protocol) module definition
 * Handles MCP server connections and tool management
 */
export const mcpModule = defineModule({
  name: "mcp",
  prefix: "/mcp",
  routes: {
    // Connection management
    createConnection: defineRoute<CreateConnectionRequest, CreateConnectionResponse>(
      "POST",
      "/connections",
    ),

    updateConnection: defineRoute<UpdateConnectionRequest, UpdateConnectionResponse>(
      "PUT",
      "/connections/{connectionId}",
    ),

    getConnections: defineRoute<never, GetConnectionsResponse>(
      "GET",
      "/connections",
    ),

    deleteConnection: defineRoute<ConnectionParams, DeleteConnectionResponse>(
      "DELETE",
      "/connections/{connectionId}",
    ),

    // Tool management
    getTools: defineRoute<ConnectionParams, GetToolsResponse>(
      "GET",
      "/connections/{connectionId}/tools",
    ),

    refreshTools: defineRoute<RefreshToolsRequest, RefreshToolsResponse>(
      "POST",
      "/tools/refresh",
    ),

  },
})

// Export the API type
export type McpAPI = typeof mcpModule.api

// Re-export types for external consumption
export type * from "./types"
