import { type ToolCalledEvent, type ToolCompletedEvent, Toolset } from '../../llm/index.js';
import type { UnknownUserData } from '../../voice/run_context.js';
export declare const END_CALL_DESCRIPTION = "\nEnds the current call and disconnects immediately.\n\nCall when:\n- The user clearly indicates they are done (e.g., \"that's all, bye\").\n\nDo not call when:\n- The user asks to pause, hold, or transfer.\n- Intent is unclear.\n\nThis is the final action the agent can take.\nOnce called, no further interaction is possible with the user.\nDon't generate any other text or response when the tool is called.\n";
export type EndCallToolCalledEvent<UserData = UnknownUserData> = ToolCalledEvent<UserData>;
export type EndCallToolCompletedEvent<UserData = UnknownUserData> = ToolCompletedEvent<UserData>;
export type EndCallToolOptions<UserData = UnknownUserData> = {
    /** Additional description to add to the end call tool. */
    extraDescription?: string;
    /**
     * Whether to delete the room when the user ends the call.
     * Deleting the room disconnects all remote users, including SIP callers.
     */
    deleteRoom?: boolean;
    /** Tool output to the LLM for generating the tool response. */
    endInstructions?: string | null;
    /** Hide the tool during onEnter so the model can't end the call while greeting. */
    ignoreOnEnter?: boolean;
    /** Callback to call when the tool is called. */
    onToolCalled?: (event: EndCallToolCalledEvent<UserData>) => Promise<void> | void;
    /** Callback to call when the tool is completed. */
    onToolCompleted?: (event: EndCallToolCompletedEvent<UserData>) => Promise<void> | void;
};
/**
 * Allows the agent to end the call and disconnect from the room.
 */
export declare function createEndCallTool<UserData = UnknownUserData>({ extraDescription, deleteRoom, endInstructions, ignoreOnEnter, onToolCalled, onToolCompleted, }?: EndCallToolOptions<UserData>): Toolset;
//# sourceMappingURL=end_call.d.ts.map