/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface EventarcPipelineConfig extends cdktf.TerraformMetaArguments {
    /**
    * User-defined annotations. See https://google.aip.dev/128#annotations.
    *
    * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
    * Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#annotations EventarcPipeline#annotations}
    */
    readonly annotations?: {
        [key: string]: string;
    };
    /**
    * Resource name of a KMS crypto key (managed by the user) used to
    * encrypt/decrypt the event data. If not set, an internal Google-owned key
    * will be used to encrypt messages. It must match the pattern
    * "projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#crypto_key_name EventarcPipeline#crypto_key_name}
    */
    readonly cryptoKeyName?: string;
    /**
    * Display name of resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#display_name EventarcPipeline#display_name}
    */
    readonly displayName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#id EventarcPipeline#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;
    /**
    * User labels attached to the Pipeline that can be used to group
    * resources. An object containing a list of "key": value pairs. Example: {
    * "name": "wrench", "mass": "1.3kg", "count": "3" }.
    *
    * **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.41.0/docs/resources/eventarc_pipeline#labels EventarcPipeline#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * Resource ID segment making up resource 'name'. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#location EventarcPipeline#location}
    */
    readonly location: string;
    /**
    * The user-provided ID to be assigned to the Pipeline. It should match the
    * format '^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#pipeline_id EventarcPipeline#pipeline_id}
    */
    readonly pipelineId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#project EventarcPipeline#project}
    */
    readonly project?: string;
    /**
    * destinations block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#destinations EventarcPipeline#destinations}
    */
    readonly destinations: EventarcPipelineDestinations[] | cdktf.IResolvable;
    /**
    * input_payload_format block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#input_payload_format EventarcPipeline#input_payload_format}
    */
    readonly inputPayloadFormat?: EventarcPipelineInputPayloadFormat;
    /**
    * logging_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#logging_config EventarcPipeline#logging_config}
    */
    readonly loggingConfig?: EventarcPipelineLoggingConfig;
    /**
    * mediations block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#mediations EventarcPipeline#mediations}
    */
    readonly mediations?: EventarcPipelineMediations[] | cdktf.IResolvable;
    /**
    * retry_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#retry_policy EventarcPipeline#retry_policy}
    */
    readonly retryPolicy?: EventarcPipelineRetryPolicy;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#timeouts EventarcPipeline#timeouts}
    */
    readonly timeouts?: EventarcPipelineTimeouts;
}
export interface EventarcPipelineDestinationsAuthenticationConfigGoogleOidc {
    /**
    * Audience to be used to generate the OIDC Token. The audience claim
    * identifies the recipient that the JWT is intended for. If
    * unspecified, the destination URI will be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#audience EventarcPipeline#audience}
    */
    readonly audience?: string;
    /**
    * Service account email used to generate the OIDC Token.
    * The principal who calls this API must have
    * iam.serviceAccounts.actAs permission in the service account. See
    * https://cloud.google.com/iam/docs/understanding-service-accounts
    * for more information. Eventarc service agents must have
    * roles/roles/iam.serviceAccountTokenCreator role to allow the
    * Pipeline to create OpenID tokens for authenticated requests.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#service_account EventarcPipeline#service_account}
    */
    readonly serviceAccount: string;
}
export declare function eventarcPipelineDestinationsAuthenticationConfigGoogleOidcToTerraform(struct?: EventarcPipelineDestinationsAuthenticationConfigGoogleOidcOutputReference | EventarcPipelineDestinationsAuthenticationConfigGoogleOidc): any;
export declare function eventarcPipelineDestinationsAuthenticationConfigGoogleOidcToHclTerraform(struct?: EventarcPipelineDestinationsAuthenticationConfigGoogleOidcOutputReference | EventarcPipelineDestinationsAuthenticationConfigGoogleOidc): any;
export declare class EventarcPipelineDestinationsAuthenticationConfigGoogleOidcOutputReference 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(): EventarcPipelineDestinationsAuthenticationConfigGoogleOidc | undefined;
    set internalValue(value: EventarcPipelineDestinationsAuthenticationConfigGoogleOidc | undefined);
    private _audience?;
    get audience(): string;
    set audience(value: string);
    resetAudience(): void;
    get audienceInput(): string | undefined;
    private _serviceAccount?;
    get serviceAccount(): string;
    set serviceAccount(value: string);
    get serviceAccountInput(): string | undefined;
}
export interface EventarcPipelineDestinationsAuthenticationConfigOauthToken {
    /**
    * OAuth scope to be used for generating OAuth access token. If not
    * specified, "https://www.googleapis.com/auth/cloud-platform" will be
    * used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#scope EventarcPipeline#scope}
    */
    readonly scope?: string;
    /**
    * Service account email used to generate the [OAuth
    * token](https://developers.google.com/identity/protocols/OAuth2).
    * The principal who calls this API must have
    * iam.serviceAccounts.actAs permission in the service account. See
    * https://cloud.google.com/iam/docs/understanding-service-accounts
    * for more information. Eventarc service agents must have
    * roles/roles/iam.serviceAccountTokenCreator role to allow Pipeline
    * to create OAuth2 tokens for authenticated requests.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#service_account EventarcPipeline#service_account}
    */
    readonly serviceAccount: string;
}
export declare function eventarcPipelineDestinationsAuthenticationConfigOauthTokenToTerraform(struct?: EventarcPipelineDestinationsAuthenticationConfigOauthTokenOutputReference | EventarcPipelineDestinationsAuthenticationConfigOauthToken): any;
export declare function eventarcPipelineDestinationsAuthenticationConfigOauthTokenToHclTerraform(struct?: EventarcPipelineDestinationsAuthenticationConfigOauthTokenOutputReference | EventarcPipelineDestinationsAuthenticationConfigOauthToken): any;
export declare class EventarcPipelineDestinationsAuthenticationConfigOauthTokenOutputReference 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(): EventarcPipelineDestinationsAuthenticationConfigOauthToken | undefined;
    set internalValue(value: EventarcPipelineDestinationsAuthenticationConfigOauthToken | undefined);
    private _scope?;
    get scope(): string;
    set scope(value: string);
    resetScope(): void;
    get scopeInput(): string | undefined;
    private _serviceAccount?;
    get serviceAccount(): string;
    set serviceAccount(value: string);
    get serviceAccountInput(): string | undefined;
}
export interface EventarcPipelineDestinationsAuthenticationConfig {
    /**
    * google_oidc block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#google_oidc EventarcPipeline#google_oidc}
    */
    readonly googleOidc?: EventarcPipelineDestinationsAuthenticationConfigGoogleOidc;
    /**
    * oauth_token block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#oauth_token EventarcPipeline#oauth_token}
    */
    readonly oauthToken?: EventarcPipelineDestinationsAuthenticationConfigOauthToken;
}
export declare function eventarcPipelineDestinationsAuthenticationConfigToTerraform(struct?: EventarcPipelineDestinationsAuthenticationConfigOutputReference | EventarcPipelineDestinationsAuthenticationConfig): any;
export declare function eventarcPipelineDestinationsAuthenticationConfigToHclTerraform(struct?: EventarcPipelineDestinationsAuthenticationConfigOutputReference | EventarcPipelineDestinationsAuthenticationConfig): any;
export declare class EventarcPipelineDestinationsAuthenticationConfigOutputReference 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(): EventarcPipelineDestinationsAuthenticationConfig | undefined;
    set internalValue(value: EventarcPipelineDestinationsAuthenticationConfig | undefined);
    private _googleOidc;
    get googleOidc(): EventarcPipelineDestinationsAuthenticationConfigGoogleOidcOutputReference;
    putGoogleOidc(value: EventarcPipelineDestinationsAuthenticationConfigGoogleOidc): void;
    resetGoogleOidc(): void;
    get googleOidcInput(): EventarcPipelineDestinationsAuthenticationConfigGoogleOidc | undefined;
    private _oauthToken;
    get oauthToken(): EventarcPipelineDestinationsAuthenticationConfigOauthTokenOutputReference;
    putOauthToken(value: EventarcPipelineDestinationsAuthenticationConfigOauthToken): void;
    resetOauthToken(): void;
    get oauthTokenInput(): EventarcPipelineDestinationsAuthenticationConfigOauthToken | undefined;
}
export interface EventarcPipelineDestinationsHttpEndpoint {
    /**
    * The CEL expression used to modify how the destination-bound HTTP
    * request is constructed.
    *
    * If a binding expression is not specified here, the message
    * is treated as a CloudEvent and is mapped to the HTTP request according
    * to the CloudEvent HTTP Protocol Binding Binary Content Mode
    * (https://github.com/cloudevents/spec/blob/main/cloudevents/bindings/http-protocol-binding.md#31-binary-content-mode).
    * In this representation, all fields except the 'data' and
    * 'datacontenttype' field on the message are mapped to HTTP request
    * headers with a prefix of 'ce-'.
    *
    * To construct the HTTP request payload and the value of the content-type
    * HTTP header, the payload format is defined as follows:
    * 1) Use the output_payload_format_type on the Pipeline.Destination if it
    * is set, else:
    * 2) Use the input_payload_format_type on the Pipeline if it is set,
    * else:
    * 3) Treat the payload as opaque binary data.
    *
    * The 'data' field of the message is converted to the payload format or
    * left as-is for case 3) and then attached as the payload of the HTTP
    * request. The 'content-type' header on the HTTP request is set to the
    * payload format type or left empty for case 3). However, if a mediation
    * has updated the 'datacontenttype' field on the message so that it is
    * not the same as the payload format type but it is still a prefix of the
    * payload format type, then the 'content-type' header on the HTTP request
    * is set to this 'datacontenttype' value. For example, if the
    * 'datacontenttype' is "application/json" and the payload format type is
    * "application/json; charset=utf-8", then the 'content-type' header on
    * the HTTP request is set to "application/json; charset=utf-8".
    *
    * If a non-empty binding expression is specified then this expression is
    * used to modify the default CloudEvent HTTP Protocol Binding Binary
    * Content representation.
    * The result of the CEL expression must be a map of key/value pairs
    * which is used as follows:
    * - If a map named 'headers' exists on the result of the expression,
    * then its key/value pairs are directly mapped to the HTTP request
    * headers. The headers values are constructed from the corresponding
    * value type's canonical representation. If the 'headers' field doesn't
    * exist then the resulting HTTP request will be the headers of the
    * CloudEvent HTTP Binding Binary Content Mode representation of the final
    * message. Note: If the specified binding expression, has updated the
    * 'datacontenttype' field on the message so that it is not the same as
    * the payload format type but it is still a prefix of the payload format
    * type, then the 'content-type' header in the 'headers' map is set to
    * this 'datacontenttype' value.
    * - If a field named 'body' exists on the result of the expression then
    * its value is directly mapped to the body of the request. If the value
    * of the 'body' field is of type bytes or string then it is used for
    * the HTTP request body as-is, with no conversion. If the body field is
    * of any other type then it is converted to a JSON string. If the body
    * field does not exist then the resulting payload of the HTTP request
    * will be data value of the CloudEvent HTTP Binding Binary Content Mode
    * representation of the final message as described earlier.
    * - Any other fields in the resulting expression will be ignored.
    *
    * The CEL expression may access the incoming CloudEvent message in its
    * definition, as follows:
    * - The 'data' field of the incoming CloudEvent message can be accessed
    * using the 'message.data' value. Subfields of 'message.data' may also be
    * accessed if an input_payload_format has been specified on the Pipeline.
    * - Each attribute of the incoming CloudEvent message can be accessed
    * using the 'message.' value, where  is replaced with the
    * name of the attribute.
    * - Existing headers can be accessed in the CEL expression using the
    * 'headers' variable. The 'headers' variable defines a map of key/value
    * pairs corresponding to the HTTP headers of the CloudEvent HTTP Binding
    * Binary Content Mode representation of the final message as described
    * earlier. For example, the following CEL expression can be used to
    * construct an HTTP request by adding an additional header to the HTTP
    * headers of the CloudEvent HTTP Binding Binary Content Mode
    * representation of the final message and by overwriting the body of the
    * request:
    *
    * ```
    * {
    * "headers": headers.merge({"new-header-key": "new-header-value"}),
    * "body": "new-body"
    * }
    * ```
    * - The default binding for the message payload can be accessed using the
    * 'body' variable. It conatins a string representation of the message
    * payload in the format specified by the 'output_payload_format' field.
    * If the 'input_payload_format' field is not set, the 'body'
    * variable contains the same message payload bytes that were published.
    *
    * Additionally, the following CEL extension functions are provided for
    * use in this CEL expression:
    * - toBase64Url:
    * map.toBase64Url() -> string
    * - Converts a CelValue to a base64url encoded string
    * - toJsonString: map.toJsonString() -> string
    * - Converts a CelValue to a JSON string
    * - merge:
    * map1.merge(map2) -> map3
    * - Merges the passed CEL map with the existing CEL map the
    * function is applied to.
    * - If the same key exists in both maps, if the key's value is type
    * map both maps are merged else the value from the passed map is
    * used.
    * - denormalize:
    * map.denormalize() -> map
    * - Denormalizes a CEL map such that every value of type map or key
    * in the map is expanded to return a single level map.
    * - The resulting keys are "." separated indices of the map keys.
    * - For example:
    * {
    * "a": 1,
    * "b": {
    * "c": 2,
    * "d": 3
    * }
    * "e": [4, 5]
    * }
    * .denormalize()
    * -> {
    * "a": 1,
    * "b.c": 2,
    * "b.d": 3,
    * "e.0": 4,
    * "e.1": 5
    * }
    * - setField:
    * map.setField(key, value) -> message
    * - Sets the field of the message with the given key to the
    * given value.
    * - If the field is not present it will be added.
    * - If the field is present it will be overwritten.
    * - The key can be a dot separated path to set a field in a nested
    * message.
    * - Key must be of type string.
    * - Value may be any valid type.
    * - removeFields:
    * map.removeFields([key1, key2, ...]) -> message
    * - Removes the fields of the map with the given keys.
    * - The keys can be a dot separated path to remove a field in a
    * nested message.
    * - If a key is not found it will be ignored.
    * - Keys must be of type string.
    * - toMap:
    * [map1, map2, ...].toMap() -> map
    * - Converts a CEL list of CEL maps to a single CEL map
    * - toCloudEventJsonWithPayloadFormat:
    * message.toCloudEventJsonWithPayloadFormat() -> map
    * - Converts a message to the corresponding structure of JSON
    * format for CloudEvents.
    * - It converts 'data' to destination payload format
    * specified in 'output_payload_format'. If 'output_payload_format' is
    * not set, the data will remain unchanged.
    * - It also sets the corresponding datacontenttype of
    * the CloudEvent, as indicated by
    * 'output_payload_format'. If no
    * 'output_payload_format' is set it will use the value of the
    * "datacontenttype" attribute on the CloudEvent if present, else
    * remove "datacontenttype" attribute.
    * - This function expects that the content of the message will
    * adhere to the standard CloudEvent format. If it doesn't then this
    * function will fail.
    * - The result is a CEL map that corresponds to the JSON
    * representation of the CloudEvent. To convert that data to a JSON
    * string it can be chained with the toJsonString function.
    *
    * The Pipeline expects that the message it receives adheres to the
    * standard CloudEvent format. If it doesn't then the outgoing message
    * request may fail with a persistent error.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#message_binding_template EventarcPipeline#message_binding_template}
    */
    readonly messageBindingTemplate?: string;
    /**
    * The URI of the HTTP enpdoint.
    *
    * The value must be a RFC2396 URI string.
    * Examples: 'https://svc.us-central1.p.local:8080/route'.
    * Only the HTTPS protocol is supported.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#uri EventarcPipeline#uri}
    */
    readonly uri: string;
}
export declare function eventarcPipelineDestinationsHttpEndpointToTerraform(struct?: EventarcPipelineDestinationsHttpEndpointOutputReference | EventarcPipelineDestinationsHttpEndpoint): any;
export declare function eventarcPipelineDestinationsHttpEndpointToHclTerraform(struct?: EventarcPipelineDestinationsHttpEndpointOutputReference | EventarcPipelineDestinationsHttpEndpoint): any;
export declare class EventarcPipelineDestinationsHttpEndpointOutputReference 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(): EventarcPipelineDestinationsHttpEndpoint | undefined;
    set internalValue(value: EventarcPipelineDestinationsHttpEndpoint | undefined);
    private _messageBindingTemplate?;
    get messageBindingTemplate(): string;
    set messageBindingTemplate(value: string);
    resetMessageBindingTemplate(): void;
    get messageBindingTemplateInput(): string | undefined;
    private _uri?;
    get uri(): string;
    set uri(value: string);
    get uriInput(): string | undefined;
}
export interface EventarcPipelineDestinationsNetworkConfig {
    /**
    * Name of the NetworkAttachment that allows access to the consumer VPC.
    *
    * Format:
    * 'projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}'
    *
    * Required for HTTP endpoint destinations. Must not be specified for
    * Workflows, MessageBus, or Topic destinations.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#network_attachment EventarcPipeline#network_attachment}
    */
    readonly networkAttachment?: string;
}
export declare function eventarcPipelineDestinationsNetworkConfigToTerraform(struct?: EventarcPipelineDestinationsNetworkConfigOutputReference | EventarcPipelineDestinationsNetworkConfig): any;
export declare function eventarcPipelineDestinationsNetworkConfigToHclTerraform(struct?: EventarcPipelineDestinationsNetworkConfigOutputReference | EventarcPipelineDestinationsNetworkConfig): any;
export declare class EventarcPipelineDestinationsNetworkConfigOutputReference 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(): EventarcPipelineDestinationsNetworkConfig | undefined;
    set internalValue(value: EventarcPipelineDestinationsNetworkConfig | undefined);
    private _networkAttachment?;
    get networkAttachment(): string;
    set networkAttachment(value: string);
    resetNetworkAttachment(): void;
    get networkAttachmentInput(): string | undefined;
}
export interface EventarcPipelineDestinationsOutputPayloadFormatAvro {
    /**
    * The entire schema definition is stored in this field.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#schema_definition EventarcPipeline#schema_definition}
    */
    readonly schemaDefinition?: string;
}
export declare function eventarcPipelineDestinationsOutputPayloadFormatAvroToTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatAvroOutputReference | EventarcPipelineDestinationsOutputPayloadFormatAvro): any;
export declare function eventarcPipelineDestinationsOutputPayloadFormatAvroToHclTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatAvroOutputReference | EventarcPipelineDestinationsOutputPayloadFormatAvro): any;
export declare class EventarcPipelineDestinationsOutputPayloadFormatAvroOutputReference 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(): EventarcPipelineDestinationsOutputPayloadFormatAvro | undefined;
    set internalValue(value: EventarcPipelineDestinationsOutputPayloadFormatAvro | undefined);
    private _schemaDefinition?;
    get schemaDefinition(): string;
    set schemaDefinition(value: string);
    resetSchemaDefinition(): void;
    get schemaDefinitionInput(): string | undefined;
}
export interface EventarcPipelineDestinationsOutputPayloadFormatJson {
}
export declare function eventarcPipelineDestinationsOutputPayloadFormatJsonToTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatJsonOutputReference | EventarcPipelineDestinationsOutputPayloadFormatJson): any;
export declare function eventarcPipelineDestinationsOutputPayloadFormatJsonToHclTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatJsonOutputReference | EventarcPipelineDestinationsOutputPayloadFormatJson): any;
export declare class EventarcPipelineDestinationsOutputPayloadFormatJsonOutputReference 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(): EventarcPipelineDestinationsOutputPayloadFormatJson | undefined;
    set internalValue(value: EventarcPipelineDestinationsOutputPayloadFormatJson | undefined);
}
export interface EventarcPipelineDestinationsOutputPayloadFormatProtobuf {
    /**
    * The entire schema definition is stored in this field.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#schema_definition EventarcPipeline#schema_definition}
    */
    readonly schemaDefinition?: string;
}
export declare function eventarcPipelineDestinationsOutputPayloadFormatProtobufToTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatProtobufOutputReference | EventarcPipelineDestinationsOutputPayloadFormatProtobuf): any;
export declare function eventarcPipelineDestinationsOutputPayloadFormatProtobufToHclTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatProtobufOutputReference | EventarcPipelineDestinationsOutputPayloadFormatProtobuf): any;
export declare class EventarcPipelineDestinationsOutputPayloadFormatProtobufOutputReference 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(): EventarcPipelineDestinationsOutputPayloadFormatProtobuf | undefined;
    set internalValue(value: EventarcPipelineDestinationsOutputPayloadFormatProtobuf | undefined);
    private _schemaDefinition?;
    get schemaDefinition(): string;
    set schemaDefinition(value: string);
    resetSchemaDefinition(): void;
    get schemaDefinitionInput(): string | undefined;
}
export interface EventarcPipelineDestinationsOutputPayloadFormat {
    /**
    * avro block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#avro EventarcPipeline#avro}
    */
    readonly avro?: EventarcPipelineDestinationsOutputPayloadFormatAvro;
    /**
    * json block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#json EventarcPipeline#json}
    */
    readonly json?: EventarcPipelineDestinationsOutputPayloadFormatJson;
    /**
    * protobuf block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#protobuf EventarcPipeline#protobuf}
    */
    readonly protobuf?: EventarcPipelineDestinationsOutputPayloadFormatProtobuf;
}
export declare function eventarcPipelineDestinationsOutputPayloadFormatToTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatOutputReference | EventarcPipelineDestinationsOutputPayloadFormat): any;
export declare function eventarcPipelineDestinationsOutputPayloadFormatToHclTerraform(struct?: EventarcPipelineDestinationsOutputPayloadFormatOutputReference | EventarcPipelineDestinationsOutputPayloadFormat): any;
export declare class EventarcPipelineDestinationsOutputPayloadFormatOutputReference 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(): EventarcPipelineDestinationsOutputPayloadFormat | undefined;
    set internalValue(value: EventarcPipelineDestinationsOutputPayloadFormat | undefined);
    private _avro;
    get avro(): EventarcPipelineDestinationsOutputPayloadFormatAvroOutputReference;
    putAvro(value: EventarcPipelineDestinationsOutputPayloadFormatAvro): void;
    resetAvro(): void;
    get avroInput(): EventarcPipelineDestinationsOutputPayloadFormatAvro | undefined;
    private _json;
    get json(): EventarcPipelineDestinationsOutputPayloadFormatJsonOutputReference;
    putJson(value: EventarcPipelineDestinationsOutputPayloadFormatJson): void;
    resetJson(): void;
    get jsonInput(): EventarcPipelineDestinationsOutputPayloadFormatJson | undefined;
    private _protobuf;
    get protobuf(): EventarcPipelineDestinationsOutputPayloadFormatProtobufOutputReference;
    putProtobuf(value: EventarcPipelineDestinationsOutputPayloadFormatProtobuf): void;
    resetProtobuf(): void;
    get protobufInput(): EventarcPipelineDestinationsOutputPayloadFormatProtobuf | undefined;
}
export interface EventarcPipelineDestinations {
    /**
    * The resource name of the Message Bus to which events should be
    * published. The Message Bus resource should exist in the same project as
    * the Pipeline. Format:
    * 'projects/{project}/locations/{location}/messageBuses/{message_bus}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#message_bus EventarcPipeline#message_bus}
    */
    readonly messageBus?: string;
    /**
    * The resource name of the Pub/Sub topic to which events should be
    * published. Format:
    * 'projects/{project}/locations/{location}/topics/{topic}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#topic EventarcPipeline#topic}
    */
    readonly topic?: string;
    /**
    * The resource name of the Workflow whose Executions are triggered by
    * the events. The Workflow resource should be deployed in the same
    * project as the Pipeline. Format:
    * 'projects/{project}/locations/{location}/workflows/{workflow}'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#workflow EventarcPipeline#workflow}
    */
    readonly workflow?: string;
    /**
    * authentication_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#authentication_config EventarcPipeline#authentication_config}
    */
    readonly authenticationConfig?: EventarcPipelineDestinationsAuthenticationConfig;
    /**
    * http_endpoint block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#http_endpoint EventarcPipeline#http_endpoint}
    */
    readonly httpEndpoint?: EventarcPipelineDestinationsHttpEndpoint;
    /**
    * network_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#network_config EventarcPipeline#network_config}
    */
    readonly networkConfig?: EventarcPipelineDestinationsNetworkConfig;
    /**
    * output_payload_format block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#output_payload_format EventarcPipeline#output_payload_format}
    */
    readonly outputPayloadFormat?: EventarcPipelineDestinationsOutputPayloadFormat;
}
export declare function eventarcPipelineDestinationsToTerraform(struct?: EventarcPipelineDestinations | cdktf.IResolvable): any;
export declare function eventarcPipelineDestinationsToHclTerraform(struct?: EventarcPipelineDestinations | cdktf.IResolvable): any;
export declare class EventarcPipelineDestinationsOutputReference 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(): EventarcPipelineDestinations | cdktf.IResolvable | undefined;
    set internalValue(value: EventarcPipelineDestinations | cdktf.IResolvable | undefined);
    private _messageBus?;
    get messageBus(): string;
    set messageBus(value: string);
    resetMessageBus(): void;
    get messageBusInput(): string | undefined;
    private _topic?;
    get topic(): string;
    set topic(value: string);
    resetTopic(): void;
    get topicInput(): string | undefined;
    private _workflow?;
    get workflow(): string;
    set workflow(value: string);
    resetWorkflow(): void;
    get workflowInput(): string | undefined;
    private _authenticationConfig;
    get authenticationConfig(): EventarcPipelineDestinationsAuthenticationConfigOutputReference;
    putAuthenticationConfig(value: EventarcPipelineDestinationsAuthenticationConfig): void;
    resetAuthenticationConfig(): void;
    get authenticationConfigInput(): EventarcPipelineDestinationsAuthenticationConfig | undefined;
    private _httpEndpoint;
    get httpEndpoint(): EventarcPipelineDestinationsHttpEndpointOutputReference;
    putHttpEndpoint(value: EventarcPipelineDestinationsHttpEndpoint): void;
    resetHttpEndpoint(): void;
    get httpEndpointInput(): EventarcPipelineDestinationsHttpEndpoint | undefined;
    private _networkConfig;
    get networkConfig(): EventarcPipelineDestinationsNetworkConfigOutputReference;
    putNetworkConfig(value: EventarcPipelineDestinationsNetworkConfig): void;
    resetNetworkConfig(): void;
    get networkConfigInput(): EventarcPipelineDestinationsNetworkConfig | undefined;
    private _outputPayloadFormat;
    get outputPayloadFormat(): EventarcPipelineDestinationsOutputPayloadFormatOutputReference;
    putOutputPayloadFormat(value: EventarcPipelineDestinationsOutputPayloadFormat): void;
    resetOutputPayloadFormat(): void;
    get outputPayloadFormatInput(): EventarcPipelineDestinationsOutputPayloadFormat | undefined;
}
export declare class EventarcPipelineDestinationsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: EventarcPipelineDestinations[] | 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): EventarcPipelineDestinationsOutputReference;
}
export interface EventarcPipelineInputPayloadFormatAvro {
    /**
    * The entire schema definition is stored in this field.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#schema_definition EventarcPipeline#schema_definition}
    */
    readonly schemaDefinition?: string;
}
export declare function eventarcPipelineInputPayloadFormatAvroToTerraform(struct?: EventarcPipelineInputPayloadFormatAvroOutputReference | EventarcPipelineInputPayloadFormatAvro): any;
export declare function eventarcPipelineInputPayloadFormatAvroToHclTerraform(struct?: EventarcPipelineInputPayloadFormatAvroOutputReference | EventarcPipelineInputPayloadFormatAvro): any;
export declare class EventarcPipelineInputPayloadFormatAvroOutputReference 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(): EventarcPipelineInputPayloadFormatAvro | undefined;
    set internalValue(value: EventarcPipelineInputPayloadFormatAvro | undefined);
    private _schemaDefinition?;
    get schemaDefinition(): string;
    set schemaDefinition(value: string);
    resetSchemaDefinition(): void;
    get schemaDefinitionInput(): string | undefined;
}
export interface EventarcPipelineInputPayloadFormatJson {
}
export declare function eventarcPipelineInputPayloadFormatJsonToTerraform(struct?: EventarcPipelineInputPayloadFormatJsonOutputReference | EventarcPipelineInputPayloadFormatJson): any;
export declare function eventarcPipelineInputPayloadFormatJsonToHclTerraform(struct?: EventarcPipelineInputPayloadFormatJsonOutputReference | EventarcPipelineInputPayloadFormatJson): any;
export declare class EventarcPipelineInputPayloadFormatJsonOutputReference 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(): EventarcPipelineInputPayloadFormatJson | undefined;
    set internalValue(value: EventarcPipelineInputPayloadFormatJson | undefined);
}
export interface EventarcPipelineInputPayloadFormatProtobuf {
    /**
    * The entire schema definition is stored in this field.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#schema_definition EventarcPipeline#schema_definition}
    */
    readonly schemaDefinition?: string;
}
export declare function eventarcPipelineInputPayloadFormatProtobufToTerraform(struct?: EventarcPipelineInputPayloadFormatProtobufOutputReference | EventarcPipelineInputPayloadFormatProtobuf): any;
export declare function eventarcPipelineInputPayloadFormatProtobufToHclTerraform(struct?: EventarcPipelineInputPayloadFormatProtobufOutputReference | EventarcPipelineInputPayloadFormatProtobuf): any;
export declare class EventarcPipelineInputPayloadFormatProtobufOutputReference 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(): EventarcPipelineInputPayloadFormatProtobuf | undefined;
    set internalValue(value: EventarcPipelineInputPayloadFormatProtobuf | undefined);
    private _schemaDefinition?;
    get schemaDefinition(): string;
    set schemaDefinition(value: string);
    resetSchemaDefinition(): void;
    get schemaDefinitionInput(): string | undefined;
}
export interface EventarcPipelineInputPayloadFormat {
    /**
    * avro block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#avro EventarcPipeline#avro}
    */
    readonly avro?: EventarcPipelineInputPayloadFormatAvro;
    /**
    * json block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#json EventarcPipeline#json}
    */
    readonly json?: EventarcPipelineInputPayloadFormatJson;
    /**
    * protobuf block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#protobuf EventarcPipeline#protobuf}
    */
    readonly protobuf?: EventarcPipelineInputPayloadFormatProtobuf;
}
export declare function eventarcPipelineInputPayloadFormatToTerraform(struct?: EventarcPipelineInputPayloadFormatOutputReference | EventarcPipelineInputPayloadFormat): any;
export declare function eventarcPipelineInputPayloadFormatToHclTerraform(struct?: EventarcPipelineInputPayloadFormatOutputReference | EventarcPipelineInputPayloadFormat): any;
export declare class EventarcPipelineInputPayloadFormatOutputReference 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(): EventarcPipelineInputPayloadFormat | undefined;
    set internalValue(value: EventarcPipelineInputPayloadFormat | undefined);
    private _avro;
    get avro(): EventarcPipelineInputPayloadFormatAvroOutputReference;
    putAvro(value: EventarcPipelineInputPayloadFormatAvro): void;
    resetAvro(): void;
    get avroInput(): EventarcPipelineInputPayloadFormatAvro | undefined;
    private _json;
    get json(): EventarcPipelineInputPayloadFormatJsonOutputReference;
    putJson(value: EventarcPipelineInputPayloadFormatJson): void;
    resetJson(): void;
    get jsonInput(): EventarcPipelineInputPayloadFormatJson | undefined;
    private _protobuf;
    get protobuf(): EventarcPipelineInputPayloadFormatProtobufOutputReference;
    putProtobuf(value: EventarcPipelineInputPayloadFormatProtobuf): void;
    resetProtobuf(): void;
    get protobufInput(): EventarcPipelineInputPayloadFormatProtobuf | undefined;
}
export interface EventarcPipelineLoggingConfig {
    /**
    * The minimum severity of logs that will be sent to Stackdriver/Platform
    * Telemetry. Logs at severitiy ≥ this value will be sent, unless it is NONE. Possible values: ["NONE", "DEBUG", "INFO", "NOTICE", "WARNING", "ERROR", "CRITICAL", "ALERT", "EMERGENCY"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#log_severity EventarcPipeline#log_severity}
    */
    readonly logSeverity?: string;
}
export declare function eventarcPipelineLoggingConfigToTerraform(struct?: EventarcPipelineLoggingConfigOutputReference | EventarcPipelineLoggingConfig): any;
export declare function eventarcPipelineLoggingConfigToHclTerraform(struct?: EventarcPipelineLoggingConfigOutputReference | EventarcPipelineLoggingConfig): any;
export declare class EventarcPipelineLoggingConfigOutputReference 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(): EventarcPipelineLoggingConfig | undefined;
    set internalValue(value: EventarcPipelineLoggingConfig | undefined);
    private _logSeverity?;
    get logSeverity(): string;
    set logSeverity(value: string);
    resetLogSeverity(): void;
    get logSeverityInput(): string | undefined;
}
export interface EventarcPipelineMediationsTransformation {
    /**
    * The CEL expression template to apply to transform messages.
    * The following CEL extension functions are provided for
    * use in this CEL expression:
    * - merge:
    * map1.merge(map2) -> map3
    * - Merges the passed CEL map with the existing CEL map the
    * function is applied to.
    * - If the same key exists in both maps, if the key's value is type
    * map both maps are merged else the value from the passed map is
    * used.
    * - denormalize:
    * map.denormalize() -> map
    * - Denormalizes a CEL map such that every value of type map or key
    * in the map is expanded to return a single level map.
    * - The resulting keys are "." separated indices of the map keys.
    * - For example:
    * {
    * "a": 1,
    * "b": {
    * "c": 2,
    * "d": 3
    * }
    * "e": [4, 5]
    * }
    * .denormalize()
    * -> {
    * "a": 1,
    * "b.c": 2,
    * "b.d": 3,
    * "e.0": 4,
    * "e.1": 5
    * }
    * - setField:
    * map.setField(key, value) -> message
    * - Sets the field of the message with the given key to the
    * given value.
    * - If the field is not present it will be added.
    * - If the field is present it will be overwritten.
    * - The key can be a dot separated path to set a field in a nested
    * message.
    * - Key must be of type string.
    * - Value may be any valid type.
    * - removeFields:
    * map.removeFields([key1, key2, ...]) -> message
    * - Removes the fields of the map with the given keys.
    * - The keys can be a dot separated path to remove a field in a
    * nested message.
    * - If a key is not found it will be ignored.
    * - Keys must be of type string.
    * - toMap:
    * [map1, map2, ...].toMap() -> map
    * - Converts a CEL list of CEL maps to a single CEL map
    * - toDestinationPayloadFormat():
    * message.data.toDestinationPayloadFormat() -> string or bytes
    * - Converts the message data to the destination payload format
    * specified in Pipeline.Destination.output_payload_format
    * - This function is meant to be applied to the message.data field.
    * - If the destination payload format is not set, the function will
    * return the message data unchanged.
    * - toCloudEventJsonWithPayloadFormat:
    * message.toCloudEventJsonWithPayloadFormat() -> map
    * - Converts a message to the corresponding structure of JSON
    * format for CloudEvents
    * - This function applies toDestinationPayloadFormat() to the
    * message data. It also sets the corresponding datacontenttype of
    * the CloudEvent, as indicated by
    * Pipeline.Destination.output_payload_format. If no
    * output_payload_format is set it will use the existing
    * datacontenttype on the CloudEvent if present, else leave
    * datacontenttype absent.
    * - This function expects that the content of the message will
    * adhere to the standard CloudEvent format. If it doesn't then this
    * function will fail.
    * - The result is a CEL map that corresponds to the JSON
    * representation of the CloudEvent. To convert that data to a JSON
    * string it can be chained with the toJsonString function.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#transformation_template EventarcPipeline#transformation_template}
    */
    readonly transformationTemplate?: string;
}
export declare function eventarcPipelineMediationsTransformationToTerraform(struct?: EventarcPipelineMediationsTransformationOutputReference | EventarcPipelineMediationsTransformation): any;
export declare function eventarcPipelineMediationsTransformationToHclTerraform(struct?: EventarcPipelineMediationsTransformationOutputReference | EventarcPipelineMediationsTransformation): any;
export declare class EventarcPipelineMediationsTransformationOutputReference 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(): EventarcPipelineMediationsTransformation | undefined;
    set internalValue(value: EventarcPipelineMediationsTransformation | undefined);
    private _transformationTemplate?;
    get transformationTemplate(): string;
    set transformationTemplate(value: string);
    resetTransformationTemplate(): void;
    get transformationTemplateInput(): string | undefined;
}
export interface EventarcPipelineMediations {
    /**
    * transformation block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#transformation EventarcPipeline#transformation}
    */
    readonly transformation?: EventarcPipelineMediationsTransformation;
}
export declare function eventarcPipelineMediationsToTerraform(struct?: EventarcPipelineMediations | cdktf.IResolvable): any;
export declare function eventarcPipelineMediationsToHclTerraform(struct?: EventarcPipelineMediations | cdktf.IResolvable): any;
export declare class EventarcPipelineMediationsOutputReference 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(): EventarcPipelineMediations | cdktf.IResolvable | undefined;
    set internalValue(value: EventarcPipelineMediations | cdktf.IResolvable | undefined);
    private _transformation;
    get transformation(): EventarcPipelineMediationsTransformationOutputReference;
    putTransformation(value: EventarcPipelineMediationsTransformation): void;
    resetTransformation(): void;
    get transformationInput(): EventarcPipelineMediationsTransformation | undefined;
}
export declare class EventarcPipelineMediationsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: EventarcPipelineMediations[] | 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): EventarcPipelineMediationsOutputReference;
}
export interface EventarcPipelineRetryPolicy {
    /**
    * The maximum number of delivery attempts for any message. The value must
    * be between 1 and 100.
    * The default value for this field is 5.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#max_attempts EventarcPipeline#max_attempts}
    */
    readonly maxAttempts?: number;
    /**
    * The maximum amount of seconds to wait between retry attempts. The value
    * must be between 1 and 600.
    * The default value for this field is 60.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#max_retry_delay EventarcPipeline#max_retry_delay}
    */
    readonly maxRetryDelay?: string;
    /**
    * The minimum amount of seconds to wait between retry attempts. The value
    * must be between 1 and 600.
    * The default value for this field is 5.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#min_retry_delay EventarcPipeline#min_retry_delay}
    */
    readonly minRetryDelay?: string;
}
export declare function eventarcPipelineRetryPolicyToTerraform(struct?: EventarcPipelineRetryPolicyOutputReference | EventarcPipelineRetryPolicy): any;
export declare function eventarcPipelineRetryPolicyToHclTerraform(struct?: EventarcPipelineRetryPolicyOutputReference | EventarcPipelineRetryPolicy): any;
export declare class EventarcPipelineRetryPolicyOutputReference 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(): EventarcPipelineRetryPolicy | undefined;
    set internalValue(value: EventarcPipelineRetryPolicy | undefined);
    private _maxAttempts?;
    get maxAttempts(): number;
    set maxAttempts(value: number);
    resetMaxAttempts(): void;
    get maxAttemptsInput(): number | undefined;
    private _maxRetryDelay?;
    get maxRetryDelay(): string;
    set maxRetryDelay(value: string);
    resetMaxRetryDelay(): void;
    get maxRetryDelayInput(): string | undefined;
    private _minRetryDelay?;
    get minRetryDelay(): string;
    set minRetryDelay(value: string);
    resetMinRetryDelay(): void;
    get minRetryDelayInput(): string | undefined;
}
export interface EventarcPipelineTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#create EventarcPipeline#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#delete EventarcPipeline#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#update EventarcPipeline#update}
    */
    readonly update?: string;
}
export declare function eventarcPipelineTimeoutsToTerraform(struct?: EventarcPipelineTimeouts | cdktf.IResolvable): any;
export declare function eventarcPipelineTimeoutsToHclTerraform(struct?: EventarcPipelineTimeouts | cdktf.IResolvable): any;
export declare class EventarcPipelineTimeoutsOutputReference 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(): EventarcPipelineTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: EventarcPipelineTimeouts | 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.41.0/docs/resources/eventarc_pipeline google_eventarc_pipeline}
*/
export declare class EventarcPipeline extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_eventarc_pipeline";
    /**
    * Generates CDKTF code for importing a EventarcPipeline 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 EventarcPipeline to import
    * @param importFromId The id of the existing EventarcPipeline that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/eventarc_pipeline#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the EventarcPipeline 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.41.0/docs/resources/eventarc_pipeline google_eventarc_pipeline} 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 EventarcPipelineConfig
    */
    constructor(scope: Construct, id: string, config: EventarcPipelineConfig);
    private _annotations?;
    get annotations(): {
        [key: string]: string;
    };
    set annotations(value: {
        [key: string]: string;
    });
    resetAnnotations(): void;
    get annotationsInput(): {
        [key: string]: string;
    } | undefined;
    get createTime(): string;
    private _cryptoKeyName?;
    get cryptoKeyName(): string;
    set cryptoKeyName(value: string);
    resetCryptoKeyName(): void;
    get cryptoKeyNameInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _effectiveAnnotations;
    get effectiveAnnotations(): cdktf.StringMap;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    get etag(): string;
    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);
    get locationInput(): string | undefined;
    get name(): string;
    private _pipelineId?;
    get pipelineId(): string;
    set pipelineId(value: string);
    get pipelineIdInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get uid(): string;
    get updateTime(): string;
    private _destinations;
    get destinations(): EventarcPipelineDestinationsList;
    putDestinations(value: EventarcPipelineDestinations[] | cdktf.IResolvable): void;
    get destinationsInput(): cdktf.IResolvable | EventarcPipelineDestinations[] | undefined;
    private _inputPayloadFormat;
    get inputPayloadFormat(): EventarcPipelineInputPayloadFormatOutputReference;
    putInputPayloadFormat(value: EventarcPipelineInputPayloadFormat): void;
    resetInputPayloadFormat(): void;
    get inputPayloadFormatInput(): EventarcPipelineInputPayloadFormat | undefined;
    private _loggingConfig;
    get loggingConfig(): EventarcPipelineLoggingConfigOutputReference;
    putLoggingConfig(value: EventarcPipelineLoggingConfig): void;
    resetLoggingConfig(): void;
    get loggingConfigInput(): EventarcPipelineLoggingConfig | undefined;
    private _mediations;
    get mediations(): EventarcPipelineMediationsList;
    putMediations(value: EventarcPipelineMediations[] | cdktf.IResolvable): void;
    resetMediations(): void;
    get mediationsInput(): cdktf.IResolvable | EventarcPipelineMediations[] | undefined;
    private _retryPolicy;
    get retryPolicy(): EventarcPipelineRetryPolicyOutputReference;
    putRetryPolicy(value: EventarcPipelineRetryPolicy): void;
    resetRetryPolicy(): void;
    get retryPolicyInput(): EventarcPipelineRetryPolicy | undefined;
    private _timeouts;
    get timeouts(): EventarcPipelineTimeoutsOutputReference;
    putTimeouts(value: EventarcPipelineTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | EventarcPipelineTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
