import * as plugins from '../plugins.js'; import type { DcRouter } from '../classes.dcrouter.js'; export declare const GATEWAY_ROUTE_DNS_MANAGED_BY = "gateway-route-dns"; type TGatewayDnsResult = plugins.servezoneInterfaces.data.IGatewayRouteDnsResult; export interface IGatewayRouteDnsReconcileOptions { externalKey: string; gatewayClientId: string; hostname?: string; mode?: plugins.servezoneInterfaces.data.TGatewayRouteDnsMode; proxied?: boolean; delete?: boolean; } export interface IGatewayDnsActiveClaim { gatewayClientId: string; routeExternalKeys: string[]; } export declare function getActiveGatewayDnsClaims(dcRouterRefArg: Pick, hostnameArg: string): IGatewayDnsActiveClaim[]; export declare class GatewayRouteDnsReconciler { private dcRouterRef; private interval?; private fullReconcilePromise?; private lastAttemptByHostname; private latestIntentByHostname; private hostnameChains; private intentGeneration; constructor(dcRouterRef: DcRouter); start(): Promise; stop(): Promise; reconcileRoute(optionsArg: IGatewayRouteDnsReconcileOptions): Promise; private reconcileRouteWithExecution; private reconcileRouteUnderHostnameLock; runFullReconcile(force?: boolean): Promise; private reconcileAll; private deleteOwnedRecords; private getDesiredTargetIp; private getRemoteIngressPublicIp; private getRouteHostname; private buildWorkKey; /** * Recover the effective proxy state for a claim whose route carries no * explicit proxy intent. Preferring the reconciler's own record keeps managed * proxying stable, and falling back to any address record under the hostname * keeps an operator's proxy protection when automation claims the hostname. */ private getStoredProxiedState; private refreshProviderZone; buildClaimOwnerId(gatewayClientIdArg: string, hostnameArg: string): string; getActiveClaimsForHostname(hostnameArg: string): IGatewayDnsActiveClaim[]; private buildManagedRecordKey; private getContributingRouteKeys; private isAddressRecord; private normalizeStoredHostname; private toEvidence; private snapshotRecord; private restoreRecords; private withHostnameLock; private recordManualClaimEvent; private successForZone; private failureForZone; } export {};