/**
 * SocketClient - Client for attaching to a draht socket session
 *
 * Connects to a Unix domain socket, sends input, and receives output.
 * Used when running `draht --attach <session-id>`.
 */
import type { ClientMode } from "./types.js";
export interface SocketClientOptions {
    /** Path to the Unix socket */
    socketPath: string;
    /** Client identifier (defaults to random ID) */
    clientId?: string;
    /** Connection mode */
    mode?: ClientMode;
}
/**
 * SocketClient connects to a socket-based draht session.
 *
 * Provides callbacks for output, metadata, and connection events.
 */
export declare class SocketClient {
    #private;
    constructor(options: SocketClientOptions);
    /**
     * Connect to the socket server.
     */
    connect(): Promise<void>;
    /**
     * Disconnect from the socket server.
     */
    disconnect(): void;
    /**
     * Send input to the session.
     */
    sendInput(data: string): void;
    /**
     * Set callback for output received from session.
     */
    onOutput(callback: (data: string, stream: "stdout" | "stderr") => void): void;
    /**
     * Set callback for session metadata (received on attach).
     */
    onMetadata(callback: (sessionId: string, cwd: string, createdAt: Date) => void): void;
    /**
     * Set callback for when another client joins.
     */
    onClientJoined(callback: (clientId: string, mode: ClientMode) => void): void;
    /**
     * Set callback for when another client leaves.
     */
    onClientLeft(callback: (clientId: string) => void): void;
    /**
     * Set callback for input echo from other clients.
     */
    onInputEcho(callback: (data: string, clientId: string) => void): void;
    /**
     * Set callback for errors.
     */
    onError(callback: (message: string) => void): void;
    /**
     * Set callback for disconnect.
     */
    onDisconnect(callback: () => void): void;
}
//# sourceMappingURL=socket-client.d.ts.map