// This file was auto-generated by Fern from our API Definition.

import type * as Vapi from "../index.js";

export interface TransferAssistant {
    /** Optional name for the transfer assistant */
    name?: string | undefined;
    /** Model configuration for the transfer assistant */
    model: Vapi.TransferAssistantModel;
    /** These are the options for the transfer assistant's voice. */
    voice?: Vapi.TransferAssistantVoice | undefined;
    /** These are the options for the transfer assistant's transcriber. */
    transcriber?: Vapi.TransferAssistantTranscriber | undefined;
    /**
     * This is the first message that the transfer assistant will say.
     * This can also be a URL to a custom audio file.
     *
     * If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
     */
    firstMessage?: string | undefined;
    /**
     * This is the background sound in the transfer assistant call. Default for phone calls is 'office' and default for web calls is 'off'.
     * You can also provide a custom sound by providing a URL to an audio file.
     */
    backgroundSound?: Vapi.TransferAssistantBackgroundSound | undefined;
    /**
     * This is the plan for when the transfer assistant should start talking.
     *
     * You should configure this if the transfer assistant needs different endpointing behavior than the base assistant.
     *
     * If this is not set, the transfer assistant will inherit the start speaking plan from the base assistant.
     */
    startSpeakingPlan?: Vapi.StartSpeakingPlan | undefined;
    /**
     * This is the mode for the first message. Default is 'assistant-speaks-first'.
     *
     * Use:
     * - 'assistant-speaks-first' to have the assistant speak first.
     * - 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
     * - 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state.
     *
     * @default 'assistant-speaks-first'
     */
    firstMessageMode?: Vapi.TransferAssistantFirstMessageMode | undefined;
    /**
     * This is the maximum duration in seconds for the transfer assistant conversation.
     * After this time, the transfer will be cancelled automatically.
     * @default 120
     */
    maxDurationSeconds?: number | undefined;
    /**
     * This enables filtering of noise and background speech while the user is talking.
     *
     * Features:
     * - Smart denoising using Krisp
     * - Fourier denoising
     *
     * Smart denoising can be combined with or used independently of Fourier denoising.
     *
     * Order of precedence:
     * - Smart denoising
     * - Fourier denoising
     */
    backgroundSpeechDenoisingPlan?: Vapi.BackgroundSpeechDenoisingPlan | undefined;
    /**
     * This is the number of seconds of silence to wait before ending the call. Defaults to 30.
     *
     * @default 30
     */
    silenceTimeoutSeconds?: number | undefined;
}
