import { processIncarnation } from "./process-incarnation"; import { SDK_STATE_VERSION } from "./state-version"; export type BrokerPublicationObservation = "owned" | "absent" | "replaced" | "ambiguous"; export interface RetainedBrokerDiscovery { observe(): BrokerPublicationObservation; observeAsync(): Promise; heartbeat(heartbeatAt: number): Promise; close(): void; } export declare const BROKER_HEARTBEAT_TTL_MS = 15000; export interface BrokerDiscovery { version: typeof SDK_STATE_VERSION; protocolVersion: 3; packageGeneration: string; ownerId: string; pid: number; incarnation: string; host: "127.0.0.1"; port: number; url: string; token: string; startedAt: number; heartbeatAt: number; } export type RedactedBrokerDiscovery = Omit & { token: "[redacted]"; }; export type BrokerDiscoveryWrite = Omit & { incarnation?: string; }; export declare const brokerDiscoveryPath: (agentDir: string) => string; export declare const newBrokerToken: () => string; export declare const brokerProcessIncarnation: typeof processIncarnation; export declare function isPidAlive(pid: number): boolean; export declare function writeBrokerDiscovery(agentDir: string, discovery: BrokerDiscoveryWrite): Promise; /** Publish once by name, then retain no-follow native authority for recurring heartbeats. */ export declare function publishBrokerDiscovery(agentDir: string, discovery: BrokerDiscoveryWrite, platform?: NodeJS.Platform): Promise; /** Heartbeat through retained authority, or the explicit Windows compatibility path. */ export declare function heartbeatBrokerDiscoveryRetained(publication: RetainedBrokerDiscovery, heartbeatAt: number): Promise; export declare function readBrokerDiscovery(agentDir: string, ttlMs?: number): Promise; export declare function redactBrokerDiscovery(discovery: BrokerDiscovery): RedactedBrokerDiscovery;