import { spawn as spawnChild } from "node:child_process"; import type { IncomingMessage } from "node:http"; import type { ClosedEndpointLookup } from "./closed-endpoint-lookup.js"; import type { ConnectorWS } from "./connector-ws.js"; import { type ControlEventDispatcher } from "./control-event-dispatcher.js"; import type { ControlAck } from "./control-event-types.js"; import { type DiscoveryRecord } from "./discovery-file.js"; import { type BrokerEndpointEntry } from "./endpoint-registry.js"; import { type EndpointState } from "./endpoint-state-machine.js"; import type { BrokerLogger } from "./logger.js"; import { Mailroom } from "./mailroom.js"; import { type NetworkPresence } from "./network-presence.js"; import type { NetworkPresenceChangedEvent } from "./network-presence-changed-event-types.js"; import { type BrokerPaths } from "./paths.js"; import { type BufferedMessage } from "./reconnecting-buffer.js"; import type { RuntimeEndpointPort } from "./runtime-endpoint-port.js"; import type { RuntimeInboundRouteClaimEvent, RuntimeInboundRoutedEvent } from "./runtime-inbound-routed-event-types.js"; import type { ServicesEventClient } from "./services-event-client.js"; import type { SpawnDriverRegistry } from "./spawn-driver.js"; import { type UndispatchedChangedEvent } from "./undispatched-changed-event-types.js"; import { type UndispatchedInbox } from "./undispatched-inbox.js"; export interface BrokerDaemonOptions { paths: BrokerPaths; asNodeId: string; connector: ConnectorWS; apiPort: RuntimeEndpointPort; logger: BrokerLogger; closedEndpointLookup?: ClosedEndpointLookup; inboxCapacity?: number; graceMs?: number; livenessProbe?: (plugin_pid: number) => boolean; spawnDriverRegistry?: SpawnDriverRegistry; spawnFn?: typeof spawnChild; spawnRateLimitMaxInWindow?: number; spawnRateLimitWindowMs?: number; spawnCorrelationTimeoutMs?: number; presenceGraceMs?: number; retryQueueCapacity?: number; servicesEventClientFactory?: (deps: { dispatcher: ControlEventDispatcher; logger: BrokerLogger; }) => ServicesEventClient; postControlAck?: (ack: ControlAck) => Promise; replyCorrelationTtlMs?: number; replyCorrelationCapPerEndpoint?: number; undispatchedChangedPost?: (event: UndispatchedChangedEvent) => Promise; undispatchedChangedCapacity?: number; undispatchedChangedBackoffInitialMs?: number; undispatchedChangedBackoffMaxMs?: number; undispatchedChangedMaxRetries?: number; networkPresenceChangedPost?: (event: NetworkPresenceChangedEvent) => Promise; networkPresenceChangedCapacity?: number; networkPresenceChangedBackoffInitialMs?: number; networkPresenceChangedBackoffMaxMs?: number; networkPresenceChangedMaxRetries?: number; runtimeInboundRoutedPost?: (event: RuntimeInboundRoutedEvent) => Promise; runtimeInboundRouteClaimPost?: (event: RuntimeInboundRouteClaimEvent) => Promise; runtimeInboundRoutedCapacity?: number; runtimeInboundRoutedBackoffInitialMs?: number; runtimeInboundRoutedBackoffMaxMs?: number; runtimeInboundRoutedMaxRetries?: number; runtimeAssignmentAcceptanceTimeoutMs?: number; stagedDeliveryMaxHoldMs?: number; pushReceiptAckTimeoutMs?: number; exit?: (code: number) => void; } export interface RunningBroker { bearerToken: string; ipcUrl: string; shutdown(reason: string): Promise; registrySize(): number; state(endpoint_id: string): EndpointState | undefined; displayMetadata(endpoint_id: string): BrokerEndpointEntry["display_metadata"] | undefined; undispatchedInbox: UndispatchedInbox; controlEventDispatcher: ControlEventDispatcher; networkPresence(): NetworkPresence; pendingSpawnCount(): number; retryQueueSize(): number; replyCorrelationCacheSize(endpoint_id: string): number; undispatchedChangedQueueSize(): number; networkPresenceChangedQueueSize(): number; runtimeInboundRoutedQueueSize(): number; mailroom: Mailroom; } export declare class BrokerAlreadyRunningError extends Error { readonly discovery: DiscoveryRecord; constructor(discovery: DiscoveryRecord); } export declare function startBrokerDaemon(opts: BrokerDaemonOptions): Promise; export declare function readPluginPidHeader(req: IncomingMessage): number | null; export type { BufferedMessage }; //# sourceMappingURL=broker-daemon.d.ts.map