/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DialogflowCxPlaybookConfig extends cdktf.TerraformMetaArguments {
    /**
    * The human-readable name of the playbook, unique within an agent.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#display_name DialogflowCxPlaybook#display_name}
    */
    readonly displayName: string;
    /**
    * High level description of the goal the playbook intend to accomplish. A goal should be concise since it's visible to other playbooks that may reference this playbook.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#goal DialogflowCxPlaybook#goal}
    */
    readonly goal: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#id DialogflowCxPlaybook#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 Playbook 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_playbook#parent DialogflowCxPlaybook#parent}
    */
    readonly parent?: string;
    /**
    * Type of the playbook. Possible values: ["PLAYBOOK_TYPE_UNSPECIFIED", "TASK", "ROUTINE"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#playbook_type DialogflowCxPlaybook#playbook_type}
    */
    readonly playbookType?: string;
    /**
    * The resource name of tools referenced by the current playbook in the instructions. If not provided explicitly, they are will be implied using the tool being referenced in goal and steps.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#referenced_tools DialogflowCxPlaybook#referenced_tools}
    */
    readonly referencedTools?: string[];
    /**
    * instruction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#instruction DialogflowCxPlaybook#instruction}
    */
    readonly instruction?: DialogflowCxPlaybookInstruction;
    /**
    * llm_model_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#llm_model_settings DialogflowCxPlaybook#llm_model_settings}
    */
    readonly llmModelSettings?: DialogflowCxPlaybookLlmModelSettings;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#timeouts DialogflowCxPlaybook#timeouts}
    */
    readonly timeouts?: DialogflowCxPlaybookTimeouts;
}
export interface DialogflowCxPlaybookInstructionSteps {
    /**
    * Sub-processing needed to execute the current step.
    *
    * This field uses JSON data as a string. The value provided must be a valid JSON representation documented in [Step](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.playbooks#step).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#steps DialogflowCxPlaybook#steps}
    */
    readonly steps?: string;
    /**
    * Step instruction in text format.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#text DialogflowCxPlaybook#text}
    */
    readonly text?: string;
}
export declare function dialogflowCxPlaybookInstructionStepsToTerraform(struct?: DialogflowCxPlaybookInstructionSteps | cdktf.IResolvable): any;
export declare function dialogflowCxPlaybookInstructionStepsToHclTerraform(struct?: DialogflowCxPlaybookInstructionSteps | cdktf.IResolvable): any;
export declare class DialogflowCxPlaybookInstructionStepsOutputReference 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(): DialogflowCxPlaybookInstructionSteps | cdktf.IResolvable | undefined;
    set internalValue(value: DialogflowCxPlaybookInstructionSteps | cdktf.IResolvable | undefined);
    private _steps?;
    get steps(): string;
    set steps(value: string);
    resetSteps(): void;
    get stepsInput(): string | undefined;
    private _text?;
    get text(): string;
    set text(value: string);
    resetText(): void;
    get textInput(): string | undefined;
}
export declare class DialogflowCxPlaybookInstructionStepsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DialogflowCxPlaybookInstructionSteps[] | 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): DialogflowCxPlaybookInstructionStepsOutputReference;
}
export interface DialogflowCxPlaybookInstruction {
    /**
    * General guidelines for the playbook. These are unstructured instructions that are not directly part of the goal, e.g. "Always be polite". It's valid for this text to be long and used instead of steps altogether.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#guidelines DialogflowCxPlaybook#guidelines}
    */
    readonly guidelines?: string;
    /**
    * steps block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#steps DialogflowCxPlaybook#steps}
    */
    readonly steps?: DialogflowCxPlaybookInstructionSteps[] | cdktf.IResolvable;
}
export declare function dialogflowCxPlaybookInstructionToTerraform(struct?: DialogflowCxPlaybookInstructionOutputReference | DialogflowCxPlaybookInstruction): any;
export declare function dialogflowCxPlaybookInstructionToHclTerraform(struct?: DialogflowCxPlaybookInstructionOutputReference | DialogflowCxPlaybookInstruction): any;
export declare class DialogflowCxPlaybookInstructionOutputReference 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(): DialogflowCxPlaybookInstruction | undefined;
    set internalValue(value: DialogflowCxPlaybookInstruction | undefined);
    private _guidelines?;
    get guidelines(): string;
    set guidelines(value: string);
    resetGuidelines(): void;
    get guidelinesInput(): string | undefined;
    private _steps;
    get steps(): DialogflowCxPlaybookInstructionStepsList;
    putSteps(value: DialogflowCxPlaybookInstructionSteps[] | cdktf.IResolvable): void;
    resetSteps(): void;
    get stepsInput(): cdktf.IResolvable | DialogflowCxPlaybookInstructionSteps[] | undefined;
}
export interface DialogflowCxPlaybookLlmModelSettings {
    /**
    * The selected LLM model.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#model DialogflowCxPlaybook#model}
    */
    readonly model?: string;
    /**
    * The custom prompt to use.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#prompt_text DialogflowCxPlaybook#prompt_text}
    */
    readonly promptText?: string;
}
export declare function dialogflowCxPlaybookLlmModelSettingsToTerraform(struct?: DialogflowCxPlaybookLlmModelSettingsOutputReference | DialogflowCxPlaybookLlmModelSettings): any;
export declare function dialogflowCxPlaybookLlmModelSettingsToHclTerraform(struct?: DialogflowCxPlaybookLlmModelSettingsOutputReference | DialogflowCxPlaybookLlmModelSettings): any;
export declare class DialogflowCxPlaybookLlmModelSettingsOutputReference 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(): DialogflowCxPlaybookLlmModelSettings | undefined;
    set internalValue(value: DialogflowCxPlaybookLlmModelSettings | undefined);
    private _model?;
    get model(): string;
    set model(value: string);
    resetModel(): void;
    get modelInput(): string | undefined;
    private _promptText?;
    get promptText(): string;
    set promptText(value: string);
    resetPromptText(): void;
    get promptTextInput(): string | undefined;
}
export interface DialogflowCxPlaybookTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#create DialogflowCxPlaybook#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#delete DialogflowCxPlaybook#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#update DialogflowCxPlaybook#update}
    */
    readonly update?: string;
}
export declare function dialogflowCxPlaybookTimeoutsToTerraform(struct?: DialogflowCxPlaybookTimeouts | cdktf.IResolvable): any;
export declare function dialogflowCxPlaybookTimeoutsToHclTerraform(struct?: DialogflowCxPlaybookTimeouts | cdktf.IResolvable): any;
export declare class DialogflowCxPlaybookTimeoutsOutputReference 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(): DialogflowCxPlaybookTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: DialogflowCxPlaybookTimeouts | 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_playbook google_dialogflow_cx_playbook}
*/
export declare class DialogflowCxPlaybook extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_dialogflow_cx_playbook";
    /**
    * Generates CDKTF code for importing a DialogflowCxPlaybook 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 DialogflowCxPlaybook to import
    * @param importFromId The id of the existing DialogflowCxPlaybook that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.50.0/docs/resources/dialogflow_cx_playbook#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DialogflowCxPlaybook 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_playbook google_dialogflow_cx_playbook} 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 DialogflowCxPlaybookConfig
    */
    constructor(scope: Construct, id: string, config: DialogflowCxPlaybookConfig);
    get createTime(): string;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _goal?;
    get goal(): string;
    set goal(value: string);
    get goalInput(): 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;
    private _playbookType?;
    get playbookType(): string;
    set playbookType(value: string);
    resetPlaybookType(): void;
    get playbookTypeInput(): string | undefined;
    get referencedFlows(): string[];
    get referencedPlaybooks(): string[];
    private _referencedTools?;
    get referencedTools(): string[];
    set referencedTools(value: string[]);
    resetReferencedTools(): void;
    get referencedToolsInput(): string[] | undefined;
    get tokenCount(): string;
    get updateTime(): string;
    private _instruction;
    get instruction(): DialogflowCxPlaybookInstructionOutputReference;
    putInstruction(value: DialogflowCxPlaybookInstruction): void;
    resetInstruction(): void;
    get instructionInput(): DialogflowCxPlaybookInstruction | undefined;
    private _llmModelSettings;
    get llmModelSettings(): DialogflowCxPlaybookLlmModelSettingsOutputReference;
    putLlmModelSettings(value: DialogflowCxPlaybookLlmModelSettings): void;
    resetLlmModelSettings(): void;
    get llmModelSettingsInput(): DialogflowCxPlaybookLlmModelSettings | undefined;
    private _timeouts;
    get timeouts(): DialogflowCxPlaybookTimeoutsOutputReference;
    putTimeouts(value: DialogflowCxPlaybookTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | DialogflowCxPlaybookTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
