/**
 * Iroh Sync Transport
 *
 * Implements SyncTransport over Iroh QUIC bidirectional streams.
 * Each send opens its own connection (simple, reliable).
 * Peers are auto-registered when accepting incoming connections,
 * enabling true bidirectional communication.
 */
import { Endpoint, EndpointAddr } from '@number0/iroh';
import type { SyncTransport, SyncMessage, SyncMessageHandler, PeerId } from './types.js';
export interface IrohSyncTransportOptions {
    /** Pre-existing endpoint (for testing). */
    endpoint?: Endpoint;
    /** Secret key bytes (for deterministic identity). */
    secretKey?: number[];
    /** Disable relay (offline/test mode). */
    disableRelay?: boolean;
}
export declare class IrohSyncTransport implements SyncTransport {
    private endpoint;
    private handler;
    private peerAddrs;
    private peerNames;
    private acceptLoopRunning;
    private pendingMessages;
    private constructor();
    /**
     * Create a new Iroh sync transport.
     * Binds an endpoint with the trellis-sync ALPN and starts accepting.
     */
    static create(opts?: IrohSyncTransportOptions): Promise<IrohSyncTransport>;
    /**
     * Get a ticket string to share with peers.
     */
    ticket(): string;
    /**
     * Connect to a remote peer by ticket string.
     */
    connectToPeer(ticketStr: string, peerId: string, peerName?: string): Promise<void>;
    /**
     * Register a peer by explicit EndpointAddr (for programmatic use).
     */
    addPeer(peerId: string, addr: EndpointAddr, name?: string): void;
    /** The local endpoint's ID (hex string). */
    localId(): string;
    send(peerId: string, message: SyncMessage): Promise<void>;
    onMessage(handler: SyncMessageHandler): void;
    peers(): PeerId[];
    /** Connect (no-op — Iroh endpoint is always listening after create). */
    connect(): Promise<void>;
    /** Disconnect (no-op — the endpoint stays open until close()). */
    disconnect(): Promise<void>;
    /** Tear down the endpoint. */
    close(): Promise<void>;
    private startAcceptLoop;
    private handleIncoming;
}
//# sourceMappingURL=iroh-transport.d.ts.map