import { type Socket } from "node:net"; import { type ResolveToduDaemonConfigOptions, type ToduDaemonConfig } from "./daemon-config"; import { type ToduDaemonEventListener, type ToduDaemonEventName, type ToduDaemonSubscription } from "./daemon-events"; export declare const TODU_DAEMON_PROTOCOL_VERSION = "1"; export declare const DEFAULT_TODU_DAEMON_CONNECT_TIMEOUT_MS = 1000; export declare const DEFAULT_TODU_DAEMON_REQUEST_TIMEOUT_MS = 10000; export declare const DEFAULT_TODU_DAEMON_RECONNECT_BACKOFF_MS: readonly [250, 500, 1000, 2000]; export interface ToduDaemonConnectionError { code: string; message: string; details?: Record; } export type ToduDaemonConnectionResult = { ok: true; value: T; } | { ok: false; error: ToduDaemonConnectionError; }; export interface ToduDaemonHelloResult { protocolVersion: string; daemonVersion?: string; role?: "node" | "authority"; capabilities?: { methods?: string[]; events?: string[]; }; catalog?: { id: string | null; }; } export type ToduDaemonConnectionStatus = "disconnected" | "connecting" | "connected" | "reconnecting"; export interface ToduDaemonConnectionState { status: ToduDaemonConnectionStatus; socketPath: string; handshake: ToduDaemonHelloResult | null; lastError: ToduDaemonConnectionError | null; } export interface ToduDaemonRequestOptions { timeoutMs?: number; } export interface CreateToduDaemonConnectionOptions extends ResolveToduDaemonConfigOptions { daemonConfig?: ToduDaemonConfig; connectTimeoutMs?: number; requestTimeoutMs?: number; reconnectBackoffMs?: readonly number[]; connect?: (socketPath: string) => Socket; requestIdFactory?: () => string; } export interface ToduDaemonConnection { getState(): ToduDaemonConnectionState; connect(): Promise; disconnect(): Promise; request(method: string, params?: Record, options?: ToduDaemonRequestOptions): Promise>; subscribe(listener: (state: ToduDaemonConnectionState) => void): ToduDaemonSubscription; subscribeToEvents(events: readonly ToduDaemonEventName[], listener: ToduDaemonEventListener): Promise; } declare const createDisconnectedDaemonConnectionState: (socketPath?: string) => ToduDaemonConnectionState; declare const createToduDaemonConnection: (options?: CreateToduDaemonConnectionOptions) => ToduDaemonConnection; declare const createDaemonUnavailableError: (socketPath: string, reason: string, details?: Record) => ToduDaemonConnectionError; export { createDisconnectedDaemonConnectionState, createToduDaemonConnection, createDaemonUnavailableError, };