import type * as Phonic from "../../../../index.js";
/**
 * @example
 *     {
 *         project: "main",
 *         description: "Updated description for booking appointments with enhanced features",
 *         endpoint_headers: {
 *             "Authorization": "Bearer updated_token456"
 *         },
 *         endpoint_timeout_ms: 7000
 *     }
 */
export interface UpdateToolRequest {
    /** The name of the project containing the tool. Only used when `nameOrId` is a name. */
    project?: string;
    /** The name of the tool. Must be snake_case and unique within the organization. */
    name?: string;
    /** A description of what the tool does. */
    description?: string;
    /** Mode of operation. */
    execution_mode?: UpdateToolRequest.ExecutionMode;
    /** The static context returned to the agent. Only applicable to custom_context tools. */
    context?: string;
    /**
     * Array of parameter definitions.
     * When updating `endpoint_method`, all parameters must include explicit `location` values.
     * For `custom_webhook` tools: `location` is required for POST, defaults to `"query_string"` for GET.
     * For `custom_websocket`, `built_in_transfer_to_phone_number`, and `built_in_transfer_to_agent` tools: `location` must not be specified.
     */
    parameters?: Phonic.ToolParameter[];
    /** HTTP method for webhook tools. When changing this value, all parameters must include explicit `location` values. */
    endpoint_method?: UpdateToolRequest.EndpointMethod;
    endpoint_url?: string;
    /** Headers for webhook tools. Set to null to clear existing headers. */
    endpoint_headers?: Record<string, string | null> | null;
    endpoint_timeout_ms?: number;
    tool_call_output_timeout_ms?: number;
    /** The E.164 formatted phone number to transfer calls to. Set to null if the agent should determine the phone number. */
    phone_number?: string | null;
    /** DTMF digits to send after the transfer connects (e.g., "1234"). Can be set to null to remove DTMF. Ignored when dynamic_dtmf is true. */
    dtmf?: string | null;
    /** When true, the agent determines the DTMF digits at call time (and may choose to send none); the static dtmf is ignored. Only sent when use_agent_phone_number is true (not on a SIP REFER transfer). */
    dynamic_dtmf?: boolean;
    /** When true, Phonic will transfer the call using the agent's phone number. When false, Phonic will transfer the call using the phone number of the party to whom the agent is connected. This is only available for built_in_transfer_to_phone_number tools. */
    use_agent_phone_number?: boolean;
    /** When true, Phonic will listen in and tell the user if the transfer hits voicemail. This is only available for built_in_transfer_to_phone_number tools when use_agent_phone_number is true. */
    detect_voicemail?: boolean;
    /** Array of agent names that the LLM can choose from when transferring. All agents must exist in the same project as the tool. */
    agents_to_transfer_to?: string[];
    /** When true, forces the agent to speak before executing the tool. */
    require_speech_before_tool_call?: boolean;
    /** If true, the agent will wait to finish speaking before executing the tool. This is only available for custom_webhook and custom_websocket tools. */
    wait_for_speech_before_tool_call?: boolean;
    /** When true, forbids the agent from speaking after executing the tool. Available for custom_context, custom_webhook and custom_websocket tools. */
    forbid_speech_after_tool_call?: boolean;
    /** When true, allows the agent to chain and execute other tools after executing the tool. Available for custom_context, custom_webhook and custom_websocket tools. */
    allow_tool_chaining?: boolean;
    /** The agent doesn't typically wait for the response of async custom_websocket tools. When true, makes the agent wait for a response, not call other tools and inform the user of the result. Only available for async custom_websocket tools. */
    wait_for_response?: boolean;
}
export declare namespace UpdateToolRequest {
    /** Mode of operation. */
    const ExecutionMode: {
        readonly Sync: "sync";
        readonly Async: "async";
    };
    type ExecutionMode = (typeof ExecutionMode)[keyof typeof ExecutionMode];
    /** HTTP method for webhook tools. When changing this value, all parameters must include explicit `location` values. */
    const EndpointMethod: {
        readonly Get: "GET";
        readonly Post: "POST";
    };
    type EndpointMethod = (typeof EndpointMethod)[keyof typeof EndpointMethod];
}
