import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Description
 *
 * ## Example Usage
 *
 * ### Ces Agent Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const cesAppForAgent = new gcp.ces.App("ces_app_for_agent", {
 *     appId: "app-id",
 *     location: "us",
 *     description: "App used as parent for CES Agent example",
 *     displayName: "my-app",
 *     languageSettings: {
 *         defaultLanguageCode: "en-US",
 *         supportedLanguageCodes: [
 *             "es-ES",
 *             "fr-FR",
 *         ],
 *         enableMultilingualSupport: true,
 *         fallbackAction: "escalate",
 *     },
 *     timeZoneSettings: {
 *         timeZone: "America/Los_Angeles",
 *     },
 * });
 * const cesToolForAgent = new gcp.ces.Tool("ces_tool_for_agent", {
 *     location: "us",
 *     app: cesAppForAgent.appId,
 *     toolId: "tool-1",
 *     executionType: "SYNCHRONOUS",
 *     pythonFunction: {
 *         name: "example_function",
 *         pythonCode: "def example_function() -> int: return 0",
 *     },
 * });
 * const cesToolsetForAgent = new gcp.ces.Toolset("ces_toolset_for_agent", {
 *     toolsetId: "toolset-id",
 *     location: "us",
 *     app: cesAppForAgent.appId,
 *     displayName: "Basic toolset display name",
 *     openApiToolset: {
 *         openApiSchema: `openapi: 3.0.0
 * info:
 *   title: My Sample API
 *   version: 1.0.0
 *   description: A simple API example
 * servers:
 *   - url: https://api.example.com/v1
 * paths: {}
 * `,
 *         ignoreUnknownFields: false,
 *         tlsConfig: {
 *             caCerts: [{
 *                 displayName: "example",
 *                 cert: "ZXhhbXBsZQ==",
 *             }],
 *         },
 *         serviceDirectoryConfig: {
 *             service: "projects/example/locations/us/namespaces/namespace/services/service",
 *         },
 *         apiAuthentication: {
 *             serviceAgentIdTokenAuthConfig: {},
 *         },
 *     },
 * });
 * const cesChildAgent = new gcp.ces.Agent("ces_child_agent", {
 *     agentId: "child-agent-id",
 *     location: "us",
 *     app: cesAppForAgent.appId,
 *     displayName: "child agent",
 *     instruction: "You are a helpful assistant for this example.",
 *     modelSettings: {
 *         model: "gemini-3.0-flash-001",
 *         temperature: 0.5,
 *     },
 *     llmAgent: {},
 * });
 * const cesGuardrailForAgent = new gcp.ces.Guardrail("ces_guardrail_for_agent", {
 *     guardrailId: "guardrail-id",
 *     location: cesAppForAgent.location,
 *     app: cesAppForAgent.appId,
 *     displayName: "Example guardrail",
 *     description: "Guardrail description",
 *     action: {
 *         respondImmediately: {
 *             responses: [{
 *                 text: "Text",
 *                 disabled: false,
 *             }],
 *         },
 *     },
 *     enabled: true,
 *     modelSafety: {
 *         safetySettings: [{
 *             category: "HARM_CATEGORY_HATE_SPEECH",
 *             threshold: "BLOCK_NONE",
 *         }],
 *     },
 * });
 * const cesAgentBasic = new gcp.ces.Agent("ces_agent_basic", {
 *     agentId: "agent-id",
 *     location: "us",
 *     app: cesAppForAgent.appId,
 *     displayName: "my-agent",
 *     description: "test agent",
 *     instruction: "You are a helpful assistant for this example.",
 *     modelSettings: {
 *         model: "gemini-3.0-flash-001",
 *         temperature: 0.5,
 *     },
 *     beforeAgentCallbacks: [{
 *         description: "Example callback",
 *         disabled: true,
 *         pythonCode: "def before_agent_callback(callback_context): return None",
 *     }],
 *     afterAgentCallbacks: [{
 *         description: "Example callback",
 *         disabled: true,
 *         pythonCode: "def after_agent_callback(callback_context): return None",
 *     }],
 *     beforeModelCallbacks: [{
 *         description: "Example callback",
 *         disabled: true,
 *         pythonCode: "def before_model_callback(callback_context, llm_request): return None",
 *     }],
 *     afterModelCallbacks: [{
 *         description: "Example callback",
 *         disabled: true,
 *         pythonCode: "def after_model_callback(callback_context, llm_response): return None",
 *     }],
 *     beforeToolCallbacks: [{
 *         description: "Example callback",
 *         disabled: true,
 *         pythonCode: "def before_tool_callback(tool, input, callback_context): return None",
 *     }],
 *     afterToolCallbacks: [{
 *         description: "Example callback",
 *         disabled: true,
 *         pythonCode: "def after_tool_callback(tool, input, callback_context, tool_response): return None",
 *     }],
 *     tools: [cesToolForAgent.id],
 *     guardrails: [cesGuardrailForAgent.id],
 *     toolsets: [{
 *         toolset: cesToolsetForAgent.id,
 *         toolIds: ["testtoolid"],
 *     }],
 *     childAgents: [pulumi.all([cesAppForAgent.project, cesAppForAgent.appId, cesChildAgent.agentId]).apply(([project, appId, agentId]) => `projects/${project}/locations/us/apps/${appId}/agents/${agentId}`)],
 *     llmAgent: {},
 * });
 * ```
 * ### Ces Agent Remote Dialogflow Agent
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const cesAppForAgent = new gcp.ces.App("ces_app_for_agent", {
 *     appId: "app-id",
 *     location: "us",
 *     description: "App used as parent for CES Agent example",
 *     displayName: "my-app",
 *     languageSettings: {
 *         defaultLanguageCode: "en-US",
 *         supportedLanguageCodes: [
 *             "es-ES",
 *             "fr-FR",
 *         ],
 *         enableMultilingualSupport: true,
 *         fallbackAction: "escalate",
 *     },
 *     timeZoneSettings: {
 *         timeZone: "America/Los_Angeles",
 *     },
 * });
 * const cesAgentRemoteDialogflowAgent = new gcp.ces.Agent("ces_agent_remote_dialogflow_agent", {
 *     agentId: "agent-id",
 *     location: "us",
 *     app: cesAppForAgent.appId,
 *     displayName: "my-agent",
 *     modelSettings: {
 *         model: "gemini-3.0-flash-001",
 *         temperature: 0.5,
 *     },
 *     remoteDialogflowAgent: {
 *         agent: "projects/example/locations/us/agents/fake-agent",
 *         flowId: "fake-flow",
 *         environmentId: "fake-env",
 *         inputVariableMapping: {
 *             example: "1",
 *         },
 *         outputVariableMapping: {
 *             example: "1",
 *         },
 *     },
 * });
 * ```
 * ### Ces Agent Remote Dialogflow Agent Interruption
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const cesAppForAgent = new gcp.ces.App("ces_app_for_agent", {
 *     appId: "app-id",
 *     location: "us",
 *     description: "App used as parent for CES Agent example",
 *     displayName: "my-app",
 *     languageSettings: {
 *         defaultLanguageCode: "en-US",
 *         supportedLanguageCodes: [
 *             "es-ES",
 *             "fr-FR",
 *         ],
 *         enableMultilingualSupport: true,
 *         fallbackAction: "escalate",
 *     },
 *     timeZoneSettings: {
 *         timeZone: "America/Los_Angeles",
 *     },
 * });
 * const cesAgentRemoteDialogflowAgentInterruption = new gcp.ces.Agent("ces_agent_remote_dialogflow_agent_interruption", {
 *     agentId: "agent-id",
 *     location: "us",
 *     app: cesAppForAgent.appId,
 *     displayName: "my-agent",
 *     modelSettings: {
 *         model: "gemini-3.0-flash-001",
 *         temperature: 0.5,
 *     },
 *     remoteDialogflowAgent: {
 *         agent: "projects/example/locations/us/agents/fake-agent",
 *         flowId: "fake-flow",
 *         environmentId: "fake-env",
 *         respectResponseInterruptionSettings: true,
 *         inputVariableMapping: {
 *             example: "1",
 *         },
 *         outputVariableMapping: {
 *             example: "1",
 *         },
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Agent can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/locations/{{location}}/apps/{{app}}/agents/{{name}}`
 * * `{{project}}/{{location}}/{{app}}/{{name}}`
 * * `{{location}}/{{app}}/{{name}}`
 *
 * When using the `pulumi import` command, Agent can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:ces/agent:Agent default projects/{{project}}/locations/{{location}}/apps/{{app}}/agents/{{name}}
 * $ pulumi import gcp:ces/agent:Agent default {{project}}/{{location}}/{{app}}/{{name}}
 * $ pulumi import gcp:ces/agent:Agent default {{location}}/{{app}}/{{name}}
 * ```
 */
export declare class Agent extends pulumi.CustomResource {
    /**
     * Get an existing Agent resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: AgentState, opts?: pulumi.CustomResourceOptions): Agent;
    /**
     * Returns true if the given object is an instance of Agent.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Agent;
    /**
     * The callbacks to execute after the agent is called.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    readonly afterAgentCallbacks: pulumi.Output<outputs.ces.AgentAfterAgentCallback[] | undefined>;
    /**
     * The callbacks to execute after the model is called. If there are multiple
     * calls to the model, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    readonly afterModelCallbacks: pulumi.Output<outputs.ces.AgentAfterModelCallback[] | undefined>;
    /**
     * The callbacks to execute after the tool is invoked. If there are multiple
     * tool invocations, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    readonly afterToolCallbacks: pulumi.Output<outputs.ces.AgentAfterToolCallback[] | undefined>;
    /**
     * The ID to use for the agent, which will become the final component of
     * the agent's resource name. If not provided, a unique ID will be
     * automatically assigned for the agent.
     */
    readonly agentId: pulumi.Output<string | undefined>;
    /**
     * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
     */
    readonly app: pulumi.Output<string>;
    /**
     * The callbacks to execute before the agent is called.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    readonly beforeAgentCallbacks: pulumi.Output<outputs.ces.AgentBeforeAgentCallback[] | undefined>;
    /**
     * The callbacks to execute before the model is called. If there are multiple
     * calls to the model, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    readonly beforeModelCallbacks: pulumi.Output<outputs.ces.AgentBeforeModelCallback[] | undefined>;
    /**
     * The callbacks to execute before the tool is invoked. If there are multiple
     * tool invocations, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    readonly beforeToolCallbacks: pulumi.Output<outputs.ces.AgentBeforeToolCallback[] | undefined>;
    /**
     * List of child agents in the agent tree.
     * Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
     */
    readonly childAgents: pulumi.Output<string[] | undefined>;
    /**
     * Timestamp when the agent was created.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    readonly deletionPolicy: pulumi.Output<string>;
    /**
     * Human-readable description of the agent.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * Display name of the agent.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * Etag used to ensure the object hasn't changed during a read-modify-write
     * operation. If the etag is empty, the update will overwrite any concurrent
     * changes.
     */
    readonly etag: pulumi.Output<string>;
    /**
     * If the agent is generated by the LLM assistant, this field contains a
     * descriptive summary of the generation.
     */
    readonly generatedSummary: pulumi.Output<string>;
    /**
     * List of guardrails for the agent.
     * Format:
     * `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
     */
    readonly guardrails: pulumi.Output<string[] | undefined>;
    /**
     * Instructions for the LLM model to guide the agent's behavior.
     */
    readonly instruction: pulumi.Output<string | undefined>;
    /**
     * Default agent type. The agent uses instructions and callbacks specified in
     * the agent to perform the task using a large language model.
     */
    readonly llmAgent: pulumi.Output<outputs.ces.AgentLlmAgent | undefined>;
    /**
     * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
     */
    readonly location: pulumi.Output<string>;
    /**
     * Model settings contains various configurations for the LLM model.
     * Structure is documented below.
     */
    readonly modelSettings: pulumi.Output<outputs.ces.AgentModelSettings | undefined>;
    /**
     * Identifier. The unique identifier of the agent.
     * Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
     */
    readonly name: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The agent which will transfer execution to an existing remote
     * [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents)
     * agent flow. The corresponding Dialogflow agent will process subsequent user
     * queries until the session ends or flow ends and the control is transferred
     * back to the parent CES agent.
     * Structure is documented below.
     */
    readonly remoteDialogflowAgent: pulumi.Output<outputs.ces.AgentRemoteDialogflowAgent | undefined>;
    /**
     * List of available tools for the agent.
     * Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
     */
    readonly tools: pulumi.Output<string[] | undefined>;
    /**
     * List of toolsets for the agent.
     * Structure is documented below.
     */
    readonly toolsets: pulumi.Output<outputs.ces.AgentToolset[] | undefined>;
    /**
     * Timestamp when the agent was last updated.
     */
    readonly updateTime: pulumi.Output<string>;
    /**
     * Create a Agent resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: AgentArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Agent resources.
 */
export interface AgentState {
    /**
     * The callbacks to execute after the agent is called.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    afterAgentCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentAfterAgentCallback>[] | undefined>;
    /**
     * The callbacks to execute after the model is called. If there are multiple
     * calls to the model, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    afterModelCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentAfterModelCallback>[] | undefined>;
    /**
     * The callbacks to execute after the tool is invoked. If there are multiple
     * tool invocations, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    afterToolCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentAfterToolCallback>[] | undefined>;
    /**
     * The ID to use for the agent, which will become the final component of
     * the agent's resource name. If not provided, a unique ID will be
     * automatically assigned for the agent.
     */
    agentId?: pulumi.Input<string | undefined>;
    /**
     * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
     */
    app?: pulumi.Input<string | undefined>;
    /**
     * The callbacks to execute before the agent is called.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    beforeAgentCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentBeforeAgentCallback>[] | undefined>;
    /**
     * The callbacks to execute before the model is called. If there are multiple
     * calls to the model, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    beforeModelCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentBeforeModelCallback>[] | undefined>;
    /**
     * The callbacks to execute before the tool is invoked. If there are multiple
     * tool invocations, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    beforeToolCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentBeforeToolCallback>[] | undefined>;
    /**
     * List of child agents in the agent tree.
     * Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
     */
    childAgents?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Timestamp when the agent was created.
     */
    createTime?: pulumi.Input<string | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * Human-readable description of the agent.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * Display name of the agent.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * Etag used to ensure the object hasn't changed during a read-modify-write
     * operation. If the etag is empty, the update will overwrite any concurrent
     * changes.
     */
    etag?: pulumi.Input<string | undefined>;
    /**
     * If the agent is generated by the LLM assistant, this field contains a
     * descriptive summary of the generation.
     */
    generatedSummary?: pulumi.Input<string | undefined>;
    /**
     * List of guardrails for the agent.
     * Format:
     * `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
     */
    guardrails?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Instructions for the LLM model to guide the agent's behavior.
     */
    instruction?: pulumi.Input<string | undefined>;
    /**
     * Default agent type. The agent uses instructions and callbacks specified in
     * the agent to perform the task using a large language model.
     */
    llmAgent?: pulumi.Input<inputs.ces.AgentLlmAgent | undefined>;
    /**
     * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * Model settings contains various configurations for the LLM model.
     * Structure is documented below.
     */
    modelSettings?: pulumi.Input<inputs.ces.AgentModelSettings | undefined>;
    /**
     * Identifier. The unique identifier of the agent.
     * Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * The agent which will transfer execution to an existing remote
     * [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents)
     * agent flow. The corresponding Dialogflow agent will process subsequent user
     * queries until the session ends or flow ends and the control is transferred
     * back to the parent CES agent.
     * Structure is documented below.
     */
    remoteDialogflowAgent?: pulumi.Input<inputs.ces.AgentRemoteDialogflowAgent | undefined>;
    /**
     * List of available tools for the agent.
     * Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
     */
    tools?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * List of toolsets for the agent.
     * Structure is documented below.
     */
    toolsets?: pulumi.Input<pulumi.Input<inputs.ces.AgentToolset>[] | undefined>;
    /**
     * Timestamp when the agent was last updated.
     */
    updateTime?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Agent resource.
 */
export interface AgentArgs {
    /**
     * The callbacks to execute after the agent is called.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    afterAgentCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentAfterAgentCallback>[] | undefined>;
    /**
     * The callbacks to execute after the model is called. If there are multiple
     * calls to the model, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    afterModelCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentAfterModelCallback>[] | undefined>;
    /**
     * The callbacks to execute after the tool is invoked. If there are multiple
     * tool invocations, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    afterToolCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentAfterToolCallback>[] | undefined>;
    /**
     * The ID to use for the agent, which will become the final component of
     * the agent's resource name. If not provided, a unique ID will be
     * automatically assigned for the agent.
     */
    agentId?: pulumi.Input<string | undefined>;
    /**
     * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
     */
    app: pulumi.Input<string>;
    /**
     * The callbacks to execute before the agent is called.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    beforeAgentCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentBeforeAgentCallback>[] | undefined>;
    /**
     * The callbacks to execute before the model is called. If there are multiple
     * calls to the model, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    beforeModelCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentBeforeModelCallback>[] | undefined>;
    /**
     * The callbacks to execute before the tool is invoked. If there are multiple
     * tool invocations, the callback will be executed multiple times.
     * The provided callbacks are executed sequentially in the exact order they
     * are given in the list. If a callback returns an overridden response,
     * execution stops and any remaining callbacks are skipped.
     * Structure is documented below.
     */
    beforeToolCallbacks?: pulumi.Input<pulumi.Input<inputs.ces.AgentBeforeToolCallback>[] | undefined>;
    /**
     * List of child agents in the agent tree.
     * Format: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`
     */
    childAgents?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * Human-readable description of the agent.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * Display name of the agent.
     */
    displayName: pulumi.Input<string>;
    /**
     * List of guardrails for the agent.
     * Format:
     * `projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`
     */
    guardrails?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Instructions for the LLM model to guide the agent's behavior.
     */
    instruction?: pulumi.Input<string | undefined>;
    /**
     * Default agent type. The agent uses instructions and callbacks specified in
     * the agent to perform the task using a large language model.
     */
    llmAgent?: pulumi.Input<inputs.ces.AgentLlmAgent | undefined>;
    /**
     * Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122.
     */
    location: pulumi.Input<string>;
    /**
     * Model settings contains various configurations for the LLM model.
     * Structure is documented below.
     */
    modelSettings?: pulumi.Input<inputs.ces.AgentModelSettings | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * The agent which will transfer execution to an existing remote
     * [Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents)
     * agent flow. The corresponding Dialogflow agent will process subsequent user
     * queries until the session ends or flow ends and the control is transferred
     * back to the parent CES agent.
     * Structure is documented below.
     */
    remoteDialogflowAgent?: pulumi.Input<inputs.ces.AgentRemoteDialogflowAgent | undefined>;
    /**
     * List of available tools for the agent.
     * Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
     */
    tools?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * List of toolsets for the agent.
     * Structure is documented below.
     */
    toolsets?: pulumi.Input<pulumi.Input<inputs.ces.AgentToolset>[] | undefined>;
}
//# sourceMappingURL=agent.d.ts.map