import express, { Response } from "express";
import { CorsOptions } from "cors";
import http from "http";
import type { AgentCard, Task, Message, SendTaskStreamingRequest, TaskResubscriptionRequest } from "../types/index.js";
import { TaskStore, TaskAndHistory } from "./interfaces/store.js";
import { TaskHandler, TaskContext } from "./interfaces/context.js";
import { A2AServerParams, JSONRPCServerType } from "./interfaces/params.js";
import { Server } from "./interfaces/server.js";
/**
 * Implements an A2A protocol compliant server using Express.
 * Handles task creation, streaming, cancellation and more.
 * Uses Jayson for JSON-RPC handling.
 */
export declare class A2AServer implements Server {
    private taskHandler;
    private taskStore;
    private corsOptions;
    private basePath;
    private port;
    private rpcServer;
    private serverInstance;
    private app;
    private fallbackPath;
    private register;
    private activeCancellations;
    private activeStreams;
    /** The agent card representing this server */
    card: AgentCard;
    /**
     * Returns the base path for the server
     */
    getBasePath(): string;
    /**
     * Returns the CORS options for the server
     */
    getCorsOptions(): CorsOptions;
    /**
     * Returns the agent card for the server
     */
    getCard(): AgentCard;
    /**
     * Returns the task store
     */
    getTaskStore(): TaskStore;
    /**
     * Returns the task handler
     */
    getTaskHandler(): TaskHandler;
    /**
     * Returns the set of active cancellations
     */
    getActiveCancellations(): Set<string>;
    /**
     * Returns the map of active streams
     */
    getActiveStreams(): Map<string, Response[]>;
    /**
     * Returns the port number
     */
    getPort(): number;
    /**
     * Returns the JSON-RPC server
     */
    getRpcServer(): JSONRPCServerType;
    /**
     * Returns the server instance
     */
    getServerInstance(): http.Server | undefined;
    /**
     * Returns the Express app
     */
    getExpressApp(): express.Express;
    /**
     * Returns a task context for the specified task and messages
     */
    getTaskContext(task: Task, userMessage: Message, history: Message[]): TaskContext;
    /**
     * Returns the default agent card
     */
    defaultAgentCard(): AgentCard;
    /**
     * Creates a new A2AServer.
     * @param handler The task handler function that will process tasks
     * @param options Options for configuring the server
     */
    constructor(params: A2AServerParams);
    /**
     * Starts the Express server listening on the specified port.
     * @returns The running Express application instance.
     */
    start(): express.Express;
    /**
     * Stops the server and closes all connections.
     * @returns A promise that resolves when the server is stopped.
     */
    stop(): Promise<void>;
    /**
     * Registers the server with the A2A registry.
     * @returns A promise that resolves to the registration ID or an empty string if registration fails.
     */
    registerServer(): Promise<string>;
    /**
     * Handles task cancellation
     * @param data Task and history data
     * @param res Response object
     */
    onCancel(data: TaskAndHistory, res: Response): Promise<void>;
    /**
     * Handles cleanup when a task stream ends
     * @param taskId The task ID
     * @param res Response object
     */
    onEnd(taskId: string, res: Response): Promise<void>;
    /**
     * Handles the tasks/sendSubscribe method.
     * @param req The SendTaskRequest object
     * @param res The Express Response object
     */
    handleTaskSendSubscribe(req: SendTaskStreamingRequest, res: Response): Promise<void>;
    /**
     * Handles the tasks/resubscribe method.
     * @param req The TaskResubscriptionRequest object
     * @param res The Express Response object
     */
    handleTaskResubscribe(req: TaskResubscriptionRequest, res: Response): Promise<void>;
    /**
     * Adds a response stream to the tracking map for a task.
     * @param taskId The task ID
     * @param res The response stream
     */
    addStreamForTask(taskId: string, res: Response): void;
    /**
     * Removes a response stream from the tracking map for a task.
     * @param taskId The task ID
     * @param res The response stream
     */
    removeStreamForTask(taskId: string, res: Response): void;
    /**
     * Initializes the default agent card
     */
    static defaultAgentCard(): AgentCard;
    /**
     * Creates a TaskContext object for a task handler.
     * @param task The task
     * @param userMessage The user message
     * @param history The message history
     * @returns A TaskContext object
     */
    createTaskContext(task: Task, userMessage: Message, history: Message[]): TaskContext;
    /**
     * Closes any active streams for a task.
     * @param taskId The task ID
     */
    closeStreamsForTask(taskId: string): void;
}
//# sourceMappingURL=a2a-server.d.ts.map