/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetworkServicesGrpcRouteConfig extends cdktf.TerraformMetaArguments {
    /**
    * A free-text description of the resource. Max length 1024 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#description NetworkServicesGrpcRoute#description}
    */
    readonly description?: string;
    /**
    * List of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#gateways NetworkServicesGrpcRoute#gateways}
    */
    readonly gateways?: string[];
    /**
    * Required. Service hostnames with an optional port for which this route describes traffic.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#hostnames NetworkServicesGrpcRoute#hostnames}
    */
    readonly hostnames: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#id NetworkServicesGrpcRoute#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * Set of label tags associated with the GrpcRoute resource.
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#labels NetworkServicesGrpcRoute#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Location (region) of the GRPCRoute resource to be created. Only the value 'global' is currently allowed; defaults to 'global' if omitted.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#location NetworkServicesGrpcRoute#location}
    */
    readonly location?: string;
    /**
    * List of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#meshes NetworkServicesGrpcRoute#meshes}
    */
    readonly meshes?: string[];
    /**
    * Name of the GrpcRoute resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#name NetworkServicesGrpcRoute#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#project NetworkServicesGrpcRoute#project}
    */
    readonly project?: string;
    /**
    * rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#rules NetworkServicesGrpcRoute#rules}
    */
    readonly rules: NetworkServicesGrpcRouteRules[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#timeouts NetworkServicesGrpcRoute#timeouts}
    */
    readonly timeouts?: NetworkServicesGrpcRouteTimeouts;
}
export interface NetworkServicesGrpcRouteRulesActionDestinations {
    /**
    * The URL of a BackendService to route traffic to.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#service_name NetworkServicesGrpcRoute#service_name}
    */
    readonly serviceName?: string;
    /**
    * Specifies the proportion of requests forwarded to the backend referenced by the serviceName field.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#weight NetworkServicesGrpcRoute#weight}
    */
    readonly weight?: number;
}
export declare function networkServicesGrpcRouteRulesActionDestinationsToTerraform(struct?: NetworkServicesGrpcRouteRulesActionDestinations | cdktf.IResolvable): any;
export declare function networkServicesGrpcRouteRulesActionDestinationsToHclTerraform(struct?: NetworkServicesGrpcRouteRulesActionDestinations | cdktf.IResolvable): any;
export declare class NetworkServicesGrpcRouteRulesActionDestinationsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): NetworkServicesGrpcRouteRulesActionDestinations | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesActionDestinations | cdktf.IResolvable | undefined);
    private _serviceName?;
    get serviceName(): string;
    set serviceName(value: string);
    resetServiceName(): void;
    get serviceNameInput(): string | undefined;
    private _weight?;
    get weight(): number;
    set weight(value: number);
    resetWeight(): void;
    get weightInput(): number | undefined;
}
export declare class NetworkServicesGrpcRouteRulesActionDestinationsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NetworkServicesGrpcRouteRulesActionDestinations[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): NetworkServicesGrpcRouteRulesActionDestinationsOutputReference;
}
export interface NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort {
    /**
    * The HTTP status code used to abort the request.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#http_status NetworkServicesGrpcRoute#http_status}
    */
    readonly httpStatus?: number;
    /**
    * The percentage of traffic which will be aborted.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#percentage NetworkServicesGrpcRoute#percentage}
    */
    readonly percentage?: number;
}
export declare function networkServicesGrpcRouteRulesActionFaultInjectionPolicyAbortToTerraform(struct?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbortOutputReference | NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort): any;
export declare function networkServicesGrpcRouteRulesActionFaultInjectionPolicyAbortToHclTerraform(struct?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbortOutputReference | NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort): any;
export declare class NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbortOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort | undefined);
    private _httpStatus?;
    get httpStatus(): number;
    set httpStatus(value: number);
    resetHttpStatus(): void;
    get httpStatusInput(): number | undefined;
    private _percentage?;
    get percentage(): number;
    set percentage(value: number);
    resetPercentage(): void;
    get percentageInput(): number | undefined;
}
export interface NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay {
    /**
    * Specify a fixed delay before forwarding the request.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#fixed_delay NetworkServicesGrpcRoute#fixed_delay}
    */
    readonly fixedDelay?: string;
    /**
    * The percentage of traffic on which delay will be injected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#percentage NetworkServicesGrpcRoute#percentage}
    */
    readonly percentage?: number;
}
export declare function networkServicesGrpcRouteRulesActionFaultInjectionPolicyDelayToTerraform(struct?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelayOutputReference | NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay): any;
export declare function networkServicesGrpcRouteRulesActionFaultInjectionPolicyDelayToHclTerraform(struct?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelayOutputReference | NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay): any;
export declare class NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelayOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay | undefined);
    private _fixedDelay?;
    get fixedDelay(): string;
    set fixedDelay(value: string);
    resetFixedDelay(): void;
    get fixedDelayInput(): string | undefined;
    private _percentage?;
    get percentage(): number;
    set percentage(value: number);
    resetPercentage(): void;
    get percentageInput(): number | undefined;
}
export interface NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy {
    /**
    * abort block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#abort NetworkServicesGrpcRoute#abort}
    */
    readonly abort?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort;
    /**
    * delay block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#delay NetworkServicesGrpcRoute#delay}
    */
    readonly delay?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay;
}
export declare function networkServicesGrpcRouteRulesActionFaultInjectionPolicyToTerraform(struct?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyOutputReference | NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy): any;
export declare function networkServicesGrpcRouteRulesActionFaultInjectionPolicyToHclTerraform(struct?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyOutputReference | NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy): any;
export declare class NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy | undefined);
    private _abort;
    get abort(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbortOutputReference;
    putAbort(value: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort): void;
    resetAbort(): void;
    get abortInput(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyAbort | undefined;
    private _delay;
    get delay(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelayOutputReference;
    putDelay(value: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay): void;
    resetDelay(): void;
    get delayInput(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyDelay | undefined;
}
export interface NetworkServicesGrpcRouteRulesActionRetryPolicy {
    /**
    * Specifies the allowed number of retries.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#num_retries NetworkServicesGrpcRoute#num_retries}
    */
    readonly numRetries?: number;
    /**
    * Specifies one or more conditions when this retry policy applies. Possible values: ["connect-failure", "refused-stream", "cancelled", "deadline-exceeded", "resource-exhausted", "unavailable"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#retry_conditions NetworkServicesGrpcRoute#retry_conditions}
    */
    readonly retryConditions?: string[];
}
export declare function networkServicesGrpcRouteRulesActionRetryPolicyToTerraform(struct?: NetworkServicesGrpcRouteRulesActionRetryPolicyOutputReference | NetworkServicesGrpcRouteRulesActionRetryPolicy): any;
export declare function networkServicesGrpcRouteRulesActionRetryPolicyToHclTerraform(struct?: NetworkServicesGrpcRouteRulesActionRetryPolicyOutputReference | NetworkServicesGrpcRouteRulesActionRetryPolicy): any;
export declare class NetworkServicesGrpcRouteRulesActionRetryPolicyOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteRulesActionRetryPolicy | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesActionRetryPolicy | undefined);
    private _numRetries?;
    get numRetries(): number;
    set numRetries(value: number);
    resetNumRetries(): void;
    get numRetriesInput(): number | undefined;
    private _retryConditions?;
    get retryConditions(): string[];
    set retryConditions(value: string[]);
    resetRetryConditions(): void;
    get retryConditionsInput(): string[] | undefined;
}
export interface NetworkServicesGrpcRouteRulesAction {
    /**
    * Specifies the timeout for selected route.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#timeout NetworkServicesGrpcRoute#timeout}
    */
    readonly timeout?: string;
    /**
    * destinations block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#destinations NetworkServicesGrpcRoute#destinations}
    */
    readonly destinations?: NetworkServicesGrpcRouteRulesActionDestinations[] | cdktf.IResolvable;
    /**
    * fault_injection_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#fault_injection_policy NetworkServicesGrpcRoute#fault_injection_policy}
    */
    readonly faultInjectionPolicy?: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy;
    /**
    * retry_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#retry_policy NetworkServicesGrpcRoute#retry_policy}
    */
    readonly retryPolicy?: NetworkServicesGrpcRouteRulesActionRetryPolicy;
}
export declare function networkServicesGrpcRouteRulesActionToTerraform(struct?: NetworkServicesGrpcRouteRulesActionOutputReference | NetworkServicesGrpcRouteRulesAction): any;
export declare function networkServicesGrpcRouteRulesActionToHclTerraform(struct?: NetworkServicesGrpcRouteRulesActionOutputReference | NetworkServicesGrpcRouteRulesAction): any;
export declare class NetworkServicesGrpcRouteRulesActionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteRulesAction | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesAction | undefined);
    private _timeout?;
    get timeout(): string;
    set timeout(value: string);
    resetTimeout(): void;
    get timeoutInput(): string | undefined;
    private _destinations;
    get destinations(): NetworkServicesGrpcRouteRulesActionDestinationsList;
    putDestinations(value: NetworkServicesGrpcRouteRulesActionDestinations[] | cdktf.IResolvable): void;
    resetDestinations(): void;
    get destinationsInput(): cdktf.IResolvable | NetworkServicesGrpcRouteRulesActionDestinations[] | undefined;
    private _faultInjectionPolicy;
    get faultInjectionPolicy(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicyOutputReference;
    putFaultInjectionPolicy(value: NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy): void;
    resetFaultInjectionPolicy(): void;
    get faultInjectionPolicyInput(): NetworkServicesGrpcRouteRulesActionFaultInjectionPolicy | undefined;
    private _retryPolicy;
    get retryPolicy(): NetworkServicesGrpcRouteRulesActionRetryPolicyOutputReference;
    putRetryPolicy(value: NetworkServicesGrpcRouteRulesActionRetryPolicy): void;
    resetRetryPolicy(): void;
    get retryPolicyInput(): NetworkServicesGrpcRouteRulesActionRetryPolicy | undefined;
}
export interface NetworkServicesGrpcRouteRulesMatchesHeaders {
    /**
    * Required. The key of the header.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#key NetworkServicesGrpcRoute#key}
    */
    readonly key: string;
    /**
    * The type of match. Default value: "EXACT" Possible values: ["TYPE_UNSPECIFIED", "EXACT", "REGULAR_EXPRESSION"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#type NetworkServicesGrpcRoute#type}
    */
    readonly type?: string;
    /**
    * Required. The value of the header.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#value NetworkServicesGrpcRoute#value}
    */
    readonly value: string;
}
export declare function networkServicesGrpcRouteRulesMatchesHeadersToTerraform(struct?: NetworkServicesGrpcRouteRulesMatchesHeaders | cdktf.IResolvable): any;
export declare function networkServicesGrpcRouteRulesMatchesHeadersToHclTerraform(struct?: NetworkServicesGrpcRouteRulesMatchesHeaders | cdktf.IResolvable): any;
export declare class NetworkServicesGrpcRouteRulesMatchesHeadersOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): NetworkServicesGrpcRouteRulesMatchesHeaders | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesMatchesHeaders | cdktf.IResolvable | undefined);
    private _key?;
    get key(): string;
    set key(value: string);
    get keyInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
}
export declare class NetworkServicesGrpcRouteRulesMatchesHeadersList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NetworkServicesGrpcRouteRulesMatchesHeaders[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): NetworkServicesGrpcRouteRulesMatchesHeadersOutputReference;
}
export interface NetworkServicesGrpcRouteRulesMatchesMethod {
    /**
    * Specifies that matches are case sensitive. The default value is true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#case_sensitive NetworkServicesGrpcRoute#case_sensitive}
    */
    readonly caseSensitive?: boolean | cdktf.IResolvable;
    /**
    * Required. Name of the method to match against.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#grpc_method NetworkServicesGrpcRoute#grpc_method}
    */
    readonly grpcMethod: string;
    /**
    * Required. Name of the service to match against.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#grpc_service NetworkServicesGrpcRoute#grpc_service}
    */
    readonly grpcService: string;
}
export declare function networkServicesGrpcRouteRulesMatchesMethodToTerraform(struct?: NetworkServicesGrpcRouteRulesMatchesMethodOutputReference | NetworkServicesGrpcRouteRulesMatchesMethod): any;
export declare function networkServicesGrpcRouteRulesMatchesMethodToHclTerraform(struct?: NetworkServicesGrpcRouteRulesMatchesMethodOutputReference | NetworkServicesGrpcRouteRulesMatchesMethod): any;
export declare class NetworkServicesGrpcRouteRulesMatchesMethodOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteRulesMatchesMethod | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesMatchesMethod | undefined);
    private _caseSensitive?;
    get caseSensitive(): boolean | cdktf.IResolvable;
    set caseSensitive(value: boolean | cdktf.IResolvable);
    resetCaseSensitive(): void;
    get caseSensitiveInput(): boolean | cdktf.IResolvable | undefined;
    private _grpcMethod?;
    get grpcMethod(): string;
    set grpcMethod(value: string);
    get grpcMethodInput(): string | undefined;
    private _grpcService?;
    get grpcService(): string;
    set grpcService(value: string);
    get grpcServiceInput(): string | undefined;
}
export interface NetworkServicesGrpcRouteRulesMatches {
    /**
    * headers block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#headers NetworkServicesGrpcRoute#headers}
    */
    readonly headers?: NetworkServicesGrpcRouteRulesMatchesHeaders[] | cdktf.IResolvable;
    /**
    * method block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#method NetworkServicesGrpcRoute#method}
    */
    readonly method?: NetworkServicesGrpcRouteRulesMatchesMethod;
}
export declare function networkServicesGrpcRouteRulesMatchesToTerraform(struct?: NetworkServicesGrpcRouteRulesMatches | cdktf.IResolvable): any;
export declare function networkServicesGrpcRouteRulesMatchesToHclTerraform(struct?: NetworkServicesGrpcRouteRulesMatches | cdktf.IResolvable): any;
export declare class NetworkServicesGrpcRouteRulesMatchesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): NetworkServicesGrpcRouteRulesMatches | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRulesMatches | cdktf.IResolvable | undefined);
    private _headers;
    get headers(): NetworkServicesGrpcRouteRulesMatchesHeadersList;
    putHeaders(value: NetworkServicesGrpcRouteRulesMatchesHeaders[] | cdktf.IResolvable): void;
    resetHeaders(): void;
    get headersInput(): cdktf.IResolvable | NetworkServicesGrpcRouteRulesMatchesHeaders[] | undefined;
    private _method;
    get method(): NetworkServicesGrpcRouteRulesMatchesMethodOutputReference;
    putMethod(value: NetworkServicesGrpcRouteRulesMatchesMethod): void;
    resetMethod(): void;
    get methodInput(): NetworkServicesGrpcRouteRulesMatchesMethod | undefined;
}
export declare class NetworkServicesGrpcRouteRulesMatchesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NetworkServicesGrpcRouteRulesMatches[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): NetworkServicesGrpcRouteRulesMatchesOutputReference;
}
export interface NetworkServicesGrpcRouteRules {
    /**
    * action block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#action NetworkServicesGrpcRoute#action}
    */
    readonly action?: NetworkServicesGrpcRouteRulesAction;
    /**
    * matches block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#matches NetworkServicesGrpcRoute#matches}
    */
    readonly matches?: NetworkServicesGrpcRouteRulesMatches[] | cdktf.IResolvable;
}
export declare function networkServicesGrpcRouteRulesToTerraform(struct?: NetworkServicesGrpcRouteRules | cdktf.IResolvable): any;
export declare function networkServicesGrpcRouteRulesToHclTerraform(struct?: NetworkServicesGrpcRouteRules | cdktf.IResolvable): any;
export declare class NetworkServicesGrpcRouteRulesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): NetworkServicesGrpcRouteRules | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkServicesGrpcRouteRules | cdktf.IResolvable | undefined);
    private _action;
    get action(): NetworkServicesGrpcRouteRulesActionOutputReference;
    putAction(value: NetworkServicesGrpcRouteRulesAction): void;
    resetAction(): void;
    get actionInput(): NetworkServicesGrpcRouteRulesAction | undefined;
    private _matches;
    get matches(): NetworkServicesGrpcRouteRulesMatchesList;
    putMatches(value: NetworkServicesGrpcRouteRulesMatches[] | cdktf.IResolvable): void;
    resetMatches(): void;
    get matchesInput(): cdktf.IResolvable | NetworkServicesGrpcRouteRulesMatches[] | undefined;
}
export declare class NetworkServicesGrpcRouteRulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NetworkServicesGrpcRouteRules[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): NetworkServicesGrpcRouteRulesOutputReference;
}
export interface NetworkServicesGrpcRouteTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#create NetworkServicesGrpcRoute#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#delete NetworkServicesGrpcRoute#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#update NetworkServicesGrpcRoute#update}
    */
    readonly update?: string;
}
export declare function networkServicesGrpcRouteTimeoutsToTerraform(struct?: NetworkServicesGrpcRouteTimeouts | cdktf.IResolvable): any;
export declare function networkServicesGrpcRouteTimeoutsToHclTerraform(struct?: NetworkServicesGrpcRouteTimeouts | cdktf.IResolvable): any;
export declare class NetworkServicesGrpcRouteTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NetworkServicesGrpcRouteTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkServicesGrpcRouteTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route google_network_services_grpc_route}
*/
export declare class NetworkServicesGrpcRoute extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_network_services_grpc_route";
    /**
    * Generates CDKTF code for importing a NetworkServicesGrpcRoute resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the NetworkServicesGrpcRoute to import
    * @param importFromId The id of the existing NetworkServicesGrpcRoute that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NetworkServicesGrpcRoute to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/network_services_grpc_route google_network_services_grpc_route} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options NetworkServicesGrpcRouteConfig
    */
    constructor(scope: Construct, id: string, config: NetworkServicesGrpcRouteConfig);
    get createTime(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _gateways?;
    get gateways(): string[];
    set gateways(value: string[]);
    resetGateways(): void;
    get gatewaysInput(): string[] | undefined;
    private _hostnames?;
    get hostnames(): string[];
    set hostnames(value: string[]);
    get hostnamesInput(): string[] | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    resetLocation(): void;
    get locationInput(): string | undefined;
    private _meshes?;
    get meshes(): string[];
    set meshes(value: string[]);
    resetMeshes(): void;
    get meshesInput(): string[] | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get selfLink(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get updateTime(): string;
    private _rules;
    get rules(): NetworkServicesGrpcRouteRulesList;
    putRules(value: NetworkServicesGrpcRouteRules[] | cdktf.IResolvable): void;
    get rulesInput(): cdktf.IResolvable | NetworkServicesGrpcRouteRules[] | undefined;
    private _timeouts;
    get timeouts(): NetworkServicesGrpcRouteTimeoutsOutputReference;
    putTimeouts(value: NetworkServicesGrpcRouteTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NetworkServicesGrpcRouteTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
