/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DialogflowCxToolConfig extends cdktf.TerraformMetaArguments {
    /**
    * High level description of the Tool and its usage.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#description DialogflowCxTool#description}
    */
    readonly description: string;
    /**
    * The human-readable name of the tool, unique within the agent.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#display_name DialogflowCxTool#display_name}
    */
    readonly displayName: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#id DialogflowCxTool#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;
    /**
    * The agent to create a Tool for.
    * Format: projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#parent DialogflowCxTool#parent}
    */
    readonly parent?: string;
    /**
    * data_store_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#data_store_spec DialogflowCxTool#data_store_spec}
    */
    readonly dataStoreSpec?: DialogflowCxToolDataStoreSpec;
    /**
    * function_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#function_spec DialogflowCxTool#function_spec}
    */
    readonly functionSpec?: DialogflowCxToolFunctionSpec;
    /**
    * open_api_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#open_api_spec DialogflowCxTool#open_api_spec}
    */
    readonly openApiSpec?: DialogflowCxToolOpenApiSpec;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#timeouts DialogflowCxTool#timeouts}
    */
    readonly timeouts?: DialogflowCxToolTimeouts;
}
export interface DialogflowCxToolDataStoreSpecDataStoreConnections {
    /**
    * The full name of the referenced data store. Formats: projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore} projects/{project}/locations/{location}/dataStores/{dataStore}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#data_store DialogflowCxTool#data_store}
    */
    readonly dataStore?: string;
    /**
    * The type of the connected data store.
    * See [DataStoreType](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/DataStoreConnection#datastoretype) for valid values.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#data_store_type DialogflowCxTool#data_store_type}
    */
    readonly dataStoreType?: string;
    /**
    * The document processing mode for the data store connection. Should only be set for PUBLIC_WEB and UNSTRUCTURED data stores. If not set it is considered as DOCUMENTS, as this is the legacy mode.
    * See [DocumentProcessingMode](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/DataStoreConnection#documentprocessingmode) for valid values.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#document_processing_mode DialogflowCxTool#document_processing_mode}
    */
    readonly documentProcessingMode?: string;
}
export declare function dialogflowCxToolDataStoreSpecDataStoreConnectionsToTerraform(struct?: DialogflowCxToolDataStoreSpecDataStoreConnections | cdktf.IResolvable): any;
export declare function dialogflowCxToolDataStoreSpecDataStoreConnectionsToHclTerraform(struct?: DialogflowCxToolDataStoreSpecDataStoreConnections | cdktf.IResolvable): any;
export declare class DialogflowCxToolDataStoreSpecDataStoreConnectionsOutputReference 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(): DialogflowCxToolDataStoreSpecDataStoreConnections | cdktf.IResolvable | undefined;
    set internalValue(value: DialogflowCxToolDataStoreSpecDataStoreConnections | cdktf.IResolvable | undefined);
    private _dataStore?;
    get dataStore(): string;
    set dataStore(value: string);
    resetDataStore(): void;
    get dataStoreInput(): string | undefined;
    private _dataStoreType?;
    get dataStoreType(): string;
    set dataStoreType(value: string);
    resetDataStoreType(): void;
    get dataStoreTypeInput(): string | undefined;
    private _documentProcessingMode?;
    get documentProcessingMode(): string;
    set documentProcessingMode(value: string);
    resetDocumentProcessingMode(): void;
    get documentProcessingModeInput(): string | undefined;
}
export declare class DialogflowCxToolDataStoreSpecDataStoreConnectionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DialogflowCxToolDataStoreSpecDataStoreConnections[] | 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): DialogflowCxToolDataStoreSpecDataStoreConnectionsOutputReference;
}
export interface DialogflowCxToolDataStoreSpecFallbackPrompt {
}
export declare function dialogflowCxToolDataStoreSpecFallbackPromptToTerraform(struct?: DialogflowCxToolDataStoreSpecFallbackPromptOutputReference | DialogflowCxToolDataStoreSpecFallbackPrompt): any;
export declare function dialogflowCxToolDataStoreSpecFallbackPromptToHclTerraform(struct?: DialogflowCxToolDataStoreSpecFallbackPromptOutputReference | DialogflowCxToolDataStoreSpecFallbackPrompt): any;
export declare class DialogflowCxToolDataStoreSpecFallbackPromptOutputReference 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(): DialogflowCxToolDataStoreSpecFallbackPrompt | undefined;
    set internalValue(value: DialogflowCxToolDataStoreSpecFallbackPrompt | undefined);
}
export interface DialogflowCxToolDataStoreSpec {
    /**
    * data_store_connections block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#data_store_connections DialogflowCxTool#data_store_connections}
    */
    readonly dataStoreConnections: DialogflowCxToolDataStoreSpecDataStoreConnections[] | cdktf.IResolvable;
    /**
    * fallback_prompt block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#fallback_prompt DialogflowCxTool#fallback_prompt}
    */
    readonly fallbackPrompt: DialogflowCxToolDataStoreSpecFallbackPrompt;
}
export declare function dialogflowCxToolDataStoreSpecToTerraform(struct?: DialogflowCxToolDataStoreSpecOutputReference | DialogflowCxToolDataStoreSpec): any;
export declare function dialogflowCxToolDataStoreSpecToHclTerraform(struct?: DialogflowCxToolDataStoreSpecOutputReference | DialogflowCxToolDataStoreSpec): any;
export declare class DialogflowCxToolDataStoreSpecOutputReference 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(): DialogflowCxToolDataStoreSpec | undefined;
    set internalValue(value: DialogflowCxToolDataStoreSpec | undefined);
    private _dataStoreConnections;
    get dataStoreConnections(): DialogflowCxToolDataStoreSpecDataStoreConnectionsList;
    putDataStoreConnections(value: DialogflowCxToolDataStoreSpecDataStoreConnections[] | cdktf.IResolvable): void;
    get dataStoreConnectionsInput(): cdktf.IResolvable | DialogflowCxToolDataStoreSpecDataStoreConnections[] | undefined;
    private _fallbackPrompt;
    get fallbackPrompt(): DialogflowCxToolDataStoreSpecFallbackPromptOutputReference;
    putFallbackPrompt(value: DialogflowCxToolDataStoreSpecFallbackPrompt): void;
    get fallbackPromptInput(): DialogflowCxToolDataStoreSpecFallbackPrompt | undefined;
}
export interface DialogflowCxToolFunctionSpec {
    /**
    * Optional. The JSON schema is encapsulated in a [google.protobuf.Struct](https://protobuf.dev/reference/protobuf/google.protobuf/#struct) to describe the input of the function.
    * This input is a JSON object that contains the function's parameters as properties of the object
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#input_schema DialogflowCxTool#input_schema}
    */
    readonly inputSchema?: string;
    /**
    * Optional. The JSON schema is encapsulated in a [google.protobuf.Struct](https://protobuf.dev/reference/protobuf/google.protobuf/#struct) to describe the output of the function.
    * This output is a JSON object that contains the function's parameters as properties of the object
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#output_schema DialogflowCxTool#output_schema}
    */
    readonly outputSchema?: string;
}
export declare function dialogflowCxToolFunctionSpecToTerraform(struct?: DialogflowCxToolFunctionSpecOutputReference | DialogflowCxToolFunctionSpec): any;
export declare function dialogflowCxToolFunctionSpecToHclTerraform(struct?: DialogflowCxToolFunctionSpecOutputReference | DialogflowCxToolFunctionSpec): any;
export declare class DialogflowCxToolFunctionSpecOutputReference 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(): DialogflowCxToolFunctionSpec | undefined;
    set internalValue(value: DialogflowCxToolFunctionSpec | undefined);
    private _inputSchema?;
    get inputSchema(): string;
    set inputSchema(value: string);
    resetInputSchema(): void;
    get inputSchemaInput(): string | undefined;
    private _outputSchema?;
    get outputSchema(): string;
    set outputSchema(value: string);
    resetOutputSchema(): void;
    get outputSchemaInput(): string | undefined;
}
export interface DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig {
    /**
    * Optional. The API key. If the 'secretVersionForApiKey'' field is set, this field will be ignored.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#api_key DialogflowCxTool#api_key}
    */
    readonly apiKey?: string;
    /**
    * The parameter name or the header name of the API key.
    * E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#key_name DialogflowCxTool#key_name}
    */
    readonly keyName: string;
    /**
    * Key location in the request.
    * See [RequestLocation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.tools#requestlocation) for valid values.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#request_location DialogflowCxTool#request_location}
    */
    readonly requestLocation: string;
    /**
    * Optional. The name of the SecretManager secret version resource storing the API key.
    * If this field is set, the apiKey field will be ignored.
    * Format: projects/{project}/secrets/{secret}/versions/{version}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#secret_version_for_api_key DialogflowCxTool#secret_version_for_api_key}
    */
    readonly secretVersionForApiKey?: string;
}
export declare function dialogflowCxToolOpenApiSpecAuthenticationApiKeyConfigToTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig): any;
export declare function dialogflowCxToolOpenApiSpecAuthenticationApiKeyConfigToHclTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig): any;
export declare class DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfigOutputReference 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(): DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig | undefined);
    private _apiKey?;
    get apiKey(): string;
    set apiKey(value: string);
    resetApiKey(): void;
    get apiKeyInput(): string | undefined;
    private _keyName?;
    get keyName(): string;
    set keyName(value: string);
    get keyNameInput(): string | undefined;
    private _requestLocation?;
    get requestLocation(): string;
    set requestLocation(value: string);
    get requestLocationInput(): string | undefined;
    private _secretVersionForApiKey?;
    get secretVersionForApiKey(): string;
    set secretVersionForApiKey(value: string);
    resetSecretVersionForApiKey(): void;
    get secretVersionForApiKeyInput(): string | undefined;
}
export interface DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig {
    /**
    * Optional. The name of the SecretManager secret version resource storing the Bearer token. If this field is set, the 'token' field will be ignored.
    * Format: projects/{project}/secrets/{secret}/versions/{version}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#secret_version_for_token DialogflowCxTool#secret_version_for_token}
    */
    readonly secretVersionForToken?: string;
    /**
    * Optional. The text token appended to the text Bearer to the request Authorization header.
    * [Session parameters reference](https://cloud.google.com/dialogflow/cx/docs/concept/parameter#session-ref) can be used to pass the token dynamically, e.g. '$session.params.parameter-id'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#token DialogflowCxTool#token}
    */
    readonly token?: string;
}
export declare function dialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfigToTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig): any;
export declare function dialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfigToHclTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig): any;
export declare class DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfigOutputReference 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(): DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig | undefined);
    private _secretVersionForToken?;
    get secretVersionForToken(): string;
    set secretVersionForToken(value: string);
    resetSecretVersionForToken(): void;
    get secretVersionForTokenInput(): string | undefined;
    private _token?;
    get token(): string;
    set token(value: string);
    resetToken(): void;
    get tokenInput(): string | undefined;
}
export interface DialogflowCxToolOpenApiSpecAuthenticationOauthConfig {
    /**
    * The client ID from the OAuth provider.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#client_id DialogflowCxTool#client_id}
    */
    readonly clientId: string;
    /**
    * Optional. The client secret from the OAuth provider. If the 'secretVersionForClientSecret' field is set, this field will be ignored.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#client_secret DialogflowCxTool#client_secret}
    */
    readonly clientSecret?: string;
    /**
    * OAuth grant types.
    * See [OauthGrantType](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.tools#oauthgranttype) for valid values
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#oauth_grant_type DialogflowCxTool#oauth_grant_type}
    */
    readonly oauthGrantType: string;
    /**
    * Optional. The OAuth scopes to grant.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#scopes DialogflowCxTool#scopes}
    */
    readonly scopes?: string[];
    /**
    * Optional. The name of the SecretManager secret version resource storing the client secret.
    * If this field is set, the clientSecret field will be ignored.
    * Format: projects/{project}/secrets/{secret}/versions/{version}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#secret_version_for_client_secret DialogflowCxTool#secret_version_for_client_secret}
    */
    readonly secretVersionForClientSecret?: string;
    /**
    * The token endpoint in the OAuth provider to exchange for an access token.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#token_endpoint DialogflowCxTool#token_endpoint}
    */
    readonly tokenEndpoint: string;
}
export declare function dialogflowCxToolOpenApiSpecAuthenticationOauthConfigToTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationOauthConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationOauthConfig): any;
export declare function dialogflowCxToolOpenApiSpecAuthenticationOauthConfigToHclTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationOauthConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationOauthConfig): any;
export declare class DialogflowCxToolOpenApiSpecAuthenticationOauthConfigOutputReference 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(): DialogflowCxToolOpenApiSpecAuthenticationOauthConfig | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecAuthenticationOauthConfig | undefined);
    private _clientId?;
    get clientId(): string;
    set clientId(value: string);
    get clientIdInput(): string | undefined;
    private _clientSecret?;
    get clientSecret(): string;
    set clientSecret(value: string);
    resetClientSecret(): void;
    get clientSecretInput(): string | undefined;
    private _oauthGrantType?;
    get oauthGrantType(): string;
    set oauthGrantType(value: string);
    get oauthGrantTypeInput(): string | undefined;
    private _scopes?;
    get scopes(): string[];
    set scopes(value: string[]);
    resetScopes(): void;
    get scopesInput(): string[] | undefined;
    private _secretVersionForClientSecret?;
    get secretVersionForClientSecret(): string;
    set secretVersionForClientSecret(value: string);
    resetSecretVersionForClientSecret(): void;
    get secretVersionForClientSecretInput(): string | undefined;
    private _tokenEndpoint?;
    get tokenEndpoint(): string;
    set tokenEndpoint(value: string);
    get tokenEndpointInput(): string | undefined;
}
export interface DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig {
    /**
    * Optional. Indicate the auth token type generated from the Diglogflow service agent.
    * The generated token is sent in the Authorization header.
    * See [ServiceAgentAuth](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.tools#serviceagentauth) for valid values.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#service_agent_auth DialogflowCxTool#service_agent_auth}
    */
    readonly serviceAgentAuth?: string;
}
export declare function dialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfigToTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig): any;
export declare function dialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfigToHclTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfigOutputReference | DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig): any;
export declare class DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfigOutputReference 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(): DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig | undefined);
    private _serviceAgentAuth?;
    get serviceAgentAuth(): string;
    set serviceAgentAuth(value: string);
    resetServiceAgentAuth(): void;
    get serviceAgentAuthInput(): string | undefined;
}
export interface DialogflowCxToolOpenApiSpecAuthentication {
    /**
    * api_key_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#api_key_config DialogflowCxTool#api_key_config}
    */
    readonly apiKeyConfig?: DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig;
    /**
    * bearer_token_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#bearer_token_config DialogflowCxTool#bearer_token_config}
    */
    readonly bearerTokenConfig?: DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig;
    /**
    * oauth_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#oauth_config DialogflowCxTool#oauth_config}
    */
    readonly oauthConfig?: DialogflowCxToolOpenApiSpecAuthenticationOauthConfig;
    /**
    * service_agent_auth_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#service_agent_auth_config DialogflowCxTool#service_agent_auth_config}
    */
    readonly serviceAgentAuthConfig?: DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig;
}
export declare function dialogflowCxToolOpenApiSpecAuthenticationToTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationOutputReference | DialogflowCxToolOpenApiSpecAuthentication): any;
export declare function dialogflowCxToolOpenApiSpecAuthenticationToHclTerraform(struct?: DialogflowCxToolOpenApiSpecAuthenticationOutputReference | DialogflowCxToolOpenApiSpecAuthentication): any;
export declare class DialogflowCxToolOpenApiSpecAuthenticationOutputReference 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(): DialogflowCxToolOpenApiSpecAuthentication | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecAuthentication | undefined);
    private _apiKeyConfig;
    get apiKeyConfig(): DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfigOutputReference;
    putApiKeyConfig(value: DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig): void;
    resetApiKeyConfig(): void;
    get apiKeyConfigInput(): DialogflowCxToolOpenApiSpecAuthenticationApiKeyConfig | undefined;
    private _bearerTokenConfig;
    get bearerTokenConfig(): DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfigOutputReference;
    putBearerTokenConfig(value: DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig): void;
    resetBearerTokenConfig(): void;
    get bearerTokenConfigInput(): DialogflowCxToolOpenApiSpecAuthenticationBearerTokenConfig | undefined;
    private _oauthConfig;
    get oauthConfig(): DialogflowCxToolOpenApiSpecAuthenticationOauthConfigOutputReference;
    putOauthConfig(value: DialogflowCxToolOpenApiSpecAuthenticationOauthConfig): void;
    resetOauthConfig(): void;
    get oauthConfigInput(): DialogflowCxToolOpenApiSpecAuthenticationOauthConfig | undefined;
    private _serviceAgentAuthConfig;
    get serviceAgentAuthConfig(): DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfigOutputReference;
    putServiceAgentAuthConfig(value: DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig): void;
    resetServiceAgentAuthConfig(): void;
    get serviceAgentAuthConfigInput(): DialogflowCxToolOpenApiSpecAuthenticationServiceAgentAuthConfig | undefined;
}
export interface DialogflowCxToolOpenApiSpecServiceDirectoryConfig {
    /**
    * The name of [Service Directory](https://cloud.google.com/service-directory/docs) service.
    * Format: projects/<ProjectID>/locations/<LocationID>/namespaces/<NamespaceID>/services/<ServiceID>. LocationID of the service directory must be the same as the location of the agent.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#service DialogflowCxTool#service}
    */
    readonly service: string;
}
export declare function dialogflowCxToolOpenApiSpecServiceDirectoryConfigToTerraform(struct?: DialogflowCxToolOpenApiSpecServiceDirectoryConfigOutputReference | DialogflowCxToolOpenApiSpecServiceDirectoryConfig): any;
export declare function dialogflowCxToolOpenApiSpecServiceDirectoryConfigToHclTerraform(struct?: DialogflowCxToolOpenApiSpecServiceDirectoryConfigOutputReference | DialogflowCxToolOpenApiSpecServiceDirectoryConfig): any;
export declare class DialogflowCxToolOpenApiSpecServiceDirectoryConfigOutputReference 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(): DialogflowCxToolOpenApiSpecServiceDirectoryConfig | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecServiceDirectoryConfig | undefined);
    private _service?;
    get service(): string;
    set service(value: string);
    get serviceInput(): string | undefined;
}
export interface DialogflowCxToolOpenApiSpecTlsConfigCaCerts {
    /**
    * The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store.
    * If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates.
    * N.B. Make sure the HTTPS server certificates are signed with "subject alt name".
    * For instance a certificate can be self-signed using the following command:
    * ```
    *   openssl x509 -req -days 200 -in example.com.csr \
    *     -signkey example.com.key \
    *     -out example.com.crt \
    *     -extfile <(printf "\nsubjectAltName='DNS:www.example.com'")
    * ```
    * A base64-encoded string.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#cert DialogflowCxTool#cert}
    */
    readonly cert: string;
    /**
    * The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#display_name DialogflowCxTool#display_name}
    */
    readonly displayName: string;
}
export declare function dialogflowCxToolOpenApiSpecTlsConfigCaCertsToTerraform(struct?: DialogflowCxToolOpenApiSpecTlsConfigCaCerts | cdktf.IResolvable): any;
export declare function dialogflowCxToolOpenApiSpecTlsConfigCaCertsToHclTerraform(struct?: DialogflowCxToolOpenApiSpecTlsConfigCaCerts | cdktf.IResolvable): any;
export declare class DialogflowCxToolOpenApiSpecTlsConfigCaCertsOutputReference 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(): DialogflowCxToolOpenApiSpecTlsConfigCaCerts | cdktf.IResolvable | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecTlsConfigCaCerts | cdktf.IResolvable | undefined);
    private _cert?;
    get cert(): string;
    set cert(value: string);
    get certInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
}
export declare class DialogflowCxToolOpenApiSpecTlsConfigCaCertsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DialogflowCxToolOpenApiSpecTlsConfigCaCerts[] | 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): DialogflowCxToolOpenApiSpecTlsConfigCaCertsOutputReference;
}
export interface DialogflowCxToolOpenApiSpecTlsConfig {
    /**
    * ca_certs block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#ca_certs DialogflowCxTool#ca_certs}
    */
    readonly caCerts: DialogflowCxToolOpenApiSpecTlsConfigCaCerts[] | cdktf.IResolvable;
}
export declare function dialogflowCxToolOpenApiSpecTlsConfigToTerraform(struct?: DialogflowCxToolOpenApiSpecTlsConfigOutputReference | DialogflowCxToolOpenApiSpecTlsConfig): any;
export declare function dialogflowCxToolOpenApiSpecTlsConfigToHclTerraform(struct?: DialogflowCxToolOpenApiSpecTlsConfigOutputReference | DialogflowCxToolOpenApiSpecTlsConfig): any;
export declare class DialogflowCxToolOpenApiSpecTlsConfigOutputReference 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(): DialogflowCxToolOpenApiSpecTlsConfig | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpecTlsConfig | undefined);
    private _caCerts;
    get caCerts(): DialogflowCxToolOpenApiSpecTlsConfigCaCertsList;
    putCaCerts(value: DialogflowCxToolOpenApiSpecTlsConfigCaCerts[] | cdktf.IResolvable): void;
    get caCertsInput(): cdktf.IResolvable | DialogflowCxToolOpenApiSpecTlsConfigCaCerts[] | undefined;
}
export interface DialogflowCxToolOpenApiSpec {
    /**
    * The OpenAPI schema specified as a text.
    * This field is part of a union field 'schema': only one of 'textSchema' may be set.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#text_schema DialogflowCxTool#text_schema}
    */
    readonly textSchema: string;
    /**
    * authentication block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#authentication DialogflowCxTool#authentication}
    */
    readonly authentication?: DialogflowCxToolOpenApiSpecAuthentication;
    /**
    * service_directory_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#service_directory_config DialogflowCxTool#service_directory_config}
    */
    readonly serviceDirectoryConfig?: DialogflowCxToolOpenApiSpecServiceDirectoryConfig;
    /**
    * tls_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#tls_config DialogflowCxTool#tls_config}
    */
    readonly tlsConfig?: DialogflowCxToolOpenApiSpecTlsConfig;
}
export declare function dialogflowCxToolOpenApiSpecToTerraform(struct?: DialogflowCxToolOpenApiSpecOutputReference | DialogflowCxToolOpenApiSpec): any;
export declare function dialogflowCxToolOpenApiSpecToHclTerraform(struct?: DialogflowCxToolOpenApiSpecOutputReference | DialogflowCxToolOpenApiSpec): any;
export declare class DialogflowCxToolOpenApiSpecOutputReference 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(): DialogflowCxToolOpenApiSpec | undefined;
    set internalValue(value: DialogflowCxToolOpenApiSpec | undefined);
    private _textSchema?;
    get textSchema(): string;
    set textSchema(value: string);
    get textSchemaInput(): string | undefined;
    private _authentication;
    get authentication(): DialogflowCxToolOpenApiSpecAuthenticationOutputReference;
    putAuthentication(value: DialogflowCxToolOpenApiSpecAuthentication): void;
    resetAuthentication(): void;
    get authenticationInput(): DialogflowCxToolOpenApiSpecAuthentication | undefined;
    private _serviceDirectoryConfig;
    get serviceDirectoryConfig(): DialogflowCxToolOpenApiSpecServiceDirectoryConfigOutputReference;
    putServiceDirectoryConfig(value: DialogflowCxToolOpenApiSpecServiceDirectoryConfig): void;
    resetServiceDirectoryConfig(): void;
    get serviceDirectoryConfigInput(): DialogflowCxToolOpenApiSpecServiceDirectoryConfig | undefined;
    private _tlsConfig;
    get tlsConfig(): DialogflowCxToolOpenApiSpecTlsConfigOutputReference;
    putTlsConfig(value: DialogflowCxToolOpenApiSpecTlsConfig): void;
    resetTlsConfig(): void;
    get tlsConfigInput(): DialogflowCxToolOpenApiSpecTlsConfig | undefined;
}
export interface DialogflowCxToolTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#create DialogflowCxTool#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#delete DialogflowCxTool#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#update DialogflowCxTool#update}
    */
    readonly update?: string;
}
export declare function dialogflowCxToolTimeoutsToTerraform(struct?: DialogflowCxToolTimeouts | cdktf.IResolvable): any;
export declare function dialogflowCxToolTimeoutsToHclTerraform(struct?: DialogflowCxToolTimeouts | cdktf.IResolvable): any;
export declare class DialogflowCxToolTimeoutsOutputReference 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(): DialogflowCxToolTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: DialogflowCxToolTimeouts | 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.50.0/docs/resources/dialogflow_cx_tool google_dialogflow_cx_tool}
*/
export declare class DialogflowCxTool extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_dialogflow_cx_tool";
    /**
    * Generates CDKTF code for importing a DialogflowCxTool 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 DialogflowCxTool to import
    * @param importFromId The id of the existing DialogflowCxTool that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_tool#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DialogflowCxTool 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.50.0/docs/resources/dialogflow_cx_tool google_dialogflow_cx_tool} 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 DialogflowCxToolConfig
    */
    constructor(scope: Construct, id: string, config: DialogflowCxToolConfig);
    private _description?;
    get description(): string;
    set description(value: string);
    get descriptionInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get name(): string;
    private _parent?;
    get parent(): string;
    set parent(value: string);
    resetParent(): void;
    get parentInput(): string | undefined;
    get toolType(): string;
    private _dataStoreSpec;
    get dataStoreSpec(): DialogflowCxToolDataStoreSpecOutputReference;
    putDataStoreSpec(value: DialogflowCxToolDataStoreSpec): void;
    resetDataStoreSpec(): void;
    get dataStoreSpecInput(): DialogflowCxToolDataStoreSpec | undefined;
    private _functionSpec;
    get functionSpec(): DialogflowCxToolFunctionSpecOutputReference;
    putFunctionSpec(value: DialogflowCxToolFunctionSpec): void;
    resetFunctionSpec(): void;
    get functionSpecInput(): DialogflowCxToolFunctionSpec | undefined;
    private _openApiSpec;
    get openApiSpec(): DialogflowCxToolOpenApiSpecOutputReference;
    putOpenApiSpec(value: DialogflowCxToolOpenApiSpec): void;
    resetOpenApiSpec(): void;
    get openApiSpecInput(): DialogflowCxToolOpenApiSpec | undefined;
    private _timeouts;
    get timeouts(): DialogflowCxToolTimeoutsOutputReference;
    putTimeouts(value: DialogflowCxToolTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | DialogflowCxToolTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
