import { EventEmitter } from 'eventemitter3';
import { AgentId, AgentRequest, AgentResponse, AgentEvent, AgentCommunicationChannel } from '../types/agent.js';
export declare class InMemoryCommunicationChannel extends EventEmitter implements AgentCommunicationChannel {
    private requestHandlers;
    private pendingRequests;
    private requestQueue;
    private readonly defaultTimeout;
    constructor();
    sendRequest(request: AgentRequest): Promise<AgentResponse>;
    private processRequest;
    private resolveRequest;
    subscribeToRequests(agentId: AgentId, callback: (request: AgentRequest) => Promise<AgentResponse>): void;
    unsubscribeFromRequests(agentId: AgentId): void;
    broadcastEvent(event: AgentEvent): Promise<void>;
    subscribeToEvents(callback: (event: AgentEvent) => void): void;
    unsubscribeFromEvents(callback: (event: AgentEvent) => void): void;
    close(): Promise<void>;
    /**
     * Get channel statistics
     */
    getChannelStats(): {
        activeHandlers: number;
        pendingRequests: number;
        queuedRequests: number;
        totalQueues: number;
    };
    /**
     * Get queue status for an agent
     */
    getAgentQueueStatus(agentId: AgentId): {
        queueSize: number;
        hasHandler: boolean;
    };
    /**
     * Priority-based request sending
     */
    sendPriorityRequest(request: AgentRequest): Promise<AgentResponse>;
    /**
     * Batch request sending
     */
    sendBatchRequests(requests: AgentRequest[]): Promise<AgentResponse[]>;
    /**
     * Request with retry logic
     */
    sendRequestWithRetry(request: AgentRequest, maxRetries?: number, retryDelay?: number): Promise<AgentResponse>;
    private getAgentKey;
}
export declare class NetworkCommunicationChannel extends InMemoryCommunicationChannel {
    constructor();
}
//# sourceMappingURL=communication-channel.d.ts.map