import { EventEmitter } from 'eventemitter3';
import { AgentId, AgentMetadata, AgentRegistry, AgentStatus, AgentEvent, AgentState, AgentHealth } from '../types/agent.js';
export declare class InMemoryAgentRegistry extends EventEmitter implements AgentRegistry {
    private agents;
    private agentStatus;
    private capabilityIndex;
    constructor();
    registerAgent(metadata: AgentMetadata): Promise<void>;
    unregisterAgent(agentId: AgentId): Promise<void>;
    getAgent(agentId: AgentId): Promise<AgentMetadata | null>;
    listAgents(): Promise<AgentMetadata[]>;
    findAgentsByCapability(capability: string): Promise<AgentMetadata[]>;
    updateAgentStatus(status: AgentStatus): Promise<void>;
    getAgentStatus(agentId: AgentId): Promise<AgentStatus | null>;
    getAllAgentStatuses(): Promise<AgentStatus[]>;
    subscribeToEvents(callback: (event: AgentEvent) => void): void;
    unsubscribeFromEvents(callback: (event: AgentEvent) => void): void;
    /**
     * Health check methods
     */
    performHealthCheck(): Promise<{
        healthy: number;
        unhealthy: number;
        total: number;
    }>;
    /**
     * Get agents by state
     */
    getAgentsByState(state: AgentState): Promise<AgentMetadata[]>;
    /**
     * Get agents by health
     */
    getAgentsByHealth(health: AgentHealth): Promise<AgentMetadata[]>;
    /**
     * Get registry statistics
     */
    getRegistryStats(): Promise<{
        totalAgents: number;
        activeAgents: number;
        capabilities: number;
        averageUptime: number;
        totalRequests: number;
        totalErrors: number;
    }>;
    private getAgentKey;
}
export declare class DistributedAgentRegistry extends InMemoryAgentRegistry {
    constructor();
}
//# sourceMappingURL=agent-registry.d.ts.map