import _m0 from 'protobufjs/minimal'; import { RateLimit } from '../../../../yandex/cloud/apploadbalancer/v1/rate_limit'; import { Payload } from '../../../../yandex/cloud/apploadbalancer/v1/payload'; import { Duration } from '../../../../google/protobuf/duration'; export declare const protobufPackage = "yandex.cloud.apploadbalancer.v1"; /** * A virtual host resource. * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#virtual-host). */ export interface VirtualHost { /** Name of the virtual host. The name is unique within the HTTP router. */ name: string; /** * List of domains that are attributed to the virtual host. * * The host is selected to process the request received by the load balancer * if the domain specified in the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header matches a domain * specified in the host. * * A wildcard asterisk character (`*`) matches 0 or more characters. * * If not specified, all domains are attributed to the host, which is the same as specifying a `*` value. * An HTTP router must not contain more than one virtual host to which all domains are attributed. */ authority: string[]; /** * Routes of the virtual host. * * A route contains a set of conditions (predicates) that are used by the load balancer to select the route * for the request and an action on the request. * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes). * * The order of routes matters: the first route whose predicate matches the request is selected. * The most specific routes should be at the top of the list, so that they are not overridden. * For example, if the first HTTP route is configured, via [HttpRoute.match], to match paths prefixed with just `/`, * other routes are never matched. */ routes: Route[]; /** Deprecated, use route_options.modify_request_headers. */ modifyRequestHeaders: HeaderModification[]; /** Deprecated, use route_options.modify_response_headers. */ modifyResponseHeaders: HeaderModification[]; routeOptions?: RouteOptions; /** RateLimit is a rate limit configuration applied for a whole virtual host. */ rateLimit?: RateLimit; } export interface RouteOptions { /** Apply the following modifications to the request headers. */ modifyRequestHeaders: HeaderModification[]; /** Apply the following modifications to the response headers. */ modifyResponseHeaders: HeaderModification[]; rbac?: RBAC; /** Security profile that will take effect to all requests routed via particular virtual host. */ securityProfileId: string; } /** * Role Based Access Control (RBAC) provides router, virtual host, and route access control for the ALB * service. Requests are allowed or denied based on the `action` and whether a matching principal is * found. For instance, if the action is ALLOW and a matching principal is found the request should be * allowed. */ export interface RBAC { /** The action to take if a principal matches. Every action either allows or denies a request. */ action: RBAC_Action; /** Required. A match occurs when at least one matches the request. */ principals: Principals[]; } export declare enum RBAC_Action { ACTION_UNSPECIFIED = 0, /** ALLOW - Allows the request if and only if there is a principal that matches the request. */ ALLOW = 1, /** DENY - Allows the request if and only if there are no principal that match the request. */ DENY = 2, UNRECOGNIZED = -1 } export declare function rBAC_ActionFromJSON(object: any): RBAC_Action; export declare function rBAC_ActionToJSON(object: RBAC_Action): string; /** Principals define a group of identities for a request. */ export interface Principals { /** Required. A match occurs when all principals match the request. */ andPrincipals: Principal[]; } /** Principal defines an identity for a request. */ export interface Principal { /** A header (or pseudo-header such as :path or :method) of the incoming HTTP request. */ header?: Principal_HeaderMatcher | undefined; /** A CIDR block or IP that describes the request remote/origin address, e.g. ``192.0.0.0/24`` or``192.0.0.4`` . */ remoteIp: string | undefined; /** When any is set, it matches any request. */ any: boolean | undefined; } export interface Principal_HeaderMatcher { /** Specifies the name of the header in the request. */ name: string; /** * Specifies how the header match will be performed to route the request. * In the absence of value a request that has specified header name will match, * regardless of the header's value. */ value?: StringMatch; } /** A header modification resource. */ export interface HeaderModification { /** Name of the header. */ name: string; /** * Appends the specified string to the header value. * * Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers) * are supported. */ append: string | undefined; /** * Replaces the value of the header with the specified string. * * Variables [defined for Envoy proxy](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#custom-request-response-headers) * are supported. */ replace: string | undefined; /** Removes the header. */ remove: boolean | undefined; /** * Replaces the name of the header with the specified string. * This operation is only supported for ALB Virtual Hosts. */ rename: string | undefined; } /** * A route resource. * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/http-router#routes). */ export interface Route { /** Name of the route. */ name: string; /** HTTP route configuration. */ http?: HttpRoute | undefined; /** gRPC route configuration. */ grpc?: GrpcRoute | undefined; routeOptions?: RouteOptions; } /** An HTTP route configuration resource. */ export interface HttpRoute { /** Condition (predicate) used to select the route. */ match?: HttpRouteMatch; /** Forwards the request to a backend group for processing as configured. */ route?: HttpRouteAction | undefined; /** Redirects the request as configured. */ redirect?: RedirectAction | undefined; /** Instructs the load balancer to respond directly as configured. */ directResponse?: DirectResponseAction | undefined; } /** A gRPC route configuration resource. */ export interface GrpcRoute { /** Condition (predicate) used to select the route. */ match?: GrpcRouteMatch; /** Forwards the request to a backend group for processing as configured. */ route?: GrpcRouteAction | undefined; /** Instructs the load balancer to respond directly with a specified status. */ statusResponse?: GrpcStatusResponseAction | undefined; } /** An HTTP route condition (predicate) resource. */ export interface HttpRouteMatch { /** HTTP method specified in the request. */ httpMethod: string[]; /** * Match settings for the path specified in the request. * * If not specified, the route matches all paths. */ path?: StringMatch; } /** A gRPC route condition (predicate) resource. */ export interface GrpcRouteMatch { /** * Match settings for gRPC service method called in the request. * * A match string must be a fully qualified method name, e.g. `foo.bar.v1.BazService/Get`, or a prefix of such. * * If not specified, the route matches all methods. */ fqmn?: StringMatch; } /** A string matcher resource. */ export interface StringMatch { /** Exact match string. */ exactMatch: string | undefined; /** Prefix match string. */ prefixMatch: string | undefined; /** Regular expression match string. */ regexMatch: string | undefined; } /** A redirect action resource. */ export interface RedirectAction { /** * URI scheme replacement. * * If `http` or `https` scheme is to be replaced and `80` or `443` port is specified in the original URI, * the port is also removed. * * If not specified, the original scheme and port are used. */ replaceScheme: string; /** * URI host replacement. * * If not specified, the original host is used. */ replaceHost: string; /** * URI host replacement. * * If not specified, the original host is used. */ replacePort: number; /** Replacement for the whole path. */ replacePath: string | undefined; /** * Replacement for the path prefix matched by [StringMatch]. * * For instance, if [StringMatch.prefix_match] value is `/foo` and `replace_prefix` value is `/bar`, * a request with `https://example.com/foobaz` URI is redirected to `https://example.com/barbaz`. * For [StringMatch.exact_match], the whole path is replaced. */ replacePrefix: string | undefined; /** Removes URI query. */ removeQuery: boolean; /** HTTP status code to use in redirect responses. */ responseCode: RedirectAction_RedirectResponseCode; } /** HTTP status codes supported for use in redirect responses. */ export declare enum RedirectAction_RedirectResponseCode { /** MOVED_PERMANENTLY - `301 Moved Permanently` status code. */ MOVED_PERMANENTLY = 0, /** FOUND - `302 Found` status code. */ FOUND = 1, /** SEE_OTHER - `303 See Other` status code. */ SEE_OTHER = 2, /** TEMPORARY_REDIRECT - `307 Temporary Redirect` status code. */ TEMPORARY_REDIRECT = 3, /** PERMANENT_REDIRECT - `308 Permanent Redirect` status code. */ PERMANENT_REDIRECT = 4, UNRECOGNIZED = -1 } export declare function redirectAction_RedirectResponseCodeFromJSON(object: any): RedirectAction_RedirectResponseCode; export declare function redirectAction_RedirectResponseCodeToJSON(object: RedirectAction_RedirectResponseCode): string; /** A direct response action resource. */ export interface DirectResponseAction { /** HTTP status code to use in responses. */ status: number; /** Response body. */ body?: Payload; } /** A gRPC status response action resource. */ export interface GrpcStatusResponseAction { /** gRPC [status code](https://grpc.github.io/grpc/core/md_doc_statuscodes.html) to use in responses. */ status: GrpcStatusResponseAction_Status; } /** gRPC status code supported for use in responses. */ export declare enum GrpcStatusResponseAction_Status { /** OK - `OK` (0) status code. */ OK = 0, /** INVALID_ARGUMENT - `INVALID_ARGUMENT` (3) status code. */ INVALID_ARGUMENT = 1, /** NOT_FOUND - `NOT_FOUND` (5) status code. */ NOT_FOUND = 2, /** PERMISSION_DENIED - `PERMISSION_DENIED` (7) status code. */ PERMISSION_DENIED = 3, /** UNAUTHENTICATED - `UNAUTHENTICATED` (16) status code. */ UNAUTHENTICATED = 4, /** UNIMPLEMENTED - `UNIMPLEMENTED` (12) status code. */ UNIMPLEMENTED = 5, /** INTERNAL - `INTERNAL` (13) status code. */ INTERNAL = 6, /** UNAVAILABLE - `UNAVAILABLE` (14) status code. */ UNAVAILABLE = 7, UNRECOGNIZED = -1 } export declare function grpcStatusResponseAction_StatusFromJSON(object: any): GrpcStatusResponseAction_Status; export declare function grpcStatusResponseAction_StatusToJSON(object: GrpcStatusResponseAction_Status): string; /** An HTTP route action resource. */ export interface HttpRouteAction { /** * Backend group to forward requests to. * * Stream (TCP) backend groups are not supported. */ backendGroupId: string; /** * Overall timeout for an HTTP connection between a load balancer node an a backend from the backend group: * the maximum time the connection is kept alive for, regardless of whether data is transferred over it. * * If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code. * * Default value: `60`. */ timeout?: Duration; /** * Idle timeout for an HTTP connection between a load balancer node an a backend from the backend group: * the maximum time the connection is allowed to be idle, i.e. without any data transferred over it. * * Specifying meaningful values for both [timeout] and `idle_timeout` is useful for implementing * server-push mechanisms such as long polling, server-sent events (`EventSource` interface) etc. * * If a connection times out, the load balancer responds to the client with a `504 Gateway Timeout` status code. * * If not specified, no idle timeout is used, and an alive connection may be idle for any duration (see [timeout]). */ idleTimeout?: Duration; /** Host replacement. */ hostRewrite: string | undefined; /** Automatically replaces the host with that of the target. */ autoHostRewrite: boolean | undefined; /** * Replacement for the path prefix matched by [StringMatch]. * * For instance, if [StringMatch.prefix_match] value is `/foo` and `prefix_rewrite` value is `/bar`, * a request with `/foobaz` path is forwarded with `/barbaz` path. * For [StringMatch.exact_match], the whole path is replaced. * * If not specified, the path is not changed. */ prefixRewrite: string; /** Supported values for HTTP `Upgrade` header. E.g. `websocket`. */ upgradeTypes: string[]; /** RateLimit is a rate limit configuration applied for route. */ rateLimit?: RateLimit; } /** A gRPC route action resource. */ export interface GrpcRouteAction { /** Backend group to forward requests to. */ backendGroupId: string; /** * Overall timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group: * the maximum time the connection is kept alive for, regardless of whether data is transferred over it. * * If a client specifies a lower timeout in HTTP `grpc-timeout` header, the `max_timeout` value is ignored. * * If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code. * * Default value: `60`. */ maxTimeout?: Duration; /** * Idle timeout for an underlying HTTP connection between a load balancer node an a backend from the backend group: * the maximum time the connection is allowed to be idle, i.e. without any data transferred over it. * * Specifying meaningful values for both [max_timeout] and `idle_timeout` is useful for implementing * server-push mechanisms such as long polling, server-sent events etc. * * If a connection times out, the load balancer responds to the client with an `UNAVAILABLE` status code. * * If not specified, no idle timeout is used, and an alive connection may be idle for any duration * (see [max_timeout]). */ idleTimeout?: Duration; /** Host replacement. */ hostRewrite: string | undefined; /** Automatically replaces the host with that of the target. */ autoHostRewrite: boolean | undefined; /** RateLimit is a rate limit configuration applied for route. */ rateLimit?: RateLimit; } export declare const VirtualHost: { encode(message: VirtualHost, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): VirtualHost; fromJSON(object: any): VirtualHost; toJSON(message: VirtualHost): unknown; fromPartial, never>) | undefined; routes?: ({ name?: string | undefined; http?: { match?: { httpMethod?: string[] | undefined; path?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; timeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: string[] | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; redirect?: { replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } | undefined; directResponse?: { status?: number | undefined; body?: { text?: string | undefined; } | undefined; } | undefined; } | undefined; grpc?: { match?: { fqmn?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; statusResponse?: { status?: GrpcStatusResponseAction_Status | undefined; } | undefined; } | undefined; routeOptions?: { modifyRequestHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; modifyResponseHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; rbac?: { action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } | undefined; securityProfileId?: string | undefined; } | undefined; }[] & ({ name?: string | undefined; http?: { match?: { httpMethod?: string[] | undefined; path?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; timeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: string[] | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; redirect?: { replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } | undefined; directResponse?: { status?: number | undefined; body?: { text?: string | undefined; } | undefined; } | undefined; } | undefined; grpc?: { match?: { fqmn?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; statusResponse?: { status?: GrpcStatusResponseAction_Status | undefined; } | undefined; } | undefined; routeOptions?: { modifyRequestHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; modifyResponseHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; rbac?: { action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } | undefined; securityProfileId?: string | undefined; } | undefined; } & { name?: string | undefined; http?: ({ match?: { httpMethod?: string[] | undefined; path?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; timeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: string[] | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; redirect?: { replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } | undefined; directResponse?: { status?: number | undefined; body?: { text?: string | undefined; } | undefined; } | undefined; } & { match?: ({ httpMethod?: string[] | undefined; path?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { httpMethod?: (string[] & string[] & Record, never>) | undefined; path?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; route?: ({ backendGroupId?: string | undefined; timeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: string[] | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } & { backendGroupId?: string | undefined; timeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: (string[] & string[] & Record, never>) | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; redirect?: ({ replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } & { replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } & Record, never>) | undefined; directResponse?: ({ status?: number | undefined; body?: { text?: string | undefined; } | undefined; } & { status?: number | undefined; body?: ({ text?: string | undefined; } & { text?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; grpc?: ({ match?: { fqmn?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; statusResponse?: { status?: GrpcStatusResponseAction_Status | undefined; } | undefined; } & { match?: ({ fqmn?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { fqmn?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; route?: ({ backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } & { backendGroupId?: string | undefined; maxTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; statusResponse?: ({ status?: GrpcStatusResponseAction_Status | undefined; } & { status?: GrpcStatusResponseAction_Status | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; routeOptions?: ({ modifyRequestHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; modifyResponseHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; rbac?: { action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } | undefined; securityProfileId?: string | undefined; } & { modifyRequestHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; modifyResponseHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; rbac?: ({ action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } & { action?: RBAC_Action | undefined; principals?: ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] & ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; } & { andPrincipals?: ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] & ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & { header?: ({ name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { name?: string | undefined; value?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>) | undefined; securityProfileId?: string | undefined; } & Record, never>) | undefined; } & Record, never>)[] & Record, never>) | undefined; modifyRequestHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; modifyResponseHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; routeOptions?: ({ modifyRequestHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; modifyResponseHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; rbac?: { action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } | undefined; securityProfileId?: string | undefined; } & { modifyRequestHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; modifyResponseHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; rbac?: ({ action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } & { action?: RBAC_Action | undefined; principals?: ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] & ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; } & { andPrincipals?: ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] & ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & { header?: ({ name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { name?: string | undefined; value?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>) | undefined; securityProfileId?: string | undefined; } & Record, never>) | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): VirtualHost; }; export declare const RouteOptions: { encode(message: RouteOptions, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): RouteOptions; fromJSON(object: any): RouteOptions; toJSON(message: RouteOptions): unknown; fromPartial, never>)[] & Record, never>) | undefined; modifyResponseHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; rbac?: ({ action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } & { action?: RBAC_Action | undefined; principals?: ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] & ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; } & { andPrincipals?: ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] & ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & { header?: ({ name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { name?: string | undefined; value?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>) | undefined; securityProfileId?: string | undefined; } & Record, never>>(object: I): RouteOptions; }; export declare const RBAC: { encode(message: RBAC, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): RBAC; fromJSON(object: any): RBAC; toJSON(message: RBAC): unknown; fromPartial, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>>(object: I): RBAC; }; export declare const Principals: { encode(message: Principals, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): Principals; fromJSON(object: any): Principals; toJSON(message: Principals): unknown; fromPartial, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>>(object: I): Principals; }; export declare const Principal: { encode(message: Principal, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): Principal; fromJSON(object: any): Principal; toJSON(message: Principal): unknown; fromPartial, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>>(object: I): Principal; }; export declare const Principal_HeaderMatcher: { encode(message: Principal_HeaderMatcher, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): Principal_HeaderMatcher; fromJSON(object: any): Principal_HeaderMatcher; toJSON(message: Principal_HeaderMatcher): unknown; fromPartial, never>) | undefined; } & Record, never>>(object: I): Principal_HeaderMatcher; }; export declare const HeaderModification: { encode(message: HeaderModification, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): HeaderModification; fromJSON(object: any): HeaderModification; toJSON(message: HeaderModification): unknown; fromPartial, never>>(object: I): HeaderModification; }; export declare const Route: { encode(message: Route, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): Route; fromJSON(object: any): Route; toJSON(message: Route): unknown; fromPartial, never>) | undefined; path?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; route?: ({ backendGroupId?: string | undefined; timeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: string[] | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } & { backendGroupId?: string | undefined; timeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: (string[] & string[] & Record, never>) | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; redirect?: ({ replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } & { replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } & Record, never>) | undefined; directResponse?: ({ status?: number | undefined; body?: { text?: string | undefined; } | undefined; } & { status?: number | undefined; body?: ({ text?: string | undefined; } & { text?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; grpc?: ({ match?: { fqmn?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; route?: { backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } | undefined; statusResponse?: { status?: GrpcStatusResponseAction_Status | undefined; } | undefined; } & { match?: ({ fqmn?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { fqmn?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; route?: ({ backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } & { backendGroupId?: string | undefined; maxTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; statusResponse?: ({ status?: GrpcStatusResponseAction_Status | undefined; } & { status?: GrpcStatusResponseAction_Status | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; routeOptions?: ({ modifyRequestHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; modifyResponseHeaders?: { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] | undefined; rbac?: { action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } | undefined; securityProfileId?: string | undefined; } & { modifyRequestHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; modifyResponseHeaders?: ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; }[] & ({ name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & { name?: string | undefined; append?: string | undefined; replace?: string | undefined; remove?: boolean | undefined; rename?: string | undefined; } & Record, never>)[] & Record, never>) | undefined; rbac?: ({ action?: RBAC_Action | undefined; principals?: { andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] | undefined; } & { action?: RBAC_Action | undefined; principals?: ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; }[] & ({ andPrincipals?: { header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] | undefined; } & { andPrincipals?: ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; }[] & ({ header?: { name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & { header?: ({ name?: string | undefined; value?: { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } | undefined; } & { name?: string | undefined; value?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; remoteIp?: string | undefined; any?: boolean | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>)[] & Record, never>) | undefined; } & Record, never>) | undefined; securityProfileId?: string | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): Route; }; export declare const HttpRoute: { encode(message: HttpRoute, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): HttpRoute; fromJSON(object: any): HttpRoute; toJSON(message: HttpRoute): unknown; fromPartial, never>) | undefined; path?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; route?: ({ backendGroupId?: string | undefined; timeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: string[] | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } & { backendGroupId?: string | undefined; timeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: (string[] & string[] & Record, never>) | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; redirect?: ({ replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } & { replaceScheme?: string | undefined; replaceHost?: string | undefined; replacePort?: number | undefined; replacePath?: string | undefined; replacePrefix?: string | undefined; removeQuery?: boolean | undefined; responseCode?: RedirectAction_RedirectResponseCode | undefined; } & Record, never>) | undefined; directResponse?: ({ status?: number | undefined; body?: { text?: string | undefined; } | undefined; } & { status?: number | undefined; body?: ({ text?: string | undefined; } & { text?: string | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): HttpRoute; }; export declare const GrpcRoute: { encode(message: GrpcRoute, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): GrpcRoute; fromJSON(object: any): GrpcRoute; toJSON(message: GrpcRoute): unknown; fromPartial, never>) | undefined; } & Record, never>) | undefined; route?: ({ backendGroupId?: string | undefined; maxTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; idleTimeout?: { seconds?: number | undefined; nanos?: number | undefined; } | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: { allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } | undefined; } & { backendGroupId?: string | undefined; maxTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; statusResponse?: ({ status?: GrpcStatusResponseAction_Status | undefined; } & { status?: GrpcStatusResponseAction_Status | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): GrpcRoute; }; export declare const HttpRouteMatch: { encode(message: HttpRouteMatch, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): HttpRouteMatch; fromJSON(object: any): HttpRouteMatch; toJSON(message: HttpRouteMatch): unknown; fromPartial, never>) | undefined; path?: ({ exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & { exactMatch?: string | undefined; prefixMatch?: string | undefined; regexMatch?: string | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): HttpRouteMatch; }; export declare const GrpcRouteMatch: { encode(message: GrpcRouteMatch, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): GrpcRouteMatch; fromJSON(object: any): GrpcRouteMatch; toJSON(message: GrpcRouteMatch): unknown; fromPartial, never>) | undefined; } & Record, never>>(object: I): GrpcRouteMatch; }; export declare const StringMatch: { encode(message: StringMatch, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): StringMatch; fromJSON(object: any): StringMatch; toJSON(message: StringMatch): unknown; fromPartial, never>>(object: I): StringMatch; }; export declare const RedirectAction: { encode(message: RedirectAction, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): RedirectAction; fromJSON(object: any): RedirectAction; toJSON(message: RedirectAction): unknown; fromPartial, never>>(object: I): RedirectAction; }; export declare const DirectResponseAction: { encode(message: DirectResponseAction, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): DirectResponseAction; fromJSON(object: any): DirectResponseAction; toJSON(message: DirectResponseAction): unknown; fromPartial, never>) | undefined; } & Record, never>>(object: I): DirectResponseAction; }; export declare const GrpcStatusResponseAction: { encode(message: GrpcStatusResponseAction, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): GrpcStatusResponseAction; fromJSON(object: any): GrpcStatusResponseAction; toJSON(message: GrpcStatusResponseAction): unknown; fromPartial, never>>(object: I): GrpcStatusResponseAction; }; export declare const HttpRouteAction: { encode(message: HttpRouteAction, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): HttpRouteAction; fromJSON(object: any): HttpRouteAction; toJSON(message: HttpRouteAction): unknown; fromPartial, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; prefixRewrite?: string | undefined; upgradeTypes?: (string[] & string[] & Record, never>) | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): HttpRouteAction; }; export declare const GrpcRouteAction: { encode(message: GrpcRouteAction, writer?: _m0.Writer): _m0.Writer; decode(input: _m0.Reader | Uint8Array, length?: number): GrpcRouteAction; fromJSON(object: any): GrpcRouteAction; toJSON(message: GrpcRouteAction): unknown; fromPartial, never>) | undefined; idleTimeout?: ({ seconds?: number | undefined; nanos?: number | undefined; } & { seconds?: number | undefined; nanos?: number | undefined; } & Record, never>) | undefined; hostRewrite?: string | undefined; autoHostRewrite?: boolean | undefined; rateLimit?: ({ allRequests?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; requestsPerIp?: { perSecond?: number | undefined; perMinute?: number | undefined; } | undefined; } & { allRequests?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; requestsPerIp?: ({ perSecond?: number | undefined; perMinute?: number | undefined; } & { perSecond?: number | undefined; perMinute?: number | undefined; } & Record, never>) | undefined; } & Record, never>) | undefined; } & Record, never>>(object: I): GrpcRouteAction; }; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial = T extends Builtin ? T : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? { [K in keyof T]?: DeepPartial; } : Partial; type KeysOfUnion = T extends T ? keyof T : never; export type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact; } & Record>, never>; export {};