/**
 * Agent Coordination System
 *
 * Swarm topologies and consensus protocols for multi-agent coordination.
 */
import { Agent, ConsensusState } from '../core/types.js';
export type Topology = 'peer' | 'hierarchical' | 'ring' | 'star';
export type Consensus = 'raft' | 'bft' | 'gossip' | 'crdt';
export declare class AgentCoordinator {
    private agents;
    private topology;
    private consensus;
    private consensusState;
    constructor(topology?: Topology, consensus?: Consensus);
    /**
     * Register an agent
     */
    register(agent: Agent): void;
    /**
     * Unregister an agent
     */
    unregister(agentId: string): void;
    /**
     * Get agent
     */
    getAgent(agentId: string): Agent | undefined;
    /**
     * Get all agents
     */
    getAllAgents(): Agent[];
    /**
     * Get agents by type
     */
    getAgentsByType(type: Agent['type']): Agent[];
    /**
     * Get neighbors for an agent based on topology
     */
    getNeighbors(agentId: string): string[];
    private getPeerNeighbors;
    private getHierarchicalNeighbors;
    private getRingNeighbors;
    private getStarNeighbors;
    /**
     * Coordinate task across agents
     */
    coordinate(task: string, agents: string[]): Promise<Array<{
        agentId: string;
        result: unknown;
    }>>;
    private hierarchicalCoordination;
    private parallelCoordination;
    private ringCoordination;
    private starCoordination;
    private distributeWork;
    private simulateWork;
    /**
     * Achieve consensus on a decision
     */
    consensusDecide(proposal: string, agents: string[]): Promise<{
        decided: boolean;
        result?: string;
    }>;
    private raftConsensus;
    private bftConsensus;
    private gossipConsensus;
    private crdtConsensus;
    private requestVotes;
    private calculateSimilarity;
    getTopology(): Topology;
    setTopology(topology: Topology): void;
    getConsensus(): Consensus;
    setConsensus(consensus: Consensus): void;
    getConsensusState(): ConsensusState;
}
export declare const createCoordinator: (topology?: Topology, consensus?: Consensus) => AgentCoordinator;
