import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';

/**
 * Tool approval request emitted by a provider for a provider-executed tool call.
 *
 * This is used for flows where the provider executes the tool (e.g. MCP tools)
 * but requires an explicit user approval before continuing.
 */
export type LanguageModelV3ToolApprovalRequest = {
  type: 'tool-approval-request';

  /**
   * ID of the approval request. This ID is referenced by the subsequent
   * tool-approval-response (tool message) to approve or deny execution.
   */
  approvalId: string;

  /**
   * The tool call ID that this approval request is for.
   */
  toolCallId: string;

  /**
   * Additional provider-specific metadata for the approval request.
   */
  providerMetadata?: SharedV3ProviderMetadata;
};
