import type { HTTPRPCOptions } from '../index.js';
import type { HTTPRPCClient } from '../lib/core.js';
import type { PeerId } from '@libp2p/interface';
import type { Multiaddr } from '@multiformats/multiaddr';
export interface SwarmAPI {
    /**
     * List of known addresses of each peer connected
     */
    addrs(options?: HTTPRPCOptions): Promise<AddrsResult[]>;
    /**
     * Open a connection to a given address or peer id
     */
    connect(multiaddrOrPeerId: Multiaddr | PeerId, options?: HTTPRPCOptions): Promise<void>;
    /**
     * Close a connection to a given address or peer id
     */
    disconnect(multiaddrOrPeerId: Multiaddr | PeerId, options?: HTTPRPCOptions): Promise<void>;
    /**
     * Local addresses this node is listening on
     */
    localAddrs(options?: HTTPRPCOptions): Promise<Multiaddr[]>;
    /**
     * Return a list of connected peers
     */
    peers(options?: SwarmPeersOptions): Promise<SwarmPeersResult[]>;
}
export interface AddrsResult {
    id: PeerId;
    addrs: Multiaddr[];
}
export interface SwarmPeersOptions extends HTTPRPCOptions {
    direction?: boolean;
    streams?: boolean;
    verbose?: boolean;
    latency?: boolean;
    identify?: boolean;
}
export interface SwarmPeersResult {
    addr: Multiaddr;
    peer: PeerId;
    latency?: string;
    muxer?: string;
    streams?: string[];
    direction?: 'inbound' | 'outbound';
    error?: Error;
    identify?: {
        ID: string;
        PublicKey?: string;
        Addresses?: string[];
        AgentVersion?: string;
        Protocols?: string[];
    };
}
export declare function createSwarm(client: HTTPRPCClient): SwarmAPI;
//# sourceMappingURL=index.d.ts.map