import { EdgeNodeRepository } from '../identity/drizzle/EdgeNodeRepository'; import { type HeadProbeRequest, type ResolveAddresses } from './ProbeTargetGuard'; interface EdgeNodeHealthProbeServiceOptions { repository?: EdgeNodeRepository; identityDbUrl?: string; enabled?: boolean | string; timeoutMs?: number | string; locations?: string | string[]; /** DNS resolution used to validate probe targets; injected in tests. */ resolveAddresses?: ResolveAddresses; /** Transport for the direct HEAD probe; injected in tests. */ headRequest?: HeadProbeRequest; /** Redirect hops followed while re-validating every target. */ maxRedirects?: number; } export declare class EdgeNodeHealthProbeService { private readonly logger; private readonly repository?; private readonly enabled; private readonly timeoutMs; private readonly locations; private readonly resolveAddresses?; private readonly headRequest; private readonly maxRedirects; constructor(options: EdgeNodeHealthProbeServiceOptions); probeNode(nodeId: string): Promise; private collectCandidates; private extractTunnelEntrypoint; private extractManagedTunnelEndpoint; private extractNonEmptyString; private ping; /** * Follows redirects by hand so every hop is validated again: a public entry point must * not be able to bounce the probe into a private address. */ private probePublicCandidate; private toUrl; private createRepository; private normalizeBoolean; private normalizeTimeout; private normalizeLocations; } export {};