/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DiscoveryEngineChatEngineConfig extends cdktf.TerraformMetaArguments {
    /**
    * The collection ID.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#collection_id DiscoveryEngineChatEngine#collection_id}
    */
    readonly collectionId: string;
    /**
    * The data stores associated with this engine. Multiple DataStores in the same Collection can be associated here. All listed DataStores must be 'SOLUTION_TYPE_CHAT'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#data_store_ids DiscoveryEngineChatEngine#data_store_ids}
    */
    readonly dataStoreIds: string[];
    /**
    * The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#display_name DiscoveryEngineChatEngine#display_name}
    */
    readonly displayName: string;
    /**
    * The ID to use for chat engine.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#engine_id DiscoveryEngineChatEngine#engine_id}
    */
    readonly engineId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#id DiscoveryEngineChatEngine#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 industry vertical that the chat engine registers. Vertical on Engine has to match vertical of the DataStore linked to the engine. Default value: "GENERIC" Possible values: ["GENERIC"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#industry_vertical DiscoveryEngineChatEngine#industry_vertical}
    */
    readonly industryVertical?: string;
    /**
    * Location.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#location DiscoveryEngineChatEngine#location}
    */
    readonly location: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#project DiscoveryEngineChatEngine#project}
    */
    readonly project?: string;
    /**
    * chat_engine_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#chat_engine_config DiscoveryEngineChatEngine#chat_engine_config}
    */
    readonly chatEngineConfig: DiscoveryEngineChatEngineChatEngineConfig;
    /**
    * common_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#common_config DiscoveryEngineChatEngine#common_config}
    */
    readonly commonConfig?: DiscoveryEngineChatEngineCommonConfig;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#timeouts DiscoveryEngineChatEngine#timeouts}
    */
    readonly timeouts?: DiscoveryEngineChatEngineTimeouts;
}
export interface DiscoveryEngineChatEngineChatEngineMetadata {
}
export declare function discoveryEngineChatEngineChatEngineMetadataToTerraform(struct?: DiscoveryEngineChatEngineChatEngineMetadata): any;
export declare function discoveryEngineChatEngineChatEngineMetadataToHclTerraform(struct?: DiscoveryEngineChatEngineChatEngineMetadata): any;
export declare class DiscoveryEngineChatEngineChatEngineMetadataOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): DiscoveryEngineChatEngineChatEngineMetadata | undefined;
    set internalValue(value: DiscoveryEngineChatEngineChatEngineMetadata | undefined);
    get dialogflowAgent(): string;
}
export declare class DiscoveryEngineChatEngineChatEngineMetadataList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): DiscoveryEngineChatEngineChatEngineMetadataOutputReference;
}
export interface DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig {
    /**
    * Name of the company, organization or other entity that the agent represents. Used for knowledge connector LLM prompt and for knowledge search.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#business DiscoveryEngineChatEngine#business}
    */
    readonly business?: string;
    /**
    * The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#default_language_code DiscoveryEngineChatEngine#default_language_code}
    */
    readonly defaultLanguageCode: string;
    /**
    * Agent location for Agent creation, currently supported values: global/us/eu, it needs to be the same region as the Chat Engine.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#location DiscoveryEngineChatEngine#location}
    */
    readonly location?: string;
    /**
    * The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#time_zone DiscoveryEngineChatEngine#time_zone}
    */
    readonly timeZone: string;
}
export declare function discoveryEngineChatEngineChatEngineConfigAgentCreationConfigToTerraform(struct?: DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfigOutputReference | DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig): any;
export declare function discoveryEngineChatEngineChatEngineConfigAgentCreationConfigToHclTerraform(struct?: DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfigOutputReference | DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig): any;
export declare class DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfigOutputReference 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(): DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig | undefined;
    set internalValue(value: DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig | undefined);
    private _business?;
    get business(): string;
    set business(value: string);
    resetBusiness(): void;
    get businessInput(): string | undefined;
    private _defaultLanguageCode?;
    get defaultLanguageCode(): string;
    set defaultLanguageCode(value: string);
    get defaultLanguageCodeInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    resetLocation(): void;
    get locationInput(): string | undefined;
    private _timeZone?;
    get timeZone(): string;
    set timeZone(value: string);
    get timeZoneInput(): string | undefined;
}
export interface DiscoveryEngineChatEngineChatEngineConfig {
    /**
    * If the flag set to true, we allow the agent and engine are in
    * different locations, otherwise the agent and engine are required to be
    * in the same location. The flag is set to false by default.
    * Note that the 'allow_cross_region' are one-time consumed by and passed
    * to EngineService.CreateEngine. It means they cannot be retrieved using
    * EngineService.GetEngine or EngineService.ListEngines API after engine
    * creation.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#allow_cross_region DiscoveryEngineChatEngine#allow_cross_region}
    */
    readonly allowCrossRegion?: boolean | cdktf.IResolvable;
    /**
    * The resource name of an existing Dialogflow agent to link to this Chat Engine. Format: 'projects/<Project_ID>/locations/<Location_ID>/agents/<Agent_ID>'.
    * Exactly one of 'agent_creation_config' or 'dialogflow_agent_to_link' must be set.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#dialogflow_agent_to_link DiscoveryEngineChatEngine#dialogflow_agent_to_link}
    */
    readonly dialogflowAgentToLink?: string;
    /**
    * agent_creation_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#agent_creation_config DiscoveryEngineChatEngine#agent_creation_config}
    */
    readonly agentCreationConfig?: DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig;
}
export declare function discoveryEngineChatEngineChatEngineConfigToTerraform(struct?: DiscoveryEngineChatEngineChatEngineConfigOutputReference | DiscoveryEngineChatEngineChatEngineConfig): any;
export declare function discoveryEngineChatEngineChatEngineConfigToHclTerraform(struct?: DiscoveryEngineChatEngineChatEngineConfigOutputReference | DiscoveryEngineChatEngineChatEngineConfig): any;
export declare class DiscoveryEngineChatEngineChatEngineConfigOutputReference 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(): DiscoveryEngineChatEngineChatEngineConfig | undefined;
    set internalValue(value: DiscoveryEngineChatEngineChatEngineConfig | undefined);
    private _allowCrossRegion?;
    get allowCrossRegion(): boolean | cdktf.IResolvable;
    set allowCrossRegion(value: boolean | cdktf.IResolvable);
    resetAllowCrossRegion(): void;
    get allowCrossRegionInput(): boolean | cdktf.IResolvable | undefined;
    private _dialogflowAgentToLink?;
    get dialogflowAgentToLink(): string;
    set dialogflowAgentToLink(value: string);
    resetDialogflowAgentToLink(): void;
    get dialogflowAgentToLinkInput(): string | undefined;
    private _agentCreationConfig;
    get agentCreationConfig(): DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfigOutputReference;
    putAgentCreationConfig(value: DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig): void;
    resetAgentCreationConfig(): void;
    get agentCreationConfigInput(): DiscoveryEngineChatEngineChatEngineConfigAgentCreationConfig | undefined;
}
export interface DiscoveryEngineChatEngineCommonConfig {
    /**
    * The name of the company, business or entity that is associated with the engine. Setting this may help improve LLM related features.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#company_name DiscoveryEngineChatEngine#company_name}
    */
    readonly companyName?: string;
}
export declare function discoveryEngineChatEngineCommonConfigToTerraform(struct?: DiscoveryEngineChatEngineCommonConfigOutputReference | DiscoveryEngineChatEngineCommonConfig): any;
export declare function discoveryEngineChatEngineCommonConfigToHclTerraform(struct?: DiscoveryEngineChatEngineCommonConfigOutputReference | DiscoveryEngineChatEngineCommonConfig): any;
export declare class DiscoveryEngineChatEngineCommonConfigOutputReference 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(): DiscoveryEngineChatEngineCommonConfig | undefined;
    set internalValue(value: DiscoveryEngineChatEngineCommonConfig | undefined);
    private _companyName?;
    get companyName(): string;
    set companyName(value: string);
    resetCompanyName(): void;
    get companyNameInput(): string | undefined;
}
export interface DiscoveryEngineChatEngineTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#create DiscoveryEngineChatEngine#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#delete DiscoveryEngineChatEngine#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#update DiscoveryEngineChatEngine#update}
    */
    readonly update?: string;
}
export declare function discoveryEngineChatEngineTimeoutsToTerraform(struct?: DiscoveryEngineChatEngineTimeouts | cdktf.IResolvable): any;
export declare function discoveryEngineChatEngineTimeoutsToHclTerraform(struct?: DiscoveryEngineChatEngineTimeouts | cdktf.IResolvable): any;
export declare class DiscoveryEngineChatEngineTimeoutsOutputReference 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(): DiscoveryEngineChatEngineTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: DiscoveryEngineChatEngineTimeouts | 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.36.0/docs/resources/discovery_engine_chat_engine google_discovery_engine_chat_engine}
*/
export declare class DiscoveryEngineChatEngine extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_discovery_engine_chat_engine";
    /**
    * Generates CDKTF code for importing a DiscoveryEngineChatEngine 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 DiscoveryEngineChatEngine to import
    * @param importFromId The id of the existing DiscoveryEngineChatEngine that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/discovery_engine_chat_engine#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DiscoveryEngineChatEngine 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.36.0/docs/resources/discovery_engine_chat_engine google_discovery_engine_chat_engine} 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 DiscoveryEngineChatEngineConfig
    */
    constructor(scope: Construct, id: string, config: DiscoveryEngineChatEngineConfig);
    private _chatEngineMetadata;
    get chatEngineMetadata(): DiscoveryEngineChatEngineChatEngineMetadataList;
    private _collectionId?;
    get collectionId(): string;
    set collectionId(value: string);
    get collectionIdInput(): string | undefined;
    get createTime(): string;
    private _dataStoreIds?;
    get dataStoreIds(): string[];
    set dataStoreIds(value: string[]);
    get dataStoreIdsInput(): string[] | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _engineId?;
    get engineId(): string;
    set engineId(value: string);
    get engineIdInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _industryVertical?;
    get industryVertical(): string;
    set industryVertical(value: string);
    resetIndustryVertical(): void;
    get industryVerticalInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    get name(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get updateTime(): string;
    private _chatEngineConfig;
    get chatEngineConfig(): DiscoveryEngineChatEngineChatEngineConfigOutputReference;
    putChatEngineConfig(value: DiscoveryEngineChatEngineChatEngineConfig): void;
    get chatEngineConfigInput(): DiscoveryEngineChatEngineChatEngineConfig | undefined;
    private _commonConfig;
    get commonConfig(): DiscoveryEngineChatEngineCommonConfigOutputReference;
    putCommonConfig(value: DiscoveryEngineChatEngineCommonConfig): void;
    resetCommonConfig(): void;
    get commonConfigInput(): DiscoveryEngineChatEngineCommonConfig | undefined;
    private _timeouts;
    get timeouts(): DiscoveryEngineChatEngineTimeoutsOutputReference;
    putTimeouts(value: DiscoveryEngineChatEngineTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | DiscoveryEngineChatEngineTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
