import { type IncomingMessage, type ServerResponse } from "node:http"; import { type Server, type ServerOptions, type ToolDefinition, type CallToolResult, type ToolReturn, type TypedSchema } from "tiny-stdio-mcp-server"; import { type AuthenticatedIncomingMessage, type TokenVerifier, type VerifiedAccessToken, type RequestAuthInfo } from "./auth.js"; import { type HttpObservabilityEvent, type StreamableHttpTransportOptions } from "./http-transport.js"; export interface ProtectedResourceMetadataOptions { resource: string | URL; authorizationServers: readonly (string | URL)[]; bearerMethodsSupported?: readonly string[]; scopesSupported?: readonly string[]; } export interface TinyHttpMcpServerOAuthOptions extends ProtectedResourceMetadataOptions { requiredScopes?: readonly string[]; verifier: TokenVerifier; } export type HttpTransportOptions = ServerOptions & StreamableHttpTransportOptions & { oauth?: TinyHttpMcpServerOAuthOptions; requestHandler?: HttpAdditionalRequestHandler; }; export type HttpAdditionalRequestHandler = (request: IncomingMessage, response: ServerResponse) => boolean | Promise; export interface HttpListenOptions { port?: number; hostname?: string; path?: string; signal?: AbortSignal; requestTimeoutMs?: number; headersTimeoutMs?: number; keepAliveTimeoutMs?: number; } export interface HttpServerHandle { url: string; port: number; close(): Promise; closeAllConnections(): void; } export interface HttpServer extends Omit { tool(name: string, description: string, inputSchema: TypedSchema, handler: HttpToolHandler, outputSchema?: TypedSchema): HttpServer; registerTool(definition: Omit, "handler">, handler: HttpToolHandler): HttpServer; listenHttp(options?: HttpListenOptions): Promise; handleRequest(req: IncomingMessage, res: ServerResponse): Promise; getRequestContext(): HttpToolContext | undefined; } export interface HttpToolContext { request: AuthenticatedIncomingMessage; sessionId?: string; auth?: RequestAuthInfo; } export type HttpToolHandler, TOut = ToolReturn> = (args: T, context: HttpToolContext) => Promise | TOut | CallToolResult; export declare function createProtectedResourceMetadataDocument(options: ProtectedResourceMetadataOptions): Record; export declare function createHttpServer(options: HttpTransportOptions): HttpServer; export type { RequestAuthInfo, TokenVerifier, VerifiedAccessToken }; export type { HttpObservabilityEvent };