@gymspace/evolution 1.2.5 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +92 -32
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +92 -32
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/webhooks.ts","../src/api/errors.ts","../src/api/service.ts","../src/api/routes.ts","../src/schemas/common.ts","../src/types/tags.ts","../src/utils/phone-numer-from-jid.ts","../src/modules/chats/schemas/find-all.ts","../src/modules/chats/index.ts","../src/modules/groups/index.ts","../src/modules/instance/index.ts","../src/modules/messages/index.ts","../src/modules/profile/index.ts","../src/modules/settings/index.ts","../src/modules/webhook/index.ts","../src/types/messages.ts","../src/types/events.ts","../src/index.ts"],"names":["ConnectionState","MessageType","MessageUpdateStatus","WebhookEvent","WebhookEventSetup"],"mappings":"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","file":"index.mjs","sourcesContent":["import { MessageUpdateStatus } from \"./messages\";\n\nexport enum ConnectionState {\n OPEN = \"open\",\n CONNECTING = \"connecting\",\n CLOSED = \"close\",\n REFUSED = \"refused\",\n}\n\nexport enum MessageType {\n CONVERSATION = \"conversation\",\n TEXT = \"textMessage\",\n EPHEMERAL = \"ephemeralMessage\",\n AUDIO = \"audioMessage\",\n IMAGE = \"imageMessage\",\n VIDEO = \"videoMessage\",\n DOCUMENT = \"documentMessage\",\n STICKER = \"stickerMessage\",\n CONTACT = \"contactMessage\",\n LOCATION = \"locationMessage\",\n REACTION = \"reactionMessage\",\n BUTTONS = \"buttonsMessage\",\n}\n\nexport interface DeviceListMetadata {\n senderKeyHash: string;\n senderTimestamp: string;\n recipientKeyHash: string;\n recipientTimestamp: string;\n}\n\nexport interface MessageContextInfo {\n deviceListMetadata?: DeviceListMetadata | Record<string, unknown>;\n deviceListMetadataVersion: number;\n messageSecret: string;\n}\n\nexport interface DisappearingMode {\n initiator: string;\n trigger: string;\n initiatedByMe: boolean;\n}\n\nexport interface ContextInfo {\n expiration?: number;\n ephemeralSettingTimestamp?: string;\n disappearingMode?: DisappearingMode;\n stanzaId?: string;\n participant?: string;\n quotedMessage?: {\n conversation?: string;\n };\n statusSourceType?: string;\n forwardingScore?: number;\n isForwarded?: boolean;\n pairedMediaType?: string;\n}\n\nexport interface ImageMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n height: number;\n width: number;\n mediaKey: string;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n jpegThumbnail: string;\n contextInfo?: ContextInfo;\n firstScanSidecar: string;\n firstScanLength: number;\n scansSidecar: string;\n scanLengths: number[];\n midQualityFileSha256: string;\n imageSourceType: string;\n}\n\nexport interface AudioMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n seconds: number;\n ptt: boolean;\n mediaKey: string;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n waveform: string;\n}\n\nexport interface StickerMessage {\n url: string;\n width: number;\n height: number;\n isAvatar: boolean;\n isLottie: boolean;\n mediaKey: string;\n mimetype: string;\n directPath: string;\n fileLength: string;\n fileSha256: string;\n isAnimated: boolean;\n isAiSticker: boolean;\n fileEncSha256: string;\n stickerSentTs: string;\n mediaKeyTimestamp: string;\n}\n\nexport interface VideoMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n seconds: number;\n mediaKey: string;\n height: number;\n width: number;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n jpegThumbnail: string;\n contextInfo?: ContextInfo;\n streamingSidecar: string;\n externalShareFullVideoDurationInSeconds: number;\n}\n\nexport interface ReactionMessage {\n key: {\n remoteJid: string;\n fromMe: boolean;\n id: string;\n };\n text: string;\n senderTimestampMs: string;\n}\n\nexport interface DocumentMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n pageCount: number;\n mediaKey: string;\n fileName: string;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n contextInfo: ContextInfo;\n caption: string;\n}\n\nexport interface ContactMessage {\n displayName: string;\n vcard: string;\n}\n\nexport interface ExtendedTextMessage {\n text: string;\n contextInfo?: ContextInfo;\n}\n\nexport type MessageContent = {\n messageContextInfo?: MessageContextInfo;\n conversation?: string;\n extendedTextMessage?: ExtendedTextMessage;\n imageMessage?: ImageMessage;\n audioMessage?: AudioMessage;\n stickerMessage?: StickerMessage;\n ephemeralMessage?: EphemeralMessage;\n videoMessage?: VideoMessage;\n documentMessage?: DocumentMessage;\n contactMessage?: ContactMessage;\n locationMessage?: any;\n reactionMessage?: ReactionMessage;\n buttonsMessage?: any;\n};\n\nexport interface MessageUpdate {\n status: MessageUpdateStatus;\n}\n\nexport interface ConnectionUpdatePayload {\n instance: string;\n wuid?: string;\n profileName?: string;\n profilePictureUrl?: string | null;\n state: ConnectionState;\n statusReason: number;\n}\n\nexport interface ContactPayload {\n remoteJid: string;\n pushName: string;\n profilePicUrl: string | null;\n instanceId: string;\n}\n\nexport interface EphemeralMessage {\n message: MessageContent;\n}\n\nexport interface MessagePayload {\n key: {\n remoteJid: string;\n fromMe: boolean;\n id: string;\n senderLid?: string;\n };\n pushName?: string;\n message?: MessageContent;\n messageType?: MessageType;\n messageTimestamp?: number;\n status?: string;\n participant?: string;\n contextInfo?: ContextInfo;\n instanceId?: string;\n source?: string;\n}\n\nexport interface WebhookData {\n event: string;\n instance: string;\n data:\n | MessagePayload\n | ContactPayload\n | ContactPayload[]\n | ConnectionUpdatePayload;\n sender: string;\n date?: number;\n instanceName?: string;\n destination?: string;\n date_time?: string;\n server_url?: string;\n apikey?: string;\n}\n\nexport interface Instance {\n instanceName: string;\n status: string;\n qrcode?: string;\n}\n\nexport interface Message {\n key: {\n remoteJid: string;\n fromMe: boolean;\n id: string;\n };\n message: Record<string, unknown>;\n messageTimestamp: number;\n pushName?: string;\n}\n","export class EvolutionApiError extends Error {\n\tpublic readonly statusCode?: number;\n\tpublic readonly details?: unknown;\n\n\tconstructor(message: string, cause?: unknown, statusCode?: number) {\n\t\tconst extractedMessage = extractErrorMessage(cause);\n\t\tconst finalMessage = extractedMessage || message || \"Unknown error occurred\";\n\n\t\tsuper(finalMessage);\n\n\t\tthis.name = EvolutionApiError.name;\n\t\tthis.message = finalMessage;\n\t\tthis.statusCode = statusCode;\n\t\tthis.details = cause;\n\n\t\t// Maintain proper stack trace\n\t\tif ((Error as any).captureStackTrace) {\n\t\t\t(Error as any).captureStackTrace(this, EvolutionApiError);\n\t\t}\n\t}\n\n\t/**\n\t * Returns a user-friendly string representation of the error\n\t */\n\ttoString(): string {\n\t\tlet result = `${this.name}: ${this.message}`;\n\t\t\n\t\tif (this.statusCode) {\n\t\t\tresult += ` (${this.statusCode})`;\n\t\t}\n\t\t\n\t\t// Add relevant details without showing [Object ...]\n\t\tif (this.details && typeof this.details === 'object') {\n\t\t\tconst details = this.details as Record<string, any>;\n\t\t\tconst relevantDetails: string[] = [];\n\t\t\t\n\t\t\tif (details.url) {\n\t\t\t\trelevantDetails.push(`URL: ${details.url}`);\n\t\t\t}\n\t\t\t\n\t\t\tif (details.method) {\n\t\t\t\trelevantDetails.push(`Method: ${details.method}`);\n\t\t\t}\n\t\t\t\n\t\t\t// Show response details if they exist and are meaningful\n\t\t\tif (details.response && typeof details.response === 'object') {\n\t\t\t\tconst response = details.response as Record<string, any>;\n\t\t\t\tif (response.error && response.error !== this.message) {\n\t\t\t\t\trelevantDetails.push(`Server Error: ${response.error}`);\n\t\t\t\t}\n\t\t\t\tif (response.message && response.message !== this.message) {\n\t\t\t\t\trelevantDetails.push(`Server Message: ${response.message}`);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (relevantDetails?.length > 0) {\n\t\t\t\tresult += `\\n ${relevantDetails.join('\\n ')}`;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns a JSON representation suitable for logging\n\t */\n\ttoJSON(): object {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tstatusCode: this.statusCode,\n\t\t\tdetails: this.details,\n\t\t\tstack: this.stack,\n\t\t};\n\t}\n}\n\n/**\n * Extracts error message from various Evolution API error response formats\n */\nexport function extractErrorMessage(response: unknown): string | null {\n\tif (!response) {\n\t\treturn null;\n\t}\n\n\t// Handle string responses\n\tif (typeof response === \"string\") {\n\t\treturn response;\n\t}\n\n\t// Handle object responses\n\tif (typeof response === \"object\" && response !== null) {\n\t\ttry {\n\t\t\tconst errorObj = response as Record<string, any>;\n\n\t\t\t// Try different common error message paths, prioritizing Evolution API format\n\t\t\tconst messagePaths = [\n\t\t\t\t// Evolution API specific nested structure (most common)\n\t\t\t\terrorObj.response?.response?.message?.[0],\n\t\t\t\terrorObj.response?.response?.error,\n\t\t\t\terrorObj.response?.response?.description,\n\n\t\t\t\t// Evolution API first level nested\n\t\t\t\tArray.isArray(errorObj.response?.message) ? errorObj.response.message[0] : null,\n\t\t\t\terrorObj.response?.error,\n\t\t\t\terrorObj.response?.description,\n\n\t\t\t\t// Direct error message\n\t\t\t\tArray.isArray(errorObj.message) ? errorObj.message[0] : errorObj.message,\n\t\t\t\terrorObj.error,\n\t\t\t\terrorObj.description,\n\t\t\t\terrorObj.detail,\n\n\t\t\t\t// Other nested error messages\n\t\t\t\terrorObj.data?.error,\n\t\t\t\terrorObj.data?.message,\n\n\t\t\t\t// Array format messages (fallback)\n\t\t\t\tArray.isArray(errorObj.error) ? errorObj.error[0] : null,\n\t\t\t\tArray.isArray(errorObj.errors) ? errorObj.errors[0] : null,\n\t\t\t].filter(Boolean); // Filter out null/undefined values\n\n\t\t\tfor (const path of messagePaths) {\n\t\t\t\tif (path && typeof path === \"string\" && path.length > 0 && path.trim()) {\n\t\t\t\t\treturn path.trim();\n\t\t\t\t}\n\t\t\t\t// Handle nested objects in arrays\n\t\t\t\tif (path && typeof path === \"object\" && path !== null) {\n\t\t\t\t\tconst nestedMessage = extractErrorMessage(path);\n\t\t\t\t\tif (nestedMessage) {\n\t\t\t\t\t\treturn nestedMessage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle validation errors (common format)\n\t\t\tif (errorObj.validation && Array.isArray(errorObj.validation)) {\n\t\t\t\tconst validationErrors = errorObj.validation\n\t\t\t\t\t.map((v: any) => v?.message || v?.error || String(v))\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\", \");\n\t\t\t\tif (validationErrors) {\n\t\t\t\t\treturn `Validation error: ${validationErrors}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle specific Evolution API error patterns\n\t\t\tif (errorObj.statusCode && errorObj.statusText) {\n\t\t\t\treturn `${errorObj.statusCode}: ${errorObj.statusText}`;\n\t\t\t}\n\n\t\t\t// Last resort: try to stringify the object meaningfully\n\t\t\tconst keys = Object.keys(errorObj);\n\t\t\tif (keys && keys.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.stringify(errorObj);\n\t\t\t\t} catch {\n\t\t\t\t\treturn \"[Complex error object]\";\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// If any error occurs during extraction, return a safe message\n\t\t\treturn \"[Error parsing error message]\";\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Legacy error message patterns for specific Evolution API errors\n * Kept for backward compatibility\n */\nconst SpecificErrorPatterns = [\n\t{\n\t\tpattern: (obj: any) =>\n\t\t\tArray.isArray(obj?.message) && obj.message.some?.((m: any) => m?.exists === false && m?.jid && m?.number),\n\t\tmessage: \"Provided number is not a valid WhatsApp number\"\n\t},\n\t{\n\t\tpattern: (obj: any) =>\n\t\t\tArray.isArray(obj?.message) && obj.message.some?.((m: string) => typeof m === \"string\" && m.includes(\"Media upload failed\")),\n\t\tmessage: \"Media upload failed on all hosts\"\n\t},\n\t{\n\t\tpattern: (obj: any) =>\n\t\t\tArray.isArray(obj?.message) && obj.message.some?.((m: string) => typeof m === \"string\" && m.includes(\"No session\")),\n\t\tmessage: \"No session found, try restarting your instance\"\n\t},\n\t{\n\t\tpattern: (obj: any) =>\n\t\t\tArray.isArray(obj?.message) && obj.message.some?.((m: string) => typeof m === \"string\" && m.includes(\"AggregateError\")),\n\t\tmessage: \"Connection error occurred\"\n\t},\n\t{\n\t\tpattern: (obj: any) =>\n\t\t\tArray.isArray(obj?.message) && obj.message.some?.((m: string) => typeof m === \"string\" && m.includes(\"AxiosError\")),\n\t\tmessage: (obj: any) => (Array.isArray(obj.message) && obj.message[0]) || \"Network error occurred\"\n\t},\n];\n\n/**\n * Enhanced error message extraction with specific pattern matching\n */\nfunction getErrorMessage(response: unknown): string | null {\n\t// First try the general extraction\n\tconst generalMessage = extractErrorMessage(response);\n\tif (generalMessage) {\n\t\treturn generalMessage;\n\t}\n\n\t// Then try specific patterns\n\tif (typeof response === \"object\" && response !== null) {\n\t\tfor (const { pattern, message } of SpecificErrorPatterns) {\n\t\t\ttry {\n\t\t\t\tif (pattern(response)) {\n\t\t\t\t\treturn typeof message === \"string\" ? message : message(response);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Continue to next pattern if this one fails\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n","import type { ClientOptions } from '../schemas/client';\nimport type { APIRequestInit } from '../types/api';\n\nimport { EvolutionApiError, extractErrorMessage } from './errors';\n\nexport class ApiService {\n constructor(private options: ClientOptions) {}\n\n setInstance(instance: string) {\n this.options.instance = instance;\n }\n\n async request<T = unknown>(path: string, options: APIRequestInit = {}): Promise<T> {\n // Validate input parameters\n if (!path || typeof path !== 'string' || path?.trim()?.length === 0) {\n throw new EvolutionApiError('Invalid path parameter', {\n message: 'Path must be a non-empty string',\n path,\n });\n }\n\n if (!this.options.serverUrl || typeof this.options.serverUrl !== 'string') {\n throw new EvolutionApiError('Invalid server URL configuration', {\n message: 'Server URL must be configured and be a valid string',\n serverUrl: this.options.serverUrl,\n });\n }\n\n const { isInstanceUrl = true } = options;\n let instance = this.options.instance;\n\n // Priority: options.instance > this.options.instance\n if (options.instance) {\n instance = options.instance;\n delete options.instance;\n }\n\n if (isInstanceUrl && !instance) {\n throw new EvolutionApiError('Instance not set', {\n message:\n 'Please set the instance before making a request or pass instance in the method options.',\n path,\n isInstanceUrl,\n });\n }\n\n const { init, params } = this.makeInit(options);\n\n const urlPath = isInstanceUrl ? `/${path}/${instance}/` : `/${path}/`;\n const url = new URL(urlPath, this.options.serverUrl);\n\n // Add query parameters if any\n if (params.toString()) {\n url.search = params.toString();\n }\n\n // Generate and store curl command for debugging\n const curlCommand = this.generateCurlCommand(\n init.method || 'GET',\n url.toString(),\n init.headers,\n init.body as string,\n );\n\n // Print curl command before making the request\n if (this.options.debug) {\n console.log('\\n=== CURL COMMAND ===');\n console.log(curlCommand);\n console.log('===================\\n');\n }\n\n let response: Response;\n let data: any;\n let responseText: string = '';\n\n try {\n response = await fetch(url, init);\n responseText = await response.text();\n\n // Only parse as JSON if there's content\n data = responseText ? JSON.parse(responseText) : null;\n } catch (error) {\n if (this.options.debug) {\n console.log(error);\n\n // Print curl command again in case of error for easier debugging\n console.log('\\n=== CURL COMMAND (ERROR) ===');\n console.log(curlCommand);\n console.log('============================\\n');\n }\n\n // Handle network errors or JSON parsing errors\n if (error instanceof SyntaxError && error.message.includes('JSON')) {\n throw new EvolutionApiError('Failed to parse response as JSON', {\n originalError: error,\n responseText: responseText || 'Empty response',\n url: url.toString(),\n status: response?.status,\n });\n }\n throw new EvolutionApiError('Network or parsing error', {\n originalError: error,\n url: url.toString(),\n responseText: responseText || 'No response',\n });\n }\n\n // Print API response in JSON format\n if (this.options.debug) {\n console.log('\\n=== API RESPONSE ===');\n console.log(JSON.stringify(data, null, 2));\n console.log('===================\\n');\n }\n\n if (!response.ok) {\n // Print curl command again in case of HTTP error for easier debugging\n if (this.options.debug) {\n console.log('\\n=== CURL COMMAND (HTTP ERROR) ===');\n console.log(curlCommand);\n console.log('================================\\n');\n }\n\n // Extract meaningful error message from the response\n const errorMessage =\n extractErrorMessage(data) ||\n `Request failed with status ${response.status}: ${response.statusText}`;\n\n throw new EvolutionApiError(\n errorMessage,\n {\n message: errorMessage,\n response: data || {},\n url: url.toString(),\n params: params.toString(),\n body: options.body || {},\n },\n response.status,\n );\n }\n\n return data;\n }\n\n private makeInit(options: APIRequestInit): {\n init: RequestInit;\n params: URLSearchParams;\n } {\n const init: RequestInit = {\n method: options.method || 'GET',\n headers: {\n 'Content-Type': 'application/json',\n apikey: this.options.token, // Evolution API uses apikey header\n ...this.options.headers,\n ...options.headers,\n },\n };\n\n if (options.body) {\n init.body = JSON.stringify(options.body);\n }\n\n const params = new URLSearchParams();\n if (options.params) {\n // Convert any object to URLSearchParams\n Object.entries(options.params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.append(key, String(value));\n }\n });\n }\n\n return { init, params };\n }\n\n private generateCurlCommand(\n method: string,\n url: string,\n headers: Record<string, string> | HeadersInit,\n body?: BodyInit,\n ): string {\n const curlParts = ['curl'];\n\n // Add method\n if (method !== 'GET') {\n curlParts.push(`-X ${method}`);\n }\n\n // Add headers\n let headerEntries: [string, string][];\n\n if (headers instanceof Headers) {\n const entries: [string, string][] = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n headerEntries = entries;\n } else {\n headerEntries = Object.entries(headers as Record<string, string>);\n }\n\n headerEntries.forEach(([key, value]) => {\n // Skip logging the apikey header for security\n if (key.toLowerCase() !== 'apikey') {\n curlParts.push(`-H '${key}: ${value}'`);\n } else {\n curlParts.push(`-H '${key}: [REDACTED]'`);\n }\n });\n\n // Add body if present\n if (body) {\n const bodyStr = typeof body === 'string' ? body : JSON.stringify(body);\n curlParts.push(`-d '${bodyStr}'`);\n }\n\n // Add URL\n curlParts.push(`'${url}'`);\n\n return curlParts.join(' \\\\\\n ');\n }\n\n async get<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'GET' });\n }\n\n async post<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'POST' });\n }\n\n async put<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'PUT' });\n }\n\n async patch<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'PATCH' });\n }\n\n async delete<T = unknown>(\n path: string,\n options: Omit<APIRequestInit, 'method'> = {},\n ): Promise<T> {\n return this.request<T>(path, { ...options, method: 'DELETE' });\n }\n}\n","export const Routes = {\n Message: {\n SendText: \"message/sendText\",\n SendMedia: \"message/sendMedia\",\n SendVoice: \"message/sendWhatsAppAudio\",\n SendSticker: \"message/sendSticker\",\n SendLocation: \"message/sendLocation\",\n SendContact: \"message/sendContact\",\n SendPoll: \"message/sendPoll\",\n SendReaction: \"message/sendReaction\",\n SendTemplate: \"message/sendTemplate\",\n SendStatus: \"message/sendStatus\",\n SendList: \"message/sendList\",\n },\n Chats: {\n Check: \"chat/whatsappNumbers\",\n FindAll: \"chat/findChats\",\n SendPresence: \"chat/sendPresence\",\n MarkAsRead: \"chat/markMessageAsRead\",\n MarkAsUnread: \"chat/markChatUnread\",\n Archive: \"chat/archive\",\n DeleteMessage: \"chat/deleteMessageForEveryone\",\n FetchProfilePicture: \"chat/fetchProfilePictureUrl\",\n FindContacts: \"chat/findContacts\",\n FindMessages: \"chat/findMessages\",\n FindStatusMessage: \"chat/findStatusMessage\",\n UpdateMessage: \"chat/updateMessage\",\n GetBase64FromMediaMessage: \"chat/getBase64FromMediaMessage\",\n },\n Groups: {\n FindAll: \"group/fetchAllGroups\",\n FindByJid: \"group/findGroupInfos\",\n FindByInviteCode: \"group/inviteInfo\",\n Create: \"group/create\",\n UpdatePicture: \"group/updateGroupPicture\",\n UpdateSubject: \"group/updateGroupSubject\",\n UpdateDescription: \"group/updateGroupDescription\",\n FetchInviteCode: \"group/fetchInviteCode\",\n AcceptInviteCode: \"group/acceptInviteCode\",\n RevokeInviteCode: \"group/revokeInviteCode\",\n SendGroupInvite: \"group/sendGroupInvite\",\n FindMembers: \"group/findGroupMembers\",\n UpdateMembers: \"group/updateGroupMembers\",\n UpdateSetting: \"group/updateGroupSetting\",\n ToggleEphemeral: \"group/toggleEphemeral\",\n Leave: \"group/leaveGroup\",\n },\n Profile: {\n FetchBusinessProfile: \"chat/fetchBusinessProfile\",\n FetchProfile: \"chat/fetchProfile\",\n UpdateName: \"chat/updateProfileName\",\n UpdateStatus: \"chat/updateProfileStatus\",\n UpdatePicture: \"chat/updateProfilePicture\",\n RemovePicture: \"chat/removeProfilePicture\",\n FetchPrivacySettings: \"chat/fetchPrivacySettings\",\n UpdatePrivacySettings: \"chat/updatePrivacySettings\",\n },\n Webhook: {\n Set: \"webhook/set\",\n Find: \"webhook/find\",\n },\n Settings: {\n Set: \"settings/set\",\n Find: \"settings/find\",\n },\n Instance: {\n Create: \"instance/create\",\n FetchAll: \"instance/fetchInstances\",\n Connect: \"instance/connect\",\n Restart: \"instance/restart\",\n ConnectionState: \"instance/connectionState\",\n Logout: \"instance/logout\",\n Delete: \"instance/delete\",\n SetPresence: \"instance/setPresence\",\n },\n};\n","// Pure TypeScript types and utility functions for better IDE support and performance\nimport type { GroupInviteCode, GroupJid, Jid } from '../types/tags';\n\n// Type definitions\nexport type PhoneNumber = string;\nexport type MessageId = string;\nexport type ChatId = PhoneNumber | Jid | GroupJid;\nexport type ApiNumber = PhoneNumber | Jid | GroupJid;\nexport type Media = string; // URL or base64 string\n\n// Utility functions\nexport const validatePhoneNumber = (value: string): boolean => {\n // Basic phone number validation: starts with + followed by 7-15 digits\n const phoneRegex = /^\\+\\d{7,15}$/;\n return phoneRegex.test(value);\n};\n\nexport const parsePhoneNumberUtil = (phoneNumber: string): string => {\n // Remove all non-digit characters except the leading +\n const cleaned = phoneNumber.replace(/[^\\d+]/g, '');\n // Ensure it starts with +\n return cleaned.startsWith('+') ? cleaned : `+${cleaned}`;\n};\n\nexport const validateJid = (value: string): boolean => value.endsWith(\"@s.whatsapp.net\");\nexport const validateGroupJid = (value: string): boolean => value.endsWith(\"@g.us\");\nexport const validateGroupInviteCode = (value: string): boolean => \n value.length === 22 && /^[a-zA-Z0-9]{22}$/.test(value);\n\nexport const validateMedia = (value: string): boolean => {\n // Check if it's a URL or base64 string\n try {\n new URL(value);\n return true;\n } catch {\n // Check if it's a valid base64 string\n try {\n return btoa(atob(value)) === value;\n } catch {\n return false;\n }\n }\n};\n\n// Backward compatibility - keeping the schema names but as type aliases\nexport type PhoneNumberSchema = PhoneNumber;\nexport type JidSchema = Jid;\nexport type GroupJidSchema = GroupJid;\nexport type GroupInviteCodeSchema = GroupInviteCode;\nexport type MessageIdSchema = MessageId;\nexport type ChatIdSchema = ChatId;\nexport type ApiNumberSchema = ApiNumber;\nexport type mediaSchema = Media;\n","export type Jid = `${string}@s.whatsapp.net` | string;\nexport const Jid = (jid: string) => jid as Jid;\n\nexport type GroupJid = `${string}@g.us` | string;\nexport const GroupJid = (jid: string) => jid as GroupJid;\n\nexport type GroupInviteCode = string & { __tag: \"GroupInviteCode\" };\nexport const GroupInviteCode = (code: string) => code as GroupInviteCode;\n\nexport type MessageId = string & { __tag: \"MessageId\" };\nexport const MessageId = (id: string) => id as MessageId;\n\nexport type ChatId = string & { __tag: \"ChatId\" };\nexport const ChatId = (id: string) => id as ChatId;\n","/**\n * Get phone number from JID\n * @param jid - JID (remote JID)\n * @returns Phone number with + prefix or the raw number from JID\n */\nexport function phoneNumberFromJid(jid: string): string {\n const numberPart = jid.split('@')[0];\n\n // For individual WhatsApp contacts, add + prefix\n if (jid.endsWith('@s.whatsapp.net')) {\n return `+${numberPart}`;\n }\n\n // For groups, channels, and other formats, return raw number\n return numberPart;\n}\n","// Pure TypeScript interfaces for better IDE support and performance\nimport { ChatId, GroupJid, Jid } from '../../../types/tags';\nimport { phoneNumberFromJid } from '../../../utils/phone-numer-from-jid';\n\n// Raw response interface from API\nexport interface FindAllChatsResponseRaw {\n\tid: string;\n\tremoteJid: string;\n\tname?: string | null;\n\tlabels?: string[] | null;\n\tcreatedAt: string | Date;\n\tupdatedAt: string | Date;\n\tpushName?: string | null;\n\tprofilePicUrl?: string | null;\n}\n\n// Transformed response interface\nexport interface FindAllChatsResponseItem {\n\tid: ChatId;\n\tjid: GroupJid | Jid;\n\tphoneNumber: string; // Raw number or formatted phone number\n\tname?: string;\n\tlabels?: string[];\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n\tpushName?: string;\n\tpictureUrl?: string;\n}\n\nexport type FindAllChatsResponse = FindAllChatsResponseItem[];\n\n// Transform function\nexport const FindAllChatsResponseTransform = (chats: FindAllChatsResponseRaw[]): FindAllChatsResponse =>\n\tchats.map((chat) => ({\n\t\tid: ChatId(chat.id),\n\t\tjid: chat.remoteJid.endsWith(\"@g.us\")\n\t\t\t? GroupJid(chat.remoteJid)\n\t\t\t: Jid(chat.remoteJid),\n\t\tphoneNumber: phoneNumberFromJid(chat.remoteJid),\n\t\tname: chat.name || undefined,\n\t\tlabels: chat.labels || undefined,\n\t\tcreatedAt: new Date(chat.createdAt),\n\t\tupdatedAt: new Date(chat.updatedAt),\n\t\tpushName: chat.pushName || undefined,\n\t\tpictureUrl: chat.profilePicUrl || undefined,\n\t}));\n\n// Backward compatibility alias\nexport const ResponseSchema = { parse: FindAllChatsResponseTransform };\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport { validateGroupJid, validateJid } from '../../schemas/common';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Archive from \"./schemas/archive\";\nimport type * as Check from \"./schemas/check\";\nimport type * as DeleteMessage from \"./schemas/delete-message\";\nimport type * as FetchProfilePicture from \"./schemas/fetch-profile-picture\";\nimport * as FindAll from \"./schemas/find-all\";\nimport type * as FindContacts from \"./schemas/find-contacts\";\nimport type * as FindMessages from \"./schemas/find-messages\";\nimport type * as FindStatusMessage from \"./schemas/find-status-message\";\nimport type * as GetBase64FromMediaMessage from \"./schemas/get-base64-from-media-message\";\nimport type * as MarkAsRead from \"./schemas/mark-as-read\";\nimport type * as MarkAsUnread from \"./schemas/mark-as-unread\";\nimport type * as Presence from \"./schemas/presence\";\nimport type * as UpdateMessage from \"./schemas/update-message\";\n\nexport class ChatsModule {\n constructor(private readonly api: ApiService) {}\n\n /**\n * Checks if phone numbers are registered on WhatsApp\n * @param numbers - Array of phone numbers to check\n * @param methodOptions - Method-specific options (instance override)\n */\n async check(\n numbers: Check.CheckOptions,\n methodOptions?: MethodOptions\n ): Promise<Check.CheckResponse> {\n const body = {\n numbers: Array.isArray(numbers) ? numbers : [numbers],\n };\n const response = await this.api.post(Routes.Chats.Check, {\n body,\n ...methodOptions,\n });\n\n return response as Check.CheckResponse;\n }\n\n /**\n * Gets all chats\n * @param methodOptions - Method-specific options (instance override)\n */\n async findAll(\n methodOptions?: MethodOptions\n ): Promise<FindAll.FindAllChatsResponse> {\n const response = await this.api.post(Routes.Chats.FindAll, {\n body: {},\n ...methodOptions,\n });\n\n return FindAll.FindAllChatsResponseTransform(response as FindAll.FindAllChatsResponseRaw[]);\n }\n\n /**\n * Updates presence status\n * @param params - Presence parameters\n * @param methodOptions - Method-specific options (instance override)\n */\n async updatePresence(\n options: Presence.PresenceOptions,\n methodOptions?: MethodOptions\n ): Promise<void> {\n if (!options.number) {\n throw new Error(\"Number is required\");\n }\n\n if (!validateJid(options.number) && !validateGroupJid(options.number)) {\n options.number = `${options.number}@s.whatsapp.net`;\n }\n\n await this.api.post(Routes.Chats.SendPresence, {\n body: options,\n ...methodOptions,\n });\n }\n\n /**\n * Marks messages as read\n * @param options - Mark as read options\n * @param methodOptions - Method-specific options (instance override)\n */\n async markAsRead(\n options: MarkAsRead.MarkAsReadRequest,\n methodOptions?: MethodOptions\n ): Promise<MarkAsRead.MarkAsReadResponse> {\n const response = await this.api.post(Routes.Chats.MarkAsRead, {\n body: options,\n ...methodOptions,\n });\n\n return response as MarkAsRead.MarkAsReadResponse;\n }\n\n /**\n * Marks messages as unread\n * @param options - Mark as unread options\n * @param methodOptions - Method-specific options (instance override)\n */\n async markAsUnread(\n options: MarkAsUnread.MarkAsUnreadRequest,\n methodOptions?: MethodOptions\n ): Promise<MarkAsUnread.MarkAsUnreadResponse> {\n const response = await this.api.post(Routes.Chats.MarkAsUnread, {\n body: options,\n ...methodOptions,\n });\n\n return response as MarkAsUnread.MarkAsUnreadResponse;\n }\n\n /**\n * Archives a chat\n * @param options - Archive options\n * @param methodOptions - Method-specific options (instance override)\n */\n async archive(\n options: Archive.ArchiveRequest,\n methodOptions?: MethodOptions\n ): Promise<Archive.ArchiveResponse> {\n const response = await this.api.post(Routes.Chats.Archive, {\n body: options,\n ...methodOptions,\n });\n\n return response as Archive.ArchiveResponse;\n }\n\n /**\n * Deletes a message\n * @param options - Delete message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async deleteMessage(\n options: DeleteMessage.DeleteMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<DeleteMessage.DeleteMessageResponse> {\n const response = await this.api.delete(Routes.Chats.DeleteMessage, {\n body: options,\n ...methodOptions,\n });\n\n return response as DeleteMessage.DeleteMessageResponse;\n }\n\n /**\n * Fetches profile picture\n * @param options - Fetch profile picture options\n * @param methodOptions - Method-specific options (instance override)\n */\n async fetchProfilePicture(\n options: FetchProfilePicture.FetchProfilePictureRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchProfilePicture.FetchProfilePictureResponse> {\n const response = await this.api.post(Routes.Chats.FetchProfilePicture, {\n body: options,\n ...methodOptions,\n });\n\n return response as FetchProfilePicture.FetchProfilePictureResponse;\n }\n\n /**\n * Finds contacts\n * @param options - Find contacts options\n * @param methodOptions - Method-specific options (instance override)\n */\n async findContacts(\n options: FindContacts.FindContactsRequest,\n methodOptions?: MethodOptions\n ): Promise<FindContacts.FindContactsResponse> {\n const response = await this.api.post(Routes.Chats.FindContacts, {\n body: options,\n ...methodOptions,\n });\n\n return response as FindContacts.FindContactsResponse;\n }\n\n /**\n * Finds messages\n * @param options - Find messages options\n * @param methodOptions - Method-specific options (instance override)\n */\n async findMessages(\n options: FindMessages.FindMessagesRequest,\n methodOptions?: MethodOptions\n ): Promise<FindMessages.FindMessagesResponse> {\n const response = await this.api.post(Routes.Chats.FindMessages, {\n body: options,\n ...methodOptions,\n });\n\n return response as FindMessages.FindMessagesResponse;\n }\n\n /**\n * Finds status messages\n * @param options - Find status message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async findStatusMessage(\n options: FindStatusMessage.FindStatusMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<FindStatusMessage.FindStatusMessageResponse> {\n const response = await this.api.post(Routes.Chats.FindStatusMessage, {\n body: options,\n ...methodOptions,\n });\n\n return response as FindStatusMessage.FindStatusMessageResponse;\n }\n\n /**\n * Updates a message\n * @param options - Update message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async updateMessage(\n options: UpdateMessage.UpdateMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateMessage.UpdateMessageResponse> {\n const response = await this.api.put(Routes.Chats.UpdateMessage, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateMessage.UpdateMessageResponse;\n }\n\n /**\n * Gets base64 representation of media from a message\n * @param options - Get base64 from media message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async getBase64FromMediaMessage(\n options: GetBase64FromMediaMessage.GetBase64FromMediaMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<GetBase64FromMediaMessage.GetBase64FromMediaMessageResponse> {\n const response = await this.api.post(\n Routes.Chats.GetBase64FromMediaMessage,\n {\n body: options,\n ...methodOptions,\n }\n );\n\n return response as GetBase64FromMediaMessage.GetBase64FromMediaMessageResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\nimport type { GroupInviteCode, GroupJid } from '../../types/tags';\n\nimport type * as AcceptInviteCode from \"./schemas/accept-invite-code\";\nimport type * as Create from \"./schemas/create\";\nimport type * as FetchInviteCode from \"./schemas/fetch-invite-code\";\nimport type * as FindAll from \"./schemas/find-all\";\nimport type * as FindByInviteCode from \"./schemas/find-by-invite-code\";\nimport type * as FindByJid from \"./schemas/find-by-jid\";\nimport type * as FindMembers from \"./schemas/find-members\";\nimport type * as Leave from \"./schemas/leave\";\nimport type * as RevokeInviteCode from \"./schemas/revoke-invite-code\";\nimport type * as SendGroupInvite from \"./schemas/send-group-invite\";\nimport type * as ToggleEphemeral from \"./schemas/toggle-ephemeral\";\nimport type * as UpdateDescription from \"./schemas/update-description\";\nimport type * as UpdateMembers from \"./schemas/update-members\";\nimport type * as UpdatePicture from \"./schemas/update-picture\";\nimport type * as UpdateSetting from \"./schemas/update-setting\";\nimport type * as UpdateSubject from \"./schemas/update-subject\";\n\nexport class GroupsModule {\n constructor(private readonly api: ApiService) {}\n\n /**\n * Gets all groups\n * @param getParticipants - Whether to get participants\n * @param methodOptions - Method-specific options (instance override)\n */\n async findAll(\n getParticipants: false,\n methodOptions?: MethodOptions\n ): Promise<FindAll.FindAllGroupsResponse>;\n async findAll(\n getParticipants: true,\n methodOptions?: MethodOptions\n ): Promise<FindAll.FindAllGroupsWithParticipantsResponse>;\n async findAll(\n getParticipants = false,\n methodOptions?: MethodOptions\n ): Promise<\n | FindAll.FindAllGroupsResponse\n | FindAll.FindAllGroupsWithParticipantsResponse\n > {\n const response = await this.api.get(Routes.Groups.FindAll, {\n params: { getParticipants },\n ...methodOptions,\n });\n\n if (getParticipants) {\n return response as FindAll.FindAllGroupsWithParticipantsResponse;\n }\n return response as FindAll.FindAllGroupsResponse;\n }\n\n /**\n * Gets a group by invite code\n * @param inviteCode - The group invite code (not the URL)\n * @param methodOptions - Method-specific options (instance override)\n */\n async findByInviteCode(\n inviteCode: string | GroupInviteCode,\n methodOptions?: MethodOptions\n ): Promise<FindByInviteCode.FindGroupByInviteCodeResponse> {\n const response = await this.api.get(Routes.Groups.FindByInviteCode, {\n params: { inviteCode: inviteCode as GroupInviteCode },\n ...methodOptions,\n });\n\n return response as FindByInviteCode.FindGroupByInviteCodeResponse;\n }\n\n /**\n * Gets a group by JID\n * @param groupJid - The group JID terminated with \\@g.us\n * @param methodOptions - Method-specific options (instance override)\n */\n async findByJid(\n groupJid: string | GroupJid,\n methodOptions?: MethodOptions\n ): Promise<FindByJid.FindGroupByJidResponse> {\n const response = await this.api.get(Routes.Groups.FindByJid, {\n params: { groupJid: groupJid as GroupJid },\n ...methodOptions,\n });\n\n return response as FindByJid.FindGroupByJidResponse;\n }\n\n async create(\n options: Create.CreateGroupRequest,\n methodOptions?: MethodOptions\n ): Promise<Create.CreateGroupResponse> {\n const response = await this.api.post(Routes.Groups.Create, {\n body: options,\n ...methodOptions,\n });\n\n return response as Create.CreateGroupResponse;\n }\n\n async updatePicture(\n options: UpdatePicture.UpdatePictureRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdatePicture.UpdatePictureResponse> {\n const response = await this.api.post(Routes.Groups.UpdatePicture, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdatePicture.UpdatePictureResponse;\n }\n\n async updateSubject(\n options: UpdateSubject.UpdateSubjectRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateSubject.UpdateSubjectResponse> {\n const response = await this.api.post(Routes.Groups.UpdateSubject, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateSubject.UpdateSubjectResponse;\n }\n\n async updateDescription(\n options: UpdateDescription.UpdateDescriptionRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateDescription.UpdateDescriptionResponse> {\n const response = await this.api.post(Routes.Groups.UpdateDescription, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateDescription.UpdateDescriptionResponse;\n }\n\n async fetchInviteCode(\n options: FetchInviteCode.FetchInviteCodeRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchInviteCode.FetchInviteCodeResponse> {\n const response = await this.api.get(Routes.Groups.FetchInviteCode, {\n params: options,\n ...methodOptions,\n });\n\n return response as FetchInviteCode.FetchInviteCodeResponse;\n }\n\n async acceptInviteCode(\n options: AcceptInviteCode.AcceptInviteCodeRequest,\n methodOptions?: MethodOptions\n ): Promise<AcceptInviteCode.AcceptInviteCodeResponse> {\n const response = await this.api.post(Routes.Groups.AcceptInviteCode, {\n body: options,\n ...methodOptions,\n });\n\n return response as AcceptInviteCode.AcceptInviteCodeResponse;\n }\n\n async revokeInviteCode(\n options: RevokeInviteCode.RevokeInviteCodeRequest,\n methodOptions?: MethodOptions\n ): Promise<RevokeInviteCode.RevokeInviteCodeResponse> {\n const response = await this.api.post(Routes.Groups.RevokeInviteCode, {\n body: options,\n ...methodOptions,\n });\n\n return response as RevokeInviteCode.RevokeInviteCodeResponse;\n }\n\n async sendGroupInvite(\n options: SendGroupInvite.SendGroupInviteRequest,\n methodOptions?: MethodOptions\n ): Promise<SendGroupInvite.SendGroupInviteResponse> {\n const response = await this.api.post(Routes.Groups.SendGroupInvite, {\n body: options,\n ...methodOptions,\n });\n\n return response as SendGroupInvite.SendGroupInviteResponse;\n }\n\n async findMembers(\n options: FindMembers.FindMembersRequest,\n methodOptions?: MethodOptions\n ): Promise<FindMembers.FindMembersResponse> {\n const response = await this.api.get(Routes.Groups.FindMembers, {\n params: options,\n ...methodOptions,\n });\n\n return response as FindMembers.FindMembersResponse;\n }\n\n async updateMembers(\n options: UpdateMembers.UpdateMembersRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateMembers.UpdateMembersResponse> {\n const response = await this.api.post(Routes.Groups.UpdateMembers, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateMembers.UpdateMembersResponse;\n }\n\n async updateSetting(\n options: UpdateSetting.UpdateSettingRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateSetting.UpdateSettingResponse> {\n const response = await this.api.post(Routes.Groups.UpdateSetting, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateSetting.UpdateSettingResponse;\n }\n\n async toggleEphemeral(\n options: ToggleEphemeral.ToggleEphemeralRequest,\n methodOptions?: MethodOptions\n ): Promise<ToggleEphemeral.ToggleEphemeralResponse> {\n const response = await this.api.post(Routes.Groups.ToggleEphemeral, {\n body: options,\n ...methodOptions,\n });\n\n return response as ToggleEphemeral.ToggleEphemeralResponse;\n }\n\n async leave(\n options: Leave.LeaveRequest,\n methodOptions?: MethodOptions\n ): Promise<Leave.LeaveResponse> {\n const response = await this.api.post(Routes.Groups.Leave, {\n body: options,\n ...methodOptions,\n });\n\n return response as Leave.LeaveResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\n\nimport type * as Connect from \"./schemas/connect\";\nimport type * as ConnectionState from \"./schemas/connection-state\";\nimport type * as Create from \"./schemas/create\";\nimport type * as Delete from \"./schemas/delete\";\nimport type * as FetchAll from \"./schemas/fetch-all\";\nimport type * as Logout from \"./schemas/logout\";\nimport type * as Restart from \"./schemas/restart\";\nimport type * as SetPresence from \"./schemas/set-presence\";\n\nimport type { MethodOptions } from '../../types/api';\n\nexport class InstanceModule {\n constructor(private readonly api: ApiService) {}\n\n async create(\n options: Create.CreateInstanceRequest\n ): Promise<Create.CreateInstanceResponse> {\n const response = await this.api.post(Routes.Instance.Create, {\n body: options,\n isInstanceUrl: false,\n });\n return response as Create.CreateInstanceResponse;\n }\n\n async connect(\n options: Connect.ConnectRequest,\n methodOptions?: MethodOptions\n ): Promise<Connect.ConnectResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.get(Routes.Instance.Connect, {\n instance,\n isInstanceUrl: true,\n });\n return response as Connect.ConnectResponse;\n }\n\n async connectionState(\n options: ConnectionState.ConnectionStateRequest,\n methodOptions?: MethodOptions\n ): Promise<ConnectionState.ConnectionStateResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.get(Routes.Instance.ConnectionState, {\n instance,\n isInstanceUrl: true,\n });\n return response as ConnectionState.ConnectionStateResponse;\n }\n\n async logout(\n options: Logout.LogoutRequest,\n methodOptions?: MethodOptions\n ): Promise<Logout.LogoutResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.delete(Routes.Instance.Logout, {\n instance,\n isInstanceUrl: true,\n });\n return response as Logout.LogoutResponse;\n }\n\n async delete(options: Delete.DeleteRequest): Promise<Delete.DeleteResponse> {\n const response = await this.api.delete(Routes.Instance.Delete, {\n instance: options.instanceName,\n isInstanceUrl: true,\n });\n return response as Delete.DeleteResponse;\n }\n\n async restart(\n options: Restart.RestartRequest,\n methodOptions?: MethodOptions\n ): Promise<Restart.RestartResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.post(Routes.Instance.Restart, {\n instance,\n isInstanceUrl: true,\n });\n return response as Restart.RestartResponse;\n }\n\n async fetchAll(\n options?: FetchAll.FetchAllRequest\n ): Promise<FetchAll.FetchAllResponse> {\n const response = await this.api.get(Routes.Instance.FetchAll, {\n params: options,\n isInstanceUrl: false,\n });\n return response as FetchAll.FetchAllResponse;\n }\n\n async setPresence(\n options: SetPresence.SetPresenceRequest,\n methodOptions?: MethodOptions\n ): Promise<SetPresence.SetPresenceResponse> {\n const { instanceName, ...rest } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.post(Routes.Instance.SetPresence, {\n body: rest,\n instance,\n isInstanceUrl: true,\n });\n return response as SetPresence.SetPresenceResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Audio from './schemas/audio';\nimport type * as Contact from './schemas/contact';\nimport type * as Document from './schemas/document';\nimport type * as Image from './schemas/image';\nimport type * as List from './schemas/list';\nimport type * as Location from './schemas/location';\nimport type * as Reaction from './schemas/reaction';\nimport type * as Status from './schemas/status';\nimport type * as Sticker from './schemas/sticker';\nimport type * as Template from './schemas/template';\nimport type * as Text from './schemas/text';\nimport type * as Video from './schemas/video';\nimport type * as Voice from './schemas/voice';\n\nexport class MessagesModule {\n constructor(private readonly api: ApiService) {}\n\n /**\n * Sends a text message\n * @param options - Text message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendText(\n options: Text.TextMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Text.TextMessageResponse> {\n const response = await this.api.post(Routes.Message.SendText, {\n body: options,\n ...methodOptions,\n });\n return response as Text.TextMessageResponse;\n }\n\n /**\n * Sends an image\n * @param options - Image message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendImage(\n options: Image.ImageMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Image.ImageMessageResponse> {\n options.mediatype = 'image';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Image.ImageMessageResponse;\n }\n\n /**\n * Sends a video\n * @param options - Video message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendVideo(\n options: Video.VideoMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Video.VideoMessageResponse> {\n options.mediatype = 'video';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Video.VideoMessageResponse;\n }\n\n /**\n * Sends a document\n * @param options - Document message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendDocument(\n options: Document.DocumentMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Document.DocumentMessageResponse> {\n options.mediatype = 'document';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Document.DocumentMessageResponse;\n }\n\n /**\n * Sends an audio\n * @param options - Audio message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendAudio(\n options: Audio.AudioMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Audio.AudioMessageResponse> {\n options.mediatype = 'audio';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Audio.AudioMessageResponse;\n }\n\n /**\n * Sends a voice message\n * @param options - Voice message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendVoice(\n options: Voice.VoiceMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Voice.VoiceMessageResponse> {\n const response = await this.api.post(Routes.Message.SendVoice, {\n body: options,\n ...methodOptions,\n });\n\n return response as Voice.VoiceMessageResponse;\n }\n\n /**\n * Sends a sticker\n * @param options - Sticker message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendSticker(\n options: Sticker.StickerMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Sticker.StickerMessageResponse> {\n const response = await this.api.post(Routes.Message.SendSticker, {\n body: options,\n ...methodOptions,\n });\n\n return response as Sticker.StickerMessageResponse;\n }\n\n /**\n * Sends a location\n * @param options - Location message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendLocation(\n options: Location.LocationMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Location.LocationMessageResponse> {\n const response = await this.api.post(Routes.Message.SendLocation, {\n body: options,\n ...methodOptions,\n });\n\n return response as Location.LocationMessageResponse;\n }\n\n /**\n * Sends a contact\n * @param options - Contact message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendContact(\n options: Contact.ContactMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Contact.ContactMessageResponse> {\n const response = await this.api.post(Routes.Message.SendContact, {\n body: options,\n ...methodOptions,\n });\n\n return response as Contact.ContactMessageResponse;\n }\n\n /**\n * Sends a reaction\n * @param options - Reaction message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendReaction(\n options: Reaction.ReactionMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Reaction.ReactionMessageResponse> {\n const response = await this.api.post(Routes.Message.SendReaction, {\n body: options,\n ...methodOptions,\n });\n\n return response as Reaction.ReactionMessageResponse;\n }\n\n /**\n * Sends a template\n * @param options - Template message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendTemplate(\n options: Template.TemplateMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Template.TemplateMessageResponse> {\n const response = await this.api.post(Routes.Message.SendTemplate, {\n body: options,\n ...methodOptions,\n });\n\n return response as Template.TemplateMessageResponse;\n }\n\n /**\n * Sends a status\n * @param options - Status message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendStatus(\n options: Status.StatusMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Status.StatusMessageResponse> {\n const response = await this.api.post(Routes.Message.SendStatus, {\n body: options,\n ...methodOptions,\n });\n\n return response as Status.StatusMessageResponse;\n }\n\n /**\n * Sends a list\n * @param options - List message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendList(\n options: List.ListMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<List.ListMessageResponse> {\n const response = await this.api.post(Routes.Message.SendList, {\n body: options,\n ...methodOptions,\n });\n\n return response as List.ListMessageResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as FetchBusinessProfile from \"./schemas/fetch-business-profile\";\nimport type * as FetchPrivacySettings from \"./schemas/fetch-privacy-settings\";\nimport type * as FetchProfile from \"./schemas/fetch-profile\";\nimport type * as RemovePicture from \"./schemas/remove-picture\";\nimport type * as UpdateName from \"./schemas/update-name\";\nimport type * as UpdatePicture from \"./schemas/update-picture\";\nimport type * as UpdatePrivacySettings from \"./schemas/update-privacy-settings\";\nimport type * as UpdateStatus from \"./schemas/update-status\";\n\nexport class ProfileModule {\n constructor(private readonly api: ApiService) {}\n\n async fetchBusinessProfile(\n options: FetchBusinessProfile.FetchBusinessProfileRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchBusinessProfile.FetchBusinessProfileResponse> {\n const response = await this.api.post(Routes.Profile.FetchBusinessProfile, {\n body: options,\n ...methodOptions,\n });\n\n return response as FetchBusinessProfile.FetchBusinessProfileResponse;\n }\n\n async fetchProfile(\n options: FetchProfile.FetchProfileRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchProfile.FetchProfileResponse> {\n const response = await this.api.post(Routes.Profile.FetchProfile, {\n body: options,\n ...methodOptions,\n });\n\n return response as FetchProfile.FetchProfileResponse;\n }\n\n async updateName(\n options: UpdateName.UpdateNameRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateName.UpdateNameResponse> {\n const response = await this.api.post(Routes.Profile.UpdateName, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateName.UpdateNameResponse;\n }\n\n async updateStatus(\n options: UpdateStatus.UpdateStatusRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateStatus.UpdateStatusResponse> {\n const response = await this.api.post(Routes.Profile.UpdateStatus, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateStatus.UpdateStatusResponse;\n }\n\n async updatePicture(\n options: UpdatePicture.UpdatePictureRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdatePicture.UpdatePictureResponse> {\n const response = await this.api.post(Routes.Profile.UpdatePicture, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdatePicture.UpdatePictureResponse;\n }\n\n async removePicture(\n methodOptions?: MethodOptions\n ): Promise<RemovePicture.RemovePictureResponse> {\n const response = await this.api.delete(\n Routes.Profile.RemovePicture,\n methodOptions\n );\n\n return response as RemovePicture.RemovePictureResponse;\n }\n\n async fetchPrivacySettings(\n methodOptions?: MethodOptions\n ): Promise<FetchPrivacySettings.FetchPrivacySettingsResponse> {\n const response = await this.api.get(\n Routes.Profile.FetchPrivacySettings,\n methodOptions\n );\n\n return response as FetchPrivacySettings.FetchPrivacySettingsResponse;\n }\n\n async updatePrivacySettings(\n options: UpdatePrivacySettings.UpdatePrivacySettingsRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdatePrivacySettings.UpdatePrivacySettingsResponse> {\n const response = await this.api.put(Routes.Profile.UpdatePrivacySettings, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdatePrivacySettings.UpdatePrivacySettingsResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Find from \"./schemas/find\";\nimport type * as Set from \"./schemas/set\";\n\nexport class SettingsModule {\n constructor(private readonly api: ApiService) {}\n\n async set(\n options: Set.SetRequest,\n methodOptions?: MethodOptions\n ): Promise<Set.SetResponse> {\n const response = await this.api.post(Routes.Settings.Set, {\n body: options,\n ...methodOptions,\n });\n\n return response as Set.SetResponse;\n }\n\n async find(methodOptions?: MethodOptions): Promise<Find.FindResponse> {\n const response = await this.api.get(Routes.Settings.Find, methodOptions);\n\n return response as Find.FindResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Find from \"./schemas/find\";\nimport type * as Set from \"./schemas/set\";\n\nexport class WebhookModule {\n constructor(private readonly api: ApiService) {}\n\n async set(\n options: Set.SetRequest,\n methodOptions?: MethodOptions\n ): Promise<Set.SetResponse> {\n const response = await this.api.post(Routes.Webhook.Set, {\n body: options,\n ...methodOptions,\n });\n\n return response as Set.SetResponse;\n }\n\n async find(methodOptions?: MethodOptions): Promise<Find.FindResponse> {\n const response = await this.api.get(Routes.Webhook.Find, methodOptions);\n\n return response as Find.FindResponse;\n }\n}\n","export enum MessageUpdateStatus {\n DELIVERY_ACK = \"DELIVERY_ACK\",\n READ = \"READ\",\n SERVER_ACK = \"SERVER_ACK\",\n}\n","export enum WebhookEvent {\n APPLICATION_STARTUP = \"application.startup\",\n QRCODE_UPDATED = \"qrcode.updated\",\n CONNECTION_UPDATE = \"connection.update\",\n MESSAGES_SET = \"messages.set\",\n MESSAGES_UPSERT = \"messages.upsert\",\n MESSAGES_UPDATE = \"messages.update\",\n MESSAGES_DELETE = \"messages.delete\",\n SEND_MESSAGE = \"send.message\",\n CONTACTS_SET = \"contacts.set\",\n CONTACTS_UPSERT = \"contacts.upsert\",\n CONTACTS_UPDATE = \"contacts.update\",\n PRESENCE_UPDATE = \"presence.update\",\n CHATS_SET = \"chats.set\",\n CHATS_UPDATE = \"chats.update\",\n CHATS_UPSERT = \"chats.upsert\",\n CHATS_DELETE = \"chats.delete\",\n GROUPS_UPSERT = \"groups.upsert\",\n GROUPS_UPDATE = \"groups.update\",\n GROUP_PARTICIPANTS_UPDATE = \"group.participants.update\",\n NEW_TOKEN = \"new.jwt\",\n}\n\nexport enum WebhookEventSetup {\n APPLICATION_STARTUP = \"APPLICATION_STARTUP\",\n QRCODE_UPDATED = \"QRCODE_UPDATED\",\n CONNECTION_UPDATE = \"CONNECTION_UPDATE\",\n MESSAGES_SET = \"MESSAGES_SET\",\n MESSAGES_UPSERT = \"MESSAGES_UPSERT\",\n MESSAGES_UPDATE = \"MESSAGES_UPDATE\",\n MESSAGES_DELETE = \"MESSAGES_DELETE\",\n SEND_MESSAGE = \"SEND_MESSAGE\",\n CONTACTS_SET = \"CONTACTS_SET\",\n CONTACTS_UPSERT = \"CONTACTS_UPSERT\",\n CONTACTS_UPDATE = \"CONTACTS_UPDATE\",\n PRESENCE_UPDATE = \"PRESENCE_UPDATE\",\n CHATS_SET = \"CHATS_SET\",\n CHATS_UPDATE = \"CHATS_UPDATE\",\n CHATS_UPSERT = \"CHATS_UPSERT\",\n CHATS_DELETE = \"CHATS_DELETE\",\n GROUPS_UPSERT = \"GROUPS_UPSERT\",\n GROUPS_UPDATE = \"GROUPS_UPDATE\",\n GROUP_PARTICIPANTS_UPDATE = \"GROUP_PARTICIPANTS_UPDATE\",\n NEW_TOKEN = \"NEW_TOKEN\",\n MESSAGES_EDITED = \"MESSAGES_EDITED\",\n LABELS_EDIT = \"LABELS_EDIT\",\n LABELS_ASSOCIATION = \"LABELS_ASSOCIATION\",\n CALL = \"CALL\",\n TYPEBOT_START = \"TYPEBOT_START\",\n TYPEBOT_CHANGE_STATUS = \"TYPEBOT_CHANGE_STATUS\",\n ERRORS = \"ERRORS\",\n ERRORS_WEBHOOK = \"ERRORS_WEBHOOK\",\n}\n","export * from \"./types/webhooks\";\n\nimport { ApiService } from \"./api/service\";\nimport {\n ChatsModule,\n GroupsModule,\n InstanceModule,\n MessagesModule,\n ProfileModule,\n SettingsModule,\n WebhookModule,\n} from \"./modules\";\nimport { type ClientOptions } from \"./schemas/client\";\n\nexport class EvolutionClient {\n /**\n * API service for directly interacting with the Evolution API (no specific typings)\n */\n public readonly api: ApiService;\n\n /**\n * Find and manage chats, send presences and check numbers\n */\n public readonly chats: ChatsModule;\n /**\n * Find and manage groups\n */\n public readonly groups: GroupsModule;\n /**\n * Send messages\n */\n public readonly messages: MessagesModule;\n /**\n * Create and manage instances\n */\n public readonly instances: InstanceModule;\n /**\n * Manage profile settings\n */\n public readonly profile: ProfileModule;\n /**\n * Manage webhooks\n */\n public readonly webhook: WebhookModule;\n /**\n * Manage settings\n */\n public readonly settings: SettingsModule;\n\n /**\n * Evolution Client - API client for interacting with the Evolution API\n * @param options - Client options\n */\n constructor(public options: ClientOptions) {\n this.api = new ApiService(options);\n this.chats = new ChatsModule(this.api);\n this.groups = new GroupsModule(this.api);\n this.messages = new MessagesModule(this.api);\n this.instances = new InstanceModule(this.api);\n this.profile = new ProfileModule(this.api);\n this.webhook = new WebhookModule(this.api);\n this.settings = new SettingsModule(this.api);\n }\n\n setInstance(instance: string) {\n this.options.instance = instance;\n this.api.setInstance(instance);\n }\n}\n\nexport { EvolutionApiError } from \"./api/errors\";\nexport { phoneNumberFromJid } from \"./utils/phone-numer-from-jid\";\nexport { validatePhoneNumber } from \"./schemas/common\";\n\nexport type * from \"./modules/chats/schemas\";\nexport type * from \"./modules/groups/schemas\";\nexport type * from \"./modules/messages/schemas\";\nexport type * from \"./modules/instance/schemas\";\nexport type * from \"./modules/profile/schemas\";\nexport type * from \"./modules/webhook/schemas\";\nexport type * from \"./modules/settings/schemas\";\nexport type { ClientOptions };\n\n// API types\nexport { APIRequestInit, MethodOptions } from \"./types/api\";\nexport { MessageUpdateStatus } from \"./types/messages\";\nexport { ChatId, GroupJid, Jid, MessageId } from \"./types/tags\";\nexport * from \"./types/webhooks\";\nexport { WebhookEvent, WebhookEventSetup } from \"./types/events\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/webhooks.ts","../src/api/errors.ts","../src/api/service.ts","../src/api/routes.ts","../src/schemas/common.ts","../src/types/tags.ts","../src/utils/phone-numer-from-jid.ts","../src/modules/chats/schemas/find-all.ts","../src/modules/chats/index.ts","../src/modules/groups/index.ts","../src/modules/instance/index.ts","../src/modules/messages/index.ts","../src/modules/profile/index.ts","../src/modules/settings/index.ts","../src/modules/webhook/index.ts","../src/types/messages.ts","../src/types/events.ts","../src/index.ts"],"names":["ConnectionState","MessageType","MessageUpdateStatus","WebhookEvent","WebhookEventSetup"],"mappings":"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","file":"index.mjs","sourcesContent":["import { MessageUpdateStatus } from \"./messages\";\n\nexport enum ConnectionState {\n OPEN = \"open\",\n CONNECTING = \"connecting\",\n CLOSED = \"close\",\n REFUSED = \"refused\",\n}\n\nexport enum MessageType {\n CONVERSATION = \"conversation\",\n TEXT = \"textMessage\",\n EPHEMERAL = \"ephemeralMessage\",\n AUDIO = \"audioMessage\",\n IMAGE = \"imageMessage\",\n VIDEO = \"videoMessage\",\n DOCUMENT = \"documentMessage\",\n STICKER = \"stickerMessage\",\n CONTACT = \"contactMessage\",\n LOCATION = \"locationMessage\",\n REACTION = \"reactionMessage\",\n BUTTONS = \"buttonsMessage\",\n}\n\nexport interface DeviceListMetadata {\n senderKeyHash: string;\n senderTimestamp: string;\n recipientKeyHash: string;\n recipientTimestamp: string;\n}\n\nexport interface MessageContextInfo {\n deviceListMetadata?: DeviceListMetadata | Record<string, unknown>;\n deviceListMetadataVersion: number;\n messageSecret: string;\n}\n\nexport interface DisappearingMode {\n initiator: string;\n trigger: string;\n initiatedByMe: boolean;\n}\n\nexport interface ContextInfo {\n expiration?: number;\n ephemeralSettingTimestamp?: string;\n disappearingMode?: DisappearingMode;\n stanzaId?: string;\n participant?: string;\n quotedMessage?: {\n conversation?: string;\n };\n statusSourceType?: string;\n forwardingScore?: number;\n isForwarded?: boolean;\n pairedMediaType?: string;\n}\n\nexport interface ImageMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n height: number;\n width: number;\n mediaKey: string;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n jpegThumbnail: string;\n contextInfo?: ContextInfo;\n firstScanSidecar: string;\n firstScanLength: number;\n scansSidecar: string;\n scanLengths: number[];\n midQualityFileSha256: string;\n imageSourceType: string;\n}\n\nexport interface AudioMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n seconds: number;\n ptt: boolean;\n mediaKey: string;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n waveform: string;\n}\n\nexport interface StickerMessage {\n url: string;\n width: number;\n height: number;\n isAvatar: boolean;\n isLottie: boolean;\n mediaKey: string;\n mimetype: string;\n directPath: string;\n fileLength: string;\n fileSha256: string;\n isAnimated: boolean;\n isAiSticker: boolean;\n fileEncSha256: string;\n stickerSentTs: string;\n mediaKeyTimestamp: string;\n}\n\nexport interface VideoMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n seconds: number;\n mediaKey: string;\n height: number;\n width: number;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n jpegThumbnail: string;\n contextInfo?: ContextInfo;\n streamingSidecar: string;\n externalShareFullVideoDurationInSeconds: number;\n}\n\nexport interface ReactionMessage {\n key: {\n remoteJid: string;\n fromMe: boolean;\n id: string;\n };\n text: string;\n senderTimestampMs: string;\n}\n\nexport interface DocumentMessage {\n url: string;\n mimetype: string;\n fileSha256: string;\n fileLength: string;\n pageCount: number;\n mediaKey: string;\n fileName: string;\n fileEncSha256: string;\n directPath: string;\n mediaKeyTimestamp: string;\n contextInfo: ContextInfo;\n caption: string;\n}\n\nexport interface ContactMessage {\n displayName: string;\n vcard: string;\n}\n\nexport interface ExtendedTextMessage {\n text: string;\n contextInfo?: ContextInfo;\n}\n\nexport type MessageContent = {\n messageContextInfo?: MessageContextInfo;\n conversation?: string;\n extendedTextMessage?: ExtendedTextMessage;\n imageMessage?: ImageMessage;\n audioMessage?: AudioMessage;\n stickerMessage?: StickerMessage;\n ephemeralMessage?: EphemeralMessage;\n videoMessage?: VideoMessage;\n documentMessage?: DocumentMessage;\n contactMessage?: ContactMessage;\n locationMessage?: any;\n reactionMessage?: ReactionMessage;\n buttonsMessage?: any;\n};\n\nexport interface MessageUpdate {\n status: MessageUpdateStatus;\n}\n\nexport interface ConnectionUpdatePayload {\n instance: string;\n wuid?: string;\n profileName?: string;\n profilePictureUrl?: string | null;\n state: ConnectionState;\n statusReason: number;\n}\n\nexport interface ContactPayload {\n remoteJid: string;\n pushName: string;\n profilePicUrl: string | null;\n instanceId: string;\n}\n\nexport interface EphemeralMessage {\n message: MessageContent;\n}\n\nexport interface MessagePayload {\n key: {\n remoteJid: string;\n fromMe: boolean;\n id: string;\n senderLid?: string;\n };\n pushName?: string;\n message?: MessageContent;\n messageType?: MessageType;\n messageTimestamp?: number;\n status?: string;\n participant?: string;\n contextInfo?: ContextInfo;\n instanceId?: string;\n source?: string;\n}\n\nexport interface WebhookData {\n event: string;\n instance: string;\n data:\n | MessagePayload\n | ContactPayload\n | ContactPayload[]\n | ConnectionUpdatePayload;\n sender: string;\n date?: number;\n instanceName?: string;\n destination?: string;\n date_time?: string;\n server_url?: string;\n apikey?: string;\n}\n\nexport interface Instance {\n instanceName: string;\n status: string;\n qrcode?: string;\n}\n\nexport interface Message {\n key: {\n remoteJid: string;\n fromMe: boolean;\n id: string;\n };\n message: Record<string, unknown>;\n messageTimestamp: number;\n pushName?: string;\n}\n","// Extend Error to include captureStackTrace\ninterface ErrorConstructor {\n captureStackTrace?(target: object, constructorOpt?: Function): void;\n}\n\nexport class EvolutionApiError extends Error {\n public readonly statusCode?: number;\n public readonly details?: unknown;\n\n constructor(message: string, cause?: unknown, statusCode?: number) {\n const extractedMessage = extractErrorMessage(cause);\n const finalMessage = extractedMessage || message || 'Unknown error occurred';\n\n super(finalMessage);\n\n this.name = EvolutionApiError.name;\n this.message = finalMessage;\n this.statusCode = statusCode;\n this.details = cause;\n\n // Maintain proper stack trace\n const ErrorConstructor = Error as ErrorConstructor;\n if (typeof ErrorConstructor.captureStackTrace === 'function') {\n ErrorConstructor.captureStackTrace(this, EvolutionApiError);\n }\n }\n\n /**\n * Returns a user-friendly string representation of the error\n */\n toString(): string {\n let result = `${this.name}: ${this.message}`;\n\n if (this.statusCode) {\n result += ` (${this.statusCode})`;\n }\n\n // Add relevant details without showing [Object ...]\n if (this.details && typeof this.details === 'object') {\n const details = this.details as Record<string, unknown>;\n const relevantDetails: string[] = [];\n\n if (typeof details.url === 'string') {\n relevantDetails.push(`URL: ${details.url}`);\n }\n\n if (typeof details.method === 'string') {\n relevantDetails.push(`Method: ${details.method}`);\n }\n\n // Show response details if they exist and are meaningful\n if (details.response && typeof details.response === 'object') {\n const response = details.response as Record<string, unknown>;\n if (typeof response.error === 'string' && response.error !== this.message) {\n relevantDetails.push(`Server Error: ${response.error}`);\n }\n if (typeof response.message === 'string' && response.message !== this.message) {\n relevantDetails.push(`Server Message: ${response.message}`);\n }\n }\n\n if (relevantDetails?.length > 0) {\n result += `\\n ${relevantDetails.join('\\n ')}`;\n }\n }\n\n return result;\n }\n\n /**\n * Returns a JSON representation suitable for logging\n */\n toJSON(): object {\n return {\n name: this.name,\n message: this.message,\n statusCode: this.statusCode,\n details: this.details,\n stack: this.stack,\n };\n }\n}\n\n/**\n * Helper to safely access nested properties\n */\nfunction getNestedProperty(obj: unknown, path: string[]): unknown {\n let current: unknown = obj;\n for (const key of path) {\n if (current && typeof current === 'object' && key in (current as Record<string, unknown>)) {\n current = (current as Record<string, unknown>)[key];\n } else {\n return undefined;\n }\n }\n return current;\n}\n\n/**\n * Extracts error message from various Evolution API error response formats\n */\nexport function extractErrorMessage(response: unknown): string | null {\n if (!response) {\n return null;\n }\n\n // Handle string responses\n if (typeof response === 'string') {\n return response;\n }\n\n // Handle object responses\n if (typeof response === 'object' && response !== null) {\n try {\n const errorObj = response as Record<string, unknown>;\n\n // Try different common error message paths, prioritizing Evolution API format\n const checkPaths: Array<() => string | null> = [\n // Evolution API specific nested structure (most common)\n () => {\n const val = getNestedProperty(errorObj, ['response', 'response', 'message']);\n if (Array.isArray(val) && val.length > 0) return String(val[0]);\n return null;\n },\n () => {\n const val = getNestedProperty(errorObj, ['response', 'response', 'error']);\n return typeof val === 'string' ? val : null;\n },\n () => {\n const val = getNestedProperty(errorObj, ['response', 'response', 'description']);\n return typeof val === 'string' ? val : null;\n },\n\n // Evolution API first level nested\n () => {\n const val = getNestedProperty(errorObj, ['response', 'message']);\n if (Array.isArray(val) && val.length > 0) return String(val[0]);\n return null;\n },\n () => {\n const val = getNestedProperty(errorObj, ['response', 'error']);\n return typeof val === 'string' ? val : null;\n },\n () => {\n const val = getNestedProperty(errorObj, ['response', 'description']);\n return typeof val === 'string' ? val : null;\n },\n\n // Direct error message\n () => {\n const val = errorObj.message;\n if (Array.isArray(val) && val.length > 0) return String(val[0]);\n return typeof val === 'string' ? val : null;\n },\n () => {\n const val = errorObj.error;\n return typeof val === 'string' ? val : null;\n },\n () => {\n const val = errorObj.description;\n return typeof val === 'string' ? val : null;\n },\n () => {\n const val = errorObj.detail;\n return typeof val === 'string' ? val : null;\n },\n\n // Other nested error messages\n () => {\n const val = getNestedProperty(errorObj, ['data', 'error']);\n return typeof val === 'string' ? val : null;\n },\n () => {\n const val = getNestedProperty(errorObj, ['data', 'message']);\n return typeof val === 'string' ? val : null;\n },\n\n // Array format messages (fallback)\n () => {\n const val = errorObj.error;\n if (Array.isArray(val) && val.length > 0) return String(val[0]);\n return null;\n },\n () => {\n const val = errorObj.errors;\n if (Array.isArray(val) && val.length > 0) return String(val[0]);\n return null;\n },\n ];\n\n for (const checkPath of checkPaths) {\n const result = checkPath();\n if (result && result.trim().length > 0) {\n return result.trim();\n }\n }\n\n // Handle validation errors (common format)\n if (errorObj.validation && Array.isArray(errorObj.validation)) {\n const validationErrors = errorObj.validation\n .map((v: unknown) => {\n if (v && typeof v === 'object') {\n const vObj = v as Record<string, unknown>;\n return vObj.message || vObj.error || String(v);\n }\n return String(v);\n })\n .filter(Boolean)\n .join(', ');\n if (validationErrors) {\n return `Validation error: ${validationErrors}`;\n }\n }\n\n // Handle specific Evolution API error patterns\n if (typeof errorObj.statusCode === 'number' && typeof errorObj.statusText === 'string') {\n return `${errorObj.statusCode}: ${errorObj.statusText}`;\n }\n\n // Last resort: try to stringify the object meaningfully\n const keys = Object.keys(errorObj);\n if (keys && keys.length > 0) {\n try {\n return JSON.stringify(errorObj);\n } catch {\n return '[Complex error object]';\n }\n }\n } catch (error) {\n // If any error occurs during extraction, return a safe message\n return '[Error parsing error message]';\n }\n }\n\n return null;\n}\n\n/**\n * Legacy error message patterns for specific Evolution API errors\n * Kept for backward compatibility\n */\ninterface ErrorPattern {\n pattern: (obj: unknown) => boolean;\n message: string | ((obj: unknown) => string);\n}\n\nconst SpecificErrorPatterns: ErrorPattern[] = [\n {\n pattern: (obj: unknown) => {\n if (!obj || typeof obj !== 'object') return false;\n const o = obj as Record<string, unknown>;\n return (\n Array.isArray(o.message) &&\n o.message.some((m: unknown) => {\n if (!m || typeof m !== 'object') return false;\n const mObj = m as Record<string, unknown>;\n return mObj.exists === false && 'jid' in mObj && 'number' in mObj;\n })\n );\n },\n message: 'Provided number is not a valid WhatsApp number',\n },\n {\n pattern: (obj: unknown) => {\n if (!obj || typeof obj !== 'object') return false;\n const o = obj as Record<string, unknown>;\n return (\n Array.isArray(o.message) &&\n o.message.some((m: unknown) => typeof m === 'string' && m.includes('Media upload failed'))\n );\n },\n message: 'Media upload failed on all hosts',\n },\n {\n pattern: (obj: unknown) => {\n if (!obj || typeof obj !== 'object') return false;\n const o = obj as Record<string, unknown>;\n return (\n Array.isArray(o.message) &&\n o.message.some((m: unknown) => typeof m === 'string' && m.includes('No session'))\n );\n },\n message: 'No session found, try restarting your instance',\n },\n {\n pattern: (obj: unknown) => {\n if (!obj || typeof obj !== 'object') return false;\n const o = obj as Record<string, unknown>;\n return (\n Array.isArray(o.message) &&\n o.message.some((m: unknown) => typeof m === 'string' && m.includes('AggregateError'))\n );\n },\n message: 'Connection error occurred',\n },\n {\n pattern: (obj: unknown) => {\n if (!obj || typeof obj !== 'object') return false;\n const o = obj as Record<string, unknown>;\n return (\n Array.isArray(o.message) &&\n o.message.some((m: unknown) => typeof m === 'string' && m.includes('AxiosError'))\n );\n },\n message: (obj: unknown) => {\n if (!obj || typeof obj !== 'object') return 'Network error occurred';\n const o = obj as Record<string, unknown>;\n if (Array.isArray(o.message) && o.message.length > 0) {\n return String(o.message[0]);\n }\n return 'Network error occurred';\n },\n },\n];\n\n/**\n * Enhanced error message extraction with specific pattern matching\n */\nfunction getErrorMessage(response: unknown): string | null {\n // First try the general extraction\n const generalMessage = extractErrorMessage(response);\n if (generalMessage) {\n return generalMessage;\n }\n\n // Then try specific patterns\n if (typeof response === 'object' && response !== null) {\n for (const { pattern, message } of SpecificErrorPatterns) {\n try {\n if (pattern(response)) {\n return typeof message === 'string' ? message : message(response);\n }\n } catch {\n // Continue to next pattern if this one fails\n }\n }\n }\n\n return null;\n}\n","import type { ClientOptions } from '../schemas/client';\nimport type { APIRequestInit } from '../types/api';\n\nimport { EvolutionApiError, extractErrorMessage } from './errors';\n\nexport class ApiService {\n constructor(private options: ClientOptions) {}\n\n setInstance(instance: string) {\n this.options.instance = instance;\n }\n\n async request<T = unknown>(path: string, options: APIRequestInit = {}): Promise<T> {\n // Validate input parameters\n if (!path || typeof path !== 'string' || path?.trim()?.length === 0) {\n throw new EvolutionApiError('Invalid path parameter', {\n message: 'Path must be a non-empty string',\n path,\n });\n }\n\n if (!this.options.serverUrl || typeof this.options.serverUrl !== 'string') {\n throw new EvolutionApiError('Invalid server URL configuration', {\n message: 'Server URL must be configured and be a valid string',\n serverUrl: this.options.serverUrl,\n });\n }\n\n const { isInstanceUrl = true } = options;\n let instance = this.options.instance;\n\n // Priority: options.instance > this.options.instance\n if (options.instance) {\n instance = options.instance;\n delete options.instance;\n }\n\n if (isInstanceUrl && !instance) {\n throw new EvolutionApiError('Instance not set', {\n message:\n 'Please set the instance before making a request or pass instance in the method options.',\n path,\n isInstanceUrl,\n });\n }\n\n const { init, params } = this.makeInit(options);\n\n const urlPath = isInstanceUrl ? `/${path}/${instance}/` : `/${path}/`;\n const url = new URL(urlPath, this.options.serverUrl);\n\n // Add query parameters if any\n if (params.toString()) {\n url.search = params.toString();\n }\n\n // Generate and store curl command for debugging\n const curlCommand = this.generateCurlCommand(\n init.method || 'GET',\n url.toString(),\n init.headers,\n init.body as string,\n );\n\n // Print curl command before making the request\n if (this.options.debug) {\n console.log('\\n=== CURL COMMAND ===');\n console.log(curlCommand);\n console.log('===================\\n');\n }\n\n let response: Response;\n let data: any;\n let responseText: string = '';\n\n try {\n response = await fetch(url, init);\n responseText = await response.text();\n\n // Only parse as JSON if there's content\n data = responseText ? JSON.parse(responseText) : null;\n } catch (error) {\n if (this.options.debug) {\n console.log(error);\n\n // Print curl command again in case of error for easier debugging\n console.log('\\n=== CURL COMMAND (ERROR) ===');\n console.log(curlCommand);\n console.log('============================\\n');\n }\n\n // Handle network errors or JSON parsing errors\n if (error instanceof SyntaxError && error.message.includes('JSON')) {\n throw new EvolutionApiError('Failed to parse response as JSON', {\n originalError: error,\n responseText: responseText || 'Empty response',\n url: url.toString(),\n status: response?.status,\n });\n }\n throw new EvolutionApiError('Network or parsing error', {\n originalError: error,\n url: url.toString(),\n responseText: responseText || 'No response',\n });\n }\n\n // Print API response in JSON format\n if (this.options.debug) {\n console.log('\\n=== API RESPONSE ===');\n console.log(JSON.stringify(data, null, 2));\n console.log('===================\\n');\n }\n\n if (!response.ok) {\n // Print curl command again in case of HTTP error for easier debugging\n if (this.options.debug) {\n console.log('\\n=== CURL COMMAND (HTTP ERROR) ===');\n console.log(curlCommand);\n console.log('================================\\n');\n }\n\n // Extract meaningful error message from the response\n const errorMessage =\n extractErrorMessage(data) ||\n `Request failed with status ${response.status}: ${response.statusText}`;\n\n throw new EvolutionApiError(\n errorMessage,\n {\n message: errorMessage,\n response: data || {},\n url: url.toString(),\n params: params.toString(),\n body: options.body || {},\n },\n response.status,\n );\n }\n\n return data;\n }\n\n private makeInit(options: APIRequestInit): {\n init: RequestInit;\n params: URLSearchParams;\n } {\n const init: RequestInit = {\n method: options.method || 'GET',\n headers: {\n 'Content-Type': 'application/json',\n apikey: this.options.token, // Evolution API uses apikey header\n ...this.options.headers,\n ...options.headers,\n },\n };\n\n if (options.body) {\n init.body = JSON.stringify(options.body);\n }\n\n const params = new URLSearchParams();\n if (options.params) {\n // Convert any object to URLSearchParams\n Object.entries(options.params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.append(key, String(value));\n }\n });\n }\n\n return { init, params };\n }\n\n private generateCurlCommand(\n method: string,\n url: string,\n headers: Record<string, string> | HeadersInit,\n body?: BodyInit,\n ): string {\n const curlParts = ['curl'];\n\n // Add method\n if (method !== 'GET') {\n curlParts.push(`-X ${method}`);\n }\n\n // Add headers\n let headerEntries: [string, string][];\n\n if (headers instanceof Headers) {\n const entries: [string, string][] = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n headerEntries = entries;\n } else {\n headerEntries = Object.entries(headers as Record<string, string>);\n }\n\n headerEntries.forEach(([key, value]) => {\n // Skip logging the apikey header for security\n if (key.toLowerCase() !== 'apikey') {\n curlParts.push(`-H '${key}: ${value}'`);\n } else {\n curlParts.push(`-H '${key}: [REDACTED]'`);\n }\n });\n\n // Add body if present\n if (body) {\n const bodyStr = typeof body === 'string' ? body : JSON.stringify(body);\n curlParts.push(`-d '${bodyStr}'`);\n }\n\n // Add URL\n curlParts.push(`'${url}'`);\n\n return curlParts.join(' \\\\\\n ');\n }\n\n async get<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'GET' });\n }\n\n async post<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'POST' });\n }\n\n async put<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'PUT' });\n }\n\n async patch<T = unknown>(path: string, options: Omit<APIRequestInit, 'method'> = {}): Promise<T> {\n return this.request<T>(path, { ...options, method: 'PATCH' });\n }\n\n async delete<T = unknown>(\n path: string,\n options: Omit<APIRequestInit, 'method'> = {},\n ): Promise<T> {\n return this.request<T>(path, { ...options, method: 'DELETE' });\n }\n}\n","export const Routes = {\n Message: {\n SendText: \"message/sendText\",\n SendMedia: \"message/sendMedia\",\n SendVoice: \"message/sendWhatsAppAudio\",\n SendSticker: \"message/sendSticker\",\n SendLocation: \"message/sendLocation\",\n SendContact: \"message/sendContact\",\n SendPoll: \"message/sendPoll\",\n SendReaction: \"message/sendReaction\",\n SendTemplate: \"message/sendTemplate\",\n SendStatus: \"message/sendStatus\",\n SendList: \"message/sendList\",\n },\n Chats: {\n Check: \"chat/whatsappNumbers\",\n FindAll: \"chat/findChats\",\n SendPresence: \"chat/sendPresence\",\n MarkAsRead: \"chat/markMessageAsRead\",\n MarkAsUnread: \"chat/markChatUnread\",\n Archive: \"chat/archive\",\n DeleteMessage: \"chat/deleteMessageForEveryone\",\n FetchProfilePicture: \"chat/fetchProfilePictureUrl\",\n FindContacts: \"chat/findContacts\",\n FindMessages: \"chat/findMessages\",\n FindStatusMessage: \"chat/findStatusMessage\",\n UpdateMessage: \"chat/updateMessage\",\n GetBase64FromMediaMessage: \"chat/getBase64FromMediaMessage\",\n },\n Groups: {\n FindAll: \"group/fetchAllGroups\",\n FindByJid: \"group/findGroupInfos\",\n FindByInviteCode: \"group/inviteInfo\",\n Create: \"group/create\",\n UpdatePicture: \"group/updateGroupPicture\",\n UpdateSubject: \"group/updateGroupSubject\",\n UpdateDescription: \"group/updateGroupDescription\",\n FetchInviteCode: \"group/fetchInviteCode\",\n AcceptInviteCode: \"group/acceptInviteCode\",\n RevokeInviteCode: \"group/revokeInviteCode\",\n SendGroupInvite: \"group/sendGroupInvite\",\n FindMembers: \"group/findGroupMembers\",\n UpdateMembers: \"group/updateGroupMembers\",\n UpdateSetting: \"group/updateGroupSetting\",\n ToggleEphemeral: \"group/toggleEphemeral\",\n Leave: \"group/leaveGroup\",\n },\n Profile: {\n FetchBusinessProfile: \"chat/fetchBusinessProfile\",\n FetchProfile: \"chat/fetchProfile\",\n UpdateName: \"chat/updateProfileName\",\n UpdateStatus: \"chat/updateProfileStatus\",\n UpdatePicture: \"chat/updateProfilePicture\",\n RemovePicture: \"chat/removeProfilePicture\",\n FetchPrivacySettings: \"chat/fetchPrivacySettings\",\n UpdatePrivacySettings: \"chat/updatePrivacySettings\",\n },\n Webhook: {\n Set: \"webhook/set\",\n Find: \"webhook/find\",\n },\n Settings: {\n Set: \"settings/set\",\n Find: \"settings/find\",\n },\n Instance: {\n Create: \"instance/create\",\n FetchAll: \"instance/fetchInstances\",\n Connect: \"instance/connect\",\n Restart: \"instance/restart\",\n ConnectionState: \"instance/connectionState\",\n Logout: \"instance/logout\",\n Delete: \"instance/delete\",\n SetPresence: \"instance/setPresence\",\n },\n};\n","// Pure TypeScript types and utility functions for better IDE support and performance\nimport type { GroupInviteCode, GroupJid, Jid } from '../types/tags';\n\n// Type definitions\nexport type PhoneNumber = string;\nexport type MessageId = string;\nexport type ChatId = PhoneNumber | Jid | GroupJid;\nexport type ApiNumber = PhoneNumber | Jid | GroupJid;\nexport type Media = string; // URL or base64 string\n\n// Utility functions\nexport const validatePhoneNumber = (value: string): boolean => {\n // Basic phone number validation: starts with + followed by 7-15 digits\n const phoneRegex = /^\\+\\d{7,15}$/;\n return phoneRegex.test(value);\n};\n\nexport const parsePhoneNumberUtil = (phoneNumber: string): string => {\n // Remove all non-digit characters except the leading +\n const cleaned = phoneNumber.replace(/[^\\d+]/g, '');\n // Ensure it starts with +\n return cleaned.startsWith('+') ? cleaned : `+${cleaned}`;\n};\n\nexport const validateJid = (value: string): boolean => value.endsWith(\"@s.whatsapp.net\");\nexport const validateGroupJid = (value: string): boolean => value.endsWith(\"@g.us\");\nexport const validateGroupInviteCode = (value: string): boolean => \n value.length === 22 && /^[a-zA-Z0-9]{22}$/.test(value);\n\nexport const validateMedia = (value: string): boolean => {\n // Check if it's a URL or base64 string\n try {\n new URL(value);\n return true;\n } catch {\n // Check if it's a valid base64 string\n try {\n return btoa(atob(value)) === value;\n } catch {\n return false;\n }\n }\n};\n\n// Backward compatibility - keeping the schema names but as type aliases\nexport type PhoneNumberSchema = PhoneNumber;\nexport type JidSchema = Jid;\nexport type GroupJidSchema = GroupJid;\nexport type GroupInviteCodeSchema = GroupInviteCode;\nexport type MessageIdSchema = MessageId;\nexport type ChatIdSchema = ChatId;\nexport type ApiNumberSchema = ApiNumber;\nexport type mediaSchema = Media;\n","export type Jid = `${string}@s.whatsapp.net` | string;\nexport const Jid = (jid: string) => jid as Jid;\n\nexport type GroupJid = `${string}@g.us` | string;\nexport const GroupJid = (jid: string) => jid as GroupJid;\n\nexport type GroupInviteCode = string & { __tag: \"GroupInviteCode\" };\nexport const GroupInviteCode = (code: string) => code as GroupInviteCode;\n\nexport type MessageId = string & { __tag: \"MessageId\" };\nexport const MessageId = (id: string) => id as MessageId;\n\nexport type ChatId = string & { __tag: \"ChatId\" };\nexport const ChatId = (id: string) => id as ChatId;\n","/**\n * Get phone number from JID\n * @param jid - JID (remote JID)\n * @returns Phone number with + prefix or the raw number from JID\n */\nexport function phoneNumberFromJid(jid: string): string {\n const numberPart = jid.split('@')[0];\n\n // For individual WhatsApp contacts, add + prefix\n if (jid.endsWith('@s.whatsapp.net')) {\n return `+${numberPart}`;\n }\n\n // For groups, channels, and other formats, return raw number\n return numberPart;\n}\n","// Pure TypeScript interfaces for better IDE support and performance\nimport { ChatId, GroupJid, Jid } from '../../../types/tags';\nimport { phoneNumberFromJid } from '../../../utils/phone-numer-from-jid';\n\n// Raw response interface from API\nexport interface FindAllChatsResponseRaw {\n\tid: string;\n\tremoteJid: string;\n\tname?: string | null;\n\tlabels?: string[] | null;\n\tcreatedAt: string | Date;\n\tupdatedAt: string | Date;\n\tpushName?: string | null;\n\tprofilePicUrl?: string | null;\n}\n\n// Transformed response interface\nexport interface FindAllChatsResponseItem {\n\tid: ChatId;\n\tjid: GroupJid | Jid;\n\tphoneNumber: string; // Raw number or formatted phone number\n\tname?: string;\n\tlabels?: string[];\n\tcreatedAt: Date;\n\tupdatedAt: Date;\n\tpushName?: string;\n\tpictureUrl?: string;\n}\n\nexport type FindAllChatsResponse = FindAllChatsResponseItem[];\n\n// Transform function\nexport const FindAllChatsResponseTransform = (chats: FindAllChatsResponseRaw[]): FindAllChatsResponse =>\n\tchats.map((chat) => ({\n\t\tid: ChatId(chat.id),\n\t\tjid: chat.remoteJid.endsWith(\"@g.us\")\n\t\t\t? GroupJid(chat.remoteJid)\n\t\t\t: Jid(chat.remoteJid),\n\t\tphoneNumber: phoneNumberFromJid(chat.remoteJid),\n\t\tname: chat.name || undefined,\n\t\tlabels: chat.labels || undefined,\n\t\tcreatedAt: new Date(chat.createdAt),\n\t\tupdatedAt: new Date(chat.updatedAt),\n\t\tpushName: chat.pushName || undefined,\n\t\tpictureUrl: chat.profilePicUrl || undefined,\n\t}));\n\n// Backward compatibility alias\nexport const ResponseSchema = { parse: FindAllChatsResponseTransform };\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport { validateGroupJid, validateJid } from '../../schemas/common';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Archive from \"./schemas/archive\";\nimport type * as Check from \"./schemas/check\";\nimport type * as DeleteMessage from \"./schemas/delete-message\";\nimport type * as FetchProfilePicture from \"./schemas/fetch-profile-picture\";\nimport * as FindAll from \"./schemas/find-all\";\nimport type * as FindContacts from \"./schemas/find-contacts\";\nimport type * as FindMessages from \"./schemas/find-messages\";\nimport type * as FindStatusMessage from \"./schemas/find-status-message\";\nimport type * as GetBase64FromMediaMessage from \"./schemas/get-base64-from-media-message\";\nimport type * as MarkAsRead from \"./schemas/mark-as-read\";\nimport type * as MarkAsUnread from \"./schemas/mark-as-unread\";\nimport type * as Presence from \"./schemas/presence\";\nimport type * as UpdateMessage from \"./schemas/update-message\";\n\nexport class ChatsModule {\n constructor(private readonly api: ApiService) {}\n\n /**\n * Checks if phone numbers are registered on WhatsApp\n * @param numbers - Array of phone numbers to check\n * @param methodOptions - Method-specific options (instance override)\n */\n async check(\n numbers: Check.CheckOptions,\n methodOptions?: MethodOptions\n ): Promise<Check.CheckResponse> {\n const body = {\n numbers: Array.isArray(numbers) ? numbers : [numbers],\n };\n const response = await this.api.post(Routes.Chats.Check, {\n body,\n ...methodOptions,\n });\n\n return response as Check.CheckResponse;\n }\n\n /**\n * Gets all chats\n * @param methodOptions - Method-specific options (instance override)\n */\n async findAll(\n methodOptions?: MethodOptions\n ): Promise<FindAll.FindAllChatsResponse> {\n const response = await this.api.post(Routes.Chats.FindAll, {\n body: {},\n ...methodOptions,\n });\n\n return FindAll.FindAllChatsResponseTransform(response as FindAll.FindAllChatsResponseRaw[]);\n }\n\n /**\n * Updates presence status\n * @param params - Presence parameters\n * @param methodOptions - Method-specific options (instance override)\n */\n async updatePresence(\n options: Presence.PresenceOptions,\n methodOptions?: MethodOptions\n ): Promise<void> {\n if (!options.number) {\n throw new Error(\"Number is required\");\n }\n\n if (!validateJid(options.number) && !validateGroupJid(options.number)) {\n options.number = `${options.number}@s.whatsapp.net`;\n }\n\n await this.api.post(Routes.Chats.SendPresence, {\n body: options,\n ...methodOptions,\n });\n }\n\n /**\n * Marks messages as read\n * @param options - Mark as read options\n * @param methodOptions - Method-specific options (instance override)\n */\n async markAsRead(\n options: MarkAsRead.MarkAsReadRequest,\n methodOptions?: MethodOptions\n ): Promise<MarkAsRead.MarkAsReadResponse> {\n const response = await this.api.post(Routes.Chats.MarkAsRead, {\n body: options,\n ...methodOptions,\n });\n\n return response as MarkAsRead.MarkAsReadResponse;\n }\n\n /**\n * Marks messages as unread\n * @param options - Mark as unread options\n * @param methodOptions - Method-specific options (instance override)\n */\n async markAsUnread(\n options: MarkAsUnread.MarkAsUnreadRequest,\n methodOptions?: MethodOptions\n ): Promise<MarkAsUnread.MarkAsUnreadResponse> {\n const response = await this.api.post(Routes.Chats.MarkAsUnread, {\n body: options,\n ...methodOptions,\n });\n\n return response as MarkAsUnread.MarkAsUnreadResponse;\n }\n\n /**\n * Archives a chat\n * @param options - Archive options\n * @param methodOptions - Method-specific options (instance override)\n */\n async archive(\n options: Archive.ArchiveRequest,\n methodOptions?: MethodOptions\n ): Promise<Archive.ArchiveResponse> {\n const response = await this.api.post(Routes.Chats.Archive, {\n body: options,\n ...methodOptions,\n });\n\n return response as Archive.ArchiveResponse;\n }\n\n /**\n * Deletes a message\n * @param options - Delete message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async deleteMessage(\n options: DeleteMessage.DeleteMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<DeleteMessage.DeleteMessageResponse> {\n const response = await this.api.delete(Routes.Chats.DeleteMessage, {\n body: options,\n ...methodOptions,\n });\n\n return response as DeleteMessage.DeleteMessageResponse;\n }\n\n /**\n * Fetches profile picture\n * @param options - Fetch profile picture options\n * @param methodOptions - Method-specific options (instance override)\n */\n async fetchProfilePicture(\n options: FetchProfilePicture.FetchProfilePictureRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchProfilePicture.FetchProfilePictureResponse> {\n const response = await this.api.post(Routes.Chats.FetchProfilePicture, {\n body: options,\n ...methodOptions,\n });\n\n return response as FetchProfilePicture.FetchProfilePictureResponse;\n }\n\n /**\n * Finds contacts\n * @param options - Find contacts options\n * @param methodOptions - Method-specific options (instance override)\n */\n async findContacts(\n options: FindContacts.FindContactsRequest,\n methodOptions?: MethodOptions\n ): Promise<FindContacts.FindContactsResponse> {\n const response = await this.api.post(Routes.Chats.FindContacts, {\n body: options,\n ...methodOptions,\n });\n\n return response as FindContacts.FindContactsResponse;\n }\n\n /**\n * Finds messages\n * @param options - Find messages options\n * @param methodOptions - Method-specific options (instance override)\n */\n async findMessages(\n options: FindMessages.FindMessagesRequest,\n methodOptions?: MethodOptions\n ): Promise<FindMessages.FindMessagesResponse> {\n const response = await this.api.post(Routes.Chats.FindMessages, {\n body: options,\n ...methodOptions,\n });\n\n return response as FindMessages.FindMessagesResponse;\n }\n\n /**\n * Finds status messages\n * @param options - Find status message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async findStatusMessage(\n options: FindStatusMessage.FindStatusMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<FindStatusMessage.FindStatusMessageResponse> {\n const response = await this.api.post(Routes.Chats.FindStatusMessage, {\n body: options,\n ...methodOptions,\n });\n\n return response as FindStatusMessage.FindStatusMessageResponse;\n }\n\n /**\n * Updates a message\n * @param options - Update message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async updateMessage(\n options: UpdateMessage.UpdateMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateMessage.UpdateMessageResponse> {\n const response = await this.api.put(Routes.Chats.UpdateMessage, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateMessage.UpdateMessageResponse;\n }\n\n /**\n * Gets base64 representation of media from a message\n * @param options - Get base64 from media message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async getBase64FromMediaMessage(\n options: GetBase64FromMediaMessage.GetBase64FromMediaMessageRequest,\n methodOptions?: MethodOptions\n ): Promise<GetBase64FromMediaMessage.GetBase64FromMediaMessageResponse> {\n const response = await this.api.post(\n Routes.Chats.GetBase64FromMediaMessage,\n {\n body: options,\n ...methodOptions,\n }\n );\n\n return response as GetBase64FromMediaMessage.GetBase64FromMediaMessageResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\nimport type { GroupInviteCode, GroupJid } from '../../types/tags';\n\nimport type * as AcceptInviteCode from \"./schemas/accept-invite-code\";\nimport type * as Create from \"./schemas/create\";\nimport type * as FetchInviteCode from \"./schemas/fetch-invite-code\";\nimport type * as FindAll from \"./schemas/find-all\";\nimport type * as FindByInviteCode from \"./schemas/find-by-invite-code\";\nimport type * as FindByJid from \"./schemas/find-by-jid\";\nimport type * as FindMembers from \"./schemas/find-members\";\nimport type * as Leave from \"./schemas/leave\";\nimport type * as RevokeInviteCode from \"./schemas/revoke-invite-code\";\nimport type * as SendGroupInvite from \"./schemas/send-group-invite\";\nimport type * as ToggleEphemeral from \"./schemas/toggle-ephemeral\";\nimport type * as UpdateDescription from \"./schemas/update-description\";\nimport type * as UpdateMembers from \"./schemas/update-members\";\nimport type * as UpdatePicture from \"./schemas/update-picture\";\nimport type * as UpdateSetting from \"./schemas/update-setting\";\nimport type * as UpdateSubject from \"./schemas/update-subject\";\n\nexport class GroupsModule {\n constructor(private readonly api: ApiService) {}\n\n /**\n * Gets all groups\n * @param getParticipants - Whether to get participants\n * @param methodOptions - Method-specific options (instance override)\n */\n async findAll(\n getParticipants: false,\n methodOptions?: MethodOptions\n ): Promise<FindAll.FindAllGroupsResponse>;\n async findAll(\n getParticipants: true,\n methodOptions?: MethodOptions\n ): Promise<FindAll.FindAllGroupsWithParticipantsResponse>;\n async findAll(\n getParticipants = false,\n methodOptions?: MethodOptions\n ): Promise<\n | FindAll.FindAllGroupsResponse\n | FindAll.FindAllGroupsWithParticipantsResponse\n > {\n const response = await this.api.get(Routes.Groups.FindAll, {\n params: { getParticipants },\n ...methodOptions,\n });\n\n if (getParticipants) {\n return response as FindAll.FindAllGroupsWithParticipantsResponse;\n }\n return response as FindAll.FindAllGroupsResponse;\n }\n\n /**\n * Gets a group by invite code\n * @param inviteCode - The group invite code (not the URL)\n * @param methodOptions - Method-specific options (instance override)\n */\n async findByInviteCode(\n inviteCode: string | GroupInviteCode,\n methodOptions?: MethodOptions\n ): Promise<FindByInviteCode.FindGroupByInviteCodeResponse> {\n const response = await this.api.get(Routes.Groups.FindByInviteCode, {\n params: { inviteCode: inviteCode as GroupInviteCode },\n ...methodOptions,\n });\n\n return response as FindByInviteCode.FindGroupByInviteCodeResponse;\n }\n\n /**\n * Gets a group by JID\n * @param groupJid - The group JID terminated with \\@g.us\n * @param methodOptions - Method-specific options (instance override)\n */\n async findByJid(\n groupJid: string | GroupJid,\n methodOptions?: MethodOptions\n ): Promise<FindByJid.FindGroupByJidResponse> {\n const response = await this.api.get(Routes.Groups.FindByJid, {\n params: { groupJid: groupJid as GroupJid },\n ...methodOptions,\n });\n\n return response as FindByJid.FindGroupByJidResponse;\n }\n\n async create(\n options: Create.CreateGroupRequest,\n methodOptions?: MethodOptions\n ): Promise<Create.CreateGroupResponse> {\n const response = await this.api.post(Routes.Groups.Create, {\n body: options,\n ...methodOptions,\n });\n\n return response as Create.CreateGroupResponse;\n }\n\n async updatePicture(\n options: UpdatePicture.UpdatePictureRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdatePicture.UpdatePictureResponse> {\n const response = await this.api.post(Routes.Groups.UpdatePicture, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdatePicture.UpdatePictureResponse;\n }\n\n async updateSubject(\n options: UpdateSubject.UpdateSubjectRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateSubject.UpdateSubjectResponse> {\n const response = await this.api.post(Routes.Groups.UpdateSubject, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateSubject.UpdateSubjectResponse;\n }\n\n async updateDescription(\n options: UpdateDescription.UpdateDescriptionRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateDescription.UpdateDescriptionResponse> {\n const response = await this.api.post(Routes.Groups.UpdateDescription, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateDescription.UpdateDescriptionResponse;\n }\n\n async fetchInviteCode(\n options: FetchInviteCode.FetchInviteCodeRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchInviteCode.FetchInviteCodeResponse> {\n const response = await this.api.get(Routes.Groups.FetchInviteCode, {\n params: options,\n ...methodOptions,\n });\n\n return response as FetchInviteCode.FetchInviteCodeResponse;\n }\n\n async acceptInviteCode(\n options: AcceptInviteCode.AcceptInviteCodeRequest,\n methodOptions?: MethodOptions\n ): Promise<AcceptInviteCode.AcceptInviteCodeResponse> {\n const response = await this.api.post(Routes.Groups.AcceptInviteCode, {\n body: options,\n ...methodOptions,\n });\n\n return response as AcceptInviteCode.AcceptInviteCodeResponse;\n }\n\n async revokeInviteCode(\n options: RevokeInviteCode.RevokeInviteCodeRequest,\n methodOptions?: MethodOptions\n ): Promise<RevokeInviteCode.RevokeInviteCodeResponse> {\n const response = await this.api.post(Routes.Groups.RevokeInviteCode, {\n body: options,\n ...methodOptions,\n });\n\n return response as RevokeInviteCode.RevokeInviteCodeResponse;\n }\n\n async sendGroupInvite(\n options: SendGroupInvite.SendGroupInviteRequest,\n methodOptions?: MethodOptions\n ): Promise<SendGroupInvite.SendGroupInviteResponse> {\n const response = await this.api.post(Routes.Groups.SendGroupInvite, {\n body: options,\n ...methodOptions,\n });\n\n return response as SendGroupInvite.SendGroupInviteResponse;\n }\n\n async findMembers(\n options: FindMembers.FindMembersRequest,\n methodOptions?: MethodOptions\n ): Promise<FindMembers.FindMembersResponse> {\n const response = await this.api.get(Routes.Groups.FindMembers, {\n params: options,\n ...methodOptions,\n });\n\n return response as FindMembers.FindMembersResponse;\n }\n\n async updateMembers(\n options: UpdateMembers.UpdateMembersRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateMembers.UpdateMembersResponse> {\n const response = await this.api.post(Routes.Groups.UpdateMembers, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateMembers.UpdateMembersResponse;\n }\n\n async updateSetting(\n options: UpdateSetting.UpdateSettingRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateSetting.UpdateSettingResponse> {\n const response = await this.api.post(Routes.Groups.UpdateSetting, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateSetting.UpdateSettingResponse;\n }\n\n async toggleEphemeral(\n options: ToggleEphemeral.ToggleEphemeralRequest,\n methodOptions?: MethodOptions\n ): Promise<ToggleEphemeral.ToggleEphemeralResponse> {\n const response = await this.api.post(Routes.Groups.ToggleEphemeral, {\n body: options,\n ...methodOptions,\n });\n\n return response as ToggleEphemeral.ToggleEphemeralResponse;\n }\n\n async leave(\n options: Leave.LeaveRequest,\n methodOptions?: MethodOptions\n ): Promise<Leave.LeaveResponse> {\n const response = await this.api.post(Routes.Groups.Leave, {\n body: options,\n ...methodOptions,\n });\n\n return response as Leave.LeaveResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\n\nimport type * as Connect from \"./schemas/connect\";\nimport type * as ConnectionState from \"./schemas/connection-state\";\nimport type * as Create from \"./schemas/create\";\nimport type * as Delete from \"./schemas/delete\";\nimport type * as FetchAll from \"./schemas/fetch-all\";\nimport type * as Logout from \"./schemas/logout\";\nimport type * as Restart from \"./schemas/restart\";\nimport type * as SetPresence from \"./schemas/set-presence\";\n\nimport type { MethodOptions } from '../../types/api';\n\nexport class InstanceModule {\n constructor(private readonly api: ApiService) {}\n\n async create(\n options: Create.CreateInstanceRequest\n ): Promise<Create.CreateInstanceResponse> {\n const response = await this.api.post(Routes.Instance.Create, {\n body: options,\n isInstanceUrl: false,\n });\n return response as Create.CreateInstanceResponse;\n }\n\n async connect(\n options: Connect.ConnectRequest,\n methodOptions?: MethodOptions\n ): Promise<Connect.ConnectResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.get(Routes.Instance.Connect, {\n instance,\n isInstanceUrl: true,\n });\n return response as Connect.ConnectResponse;\n }\n\n async connectionState(\n options: ConnectionState.ConnectionStateRequest,\n methodOptions?: MethodOptions\n ): Promise<ConnectionState.ConnectionStateResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.get(Routes.Instance.ConnectionState, {\n instance,\n isInstanceUrl: true,\n });\n return response as ConnectionState.ConnectionStateResponse;\n }\n\n async logout(\n options: Logout.LogoutRequest,\n methodOptions?: MethodOptions\n ): Promise<Logout.LogoutResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.delete(Routes.Instance.Logout, {\n instance,\n isInstanceUrl: true,\n });\n return response as Logout.LogoutResponse;\n }\n\n async delete(options: Delete.DeleteRequest): Promise<Delete.DeleteResponse> {\n const response = await this.api.delete(Routes.Instance.Delete, {\n instance: options.instanceName,\n isInstanceUrl: true,\n });\n return response as Delete.DeleteResponse;\n }\n\n async restart(\n options: Restart.RestartRequest,\n methodOptions?: MethodOptions\n ): Promise<Restart.RestartResponse> {\n const { instanceName } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.post(Routes.Instance.Restart, {\n instance,\n isInstanceUrl: true,\n });\n return response as Restart.RestartResponse;\n }\n\n async fetchAll(\n options?: FetchAll.FetchAllRequest\n ): Promise<FetchAll.FetchAllResponse> {\n const response = await this.api.get(Routes.Instance.FetchAll, {\n params: options,\n isInstanceUrl: false,\n });\n return response as FetchAll.FetchAllResponse;\n }\n\n async setPresence(\n options: SetPresence.SetPresenceRequest,\n methodOptions?: MethodOptions\n ): Promise<SetPresence.SetPresenceResponse> {\n const { instanceName, ...rest } = options;\n const instance = methodOptions?.instance ?? instanceName;\n if (!instance) {\n throw new Error(\"Instance name is required\");\n }\n const response = await this.api.post(Routes.Instance.SetPresence, {\n body: rest,\n instance,\n isInstanceUrl: true,\n });\n return response as SetPresence.SetPresenceResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Audio from './schemas/audio';\nimport type * as Contact from './schemas/contact';\nimport type * as Document from './schemas/document';\nimport type * as Image from './schemas/image';\nimport type * as List from './schemas/list';\nimport type * as Location from './schemas/location';\nimport type * as Reaction from './schemas/reaction';\nimport type * as Status from './schemas/status';\nimport type * as Sticker from './schemas/sticker';\nimport type * as Template from './schemas/template';\nimport type * as Text from './schemas/text';\nimport type * as Video from './schemas/video';\nimport type * as Voice from './schemas/voice';\n\nexport class MessagesModule {\n constructor(private readonly api: ApiService) {}\n\n /**\n * Sends a text message\n * @param options - Text message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendText(\n options: Text.TextMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Text.TextMessageResponse> {\n const response = await this.api.post(Routes.Message.SendText, {\n body: options,\n ...methodOptions,\n });\n return response as Text.TextMessageResponse;\n }\n\n /**\n * Sends an image\n * @param options - Image message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendImage(\n options: Image.ImageMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Image.ImageMessageResponse> {\n options.mediatype = 'image';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Image.ImageMessageResponse;\n }\n\n /**\n * Sends a video\n * @param options - Video message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendVideo(\n options: Video.VideoMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Video.VideoMessageResponse> {\n options.mediatype = 'video';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Video.VideoMessageResponse;\n }\n\n /**\n * Sends a document\n * @param options - Document message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendDocument(\n options: Document.DocumentMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Document.DocumentMessageResponse> {\n options.mediatype = 'document';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Document.DocumentMessageResponse;\n }\n\n /**\n * Sends an audio\n * @param options - Audio message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendAudio(\n options: Audio.AudioMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Audio.AudioMessageResponse> {\n options.mediatype = 'audio';\n const response = await this.api.post(Routes.Message.SendMedia, {\n body: options,\n ...methodOptions,\n });\n\n return response as Audio.AudioMessageResponse;\n }\n\n /**\n * Sends a voice message\n * @param options - Voice message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendVoice(\n options: Voice.VoiceMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Voice.VoiceMessageResponse> {\n const response = await this.api.post(Routes.Message.SendVoice, {\n body: options,\n ...methodOptions,\n });\n\n return response as Voice.VoiceMessageResponse;\n }\n\n /**\n * Sends a sticker\n * @param options - Sticker message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendSticker(\n options: Sticker.StickerMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Sticker.StickerMessageResponse> {\n const response = await this.api.post(Routes.Message.SendSticker, {\n body: options,\n ...methodOptions,\n });\n\n return response as Sticker.StickerMessageResponse;\n }\n\n /**\n * Sends a location\n * @param options - Location message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendLocation(\n options: Location.LocationMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Location.LocationMessageResponse> {\n const response = await this.api.post(Routes.Message.SendLocation, {\n body: options,\n ...methodOptions,\n });\n\n return response as Location.LocationMessageResponse;\n }\n\n /**\n * Sends a contact\n * @param options - Contact message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendContact(\n options: Contact.ContactMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Contact.ContactMessageResponse> {\n const response = await this.api.post(Routes.Message.SendContact, {\n body: options,\n ...methodOptions,\n });\n\n return response as Contact.ContactMessageResponse;\n }\n\n /**\n * Sends a reaction\n * @param options - Reaction message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendReaction(\n options: Reaction.ReactionMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Reaction.ReactionMessageResponse> {\n const response = await this.api.post(Routes.Message.SendReaction, {\n body: options,\n ...methodOptions,\n });\n\n return response as Reaction.ReactionMessageResponse;\n }\n\n /**\n * Sends a template\n * @param options - Template message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendTemplate(\n options: Template.TemplateMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Template.TemplateMessageResponse> {\n const response = await this.api.post(Routes.Message.SendTemplate, {\n body: options,\n ...methodOptions,\n });\n\n return response as Template.TemplateMessageResponse;\n }\n\n /**\n * Sends a status\n * @param options - Status message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendStatus(\n options: Status.StatusMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<Status.StatusMessageResponse> {\n const response = await this.api.post(Routes.Message.SendStatus, {\n body: options,\n ...methodOptions,\n });\n\n return response as Status.StatusMessageResponse;\n }\n\n /**\n * Sends a list\n * @param options - List message options\n * @param methodOptions - Method-specific options (instance override)\n */\n async sendList(\n options: List.ListMessageOptions,\n methodOptions?: MethodOptions,\n ): Promise<List.ListMessageResponse> {\n const response = await this.api.post(Routes.Message.SendList, {\n body: options,\n ...methodOptions,\n });\n\n return response as List.ListMessageResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as FetchBusinessProfile from \"./schemas/fetch-business-profile\";\nimport type * as FetchPrivacySettings from \"./schemas/fetch-privacy-settings\";\nimport type * as FetchProfile from \"./schemas/fetch-profile\";\nimport type * as RemovePicture from \"./schemas/remove-picture\";\nimport type * as UpdateName from \"./schemas/update-name\";\nimport type * as UpdatePicture from \"./schemas/update-picture\";\nimport type * as UpdatePrivacySettings from \"./schemas/update-privacy-settings\";\nimport type * as UpdateStatus from \"./schemas/update-status\";\n\nexport class ProfileModule {\n constructor(private readonly api: ApiService) {}\n\n async fetchBusinessProfile(\n options: FetchBusinessProfile.FetchBusinessProfileRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchBusinessProfile.FetchBusinessProfileResponse> {\n const response = await this.api.post(Routes.Profile.FetchBusinessProfile, {\n body: options,\n ...methodOptions,\n });\n\n return response as FetchBusinessProfile.FetchBusinessProfileResponse;\n }\n\n async fetchProfile(\n options: FetchProfile.FetchProfileRequest,\n methodOptions?: MethodOptions\n ): Promise<FetchProfile.FetchProfileResponse> {\n const response = await this.api.post(Routes.Profile.FetchProfile, {\n body: options,\n ...methodOptions,\n });\n\n return response as FetchProfile.FetchProfileResponse;\n }\n\n async updateName(\n options: UpdateName.UpdateNameRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateName.UpdateNameResponse> {\n const response = await this.api.post(Routes.Profile.UpdateName, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateName.UpdateNameResponse;\n }\n\n async updateStatus(\n options: UpdateStatus.UpdateStatusRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdateStatus.UpdateStatusResponse> {\n const response = await this.api.post(Routes.Profile.UpdateStatus, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdateStatus.UpdateStatusResponse;\n }\n\n async updatePicture(\n options: UpdatePicture.UpdatePictureRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdatePicture.UpdatePictureResponse> {\n const response = await this.api.post(Routes.Profile.UpdatePicture, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdatePicture.UpdatePictureResponse;\n }\n\n async removePicture(\n methodOptions?: MethodOptions\n ): Promise<RemovePicture.RemovePictureResponse> {\n const response = await this.api.delete(\n Routes.Profile.RemovePicture,\n methodOptions\n );\n\n return response as RemovePicture.RemovePictureResponse;\n }\n\n async fetchPrivacySettings(\n methodOptions?: MethodOptions\n ): Promise<FetchPrivacySettings.FetchPrivacySettingsResponse> {\n const response = await this.api.get(\n Routes.Profile.FetchPrivacySettings,\n methodOptions\n );\n\n return response as FetchPrivacySettings.FetchPrivacySettingsResponse;\n }\n\n async updatePrivacySettings(\n options: UpdatePrivacySettings.UpdatePrivacySettingsRequest,\n methodOptions?: MethodOptions\n ): Promise<UpdatePrivacySettings.UpdatePrivacySettingsResponse> {\n const response = await this.api.put(Routes.Profile.UpdatePrivacySettings, {\n body: options,\n ...methodOptions,\n });\n\n return response as UpdatePrivacySettings.UpdatePrivacySettingsResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Find from \"./schemas/find\";\nimport type * as Set from \"./schemas/set\";\n\nexport class SettingsModule {\n constructor(private readonly api: ApiService) {}\n\n async set(\n options: Set.SetRequest,\n methodOptions?: MethodOptions\n ): Promise<Set.SetResponse> {\n const response = await this.api.post(Routes.Settings.Set, {\n body: options,\n ...methodOptions,\n });\n\n return response as Set.SetResponse;\n }\n\n async find(methodOptions?: MethodOptions): Promise<Find.FindResponse> {\n const response = await this.api.get(Routes.Settings.Find, methodOptions);\n\n return response as Find.FindResponse;\n }\n}\n","import { Routes } from '../../api/routes';\nimport type { ApiService } from '../../api/service';\nimport type { MethodOptions } from '../../types/api';\n\nimport type * as Find from \"./schemas/find\";\nimport type * as Set from \"./schemas/set\";\n\nexport class WebhookModule {\n constructor(private readonly api: ApiService) {}\n\n async set(\n options: Set.SetRequest,\n methodOptions?: MethodOptions\n ): Promise<Set.SetResponse> {\n const response = await this.api.post(Routes.Webhook.Set, {\n body: options,\n ...methodOptions,\n });\n\n return response as Set.SetResponse;\n }\n\n async find(methodOptions?: MethodOptions): Promise<Find.FindResponse> {\n const response = await this.api.get(Routes.Webhook.Find, methodOptions);\n\n return response as Find.FindResponse;\n }\n}\n","export enum MessageUpdateStatus {\n DELIVERY_ACK = \"DELIVERY_ACK\",\n READ = \"READ\",\n SERVER_ACK = \"SERVER_ACK\",\n}\n","export enum WebhookEvent {\n APPLICATION_STARTUP = \"application.startup\",\n QRCODE_UPDATED = \"qrcode.updated\",\n CONNECTION_UPDATE = \"connection.update\",\n MESSAGES_SET = \"messages.set\",\n MESSAGES_UPSERT = \"messages.upsert\",\n MESSAGES_UPDATE = \"messages.update\",\n MESSAGES_DELETE = \"messages.delete\",\n SEND_MESSAGE = \"send.message\",\n CONTACTS_SET = \"contacts.set\",\n CONTACTS_UPSERT = \"contacts.upsert\",\n CONTACTS_UPDATE = \"contacts.update\",\n PRESENCE_UPDATE = \"presence.update\",\n CHATS_SET = \"chats.set\",\n CHATS_UPDATE = \"chats.update\",\n CHATS_UPSERT = \"chats.upsert\",\n CHATS_DELETE = \"chats.delete\",\n GROUPS_UPSERT = \"groups.upsert\",\n GROUPS_UPDATE = \"groups.update\",\n GROUP_PARTICIPANTS_UPDATE = \"group.participants.update\",\n NEW_TOKEN = \"new.jwt\",\n}\n\nexport enum WebhookEventSetup {\n APPLICATION_STARTUP = \"APPLICATION_STARTUP\",\n QRCODE_UPDATED = \"QRCODE_UPDATED\",\n CONNECTION_UPDATE = \"CONNECTION_UPDATE\",\n MESSAGES_SET = \"MESSAGES_SET\",\n MESSAGES_UPSERT = \"MESSAGES_UPSERT\",\n MESSAGES_UPDATE = \"MESSAGES_UPDATE\",\n MESSAGES_DELETE = \"MESSAGES_DELETE\",\n SEND_MESSAGE = \"SEND_MESSAGE\",\n CONTACTS_SET = \"CONTACTS_SET\",\n CONTACTS_UPSERT = \"CONTACTS_UPSERT\",\n CONTACTS_UPDATE = \"CONTACTS_UPDATE\",\n PRESENCE_UPDATE = \"PRESENCE_UPDATE\",\n CHATS_SET = \"CHATS_SET\",\n CHATS_UPDATE = \"CHATS_UPDATE\",\n CHATS_UPSERT = \"CHATS_UPSERT\",\n CHATS_DELETE = \"CHATS_DELETE\",\n GROUPS_UPSERT = \"GROUPS_UPSERT\",\n GROUPS_UPDATE = \"GROUPS_UPDATE\",\n GROUP_PARTICIPANTS_UPDATE = \"GROUP_PARTICIPANTS_UPDATE\",\n NEW_TOKEN = \"NEW_TOKEN\",\n MESSAGES_EDITED = \"MESSAGES_EDITED\",\n LABELS_EDIT = \"LABELS_EDIT\",\n LABELS_ASSOCIATION = \"LABELS_ASSOCIATION\",\n CALL = \"CALL\",\n TYPEBOT_START = \"TYPEBOT_START\",\n TYPEBOT_CHANGE_STATUS = \"TYPEBOT_CHANGE_STATUS\",\n ERRORS = \"ERRORS\",\n ERRORS_WEBHOOK = \"ERRORS_WEBHOOK\",\n}\n","export * from \"./types/webhooks\";\n\nimport { ApiService } from \"./api/service\";\nimport {\n ChatsModule,\n GroupsModule,\n InstanceModule,\n MessagesModule,\n ProfileModule,\n SettingsModule,\n WebhookModule,\n} from \"./modules\";\nimport { type ClientOptions } from \"./schemas/client\";\n\nexport class EvolutionClient {\n /**\n * API service for directly interacting with the Evolution API (no specific typings)\n */\n public readonly api: ApiService;\n\n /**\n * Find and manage chats, send presences and check numbers\n */\n public readonly chats: ChatsModule;\n /**\n * Find and manage groups\n */\n public readonly groups: GroupsModule;\n /**\n * Send messages\n */\n public readonly messages: MessagesModule;\n /**\n * Create and manage instances\n */\n public readonly instances: InstanceModule;\n /**\n * Manage profile settings\n */\n public readonly profile: ProfileModule;\n /**\n * Manage webhooks\n */\n public readonly webhook: WebhookModule;\n /**\n * Manage settings\n */\n public readonly settings: SettingsModule;\n\n /**\n * Evolution Client - API client for interacting with the Evolution API\n * @param options - Client options\n */\n constructor(public options: ClientOptions) {\n this.api = new ApiService(options);\n this.chats = new ChatsModule(this.api);\n this.groups = new GroupsModule(this.api);\n this.messages = new MessagesModule(this.api);\n this.instances = new InstanceModule(this.api);\n this.profile = new ProfileModule(this.api);\n this.webhook = new WebhookModule(this.api);\n this.settings = new SettingsModule(this.api);\n }\n\n setInstance(instance: string) {\n this.options.instance = instance;\n this.api.setInstance(instance);\n }\n}\n\nexport { EvolutionApiError } from \"./api/errors\";\nexport { phoneNumberFromJid } from \"./utils/phone-numer-from-jid\";\nexport { validatePhoneNumber } from \"./schemas/common\";\n\nexport type * from \"./modules/chats/schemas\";\nexport type * from \"./modules/groups/schemas\";\nexport type * from \"./modules/messages/schemas\";\nexport type * from \"./modules/instance/schemas\";\nexport type * from \"./modules/profile/schemas\";\nexport type * from \"./modules/webhook/schemas\";\nexport type * from \"./modules/settings/schemas\";\nexport type { ClientOptions };\n\n// API types\nexport { APIRequestInit, MethodOptions } from \"./types/api\";\nexport { MessageUpdateStatus } from \"./types/messages\";\nexport { ChatId, GroupJid, Jid, MessageId } from \"./types/tags\";\nexport * from \"./types/webhooks\";\nexport { WebhookEvent, WebhookEventSetup } from \"./types/events\";\n"]}
|