export type NLBMapping = { /** The port to expose on the NLB (must be in 7700-7799 range) */ port: number; protocol: "udp" | "tcp"; /** Health check config — NLB uses HTTP/TCP health checks even for UDP targets */ healthCheck?: { port: string; path?: string; protocol?: "HTTP" | "TCP"; }; /** * split-dns mode: provide a dedicated subdomain for NLB traffic * (e.g. "pulse-udp." + publicDomain). The main hostname stays proxied via ALB. * * unified-dns mode (default): omit this — the main hostname's Cloudflare record * becomes unproxied and points to the NLB instead of the ALB. */ separateDomain?: string; }; /** * Expose a service port via the shared NLB. Creates an NLB target group, * listener, and Cloudflare DNS record. * * @param name unique resource name prefix * @param domain the service's main hostname (e.g. "pulse-server.decentraland.zone") * @param port the port to expose (e.g. 7777) * @param protocol "udp" or "tcp" * @param vpcId VPC ID for the target group * @param healthCheck health check config for the NLB target group * @param separateDomain if provided, creates DNS on this domain instead of the main one * @param skipDnsRecord skip the Cloudflare record (another mapping on the same domain already created it) */ export declare function exposeNlbService(name: string, domain: string, port: number, protocol: "udp" | "tcp", vpcId: string, healthCheck?: NLBMapping["healthCheck"], separateDomain?: string, skipDnsRecord?: boolean): Promise<{ targetGroup: import("@pulumi/aws/lb/targetGroup").TargetGroup; listener: import("@pulumi/aws/lb/listener").Listener; cloudflareRecord: import("@pulumi/cloudflare/record").Record | undefined; }>;