/** * DDS graph discovery is asynchronous. A node that just joined the domain * sees topics trickle in, so the first snapshot has to wait until the count * stops changing. Once that has happened, later reads of * `getTopicNamesAndTypes()` are the live graph and do not need another wait. */ export interface TopicNameAndTypes { name: string; types: string[]; } export interface StableTopicWaitOptions { /** Stop waiting at this timestamp (ms). Default: now + 6000. */ deadlineMs?: number; /** Pause between polls. Default: 300. */ intervalMs?: number; /** * Ignore stability until at least this many external topics are visible. * Avoids treating `/clock` + `/tf` + `/tf_static` as the whole graph. */ minCount?: number; /** Consecutive unchanged polls required. Default: 2 (~900ms at the default interval). */ requiredHits?: number; now?: () => number; sleep?: (ms: number) => Promise; } /** * Poll `read` until the topic count is unchanged for `requiredHits` polls * and at least `minCount` topics are present, or until the deadline. * Returns the last raw snapshot (caller filters internal topics). */ export declare function waitForStableTopics(read: () => TopicNameAndTypes[], options?: StableTopicWaitOptions): Promise; //# sourceMappingURL=graph-discovery.d.ts.map