export interface FreeFormObjectMap { text: { text: string; }; image: { caption?: string; mime_type: string; sha256: string; id: string; }; document: { caption?: string; filename?: string; mime_type: string; sha256: string; id: string; }; audio: { mime_type: string; sha256: string; id: string; voice?: boolean; }; video: { caption?: string; mime_type: string; sha256: string; id: string; }; sticker: { mime_type: string; sha256: string; id: string; }; location: { latitude: number; longitude: number; name?: string; address?: string; }; contacts: Array<{ vcard?: string; origin?: 'contact_request' | 'other'; addresses?: Array<{ city?: string; country?: string; country_code?: string; state?: string; street?: string; type?: 'HOME' | 'WORK'; zip?: string; }>; birthday?: string; emails?: Array<{ email?: string; type?: 'WORK' | 'HOME'; }>; name?: { formatted_name?: string; first_name?: string; last_name?: string; middle_name?: string; suffix?: string; prefix?: string; }; org?: { company?: string; department?: string; title?: string; }; phones?: Array<{ phone?: string; wa_id?: string; type?: 'HOME' | 'WORK'; }>; urls?: Array<{ url?: string; type?: 'HOME' | 'WORK'; }>; }>; button_reply: { id: string; title: string; }; list_reply: { id: string; title: string; description?: string; }; button: { text: string; payload?: string; }; user_changed_number: { body: string; new_wa_id: string; type: 'user_changed_number'; }; nfm_reply: { response_json: string; body: string; name: string; response?: Record; }; reaction: { message_id: string; emoji: string; }; order: { catalog_id: string; product_items: Array<{ product_retailer_id: string; quantity: string; item_price: string; currency: string; }>; text?: string; }; system: { body: string; new_wa_id?: string; type: string; wa_id?: string; user_id?: string; parent_user_id?: string; }; status: { id: string; status: 'sent' | 'delivered' | 'read' | 'failed'; timestamp: string; recipient_id?: string; recipient_user_id?: string; recipient_parent_user_id?: string; conversation?: { id: string; origin?: { type: string; }; expiration_timestamp?: string; }; pricing?: { billable?: boolean; pricing_model?: string; category?: string; type?: string; }; errors?: Array<{ code: number; title: string; message?: string; error_data?: { details?: string; }; href?: string; }>; }; edit: { original_message_id: string; message: Record & { type: string; }; }; revoke: { original_message_id: string; }; unsupported: { raw: Record; errors?: Array<{ code: number; title: string; message?: string; }>; }; user_id_update: { wa_id?: string; detail?: string; previous: string; current: string; parent_previous?: string; parent_current?: string; old_user_id?: string; new_user_id?: string; }; business_username_updates: { display_phone_number?: string; username?: string; status: 'approved' | 'deleted' | 'reserved'; }; business_username_update: { user_id?: string; username?: string; status?: string; }; } export type FreeFormObject = FreeFormObjectMap[K] & { context?: any; }; export type SpecificMessageData = FreeFormObjectMap[keyof Omit]; export type MessageData = FreeFormObject;