UNPKG

@yandex-cloud/nodejs-sdk

Version:
1,070 lines (1,069 loc) 109 kB
import _m0 from "protobufjs/minimal"; import { LogOptions } from "../../../../yandex/cloud/apploadbalancer/v1/logging"; import { Target } from "../../../../yandex/cloud/apploadbalancer/v1/target_group"; export declare const protobufPackage = "yandex.cloud.apploadbalancer.v1"; /** * An application load balancer resource. * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/application-load-balancer). */ export interface LoadBalancer { $type: "yandex.cloud.apploadbalancer.v1.LoadBalancer"; /** ID of the application load balancer. Generated at creation time. */ id: string; /** Name of the application load balancer. The name is unique within the folder. */ name: string; /** Description of the application load balancer. */ description: string; /** ID of the folder that the application load balancer belongs to. */ folderId: string; /** * Application load balancer labels as `key:value` pairs. * For details about the concept, see [documentation](/docs/overview/concepts/services#labels). */ labels: { [key: string]: string; }; /** Status of the application load balancer. */ status: LoadBalancer_Status; /** ID of the region that the application load balancer is located at. */ regionId: string; /** ID of the network that the application load balancer belongs to. */ networkId: string; /** * Listeners that belong to the application load balancer. * * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/application-load-balancer#listener). */ listeners: Listener[]; /** * Locality settings of the application load balancer. * * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/application-load-balancer#lb-location). */ allocationPolicy?: AllocationPolicy; /** * ID of the log group that stores access logs of the application load balancer. * * The logs can be accessed using a Cloud Functions [trigger for Cloud Logs](/docs/functions/operations/trigger/cloudlogs-trigger-create). */ logGroupId: string; /** * ID's of the security groups attributed to the application load balancer. * * For details about the concept, * see [documentation](/docs/application-load-balancer/concepts/application-load-balancer#security-groups). */ securityGroupIds: string[]; /** Creation timestamp. */ createdAt?: Date; /** * Scaling settings of the application load balancer. * * The scaling settings relate to a special internal instance group which facilitates the balancer's work. * Instances in this group are called _resource units_. The group is scaled automatically based on incoming load * and within limitations specified in these settings. * * For details about the concept, * see [documentation](/docs/application-load-balancer/concepts/application-load-balancer#lcu-scaling). */ autoScalePolicy?: AutoScalePolicy; /** Cloud logging settings of the application load balancer. */ logOptions?: LogOptions; } export declare enum LoadBalancer_Status { STATUS_UNSPECIFIED = 0, /** CREATING - The application load balancer is being created. */ CREATING = 1, /** STARTING - The application load balancer is being started. */ STARTING = 2, /** ACTIVE - The application load balancer is active and sends traffic to the targets. */ ACTIVE = 3, /** STOPPING - The application load balancer is being stopped. */ STOPPING = 4, /** STOPPED - The application load balancer is stopped and doesn't send traffic to the targets. */ STOPPED = 5, /** DELETING - The application load balancer is being deleted. */ DELETING = 6, UNRECOGNIZED = -1 } export declare function loadBalancer_StatusFromJSON(object: any): LoadBalancer_Status; export declare function loadBalancer_StatusToJSON(object: LoadBalancer_Status): string; export interface LoadBalancer_LabelsEntry { $type: "yandex.cloud.apploadbalancer.v1.LoadBalancer.LabelsEntry"; key: string; value: string; } /** An endpoint address resource. */ export interface Address { $type: "yandex.cloud.apploadbalancer.v1.Address"; /** Public IPv4 endpoint address. */ externalIpv4Address?: ExternalIpv4Address | undefined; /** * Internal IPv4 endpoint address. * * To enable the use of listeners with internal addresses, [contact support](https://console.cloud.yandex.ru/support). */ internalIpv4Address?: InternalIpv4Address | undefined; /** Public IPv6 endpoint address. */ externalIpv6Address?: ExternalIpv6Address | undefined; } /** A public (external) IPv4 endpoint address resource. */ export interface ExternalIpv4Address { $type: "yandex.cloud.apploadbalancer.v1.ExternalIpv4Address"; /** IPv4 address. */ address: string; } /** An internal IPv4 endpoint address resource. */ export interface InternalIpv4Address { $type: "yandex.cloud.apploadbalancer.v1.InternalIpv4Address"; /** IPv4 address. */ address: string; /** ID of the subnet that the address belongs to. */ subnetId: string; } /** A public (external) IPv4 endpoint address resource. */ export interface ExternalIpv6Address { $type: "yandex.cloud.apploadbalancer.v1.ExternalIpv6Address"; /** IPv6 address. */ address: string; } /** * An application load balancer location resource. * * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/application-load-balancer#lb-location). */ export interface Location { $type: "yandex.cloud.apploadbalancer.v1.Location"; /** * ID of the availability zone where the application load balancer resides. * * Each availability zone can only be specified once. */ zoneId: string; /** ID of the subnet that the application load balancer belongs to. */ subnetId: string; /** * Disables the load balancer node in the specified availability zone. * * Backends in the availability zone are not directly affected by this setting. * They still may receive traffic from the load balancer nodes in other availability zones, * subject to [LoadBalancingConfig.locality_aware_routing_percent] and [LoadBalancingConfig.strict_locality] settings. */ disableTraffic: boolean; } /** A locality settings (allocation policy) resource. */ export interface AllocationPolicy { $type: "yandex.cloud.apploadbalancer.v1.AllocationPolicy"; /** Availability zones and subnets that the application load balancer resides. */ locations: Location[]; } /** * A listener resource. * * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/application-load-balancer#listener). */ export interface Listener { $type: "yandex.cloud.apploadbalancer.v1.Listener"; /** * Name of the listener. The name is unique within the application load balancer. * The string length in characters is 3-63. */ name: string; /** * Endpoints of the listener. * * Endpoints are defined by their IP addresses and ports. */ endpoints: Endpoint[]; /** Unencrypted HTTP listener settings. */ http?: HttpListener | undefined; /** * TLS-encrypted HTTP or TCP stream listener settings. * * All handlers within a listener ([TlsListener.default_handler] and [TlsListener.sni_handlers]) must be of one * type, [HttpHandler] or [StreamHandler]. Mixing HTTP and TCP stream traffic in a TLS-encrypted listener is not * supported. */ tls?: TlsListener | undefined; /** Unencrypted stream (TCP) listener settings. */ stream?: StreamListener | undefined; } /** An endpoint resource. */ export interface Endpoint { $type: "yandex.cloud.apploadbalancer.v1.Endpoint"; /** Endpoint public (external) and internal addresses. */ addresses: Address[]; /** Endpoint ports. */ ports: number[]; } /** An HTTP listener resource. */ export interface HttpListener { $type: "yandex.cloud.apploadbalancer.v1.HttpListener"; /** * Settings for handling HTTP requests. * * Only one of `handler` and [redirects] can be specified. */ handler?: HttpHandler; /** * Redirects settings. * * Only one of `redirects` and [handler] can be specified. */ redirects?: Redirects; } /** TLS-encrypted (HTTP or TCP stream) listener resource. */ export interface TlsListener { $type: "yandex.cloud.apploadbalancer.v1.TlsListener"; /** * Settings for handling requests by default, with Server Name * Indication (SNI) not matching any of the [sni_handlers]. */ defaultHandler?: TlsHandler; /** * Settings for handling requests with Server Name Indication (SNI) * matching one of [SniMatch.server_names] values. */ sniHandlers: SniMatch[]; } /** A stream (TCP) listener resource. */ export interface StreamListener { $type: "yandex.cloud.apploadbalancer.v1.StreamListener"; /** Settings for handling stream (TCP) requests. */ handler?: StreamHandler; } /** An HTTP/2 options resource. */ export interface Http2Options { $type: "yandex.cloud.apploadbalancer.v1.Http2Options"; /** Maximum number of concurrent HTTP/2 streams in a connection. */ maxConcurrentStreams: number; } /** A stream (TCP) handler resource. */ export interface StreamHandler { $type: "yandex.cloud.apploadbalancer.v1.StreamHandler"; /** * ID of the backend group processing requests. For details about the concept, see * [documentation](/docs/application-load-balancer/concepts/backend-group). * * The backend group type, specified via [BackendGroup.backend], must be `stream`. * * To get the list of all available backend groups, make a [BackendGroupService.List] request. */ backendGroupId: string; } /** An HTTP handler resource. */ export interface HttpHandler { $type: "yandex.cloud.apploadbalancer.v1.HttpHandler"; /** * ID of the HTTP router processing requests. For details about the concept, see * [documentation](/docs/application-load-balancer/concepts/http-router). * * To get the list of all available HTTP routers, make a [HttpRouterService.List] request. */ httpRouterId: string; /** * HTTP/2 settings. * * If specified, incoming HTTP/2 requests are supported by the listener. */ http2Options?: Http2Options | undefined; /** Enables support for incoming HTTP/1.0 and HTTP/1.1 requests and disables it for HTTP/2 requests. */ allowHttp10: boolean | undefined; /** When unset, will preserve the incoming x-request-id header, otherwise would rewrite it with a new value. */ rewriteRequestId: boolean; } /** A listener redirects resource. */ export interface Redirects { $type: "yandex.cloud.apploadbalancer.v1.Redirects"; /** * Redirects all unencrypted HTTP requests to the same URI with scheme changed to `https`. * * The setting has the same effect as a single, catch-all [HttpRoute] * with [RedirectAction.replace_scheme] set to `https`. */ httpToHttps: boolean; } /** A SNI handler resource. */ export interface SniMatch { $type: "yandex.cloud.apploadbalancer.v1.SniMatch"; /** Name of the SNI handler. */ name: string; /** Server names that are matched by the SNI handler. */ serverNames: string[]; /** Settings for handling requests with Server Name Indication (SNI) matching one of [server_names] values. */ handler?: TlsHandler; } /** A TLS-encrypted (HTTP or TCP stream) handler resource. */ export interface TlsHandler { $type: "yandex.cloud.apploadbalancer.v1.TlsHandler"; /** HTTP handler. */ httpHandler?: HttpHandler | undefined; /** Stream (TCP) handler. */ streamHandler?: StreamHandler | undefined; /** * ID's of the TLS server certificates from [Certificate Manager](/docs/certificate-manager/). * * RSA and ECDSA certificates are supported, and only the first certificate of each type is used. */ certificateIds: string[]; } /** A target state resource. */ export interface TargetState { $type: "yandex.cloud.apploadbalancer.v1.TargetState"; /** Health of the target, i.e. its statuses in all availability zones. */ status?: TargetState_HealthcheckStatus; /** Target. */ target?: Target; } /** Supported target statuses. */ export declare enum TargetState_Status { STATUS_UNSPECIFIED = 0, /** * HEALTHY - All of the health checks specified in [HttpBackend.healthchecks] or [GrpcBackend.healthchecks] are passed * (the number depends on the [HealthCheck.healthy_threshold] setting) and the target is ready to receive traffic. */ HEALTHY = 1, /** * PARTIALLY_HEALTHY - Some of the health checks specified in [HttpBackend.healthchecks] or [GrpcBackend.healthchecks] failed * (the number depends on the [HealthCheck.unhealthy_threshold] setting). * The target is ready to receive traffic from the load balancer nodes which, based on their health checks, * consider the target healthy. */ PARTIALLY_HEALTHY = 2, /** * UNHEALTHY - All of the health checks specified in [HttpBackend.healthchecks] or [GrpcBackend.healthchecks] failed * (the number depends on the [HealthCheck.unhealthy_threshold] setting) and the target is not receiving traffic. */ UNHEALTHY = 3, /** DRAINING - Target is being deleted and the application load balancer is no longer sending traffic to this target. */ DRAINING = 4, TIMEOUT = 5, UNRECOGNIZED = -1 } export declare function targetState_StatusFromJSON(object: any): TargetState_Status; export declare function targetState_StatusToJSON(object: TargetState_Status): string; /** Health of the target. */ export interface TargetState_HealthcheckStatus { $type: "yandex.cloud.apploadbalancer.v1.TargetState.HealthcheckStatus"; /** Statuses of the target in its availability zones. */ zoneStatuses: TargetState_ZoneHealthcheckStatus[]; } /** Health of the target in the availability zone. */ export interface TargetState_ZoneHealthcheckStatus { $type: "yandex.cloud.apploadbalancer.v1.TargetState.ZoneHealthcheckStatus"; /** ID of the availability zone. */ zoneId: string; /** Status of the target in the availability zone. */ status: TargetState_Status; /** * Indicates whether the target has been marked `UNHEALTHY` due to failing active health checks, * which determine target statuses as configured in [HttpBackend.healthchecks] or [GrpcBackend.healthchecks]. * * Currently the only type of health checks is active, as described above. * Passive health checks, which determine the health of a target based on its responses to production requests * (HTTP 5xx status codes, connection errors etc.), are not implemented yet. */ failedActiveHc: boolean; } /** A resource for scaling settings of an application load balancer. */ export interface AutoScalePolicy { $type: "yandex.cloud.apploadbalancer.v1.AutoScalePolicy"; /** * Lower limit for the number of resource units in each availability zone. * * If not specified previously (using other instruments such as management console), the default value is 2. * To revert to it, specify it explicitly. * * The minimum value is 2. */ minZoneSize: number; /** * Upper limit for the total number of resource units across all availability zones. * * If a positive value is specified, it must be at least [min_zone_size] multiplied by the size of * [AllocationPolicy.locations]. * * If the value is 0, there is no upper limit. */ maxSize: number; } export declare const LoadBalancer: { $type: "yandex.cloud.apploadbalancer.v1.LoadBalancer"; encode(message: LoadBalancer, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number | undefined): LoadBalancer; fromJSON(object: any): LoadBalancer; toJSON(message: LoadBalancer): unknown; fromPartial<I extends { description?: string | undefined; id?: string | undefined; name?: string | undefined; createdAt?: Date | undefined; status?: LoadBalancer_Status | undefined; folderId?: string | undefined; labels?: { [x: string]: string | undefined; [x: number]: string | undefined; } | undefined; logGroupId?: string | undefined; regionId?: string | undefined; networkId?: string | undefined; securityGroupIds?: string[] | undefined; listeners?: { name?: string | undefined; http?: { handler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; redirects?: { httpToHttps?: boolean | undefined; } | undefined; } | undefined; stream?: { handler?: { backendGroupId?: string | undefined; } | undefined; } | undefined; tls?: { defaultHandler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; sniHandlers?: { name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[] | undefined; } | undefined; endpoints?: { addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; }[] | undefined; }[] | undefined; allocationPolicy?: { locations?: { subnetId?: string | undefined; zoneId?: string | undefined; disableTraffic?: boolean | undefined; }[] | undefined; } | undefined; autoScalePolicy?: { minZoneSize?: number | undefined; maxSize?: number | undefined; } | undefined; logOptions?: { logGroupId?: string | undefined; disable?: boolean | undefined; discardRules?: { httpCodes?: number[] | undefined; httpCodeIntervals?: import("../../../../yandex/cloud/apploadbalancer/v1/logging").HttpCodeInterval[] | undefined; grpcCodes?: import("../../../../google/rpc/code").Code[] | undefined; discardPercent?: number | undefined; }[] | undefined; } | undefined; } & { description?: string | undefined; id?: string | undefined; name?: string | undefined; createdAt?: Date | undefined; status?: LoadBalancer_Status | undefined; folderId?: string | undefined; labels?: ({ [x: string]: string | undefined; [x: number]: string | undefined; } & { [x: string]: string | undefined; [x: number]: string | undefined; } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined; logGroupId?: string | undefined; regionId?: string | undefined; networkId?: string | undefined; securityGroupIds?: (string[] & string[] & Record<Exclude<keyof I["securityGroupIds"], "$type" | keyof string[]>, never>) | undefined; listeners?: ({ name?: string | undefined; http?: { handler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; redirects?: { httpToHttps?: boolean | undefined; } | undefined; } | undefined; stream?: { handler?: { backendGroupId?: string | undefined; } | undefined; } | undefined; tls?: { defaultHandler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; sniHandlers?: { name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[] | undefined; } | undefined; endpoints?: { addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; }[] | undefined; }[] & ({ name?: string | undefined; http?: { handler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; redirects?: { httpToHttps?: boolean | undefined; } | undefined; } | undefined; stream?: { handler?: { backendGroupId?: string | undefined; } | undefined; } | undefined; tls?: { defaultHandler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; sniHandlers?: { name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[] | undefined; } | undefined; endpoints?: { addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; }[] | undefined; } & { name?: string | undefined; http?: ({ handler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; redirects?: { httpToHttps?: boolean | undefined; } | undefined; } & { handler?: ({ httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } & { httpRouterId?: string | undefined; http2Options?: ({ maxConcurrentStreams?: number | undefined; } & { maxConcurrentStreams?: number | undefined; } & Record<Exclude<keyof I["listeners"][number]["http"]["handler"]["http2Options"], "$type" | "maxConcurrentStreams">, never>) | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } & Record<Exclude<keyof I["listeners"][number]["http"]["handler"], "$type" | "httpRouterId" | "http2Options" | "allowHttp10" | "rewriteRequestId">, never>) | undefined; redirects?: ({ httpToHttps?: boolean | undefined; } & { httpToHttps?: boolean | undefined; } & Record<Exclude<keyof I["listeners"][number]["http"]["redirects"], "$type" | "httpToHttps">, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["http"], "$type" | "handler" | "redirects">, never>) | undefined; stream?: ({ handler?: { backendGroupId?: string | undefined; } | undefined; } & { handler?: ({ backendGroupId?: string | undefined; } & { backendGroupId?: string | undefined; } & Record<Exclude<keyof I["listeners"][number]["stream"]["handler"], "$type" | "backendGroupId">, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["stream"], "$type" | "handler">, never>) | undefined; tls?: ({ defaultHandler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; sniHandlers?: { name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[] | undefined; } & { defaultHandler?: ({ httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } & { httpHandler?: ({ httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } & { httpRouterId?: string | undefined; http2Options?: ({ maxConcurrentStreams?: number | undefined; } & { maxConcurrentStreams?: number | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["defaultHandler"]["httpHandler"]["http2Options"], "$type" | "maxConcurrentStreams">, never>) | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["defaultHandler"]["httpHandler"], "$type" | "httpRouterId" | "http2Options" | "allowHttp10" | "rewriteRequestId">, never>) | undefined; streamHandler?: ({ backendGroupId?: string | undefined; } & { backendGroupId?: string | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["defaultHandler"]["streamHandler"], "$type" | "backendGroupId">, never>) | undefined; certificateIds?: (string[] & string[] & Record<Exclude<keyof I["listeners"][number]["tls"]["defaultHandler"]["certificateIds"], "$type" | keyof string[]>, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["defaultHandler"], "$type" | "httpHandler" | "streamHandler" | "certificateIds">, never>) | undefined; sniHandlers?: ({ name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[] & ({ name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; } & { name?: string | undefined; handler?: ({ httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } & { httpHandler?: ({ httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } & { httpRouterId?: string | undefined; http2Options?: ({ maxConcurrentStreams?: number | undefined; } & { maxConcurrentStreams?: number | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number]["handler"]["httpHandler"]["http2Options"], "$type" | "maxConcurrentStreams">, never>) | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number]["handler"]["httpHandler"], "$type" | "httpRouterId" | "http2Options" | "allowHttp10" | "rewriteRequestId">, never>) | undefined; streamHandler?: ({ backendGroupId?: string | undefined; } & { backendGroupId?: string | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number]["handler"]["streamHandler"], "$type" | "backendGroupId">, never>) | undefined; certificateIds?: (string[] & string[] & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number]["handler"]["certificateIds"], "$type" | keyof string[]>, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number]["handler"], "$type" | "httpHandler" | "streamHandler" | "certificateIds">, never>) | undefined; serverNames?: (string[] & string[] & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number]["serverNames"], "$type" | keyof string[]>, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"][number], "$type" | "name" | "handler" | "serverNames">, never>)[] & Record<Exclude<keyof I["listeners"][number]["tls"]["sniHandlers"], "$type" | keyof { name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[]>, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["tls"], "$type" | "defaultHandler" | "sniHandlers">, never>) | undefined; endpoints?: ({ addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; }[] & ({ addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; } & { addresses?: ({ externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] & ({ externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; } & { externalIpv4Address?: ({ address?: string | undefined; } & { address?: string | undefined; } & Record<Exclude<keyof I["listeners"][number]["endpoints"][number]["addresses"][number]["externalIpv4Address"], "$type" | "address">, never>) | undefined; internalIpv4Address?: ({ subnetId?: string | undefined; address?: string | undefined; } & { subnetId?: string | undefined; address?: string | undefined; } & Record<Exclude<keyof I["listeners"][number]["endpoints"][number]["addresses"][number]["internalIpv4Address"], "$type" | "subnetId" | "address">, never>) | undefined; externalIpv6Address?: ({ address?: string | undefined; } & { address?: string | undefined; } & Record<Exclude<keyof I["listeners"][number]["endpoints"][number]["addresses"][number]["externalIpv6Address"], "$type" | "address">, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["endpoints"][number]["addresses"][number], "$type" | "externalIpv4Address" | "internalIpv4Address" | "externalIpv6Address">, never>)[] & Record<Exclude<keyof I["listeners"][number]["endpoints"][number]["addresses"], "$type" | keyof { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[]>, never>) | undefined; ports?: (number[] & number[] & Record<Exclude<keyof I["listeners"][number]["endpoints"][number]["ports"], "$type" | keyof number[]>, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number]["endpoints"][number], "$type" | "addresses" | "ports">, never>)[] & Record<Exclude<keyof I["listeners"][number]["endpoints"], "$type" | keyof { addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; }[]>, never>) | undefined; } & Record<Exclude<keyof I["listeners"][number], "$type" | "name" | "http" | "stream" | "tls" | "endpoints">, never>)[] & Record<Exclude<keyof I["listeners"], "$type" | keyof { name?: string | undefined; http?: { handler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; redirects?: { httpToHttps?: boolean | undefined; } | undefined; } | undefined; stream?: { handler?: { backendGroupId?: string | undefined; } | undefined; } | undefined; tls?: { defaultHandler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; sniHandlers?: { name?: string | undefined; handler?: { httpHandler?: { httpRouterId?: string | undefined; http2Options?: { maxConcurrentStreams?: number | undefined; } | undefined; allowHttp10?: boolean | undefined; rewriteRequestId?: boolean | undefined; } | undefined; streamHandler?: { backendGroupId?: string | undefined; } | undefined; certificateIds?: string[] | undefined; } | undefined; serverNames?: string[] | undefined; }[] | undefined; } | undefined; endpoints?: { addresses?: { externalIpv4Address?: { address?: string | undefined; } | undefined; internalIpv4Address?: { subnetId?: string | undefined; address?: string | undefined; } | undefined; externalIpv6Address?: { address?: string | undefined; } | undefined; }[] | undefined; ports?: number[] | undefined; }[] | undefined; }[]>, never>) | undefined; allocationPolicy?: ({ locations?: { subnetId?: string | undefined; zoneId?: string | undefined; disableTraffic?: boolean | undefined; }[] | undefined; } & { locations?: ({ subnetId?: string | undefined; zoneId?: string | undefined; disableTraffic?: boolean | undefined; }[] & ({ subnetId?: string | undefined; zoneId?: string | undefined; disableTraffic?: boolean | undefined; } & { subnetId?: string | undefined; zoneId?: string | undefined; disableTraffic?: boolean | undefined; } & Record<Exclude<keyof I["allocationPolicy"]["locations"][number], "$type" | "subnetId" | "zoneId" | "disableTraffic">, never>)[] & Record<Exclude<keyof I["allocationPolicy"]["locations"], "$type" | keyof { subnetId?: string | undefined; zoneId?: string | undefined; disableTraffic?: boolean | undefined; }[]>, never>) | undefined; } & Record<Exclude<keyof I["allocationPolicy"], "$type" | "locations">, never>) | undefined; autoScalePolicy?: ({ minZoneSize?: number | undefined; maxSize?: number | undefined; } & { minZoneSize?: number | undefined;