export interface WhatsappMediaByLink { link: string; provider?: { name: string; }; filename?: string; } export interface WhatsappMediaById { id: string; provider?: { name: string; }; filename?: string; } export interface WhatsappTemplateComponent { type: 'header' | 'body' | 'button'; subType?: 'quick_reply' | 'url'; parameters?: Array; index?: 0 | 1 | 2; } export type WhatsappTemplateParameter = TextParameter | ImageParameter | DocumentParameter | VideoParameter | CurrencyParameter | DateTimeParameter | PayloadParameter; export interface WhatsappTemplate { name: string; language_code: string; components?: WhatsappTemplateComponent[]; } export interface SendWhatsappTemplateRequest { target_phone_number: string; whatsapp_template: WhatsappTemplate; external_extra_data?: Record; wait_for_ack_timeout_in_seconds?: number; use_case?: 'ivr' | 'marketing' | 'notification' | 'other'; origin?: string; } export interface SendWhatsappTemplateResponse { id: string; ack: 'sent_attempt' | 'sent' | 'delivered' | 'read' | 'error'; chat_id: string; created_at: string; } export interface TextParameter { type: 'text'; text: string; } export interface ImageParameter { type: 'image'; image: WhatsappMediaByLink | WhatsappMediaById; } export interface DocumentParameter { type: 'document'; document: WhatsappMediaByLink | WhatsappMediaById; } export interface VideoParameter { type: 'video'; video: WhatsappMediaByLink | WhatsappMediaById; } export interface CurrencyParameter { type: 'currency'; currency: { code: string; amount_1000: number; }; } export interface DateTimeParameter { type: 'date_time'; date_time: { day_of_week?: string; year: number; month: number; day_of_month: number; hour: number; minute: number; }; } export interface PayloadParameter { type: 'payload'; payload: string; }