/**
 * @module A2AServer
 * @description Server implementation for hosting A2A protocol agents
 */
import type { Request, Response, NextFunction } from 'express';
import { AgentCard } from '@dexwox-labs/a2a-core';
import { RequestHandler } from './request-handler';
/**
 * Server implementation for hosting A2A protocol agents
 *
 * The A2AServer class provides a complete HTTP and WebSocket server implementation
 * for hosting agents that implement the A2A protocol. It handles request routing,
 * error handling, and WebSocket connections for streaming.
 *
 * @example
 * ```typescript
 * import { A2AServer, DefaultRequestHandler } from '@dexwox-labs/a2a-node';
 *
 * // Define an agent
 * const agent = {
 *   id: 'weather-agent',
 *   name: 'Weather Agent',
 *   description: 'Provides weather information',
 *   capabilities: ['weather-forecasting'],
 *   endpoint: 'http://localhost:3000'
 * };
 *
 * // Create a request handler
 * const requestHandler = new DefaultRequestHandler([agent]);
 *
 * // Create and start the server
 * const server = new A2AServer(agent, requestHandler);
 * server.start(3000);
 * ```
 */
export declare class A2AServer {
    private readonly contextMiddleware?;
    /** Express application instance */
    private readonly app;
    /** WebSocket server instance */
    private wss;
    /** Agent card for this server */
    private readonly agentCard;
    /** Handler for processing incoming requests */
    private readonly requestHandler;
    /**
     * Creates a new A2AServer instance
     *
     * @param agentCard - The agent card describing this server's capabilities
     * @param requestHandler - Handler for processing incoming requests
     * @param contextMiddleware - Optional custom middleware for request context
     */
    constructor(agentCard: AgentCard, requestHandler: RequestHandler, contextMiddleware?: ((req: Request, res: Response, next: NextFunction) => void) | undefined);
    /**
     * Configures Express middleware for the server
     *
     * Sets up JSON parsing, CORS, and request context middleware.
     * @private
     */
    private configureMiddleware;
    /**
     * Configures HTTP routes for the server
     *
     * Sets up the agent card endpoint and API routes.
     * @private
     */
    private configureRoutes;
    /**
     * Configures global error handling for the server
     *
     * Sets up middleware to catch and format errors according to the A2A protocol.
     * @private
     */
    private configureErrorHandling;
    /**
     * Starts the A2A server on the specified port
     *
     * This method starts both the HTTP server and WebSocket server for handling
     * A2A protocol requests. The WebSocket server is used for streaming messages.
     *
     * @param port - The port to listen on (default: 3000)
     *
     * @example
     * ```typescript
     * // Start on the default port (3000)
     * server.start();
     *
     * // Start on a specific port
     * server.start(8080);
     * ```
     */
    start(port?: number): void;
}
//# sourceMappingURL=app.d.ts.map