import { EventEmitter } from 'events';
export type ACPMessageType = 'request' | 'response' | 'event' | 'error';
export interface ACPMessage {
    id: string;
    type: ACPMessageType;
    from: string;
    to: string;
    action: string;
    payload: unknown;
    correlationId?: string;
    timestamp: number;
    ttl?: number;
}
export interface ACPAgent {
    id: string;
    name: string;
    capabilities: string[];
    status: 'ready' | 'busy' | 'offline';
}
export declare class ACPRouter extends EventEmitter {
    private agents;
    private handlers;
    private pendingRequests;
    private messageLog;
    private maxLogSize;
    constructor(maxLogSize?: number);
    register(agent: ACPAgent): void;
    unregister(agentId: string): void;
    onAction(action: string, handler: (msg: ACPMessage) => Promise<ACPMessage | null>): void;
    send(partial: Omit<ACPMessage, 'id' | 'timestamp'>): Promise<ACPMessage | null>;
    request(to: string, action: string, payload: unknown, timeoutMs?: number): Promise<ACPMessage>;
    private route;
    private resolveRequest;
    getAgents(): ACPAgent[];
    getAgent(id: string): ACPAgent | undefined;
    setAgentStatus(agentId: string, status: ACPAgent['status']): void;
    findByCapability(capability: string): ACPAgent[];
    getLog(): ACPMessage[];
    clearLog(): void;
    dispose(): void;
}
