@oficialapi/sdk 1.0.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 ADDED
@@ -0,0 +1,8 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var C=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var C__default=/*#__PURE__*/_interopDefault(C);/**
2
+ * OficialAPI SDK
3
+ * @version 1.0.0
4
+ * @license MIT
5
+ */
6
+ var P="https://api.oficialapi.com.br",a=class{constructor(e){this.accessToken=null;this.tokenExpiresAt=0;this.refreshTokenPromise=null;this.config={clientId:e.clientId,clientSecret:e.clientSecret,timeout:e.timeout||3e4,maxRetries:e.maxRetries||3,retryDelay:e.retryDelay||1e3,headers:e.headers||{}},this.axiosInstance=C__default.default.create({baseURL:P,timeout:this.config.timeout,headers:{"Content-Type":"application/json",...this.config.headers}}),this.setupInterceptors();}setupInterceptors(){this.axiosInstance.interceptors.request.use(async e=>{if(e.url?.includes("/auth/token"))return e;let t=await this.getValidToken();return t&&e.headers&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t)return Promise.reject(this.formatError(e));if(e.response?.status===401&&!t._retry){t._retry=true,this.accessToken=null,this.tokenExpiresAt=0;try{let s=await this.getValidToken();if(s&&t.headers)return t.headers.Authorization=`Bearer ${s}`,this.axiosInstance(t)}catch(s){return Promise.reject(this.formatError(s))}}if((!e.response||e.response.status>=500&&e.response.status<600)&&(!t._retryCount||t._retryCount<this.config.maxRetries)){t._retryCount=(t._retryCount||0)+1;let s=this.config.retryDelay*t._retryCount;return await new Promise(o=>setTimeout(o,s)),this.axiosInstance(t)}return Promise.reject(this.formatError(e))});}async getValidToken(){if(this.accessToken&&Date.now()<this.tokenExpiresAt-6e4)return this.accessToken;if(this.refreshTokenPromise)return this.refreshTokenPromise;this.refreshTokenPromise=this.refreshAccessToken();try{return await this.refreshTokenPromise}finally{this.refreshTokenPromise=null;}}async refreshAccessToken(){try{let e=await C__default.default.post(`${P}/api/v1/auth/token`,{client_id:this.config.clientId,client_secret:this.config.clientSecret},{timeout:this.config.timeout});return this.accessToken=e.data.access_token,this.tokenExpiresAt=Date.now()+e.data.expires_in*1e3,this.accessToken}catch(e){throw this.accessToken=null,this.tokenExpiresAt=0,new Error(`Falha ao autenticar: ${e instanceof Error?e.message:"Erro desconhecido"}`)}}formatError(e){if(e.response){let t=e.response.data,n=t?.error?.message||t?.message||e.message,s=t?.error?.details||[],o=new Error(n);return o.status=e.response.status,o.data=e.response.data,o.details=s,o}return e.request?new Error("Erro de conex\xE3o com a API. Verifique sua conex\xE3o com a internet."):e}async get(e,t){return (await this.axiosInstance.get(e,t)).data}async post(e,t,n){return (await this.axiosInstance.post(e,t,n)).data}async put(e,t,n){return (await this.axiosInstance.put(e,t,n)).data}async delete(e,t){return (await this.axiosInstance.delete(e,t)).data}async upload(e,t,n="file",s){let o=new FormData;if(t instanceof Buffer){let g=new Blob([t]);o.append(n,g);}else o.append(n,t);return s&&Object.entries(s).forEach(([g,k])=>{o.append(g,typeof k=="string"?k:JSON.stringify(k));}),(await this.axiosInstance.post(e,o,{headers:{"Content-Type":"multipart/form-data"}})).data}setAccessToken(e,t=86400){this.accessToken=e,this.tokenExpiresAt=Date.now()+t*1e3;}clearToken(){this.accessToken=null,this.tokenExpiresAt=0;}};var r=class{constructor(e){this.httpClient=e;}async getToken(e,t){let n=await this.httpClient.post("/api/v1/auth/token",{client_id:e,client_secret:t});if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao obter token");return n.data}};var d=class{constructor(e){this.httpClient=e;}async list(){let e=await this.httpClient.get("/api/v1/channels");if(!e.success||!e.data)throw new Error(e.error?.message||"Falha ao listar canais");return Array.isArray(e.data)?e.data:[e.data]}};var c=class{constructor(e){this.httpClient=e;}async createWebhook(e){let t=await this.httpClient.post("/api/v1/integrations",{url:e.url,expiresInDays:e.expiresInDays});if(!t.success||!t.data)throw new Error(t.error?.message||"Falha ao criar webhook");return t.data}};var p=class{constructor(e){this.httpClient=e;}async sendText(e){return this.httpClient.post("/api/v1/whatsapp/send-message",{token:e.token,sender:e.sender,messageText:e.messageText})}async sendMedia(e){return this.httpClient.post("/api/v1/whatsapp/send-media",{token:e.token,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendTemplate(e){return this.httpClient.post("/api/v1/whatsapp/send-template",{token:e.token,sender:e.sender,templateName:e.templateName,languageCode:e.languageCode,components:e.components})}async sendButtons(e){return this.httpClient.post("/api/v1/whatsapp/send-buttons",{token:e.token,sender:e.sender,messageText:e.messageText,buttons:e.buttons})}async sendList(e){return this.httpClient.post("/api/v1/whatsapp/send-list",{token:e.token,sender:e.sender,messageText:e.messageText,buttonText:e.buttonText,sections:e.sections})}async replyMessage(e){return this.httpClient.post("/api/v1/whatsapp/reply-message",{token:e.token,messageId:e.messageId,messageText:e.messageText})}async reactMessage(e){return this.httpClient.post("/api/v1/whatsapp/react-message",{token:e.token,messageId:e.messageId,emoji:e.emoji})}async createTemplate(e){return this.httpClient.post("/api/v1/whatsapp/create-template",{token:e.token,name:e.name,language:e.language,category:e.category,components:e.components})}async listTemplates(e){return this.httpClient.get(`/api/v1/whatsapp/templates?token=${encodeURIComponent(e)}`)}async getTemplate(e,t){return this.httpClient.get(`/api/v1/whatsapp/templates/${t}?token=${encodeURIComponent(e)}`)}async uploadMedia(e){return this.httpClient.upload("/api/v1/whatsapp/upload-media",e.file,"file",{token:e.token,filename:e.filename})}async sendOrderDetails(e){return this.httpClient.post("/api/v1/whatsapp/send-order-details",{token:e.token,sender:e.sender,orderId:e.orderId,orderItems:e.orderItems,orderTotal:e.orderTotal,currency:e.currency,paymentMethods:e.paymentMethods})}async sendOrderStatus(e){return this.httpClient.post("/api/v1/whatsapp/send-order-status",{token:e.token,sender:e.sender,orderId:e.orderId,status:e.status,messageText:e.messageText})}async sendAudio(e){return this.httpClient.post("/api/v1/whatsapp/send-audio",{token:e.token,sender:e.sender,audioUrl:e.audioUrl})}async sendSticker(e){return this.httpClient.post("/api/v1/whatsapp/send-sticker",{token:e.token,sender:e.sender,stickerUrl:e.stickerUrl})}async sendVideo(e){return this.httpClient.post("/api/v1/whatsapp/send-video",{token:e.token,sender:e.sender,videoUrl:e.videoUrl,caption:e.caption})}async sendDocument(e){return this.httpClient.post("/api/v1/whatsapp/send-document",{token:e.token,sender:e.sender,documentUrl:e.documentUrl,filename:e.filename,caption:e.caption})}async sendContact(e){return this.httpClient.post("/api/v1/whatsapp/send-contact",{token:e.token,sender:e.sender,contacts:e.contacts})}async sendLocation(e){return this.httpClient.post("/api/v1/whatsapp/send-location",{token:e.token,sender:e.sender,latitude:e.latitude,longitude:e.longitude,name:e.name,address:e.address})}async sendLocationRequest(e){return this.httpClient.post("/api/v1/whatsapp/send-location-request",{token:e.token,sender:e.sender,messageText:e.messageText})}async sendCtaUrl(e){return this.httpClient.post("/api/v1/whatsapp/send-cta-url",{token:e.token,sender:e.sender,messageText:e.messageText,buttonText:e.buttonText,url:e.url})}async sendMediaCarousel(e){return this.httpClient.post("/api/v1/whatsapp/send-media-carousel",{token:e.token,sender:e.sender,cards:e.cards})}};var l=class{constructor(e){this.httpClient=e;}async sendMessage(e){return this.httpClient.post("/api/v1/telegram/send-message",{token:e.token,chatId:e.chatId,text:e.text,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId,disableNotification:e.disableNotification})}async sendMedia(e){return this.httpClient.post("/api/v1/telegram/send-media",{token:e.token,chatId:e.chatId,fileUrl:e.fileUrl,type:e.type,caption:e.caption,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId})}async sendButtons(e){return this.httpClient.post("/api/v1/telegram/send-buttons",{token:e.token,chatId:e.chatId,text:e.text,buttons:e.buttons,parseMode:e.parseMode})}async sendLocation(e){return this.httpClient.post("/api/v1/telegram/send-location",{token:e.token,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,livePeriod:e.livePeriod})}async sendContact(e){return this.httpClient.post("/api/v1/telegram/send-contact",{token:e.token,chatId:e.chatId,phoneNumber:e.phoneNumber,firstName:e.firstName,lastName:e.lastName,vcard:e.vcard})}async sendPoll(e){return this.httpClient.post("/api/v1/telegram/send-poll",{token:e.token,chatId:e.chatId,question:e.question,options:e.options,isAnonymous:e.isAnonymous,type:e.type,correctOptionId:e.correctOptionId})}async sendVenue(e){return this.httpClient.post("/api/v1/telegram/send-venue",{token:e.token,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,title:e.title,address:e.address,foursquareId:e.foursquareId})}async sendDice(e){return this.httpClient.post("/api/v1/telegram/send-dice",{token:e.token,chatId:e.chatId,emoji:e.emoji})}async sendSticker(e){return this.httpClient.post("/api/v1/telegram/send-sticker",{token:e.token,chatId:e.chatId,stickerUrl:e.stickerUrl})}async sendVoice(e){return this.httpClient.post("/api/v1/telegram/send-voice",{token:e.token,chatId:e.chatId,voiceUrl:e.voiceUrl,caption:e.caption,duration:e.duration})}async sendVideoNote(e){return this.httpClient.post("/api/v1/telegram/send-video-note",{token:e.token,chatId:e.chatId,videoNoteUrl:e.videoNoteUrl,duration:e.duration,length:e.length})}async sendMediaGroup(e){return this.httpClient.post("/api/v1/telegram/send-media-group",{token:e.token,chatId:e.chatId,media:e.media})}async sendReplyKeyboard(e){return this.httpClient.post("/api/v1/telegram/send-reply-keyboard",{token:e.token,chatId:e.chatId,text:e.text,keyboard:e.keyboard,resizeKeyboard:e.resizeKeyboard,oneTimeKeyboard:e.oneTimeKeyboard})}async editMessage(e){return this.httpClient.post("/api/v1/telegram/edit-message",{token:e.token,chatId:e.chatId,messageId:e.messageId,text:e.text,parseMode:e.parseMode})}async deleteMessage(e){return this.httpClient.post("/api/v1/telegram/delete-message",{token:e.token,chatId:e.chatId,messageId:e.messageId})}};var h=class{constructor(e){this.httpClient=e;}async sendText(e){return this.httpClient.post("/api/v1/webchat/send-text",{token:e.token,sender:e.sender,messageText:e.messageText})}async sendMedia(e){return this.httpClient.post("/api/v1/webchat/send-media",{token:e.token,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendCarousel(e){return this.httpClient.post("/api/v1/webchat/send-carousel",{token:e.token,sender:e.sender,cards:e.cards})}async sendForm(e){return this.httpClient.post("/api/v1/webchat/send-form",{token:e.token,sender:e.sender,title:e.title,fields:e.fields,submitButtonText:e.submitButtonText})}async sendQuickReplies(e){return this.httpClient.post("/api/v1/webchat/send-quick-replies",{token:e.token,sender:e.sender,messageText:e.messageText,quickReplies:e.quickReplies})}async sendCard(e){return this.httpClient.post("/api/v1/webchat/send-card",{token:e.token,sender:e.sender,title:e.title,description:e.description,imageUrl:e.imageUrl,buttons:e.buttons})}async sendButtons(e){return this.httpClient.post("/api/v1/webchat/send-buttons",{token:e.token,sender:e.sender,messageText:e.messageText,buttons:e.buttons})}};var m=class{constructor(e){this.httpClient=e;}async listPosts(e){return this.httpClient.post("/api/v1/facebook/list-posts",{token:e.token,pageId:e.pageId,limit:e.limit})}async listComments(e){return this.httpClient.post("/api/v1/facebook/list-comments",{token:e.token,postId:e.postId,limit:e.limit})}async createPost(e){return this.httpClient.post("/api/v1/facebook/create-post",{token:e.token,pageId:e.pageId,message:e.message,link:e.link})}async replyComment(e){return this.httpClient.post("/api/v1/facebook/reply-comment",{token:e.token,commentId:e.commentId,message:e.message})}async deleteComment(e){return this.httpClient.post("/api/v1/facebook/delete-comment",{token:e.token,commentId:e.commentId})}async sendText(e){return this.httpClient.post("/api/v1/facebook/send-text",{token:e.token,recipientId:e.recipientId,message:e.message})}async sendMedia(e){return this.httpClient.post("/api/v1/facebook/send-media",{token:e.token,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendButtons(e){return this.httpClient.post("/api/v1/facebook/send-buttons",{token:e.token,recipientId:e.recipientId,message:e.message,buttons:e.buttons})}async sendSticker(e){return this.httpClient.post("/api/v1/facebook/send-sticker",{token:e.token,recipientId:e.recipientId,stickerId:e.stickerId})}async replyMessage(e){return this.httpClient.post("/api/v1/facebook/reply-message",{token:e.token,messageId:e.messageId,message:e.message})}async replyMedia(e){return this.httpClient.post("/api/v1/facebook/reply-media",{token:e.token,messageId:e.messageId,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sharePost(e){return this.httpClient.post("/api/v1/facebook/share-post",{token:e.token,mediaId:e.mediaId,recipientId:e.recipientId})}};var u=class{constructor(e){this.httpClient=e;}async sendPrivateReply(e){return this.httpClient.post("/api/v1/instagram/private-reply",{token:e.token,commentId:e.commentId,message:e.message})}async sendText(e){return this.httpClient.post("/api/v1/instagram/messages/text",{token:e.token,recipientId:e.recipientId,message:e.message})}async sendMedia(e){return this.httpClient.post("/api/v1/instagram/messages/media",{token:e.token,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendImages(e){return this.httpClient.post("/api/v1/instagram/messages/images",{token:e.token,recipientId:e.recipientId,images:e.images})}async sendSticker(e){return this.httpClient.post("/api/v1/instagram/messages/sticker",{token:e.token,recipientId:e.recipientId,stickerType:e.stickerType})}async reactMessage(e){return this.httpClient.post("/api/v1/instagram/messages/reaction",{token:e.token,messageId:e.messageId,reactionType:e.reactionType})}async removeReaction(e,t){return this.httpClient.delete(`/api/v1/instagram/messages/reaction?token=${encodeURIComponent(e)}&messageId=${encodeURIComponent(t)}`)}async sendQuickReplies(e){return this.httpClient.post("/api/v1/instagram/messages/quick-replies",{token:e.token,recipientId:e.recipientId,message:e.message,quickReplies:e.quickReplies})}async sendGenericTemplate(e){return this.httpClient.post("/api/v1/instagram/messages/generic-template",{token:e.token,recipientId:e.recipientId,elements:e.elements})}async sendButtonTemplate(e){return this.httpClient.post("/api/v1/instagram/messages/button-template",{token:e.token,recipientId:e.recipientId,text:e.text,buttons:e.buttons})}async sendSenderAction(e){return this.httpClient.post("/api/v1/instagram/messages/sender-action",{token:e.token,recipientId:e.recipientId,action:e.action})}async getUserProfile(e){return this.httpClient.post("/api/v1/instagram/user-profile",{token:e.token,userId:e.userId})}async listPosts(e){return this.httpClient.post("/api/v1/instagram/posts",{token:e.token,userId:e.userId,limit:e.limit})}};var y=class{constructor(e){this.httpClient=new a(e),this.auth=new r(this.httpClient),this.channels=new d(this.httpClient),this.integrations=new c(this.httpClient),this.whatsapp=new p(this.httpClient),this.telegram=new l(this.httpClient),this.webchat=new h(this.httpClient),this.facebook=new m(this.httpClient),this.instagram=new u(this.httpClient);}setAccessToken(e,t=86400){this.httpClient.setAccessToken(e,t);}clearToken(){this.httpClient.clearToken();}},j=y;
7
+ exports.OficialAPISDK=y;exports.default=j;//# sourceMappingURL=index.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client/http-client.ts","../src/modules/auth.ts","../src/modules/channels.ts","../src/modules/integrations.ts","../src/modules/whatsapp.ts","../src/modules/telegram.ts","../src/modules/webchat.ts","../src/modules/facebook.ts","../src/modules/instagram.ts","../src/index.ts"],"names":["API_BASE_URL","HttpClient","config","axios","token","error","response","refreshError","delay","resolve","data","message","errorDetails","formattedError","url","file","fieldName","additionalData","formData","blob","key","value","expiresIn","AuthModule","httpClient","clientId","clientSecret","ChannelsModule","IntegrationsModule","params","WhatsAppModule","templateId","TelegramModule","WebChatModule","FacebookModule","InstagramModule","messageId","OficialAPISDK","index_default"],"mappings":"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","file":"index.js","sourcesContent":["import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\r\nimport { SDKConfig, ApiResponse, TokenResponse } from '../types';\r\n\r\n/**\r\n * URL base da API OficialAPI (fixa)\r\n */\r\nconst API_BASE_URL = 'https://api.oficialapi.com.br';\r\n\r\n/**\r\n * Cliente HTTP robusto com retry automático e tratamento de erros\r\n */\r\nexport class HttpClient {\r\n private axiosInstance: AxiosInstance;\r\n private accessToken: string | null = null;\r\n private tokenExpiresAt: number = 0;\r\n private config: {\r\n clientId: string;\r\n clientSecret: string;\r\n timeout: number;\r\n maxRetries: number;\r\n retryDelay: number;\r\n headers: Record<string, string>;\r\n };\r\n private refreshTokenPromise: Promise<string> | null = null;\r\n\r\n constructor(config: SDKConfig) {\r\n this.config = {\r\n clientId: config.clientId,\r\n clientSecret: config.clientSecret,\r\n timeout: config.timeout || 30000,\r\n maxRetries: config.maxRetries || 3,\r\n retryDelay: config.retryDelay || 1000,\r\n headers: config.headers || {},\r\n };\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: this.config.timeout,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...this.config.headers,\r\n },\r\n });\r\n\r\n this.setupInterceptors();\r\n }\r\n\r\n private setupInterceptors() {\r\n // Request interceptor - adiciona token de autenticação\r\n this.axiosInstance.interceptors.request.use(\r\n async (config) => {\r\n // Não adiciona token para endpoint de autenticação\r\n if (config.url?.includes('/auth/token')) {\r\n return config;\r\n }\r\n\r\n // Garante que temos um token válido\r\n const token = await this.getValidToken();\r\n if (token && config.headers) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - trata erros e retry\r\n this.axiosInstance.interceptors.response.use(\r\n (response) => response,\r\n async (error: AxiosError) => {\r\n const config = error.config as AxiosRequestConfig & { _retry?: boolean; _retryCount?: number };\r\n\r\n // Se não tiver config, não faz retry\r\n if (!config) {\r\n return Promise.reject(this.formatError(error));\r\n }\r\n\r\n // Se for erro 401, tenta renovar token\r\n if (error.response?.status === 401 && !config._retry) {\r\n config._retry = true;\r\n this.accessToken = null;\r\n this.tokenExpiresAt = 0;\r\n\r\n try {\r\n const token = await this.getValidToken();\r\n if (token && config.headers) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n return this.axiosInstance(config);\r\n }\r\n } catch (refreshError) {\r\n return Promise.reject(this.formatError(refreshError as AxiosError));\r\n }\r\n }\r\n\r\n // Retry para erros de rede ou 5xx\r\n const shouldRetry =\r\n (!error.response || (error.response.status >= 500 && error.response.status < 600)) &&\r\n (!config._retryCount || config._retryCount < this.config.maxRetries);\r\n\r\n if (shouldRetry) {\r\n config._retryCount = (config._retryCount || 0) + 1;\r\n const delay = this.config.retryDelay * config._retryCount;\r\n\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return this.axiosInstance(config);\r\n }\r\n\r\n return Promise.reject(this.formatError(error));\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Obtém um token válido, renovando se necessário\r\n */\r\n private async getValidToken(): Promise<string> {\r\n // Se temos um token válido, retorna\r\n if (this.accessToken && Date.now() < this.tokenExpiresAt - 60000) {\r\n return this.accessToken;\r\n }\r\n\r\n // Se já está renovando, aguarda\r\n if (this.refreshTokenPromise) {\r\n return this.refreshTokenPromise;\r\n }\r\n\r\n // Inicia renovação\r\n this.refreshTokenPromise = this.refreshAccessToken();\r\n \r\n try {\r\n const token = await this.refreshTokenPromise;\r\n return token;\r\n } finally {\r\n this.refreshTokenPromise = null;\r\n }\r\n }\r\n\r\n /**\r\n * Renova o token de acesso\r\n */\r\n private async refreshAccessToken(): Promise<string> {\r\n try {\r\n const response = await axios.post<TokenResponse>(\r\n `${API_BASE_URL}/api/v1/auth/token`,\r\n {\r\n client_id: this.config.clientId,\r\n client_secret: this.config.clientSecret,\r\n },\r\n {\r\n timeout: this.config.timeout,\r\n }\r\n );\r\n\r\n this.accessToken = response.data.access_token;\r\n this.tokenExpiresAt = Date.now() + response.data.expires_in * 1000;\r\n\r\n return this.accessToken;\r\n } catch (error) {\r\n this.accessToken = null;\r\n this.tokenExpiresAt = 0;\r\n throw new Error(\r\n `Falha ao autenticar: ${error instanceof Error ? error.message : 'Erro desconhecido'}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Formata erros da API\r\n */\r\n private formatError(error: AxiosError): Error {\r\n if (error.response) {\r\n const data = error.response.data as ApiResponse;\r\n const message = data?.error?.message || data?.message || error.message;\r\n const errorDetails = data?.error?.details || [];\r\n\r\n const formattedError = new Error(message);\r\n (formattedError as any).status = error.response.status;\r\n (formattedError as any).data = error.response.data;\r\n (formattedError as any).details = errorDetails;\r\n\r\n return formattedError;\r\n }\r\n\r\n if (error.request) {\r\n return new Error('Erro de conexão com a API. Verifique sua conexão com a internet.');\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Faz uma requisição GET\r\n */\r\n async get<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.get<ApiResponse<T>>(url, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição POST\r\n */\r\n async post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição PUT\r\n */\r\n async put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição DELETE\r\n */\r\n async delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.delete<ApiResponse<T>>(url, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz upload de arquivo\r\n */\r\n async upload<T = any>(\r\n url: string,\r\n file: File | Blob | Buffer,\r\n fieldName: string = 'file',\r\n additionalData?: Record<string, any>\r\n ): Promise<ApiResponse<T>> {\r\n const formData = new FormData();\r\n\r\n if (file instanceof Buffer) {\r\n const blob = new Blob([file]);\r\n formData.append(fieldName, blob);\r\n } else {\r\n formData.append(fieldName, file);\r\n }\r\n\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));\r\n });\r\n }\r\n\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n });\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Define um token de acesso manualmente (útil para testes)\r\n */\r\n setAccessToken(token: string, expiresIn: number = 86400): void {\r\n this.accessToken = token;\r\n this.tokenExpiresAt = Date.now() + expiresIn * 1000;\r\n }\r\n\r\n /**\r\n * Limpa o token atual\r\n */\r\n clearToken(): void {\r\n this.accessToken = null;\r\n this.tokenExpiresAt = 0;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { TokenResponse } from '../types';\r\n\r\n/**\r\n * Módulo de Autenticação\r\n */\r\nexport class AuthModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Gera um novo token de acesso\r\n */\r\n async getToken(clientId: string, clientSecret: string): Promise<TokenResponse> {\r\n const response = await this.httpClient.post<TokenResponse>('/api/v1/auth/token', {\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao obter token');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { Channel } from '../types';\r\n\r\n/**\r\n * Módulo de Canais\r\n */\r\nexport class ChannelsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista todos os canais do usuário\r\n */\r\n async list(): Promise<Channel[]> {\r\n const response = await this.httpClient.get<Channel[]>('/api/v1/channels');\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao listar canais');\r\n }\r\n\r\n return Array.isArray(response.data) ? response.data : [response.data];\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { CreateWebhookParams, Webhook } from '../types';\r\n\r\n/**\r\n * Módulo de Integrações\r\n */\r\nexport class IntegrationsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Cria um novo webhook\r\n */\r\n async createWebhook(params: CreateWebhookParams): Promise<Webhook> {\r\n const response = await this.httpClient.post<Webhook>('/api/v1/integrations', {\r\n url: params.url,\r\n expiresInDays: params.expiresInDays,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao criar webhook');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWhatsAppTextParams,\r\n SendWhatsAppMediaParams,\r\n SendWhatsAppTemplateParams,\r\n SendWhatsAppButtonsParams,\r\n SendWhatsAppListParams,\r\n ReplyWhatsAppParams,\r\n ReactWhatsAppParams,\r\n CreateTemplateParams,\r\n UploadMediaParams,\r\n SendOrderDetailsParams,\r\n SendOrderStatusParams,\r\n SendWhatsAppAudioParams,\r\n SendWhatsAppStickerParams,\r\n SendWhatsAppVideoParams,\r\n SendWhatsAppDocumentParams,\r\n SendWhatsAppContactParams,\r\n SendWhatsAppLocationParams,\r\n SendWhatsAppLocationRequestParams,\r\n SendWhatsAppCtaUrlParams,\r\n SendWhatsAppMediaCarouselParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WhatsApp - Envio de mensagens e gerenciamento de templates\r\n */\r\nexport class WhatsAppModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendWhatsAppTextParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-message', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia (imagem, vídeo, áudio, documento)\r\n */\r\n async sendMedia(params: SendWhatsAppMediaParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-media', {\r\n token: params.token,\r\n sender: params.sender,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia template\r\n */\r\n async sendTemplate(params: SendWhatsAppTemplateParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-template', {\r\n token: params.token,\r\n sender: params.sender,\r\n templateName: params.templateName,\r\n languageCode: params.languageCode,\r\n components: params.components,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n */\r\n async sendButtons(params: SendWhatsAppButtonsParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-buttons', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia lista interativa\r\n */\r\n async sendList(params: SendWhatsAppListParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-list', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttonText: params.buttonText,\r\n sections: params.sections,\r\n });\r\n }\r\n\r\n /**\r\n * Responde a uma mensagem\r\n */\r\n async replyMessage(params: ReplyWhatsAppParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/reply-message', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n */\r\n async reactMessage(params: ReactWhatsAppParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/react-message', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n emoji: params.emoji,\r\n });\r\n }\r\n\r\n /**\r\n * Cria um template\r\n */\r\n async createTemplate(params: CreateTemplateParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/create-template', {\r\n token: params.token,\r\n name: params.name,\r\n language: params.language,\r\n category: params.category,\r\n components: params.components,\r\n });\r\n }\r\n\r\n /**\r\n * Lista templates\r\n */\r\n async listTemplates(token: string) {\r\n return this.httpClient.get(`/api/v1/whatsapp/templates?token=${encodeURIComponent(token)}`);\r\n }\r\n\r\n /**\r\n * Obtém detalhes de um template\r\n */\r\n async getTemplate(token: string, templateId: string) {\r\n return this.httpClient.get(`/api/v1/whatsapp/templates/${templateId}?token=${encodeURIComponent(token)}`);\r\n }\r\n\r\n /**\r\n * Faz upload de mídia para templates\r\n */\r\n async uploadMedia(params: UploadMediaParams) {\r\n return this.httpClient.upload('/api/v1/whatsapp/upload-media', params.file, 'file', {\r\n token: params.token,\r\n filename: params.filename,\r\n });\r\n }\r\n\r\n /**\r\n * Envia detalhes do pedido com opções de pagamento\r\n */\r\n async sendOrderDetails(params: SendOrderDetailsParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-order-details', {\r\n token: params.token,\r\n sender: params.sender,\r\n orderId: params.orderId,\r\n orderItems: params.orderItems,\r\n orderTotal: params.orderTotal,\r\n currency: params.currency,\r\n paymentMethods: params.paymentMethods,\r\n });\r\n }\r\n\r\n /**\r\n * Atualiza status do pedido\r\n */\r\n async sendOrderStatus(params: SendOrderStatusParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-order-status', {\r\n token: params.token,\r\n sender: params.sender,\r\n orderId: params.orderId,\r\n status: params.status,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia áudio\r\n */\r\n async sendAudio(params: SendWhatsAppAudioParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-audio', {\r\n token: params.token,\r\n sender: params.sender,\r\n audioUrl: params.audioUrl,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n */\r\n async sendSticker(params: SendWhatsAppStickerParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-sticker', {\r\n token: params.token,\r\n sender: params.sender,\r\n stickerUrl: params.stickerUrl,\r\n });\r\n }\r\n\r\n /**\r\n * Envia vídeo\r\n */\r\n async sendVideo(params: SendWhatsAppVideoParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-video', {\r\n token: params.token,\r\n sender: params.sender,\r\n videoUrl: params.videoUrl,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia documento\r\n */\r\n async sendDocument(params: SendWhatsAppDocumentParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-document', {\r\n token: params.token,\r\n sender: params.sender,\r\n documentUrl: params.documentUrl,\r\n filename: params.filename,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia contato\r\n */\r\n async sendContact(params: SendWhatsAppContactParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-contact', {\r\n token: params.token,\r\n sender: params.sender,\r\n contacts: params.contacts,\r\n });\r\n }\r\n\r\n /**\r\n * Envia localização\r\n */\r\n async sendLocation(params: SendWhatsAppLocationParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-location', {\r\n token: params.token,\r\n sender: params.sender,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n name: params.name,\r\n address: params.address,\r\n });\r\n }\r\n\r\n /**\r\n * Solicita localização\r\n */\r\n async sendLocationRequest(params: SendWhatsAppLocationRequestParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-location-request', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botão CTA URL\r\n */\r\n async sendCtaUrl(params: SendWhatsAppCtaUrlParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-cta-url', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttonText: params.buttonText,\r\n url: params.url,\r\n });\r\n }\r\n\r\n /**\r\n * Envia carrossel de mídia\r\n */\r\n async sendMediaCarousel(params: SendWhatsAppMediaCarouselParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-media-carousel', {\r\n token: params.token,\r\n sender: params.sender,\r\n cards: params.cards,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendTelegramTextParams,\r\n SendTelegramMediaParams,\r\n SendTelegramButtonsParams,\r\n SendTelegramLocationParams,\r\n SendTelegramContactParams,\r\n SendTelegramPollParams,\r\n SendTelegramVenueParams,\r\n SendTelegramDiceParams,\r\n SendTelegramStickerParams,\r\n SendTelegramVoiceParams,\r\n SendTelegramVideoNoteParams,\r\n SendTelegramMediaGroupParams,\r\n SendTelegramReplyKeyboardParams,\r\n EditTelegramMessageParams,\r\n DeleteTelegramMessageParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Telegram - Envio de mensagens e gerenciamento\r\n */\r\nexport class TelegramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendMessage(params: SendTelegramTextParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-message', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n disableNotification: params.disableNotification,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendTelegramMediaParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-media', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n */\r\n async sendButtons(params: SendTelegramButtonsParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-buttons', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n parseMode: params.parseMode,\r\n });\r\n }\r\n\r\n /**\r\n * Envia localização\r\n */\r\n async sendLocation(params: SendTelegramLocationParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-location', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n livePeriod: params.livePeriod,\r\n });\r\n }\r\n\r\n /**\r\n * Envia contato\r\n */\r\n async sendContact(params: SendTelegramContactParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-contact', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n phoneNumber: params.phoneNumber,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n vcard: params.vcard,\r\n });\r\n }\r\n\r\n /**\r\n * Envia enquete\r\n */\r\n async sendPoll(params: SendTelegramPollParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-poll', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n question: params.question,\r\n options: params.options,\r\n isAnonymous: params.isAnonymous,\r\n type: params.type,\r\n correctOptionId: params.correctOptionId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia venue (local)\r\n */\r\n async sendVenue(params: SendTelegramVenueParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-venue', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n title: params.title,\r\n address: params.address,\r\n foursquareId: params.foursquareId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia dado/emoji animado\r\n */\r\n async sendDice(params: SendTelegramDiceParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-dice', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n emoji: params.emoji,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n */\r\n async sendSticker(params: SendTelegramStickerParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-sticker', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n stickerUrl: params.stickerUrl,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem de voz\r\n */\r\n async sendVoice(params: SendTelegramVoiceParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-voice', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n voiceUrl: params.voiceUrl,\r\n caption: params.caption,\r\n duration: params.duration,\r\n });\r\n }\r\n\r\n /**\r\n * Envia video note\r\n */\r\n async sendVideoNote(params: SendTelegramVideoNoteParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-video-note', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n videoNoteUrl: params.videoNoteUrl,\r\n duration: params.duration,\r\n length: params.length,\r\n });\r\n }\r\n\r\n /**\r\n * Envia grupo de mídia\r\n */\r\n async sendMediaGroup(params: SendTelegramMediaGroupParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-media-group', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n media: params.media,\r\n });\r\n }\r\n\r\n /**\r\n * Envia teclado de resposta\r\n */\r\n async sendReplyKeyboard(params: SendTelegramReplyKeyboardParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-reply-keyboard', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n text: params.text,\r\n keyboard: params.keyboard,\r\n resizeKeyboard: params.resizeKeyboard,\r\n oneTimeKeyboard: params.oneTimeKeyboard,\r\n });\r\n }\r\n\r\n /**\r\n * Edita mensagem\r\n */\r\n async editMessage(params: EditTelegramMessageParams) {\r\n return this.httpClient.post('/api/v1/telegram/edit-message', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n });\r\n }\r\n\r\n /**\r\n * Deleta mensagem\r\n */\r\n async deleteMessage(params: DeleteTelegramMessageParams) {\r\n return this.httpClient.post('/api/v1/telegram/delete-message', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWebChatTextParams,\r\n SendWebChatMediaParams,\r\n SendWebChatCarouselParams,\r\n SendWebChatFormParams,\r\n SendWebChatQuickRepliesParams,\r\n SendWebChatCardParams,\r\n SendWebChatButtonsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WebChat - Envio de mensagens via WebChat\r\n */\r\nexport class WebChatModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendWebChatTextParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-text', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendWebChatMediaParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-media', {\r\n token: params.token,\r\n sender: params.sender,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia carousel\r\n */\r\n async sendCarousel(params: SendWebChatCarouselParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-carousel', {\r\n token: params.token,\r\n sender: params.sender,\r\n cards: params.cards,\r\n });\r\n }\r\n\r\n /**\r\n * Envia formulário\r\n */\r\n async sendForm(params: SendWebChatFormParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-form', {\r\n token: params.token,\r\n sender: params.sender,\r\n title: params.title,\r\n fields: params.fields,\r\n submitButtonText: params.submitButtonText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n */\r\n async sendQuickReplies(params: SendWebChatQuickRepliesParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-quick-replies', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n quickReplies: params.quickReplies,\r\n });\r\n }\r\n\r\n /**\r\n * Envia card\r\n */\r\n async sendCard(params: SendWebChatCardParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-card', {\r\n token: params.token,\r\n sender: params.sender,\r\n title: params.title,\r\n description: params.description,\r\n imageUrl: params.imageUrl,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia botões\r\n */\r\n async sendButtons(params: SendWebChatButtonsParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-buttons', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttons: params.buttons,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n ListPostsParams,\r\n ListCommentsParams,\r\n CreatePostParams,\r\n ReplyCommentParams,\r\n DeleteCommentParams,\r\n SendFacebookTextParams,\r\n SendFacebookMediaParams,\r\n SendFacebookButtonsParams,\r\n SendFacebookStickerParams,\r\n ReplyFacebookMessageParams,\r\n ReplyFacebookMediaParams,\r\n SharePostParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Facebook - Gerenciamento de posts e mensagens\r\n */\r\nexport class FacebookModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista posts de uma página\r\n */\r\n async listPosts(params: ListPostsParams) {\r\n return this.httpClient.post('/api/v1/facebook/list-posts', {\r\n token: params.token,\r\n pageId: params.pageId,\r\n limit: params.limit,\r\n });\r\n }\r\n\r\n /**\r\n * Lista comentários de um post\r\n */\r\n async listComments(params: ListCommentsParams) {\r\n return this.httpClient.post('/api/v1/facebook/list-comments', {\r\n token: params.token,\r\n postId: params.postId,\r\n limit: params.limit,\r\n });\r\n }\r\n\r\n /**\r\n * Cria um post\r\n */\r\n async createPost(params: CreatePostParams) {\r\n return this.httpClient.post('/api/v1/facebook/create-post', {\r\n token: params.token,\r\n pageId: params.pageId,\r\n message: params.message,\r\n link: params.link,\r\n });\r\n }\r\n\r\n /**\r\n * Responde um comentário\r\n */\r\n async replyComment(params: ReplyCommentParams) {\r\n return this.httpClient.post('/api/v1/facebook/reply-comment', {\r\n token: params.token,\r\n commentId: params.commentId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Deleta um comentário\r\n */\r\n async deleteComment(params: DeleteCommentParams) {\r\n return this.httpClient.post('/api/v1/facebook/delete-comment', {\r\n token: params.token,\r\n commentId: params.commentId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendFacebookTextParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-text', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendFacebookMediaParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-media', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n */\r\n async sendButtons(params: SendFacebookButtonsParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-buttons', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n */\r\n async sendSticker(params: SendFacebookStickerParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-sticker', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n stickerId: params.stickerId,\r\n });\r\n }\r\n\r\n /**\r\n * Responde uma mensagem\r\n */\r\n async replyMessage(params: ReplyFacebookMessageParams) {\r\n return this.httpClient.post('/api/v1/facebook/reply-message', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Responde com mídia\r\n */\r\n async replyMedia(params: ReplyFacebookMediaParams) {\r\n return this.httpClient.post('/api/v1/facebook/reply-media', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Compartilha um post do Instagram\r\n */\r\n async sharePost(params: SharePostParams) {\r\n return this.httpClient.post('/api/v1/facebook/share-post', {\r\n token: params.token,\r\n mediaId: params.mediaId,\r\n recipientId: params.recipientId,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendInstagramPrivateReplyParams,\r\n SendInstagramTextParams,\r\n SendInstagramMediaParams,\r\n SendInstagramImagesParams,\r\n SendInstagramStickerParams,\r\n ReactInstagramMessageParams,\r\n SendInstagramQuickRepliesParams,\r\n SendInstagramGenericTemplateParams,\r\n SendInstagramButtonTemplateParams,\r\n SendInstagramSenderActionParams,\r\n GetInstagramUserProfileParams,\r\n ListInstagramPostsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Instagram - Envio de mensagens e gerenciamento\r\n */\r\nexport class InstagramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia resposta privada a comentário\r\n */\r\n async sendPrivateReply(params: SendInstagramPrivateReplyParams) {\r\n return this.httpClient.post('/api/v1/instagram/private-reply', {\r\n token: params.token,\r\n commentId: params.commentId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendInstagramTextParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/text', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendInstagramMediaParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/media', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia múltiplas imagens (carrossel)\r\n */\r\n async sendImages(params: SendInstagramImagesParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/images', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n images: params.images,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker (like/heart)\r\n */\r\n async sendSticker(params: SendInstagramStickerParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sticker', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n stickerType: params.stickerType,\r\n });\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n */\r\n async reactMessage(params: ReactInstagramMessageParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/reaction', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n reactionType: params.reactionType,\r\n });\r\n }\r\n\r\n /**\r\n * Remove reação de uma mensagem\r\n */\r\n async removeReaction(token: string, messageId: string) {\r\n return this.httpClient.delete(`/api/v1/instagram/messages/reaction?token=${encodeURIComponent(token)}&messageId=${encodeURIComponent(messageId)}`);\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n */\r\n async sendQuickReplies(params: SendInstagramQuickRepliesParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/quick-replies', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n quickReplies: params.quickReplies,\r\n });\r\n }\r\n\r\n /**\r\n * Envia template genérico (carrossel)\r\n */\r\n async sendGenericTemplate(params: SendInstagramGenericTemplateParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/generic-template', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n elements: params.elements,\r\n });\r\n }\r\n\r\n /**\r\n * Envia template de botões\r\n */\r\n async sendButtonTemplate(params: SendInstagramButtonTemplateParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/button-template', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia ação do remetente (typing, seen)\r\n */\r\n async sendSenderAction(params: SendInstagramSenderActionParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sender-action', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n action: params.action,\r\n });\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário\r\n */\r\n async getUserProfile(params: GetInstagramUserProfileParams) {\r\n return this.httpClient.post('/api/v1/instagram/user-profile', {\r\n token: params.token,\r\n userId: params.userId,\r\n });\r\n }\r\n\r\n /**\r\n * Lista publicações do Instagram\r\n */\r\n async listPosts(params: ListInstagramPostsParams) {\r\n return this.httpClient.post('/api/v1/instagram/posts', {\r\n token: params.token,\r\n userId: params.userId,\r\n limit: params.limit,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from './client/http-client';\r\nimport { AuthModule } from './modules/auth';\r\nimport { ChannelsModule } from './modules/channels';\r\nimport { IntegrationsModule } from './modules/integrations';\r\nimport { WhatsAppModule } from './modules/whatsapp';\r\nimport { TelegramModule } from './modules/telegram';\r\nimport { WebChatModule } from './modules/webchat';\r\nimport { FacebookModule } from './modules/facebook';\r\nimport { InstagramModule } from './modules/instagram';\r\nimport { SDKConfig } from './types';\r\n\r\n/**\r\n * SDK OficialAPI - Cliente principal\r\n * \r\n * @example\r\n * ```typescript\r\n * import { OficialAPISDK } from '@oficialapi/sdk';\r\n * \r\n * const sdk = new OficialAPISDK({\r\n * clientId: 'your-client-id',\r\n * clientSecret: 'your-client-secret'\r\n * });\r\n * \r\n * // Enviar mensagem WhatsApp\r\n * const result = await sdk.whatsapp.sendText({\r\n * token: 'sk_live_...',\r\n * sender: '5511999999999',\r\n * messageText: 'Olá!'\r\n * });\r\n * ```\r\n */\r\nexport class OficialAPISDK {\r\n private httpClient: HttpClient;\r\n\r\n public readonly auth: AuthModule;\r\n public readonly channels: ChannelsModule;\r\n public readonly integrations: IntegrationsModule;\r\n public readonly whatsapp: WhatsAppModule;\r\n public readonly telegram: TelegramModule;\r\n public readonly webchat: WebChatModule;\r\n public readonly facebook: FacebookModule;\r\n public readonly instagram: InstagramModule;\r\n\r\n constructor(config: SDKConfig) {\r\n this.httpClient = new HttpClient(config);\r\n\r\n // Inicializa módulos\r\n this.auth = new AuthModule(this.httpClient);\r\n this.channels = new ChannelsModule(this.httpClient);\r\n this.integrations = new IntegrationsModule(this.httpClient);\r\n this.whatsapp = new WhatsAppModule(this.httpClient);\r\n this.telegram = new TelegramModule(this.httpClient);\r\n this.webchat = new WebChatModule(this.httpClient);\r\n this.facebook = new FacebookModule(this.httpClient);\r\n this.instagram = new InstagramModule(this.httpClient);\r\n }\r\n\r\n /**\r\n * Define um token de acesso manualmente (útil para testes)\r\n */\r\n setAccessToken(token: string, expiresIn: number = 86400): void {\r\n this.httpClient.setAccessToken(token, expiresIn);\r\n }\r\n\r\n /**\r\n * Limpa o token atual\r\n */\r\n clearToken(): void {\r\n this.httpClient.clearToken();\r\n }\r\n}\r\n\r\n// Exporta tipos\r\nexport * from './types';\r\n\r\n// Exporta instância padrão (opcional)\r\nexport default OficialAPISDK;\r\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,8 @@
1
+ import C from'axios';/**
2
+ * OficialAPI SDK
3
+ * @version 1.0.0
4
+ * @license MIT
5
+ */
6
+ var P="https://api.oficialapi.com.br",a=class{constructor(e){this.accessToken=null;this.tokenExpiresAt=0;this.refreshTokenPromise=null;this.config={clientId:e.clientId,clientSecret:e.clientSecret,timeout:e.timeout||3e4,maxRetries:e.maxRetries||3,retryDelay:e.retryDelay||1e3,headers:e.headers||{}},this.axiosInstance=C.create({baseURL:P,timeout:this.config.timeout,headers:{"Content-Type":"application/json",...this.config.headers}}),this.setupInterceptors();}setupInterceptors(){this.axiosInstance.interceptors.request.use(async e=>{if(e.url?.includes("/auth/token"))return e;let t=await this.getValidToken();return t&&e.headers&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t)return Promise.reject(this.formatError(e));if(e.response?.status===401&&!t._retry){t._retry=true,this.accessToken=null,this.tokenExpiresAt=0;try{let s=await this.getValidToken();if(s&&t.headers)return t.headers.Authorization=`Bearer ${s}`,this.axiosInstance(t)}catch(s){return Promise.reject(this.formatError(s))}}if((!e.response||e.response.status>=500&&e.response.status<600)&&(!t._retryCount||t._retryCount<this.config.maxRetries)){t._retryCount=(t._retryCount||0)+1;let s=this.config.retryDelay*t._retryCount;return await new Promise(o=>setTimeout(o,s)),this.axiosInstance(t)}return Promise.reject(this.formatError(e))});}async getValidToken(){if(this.accessToken&&Date.now()<this.tokenExpiresAt-6e4)return this.accessToken;if(this.refreshTokenPromise)return this.refreshTokenPromise;this.refreshTokenPromise=this.refreshAccessToken();try{return await this.refreshTokenPromise}finally{this.refreshTokenPromise=null;}}async refreshAccessToken(){try{let e=await C.post(`${P}/api/v1/auth/token`,{client_id:this.config.clientId,client_secret:this.config.clientSecret},{timeout:this.config.timeout});return this.accessToken=e.data.access_token,this.tokenExpiresAt=Date.now()+e.data.expires_in*1e3,this.accessToken}catch(e){throw this.accessToken=null,this.tokenExpiresAt=0,new Error(`Falha ao autenticar: ${e instanceof Error?e.message:"Erro desconhecido"}`)}}formatError(e){if(e.response){let t=e.response.data,n=t?.error?.message||t?.message||e.message,s=t?.error?.details||[],o=new Error(n);return o.status=e.response.status,o.data=e.response.data,o.details=s,o}return e.request?new Error("Erro de conex\xE3o com a API. Verifique sua conex\xE3o com a internet."):e}async get(e,t){return (await this.axiosInstance.get(e,t)).data}async post(e,t,n){return (await this.axiosInstance.post(e,t,n)).data}async put(e,t,n){return (await this.axiosInstance.put(e,t,n)).data}async delete(e,t){return (await this.axiosInstance.delete(e,t)).data}async upload(e,t,n="file",s){let o=new FormData;if(t instanceof Buffer){let g=new Blob([t]);o.append(n,g);}else o.append(n,t);return s&&Object.entries(s).forEach(([g,k])=>{o.append(g,typeof k=="string"?k:JSON.stringify(k));}),(await this.axiosInstance.post(e,o,{headers:{"Content-Type":"multipart/form-data"}})).data}setAccessToken(e,t=86400){this.accessToken=e,this.tokenExpiresAt=Date.now()+t*1e3;}clearToken(){this.accessToken=null,this.tokenExpiresAt=0;}};var r=class{constructor(e){this.httpClient=e;}async getToken(e,t){let n=await this.httpClient.post("/api/v1/auth/token",{client_id:e,client_secret:t});if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao obter token");return n.data}};var d=class{constructor(e){this.httpClient=e;}async list(){let e=await this.httpClient.get("/api/v1/channels");if(!e.success||!e.data)throw new Error(e.error?.message||"Falha ao listar canais");return Array.isArray(e.data)?e.data:[e.data]}};var c=class{constructor(e){this.httpClient=e;}async createWebhook(e){let t=await this.httpClient.post("/api/v1/integrations",{url:e.url,expiresInDays:e.expiresInDays});if(!t.success||!t.data)throw new Error(t.error?.message||"Falha ao criar webhook");return t.data}};var p=class{constructor(e){this.httpClient=e;}async sendText(e){return this.httpClient.post("/api/v1/whatsapp/send-message",{token:e.token,sender:e.sender,messageText:e.messageText})}async sendMedia(e){return this.httpClient.post("/api/v1/whatsapp/send-media",{token:e.token,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendTemplate(e){return this.httpClient.post("/api/v1/whatsapp/send-template",{token:e.token,sender:e.sender,templateName:e.templateName,languageCode:e.languageCode,components:e.components})}async sendButtons(e){return this.httpClient.post("/api/v1/whatsapp/send-buttons",{token:e.token,sender:e.sender,messageText:e.messageText,buttons:e.buttons})}async sendList(e){return this.httpClient.post("/api/v1/whatsapp/send-list",{token:e.token,sender:e.sender,messageText:e.messageText,buttonText:e.buttonText,sections:e.sections})}async replyMessage(e){return this.httpClient.post("/api/v1/whatsapp/reply-message",{token:e.token,messageId:e.messageId,messageText:e.messageText})}async reactMessage(e){return this.httpClient.post("/api/v1/whatsapp/react-message",{token:e.token,messageId:e.messageId,emoji:e.emoji})}async createTemplate(e){return this.httpClient.post("/api/v1/whatsapp/create-template",{token:e.token,name:e.name,language:e.language,category:e.category,components:e.components})}async listTemplates(e){return this.httpClient.get(`/api/v1/whatsapp/templates?token=${encodeURIComponent(e)}`)}async getTemplate(e,t){return this.httpClient.get(`/api/v1/whatsapp/templates/${t}?token=${encodeURIComponent(e)}`)}async uploadMedia(e){return this.httpClient.upload("/api/v1/whatsapp/upload-media",e.file,"file",{token:e.token,filename:e.filename})}async sendOrderDetails(e){return this.httpClient.post("/api/v1/whatsapp/send-order-details",{token:e.token,sender:e.sender,orderId:e.orderId,orderItems:e.orderItems,orderTotal:e.orderTotal,currency:e.currency,paymentMethods:e.paymentMethods})}async sendOrderStatus(e){return this.httpClient.post("/api/v1/whatsapp/send-order-status",{token:e.token,sender:e.sender,orderId:e.orderId,status:e.status,messageText:e.messageText})}async sendAudio(e){return this.httpClient.post("/api/v1/whatsapp/send-audio",{token:e.token,sender:e.sender,audioUrl:e.audioUrl})}async sendSticker(e){return this.httpClient.post("/api/v1/whatsapp/send-sticker",{token:e.token,sender:e.sender,stickerUrl:e.stickerUrl})}async sendVideo(e){return this.httpClient.post("/api/v1/whatsapp/send-video",{token:e.token,sender:e.sender,videoUrl:e.videoUrl,caption:e.caption})}async sendDocument(e){return this.httpClient.post("/api/v1/whatsapp/send-document",{token:e.token,sender:e.sender,documentUrl:e.documentUrl,filename:e.filename,caption:e.caption})}async sendContact(e){return this.httpClient.post("/api/v1/whatsapp/send-contact",{token:e.token,sender:e.sender,contacts:e.contacts})}async sendLocation(e){return this.httpClient.post("/api/v1/whatsapp/send-location",{token:e.token,sender:e.sender,latitude:e.latitude,longitude:e.longitude,name:e.name,address:e.address})}async sendLocationRequest(e){return this.httpClient.post("/api/v1/whatsapp/send-location-request",{token:e.token,sender:e.sender,messageText:e.messageText})}async sendCtaUrl(e){return this.httpClient.post("/api/v1/whatsapp/send-cta-url",{token:e.token,sender:e.sender,messageText:e.messageText,buttonText:e.buttonText,url:e.url})}async sendMediaCarousel(e){return this.httpClient.post("/api/v1/whatsapp/send-media-carousel",{token:e.token,sender:e.sender,cards:e.cards})}};var l=class{constructor(e){this.httpClient=e;}async sendMessage(e){return this.httpClient.post("/api/v1/telegram/send-message",{token:e.token,chatId:e.chatId,text:e.text,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId,disableNotification:e.disableNotification})}async sendMedia(e){return this.httpClient.post("/api/v1/telegram/send-media",{token:e.token,chatId:e.chatId,fileUrl:e.fileUrl,type:e.type,caption:e.caption,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId})}async sendButtons(e){return this.httpClient.post("/api/v1/telegram/send-buttons",{token:e.token,chatId:e.chatId,text:e.text,buttons:e.buttons,parseMode:e.parseMode})}async sendLocation(e){return this.httpClient.post("/api/v1/telegram/send-location",{token:e.token,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,livePeriod:e.livePeriod})}async sendContact(e){return this.httpClient.post("/api/v1/telegram/send-contact",{token:e.token,chatId:e.chatId,phoneNumber:e.phoneNumber,firstName:e.firstName,lastName:e.lastName,vcard:e.vcard})}async sendPoll(e){return this.httpClient.post("/api/v1/telegram/send-poll",{token:e.token,chatId:e.chatId,question:e.question,options:e.options,isAnonymous:e.isAnonymous,type:e.type,correctOptionId:e.correctOptionId})}async sendVenue(e){return this.httpClient.post("/api/v1/telegram/send-venue",{token:e.token,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,title:e.title,address:e.address,foursquareId:e.foursquareId})}async sendDice(e){return this.httpClient.post("/api/v1/telegram/send-dice",{token:e.token,chatId:e.chatId,emoji:e.emoji})}async sendSticker(e){return this.httpClient.post("/api/v1/telegram/send-sticker",{token:e.token,chatId:e.chatId,stickerUrl:e.stickerUrl})}async sendVoice(e){return this.httpClient.post("/api/v1/telegram/send-voice",{token:e.token,chatId:e.chatId,voiceUrl:e.voiceUrl,caption:e.caption,duration:e.duration})}async sendVideoNote(e){return this.httpClient.post("/api/v1/telegram/send-video-note",{token:e.token,chatId:e.chatId,videoNoteUrl:e.videoNoteUrl,duration:e.duration,length:e.length})}async sendMediaGroup(e){return this.httpClient.post("/api/v1/telegram/send-media-group",{token:e.token,chatId:e.chatId,media:e.media})}async sendReplyKeyboard(e){return this.httpClient.post("/api/v1/telegram/send-reply-keyboard",{token:e.token,chatId:e.chatId,text:e.text,keyboard:e.keyboard,resizeKeyboard:e.resizeKeyboard,oneTimeKeyboard:e.oneTimeKeyboard})}async editMessage(e){return this.httpClient.post("/api/v1/telegram/edit-message",{token:e.token,chatId:e.chatId,messageId:e.messageId,text:e.text,parseMode:e.parseMode})}async deleteMessage(e){return this.httpClient.post("/api/v1/telegram/delete-message",{token:e.token,chatId:e.chatId,messageId:e.messageId})}};var h=class{constructor(e){this.httpClient=e;}async sendText(e){return this.httpClient.post("/api/v1/webchat/send-text",{token:e.token,sender:e.sender,messageText:e.messageText})}async sendMedia(e){return this.httpClient.post("/api/v1/webchat/send-media",{token:e.token,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendCarousel(e){return this.httpClient.post("/api/v1/webchat/send-carousel",{token:e.token,sender:e.sender,cards:e.cards})}async sendForm(e){return this.httpClient.post("/api/v1/webchat/send-form",{token:e.token,sender:e.sender,title:e.title,fields:e.fields,submitButtonText:e.submitButtonText})}async sendQuickReplies(e){return this.httpClient.post("/api/v1/webchat/send-quick-replies",{token:e.token,sender:e.sender,messageText:e.messageText,quickReplies:e.quickReplies})}async sendCard(e){return this.httpClient.post("/api/v1/webchat/send-card",{token:e.token,sender:e.sender,title:e.title,description:e.description,imageUrl:e.imageUrl,buttons:e.buttons})}async sendButtons(e){return this.httpClient.post("/api/v1/webchat/send-buttons",{token:e.token,sender:e.sender,messageText:e.messageText,buttons:e.buttons})}};var m=class{constructor(e){this.httpClient=e;}async listPosts(e){return this.httpClient.post("/api/v1/facebook/list-posts",{token:e.token,pageId:e.pageId,limit:e.limit})}async listComments(e){return this.httpClient.post("/api/v1/facebook/list-comments",{token:e.token,postId:e.postId,limit:e.limit})}async createPost(e){return this.httpClient.post("/api/v1/facebook/create-post",{token:e.token,pageId:e.pageId,message:e.message,link:e.link})}async replyComment(e){return this.httpClient.post("/api/v1/facebook/reply-comment",{token:e.token,commentId:e.commentId,message:e.message})}async deleteComment(e){return this.httpClient.post("/api/v1/facebook/delete-comment",{token:e.token,commentId:e.commentId})}async sendText(e){return this.httpClient.post("/api/v1/facebook/send-text",{token:e.token,recipientId:e.recipientId,message:e.message})}async sendMedia(e){return this.httpClient.post("/api/v1/facebook/send-media",{token:e.token,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendButtons(e){return this.httpClient.post("/api/v1/facebook/send-buttons",{token:e.token,recipientId:e.recipientId,message:e.message,buttons:e.buttons})}async sendSticker(e){return this.httpClient.post("/api/v1/facebook/send-sticker",{token:e.token,recipientId:e.recipientId,stickerId:e.stickerId})}async replyMessage(e){return this.httpClient.post("/api/v1/facebook/reply-message",{token:e.token,messageId:e.messageId,message:e.message})}async replyMedia(e){return this.httpClient.post("/api/v1/facebook/reply-media",{token:e.token,messageId:e.messageId,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sharePost(e){return this.httpClient.post("/api/v1/facebook/share-post",{token:e.token,mediaId:e.mediaId,recipientId:e.recipientId})}};var u=class{constructor(e){this.httpClient=e;}async sendPrivateReply(e){return this.httpClient.post("/api/v1/instagram/private-reply",{token:e.token,commentId:e.commentId,message:e.message})}async sendText(e){return this.httpClient.post("/api/v1/instagram/messages/text",{token:e.token,recipientId:e.recipientId,message:e.message})}async sendMedia(e){return this.httpClient.post("/api/v1/instagram/messages/media",{token:e.token,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption})}async sendImages(e){return this.httpClient.post("/api/v1/instagram/messages/images",{token:e.token,recipientId:e.recipientId,images:e.images})}async sendSticker(e){return this.httpClient.post("/api/v1/instagram/messages/sticker",{token:e.token,recipientId:e.recipientId,stickerType:e.stickerType})}async reactMessage(e){return this.httpClient.post("/api/v1/instagram/messages/reaction",{token:e.token,messageId:e.messageId,reactionType:e.reactionType})}async removeReaction(e,t){return this.httpClient.delete(`/api/v1/instagram/messages/reaction?token=${encodeURIComponent(e)}&messageId=${encodeURIComponent(t)}`)}async sendQuickReplies(e){return this.httpClient.post("/api/v1/instagram/messages/quick-replies",{token:e.token,recipientId:e.recipientId,message:e.message,quickReplies:e.quickReplies})}async sendGenericTemplate(e){return this.httpClient.post("/api/v1/instagram/messages/generic-template",{token:e.token,recipientId:e.recipientId,elements:e.elements})}async sendButtonTemplate(e){return this.httpClient.post("/api/v1/instagram/messages/button-template",{token:e.token,recipientId:e.recipientId,text:e.text,buttons:e.buttons})}async sendSenderAction(e){return this.httpClient.post("/api/v1/instagram/messages/sender-action",{token:e.token,recipientId:e.recipientId,action:e.action})}async getUserProfile(e){return this.httpClient.post("/api/v1/instagram/user-profile",{token:e.token,userId:e.userId})}async listPosts(e){return this.httpClient.post("/api/v1/instagram/posts",{token:e.token,userId:e.userId,limit:e.limit})}};var y=class{constructor(e){this.httpClient=new a(e),this.auth=new r(this.httpClient),this.channels=new d(this.httpClient),this.integrations=new c(this.httpClient),this.whatsapp=new p(this.httpClient),this.telegram=new l(this.httpClient),this.webchat=new h(this.httpClient),this.facebook=new m(this.httpClient),this.instagram=new u(this.httpClient);}setAccessToken(e,t=86400){this.httpClient.setAccessToken(e,t);}clearToken(){this.httpClient.clearToken();}},j=y;
7
+ export{y as OficialAPISDK,j as default};//# sourceMappingURL=index.mjs.map
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client/http-client.ts","../src/modules/auth.ts","../src/modules/channels.ts","../src/modules/integrations.ts","../src/modules/whatsapp.ts","../src/modules/telegram.ts","../src/modules/webchat.ts","../src/modules/facebook.ts","../src/modules/instagram.ts","../src/index.ts"],"names":["API_BASE_URL","HttpClient","config","axios","token","error","response","refreshError","delay","resolve","data","message","errorDetails","formattedError","url","file","fieldName","additionalData","formData","blob","key","value","expiresIn","AuthModule","httpClient","clientId","clientSecret","ChannelsModule","IntegrationsModule","params","WhatsAppModule","templateId","TelegramModule","WebChatModule","FacebookModule","InstagramModule","messageId","OficialAPISDK","index_default"],"mappings":";;;;;AAMA,IAAMA,CAAAA,CAAe,+BAAA,CAKRC,EAAN,KAAiB,CActB,WAAA,CAAYC,CAAAA,CAAmB,CAZ/B,IAAA,CAAQ,WAAA,CAA6B,IAAA,CACrC,IAAA,CAAQ,eAAyB,CAAA,CASjC,IAAA,CAAQ,mBAAA,CAA8C,IAAA,CAGpD,KAAK,MAAA,CAAS,CACZ,QAAA,CAAUA,CAAAA,CAAO,SACjB,YAAA,CAAcA,CAAAA,CAAO,YAAA,CACrB,OAAA,CAASA,EAAO,OAAA,EAAW,GAAA,CAC3B,UAAA,CAAYA,CAAAA,CAAO,YAAc,CAAA,CACjC,UAAA,CAAYA,CAAAA,CAAO,UAAA,EAAc,IACjC,OAAA,CAASA,CAAAA,CAAO,OAAA,EAAW,EAC7B,CAAA,CAEA,IAAA,CAAK,aAAA,CAAgBC,CAAAA,CAAM,OAAO,CAChC,OAAA,CAASH,CAAAA,CACT,OAAA,CAAS,KAAK,MAAA,CAAO,OAAA,CACrB,OAAA,CAAS,CACP,eAAgB,kBAAA,CAChB,GAAG,IAAA,CAAK,MAAA,CAAO,OACjB,CACF,CAAC,CAAA,CAED,IAAA,CAAK,oBACP,CAEQ,mBAAoB,CAE1B,IAAA,CAAK,cAAc,YAAA,CAAa,OAAA,CAAQ,GAAA,CACtC,MAAOE,GAAW,CAEhB,GAAIA,CAAAA,CAAO,GAAA,EAAK,SAAS,aAAa,CAAA,CACpC,OAAOA,CAAAA,CAIT,IAAME,CAAAA,CAAQ,MAAM,IAAA,CAAK,aAAA,GACzB,OAAIA,CAAAA,EAASF,CAAAA,CAAO,OAAA,GAClBA,EAAO,OAAA,CAAQ,aAAA,CAAgB,CAAA,OAAA,EAAUE,CAAK,IAGzCF,CACT,CAAA,CACCG,CAAAA,EAAU,OAAA,CAAQ,OAAOA,CAAK,CACjC,CAAA,CAGA,IAAA,CAAK,cAAc,YAAA,CAAa,QAAA,CAAS,GAAA,CACtCC,CAAAA,EAAaA,EACd,MAAOD,CAAAA,EAAsB,CAC3B,IAAMH,EAASG,CAAAA,CAAM,MAAA,CAGrB,GAAI,CAACH,EACH,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,YAAYG,CAAK,CAAC,CAAA,CAI/C,GAAIA,EAAM,QAAA,EAAU,MAAA,GAAW,GAAA,EAAO,CAACH,EAAO,MAAA,CAAQ,CACpDA,CAAAA,CAAO,MAAA,CAAS,KAChB,IAAA,CAAK,WAAA,CAAc,KACnB,IAAA,CAAK,cAAA,CAAiB,EAEtB,GAAI,CACF,IAAME,CAAAA,CAAQ,MAAM,IAAA,CAAK,aAAA,EAAc,CACvC,GAAIA,GAASF,CAAAA,CAAO,OAAA,CAClB,OAAAA,CAAAA,CAAO,QAAQ,aAAA,CAAgB,CAAA,OAAA,EAAUE,CAAK,CAAA,CAAA,CACvC,KAAK,aAAA,CAAcF,CAAM,CAEpC,CAAA,MAASK,EAAc,CACrB,OAAO,OAAA,CAAQ,MAAA,CAAO,KAAK,WAAA,CAAYA,CAA0B,CAAC,CACpE,CACF,CAOA,GAAA,CAHG,CAACF,CAAAA,CAAM,UAAaA,CAAAA,CAAM,QAAA,CAAS,MAAA,EAAU,GAAA,EAAOA,EAAM,QAAA,CAAS,MAAA,CAAS,GAAA,IAC5E,CAACH,EAAO,WAAA,EAAeA,CAAAA,CAAO,WAAA,CAAc,IAAA,CAAK,OAAO,UAAA,CAAA,CAE1C,CACfA,CAAAA,CAAO,WAAA,CAAA,CAAeA,EAAO,WAAA,EAAe,CAAA,EAAK,CAAA,CACjD,IAAMM,EAAQ,IAAA,CAAK,MAAA,CAAO,UAAA,CAAaN,CAAAA,CAAO,YAE9C,OAAA,MAAM,IAAI,OAAA,CAASO,CAAAA,EAAY,WAAWA,CAAAA,CAASD,CAAK,CAAC,CAAA,CAClD,IAAA,CAAK,cAAcN,CAAM,CAClC,CAEA,OAAO,QAAQ,MAAA,CAAO,IAAA,CAAK,WAAA,CAAYG,CAAK,CAAC,CAC/C,CACF,EACF,CAKA,MAAc,aAAA,EAAiC,CAE7C,GAAI,IAAA,CAAK,aAAe,IAAA,CAAK,GAAA,EAAI,CAAI,IAAA,CAAK,eAAiB,GAAA,CACzD,OAAO,IAAA,CAAK,WAAA,CAId,GAAI,IAAA,CAAK,mBAAA,CACP,OAAO,IAAA,CAAK,oBAId,IAAA,CAAK,mBAAA,CAAsB,IAAA,CAAK,kBAAA,GAEhC,GAAI,CAEF,OADc,MAAM,KAAK,mBAE3B,CAAA,OAAE,CACA,IAAA,CAAK,oBAAsB,KAC7B,CACF,CAKA,MAAc,oBAAsC,CAClD,GAAI,CACF,IAAMC,EAAW,MAAMH,CAAAA,CAAM,IAAA,CAC3B,CAAA,EAAGH,CAAY,CAAA,kBAAA,CAAA,CACf,CACE,SAAA,CAAW,IAAA,CAAK,OAAO,QAAA,CACvB,aAAA,CAAe,IAAA,CAAK,MAAA,CAAO,YAC7B,CAAA,CACA,CACE,QAAS,IAAA,CAAK,MAAA,CAAO,OACvB,CACF,CAAA,CAEA,OAAA,IAAA,CAAK,WAAA,CAAcM,EAAS,IAAA,CAAK,YAAA,CACjC,IAAA,CAAK,cAAA,CAAiB,KAAK,GAAA,EAAI,CAAIA,CAAAA,CAAS,IAAA,CAAK,WAAa,GAAA,CAEvD,IAAA,CAAK,WACd,CAAA,MAASD,EAAO,CACd,MAAA,IAAA,CAAK,WAAA,CAAc,IAAA,CACnB,KAAK,cAAA,CAAiB,CAAA,CAChB,IAAI,KAAA,CACR,wBAAwBA,CAAAA,YAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,mBAAmB,CAAA,CACtF,CACF,CACF,CAKQ,YAAYA,CAAAA,CAA0B,CAC5C,GAAIA,CAAAA,CAAM,SAAU,CAClB,IAAMK,CAAAA,CAAOL,CAAAA,CAAM,SAAS,IAAA,CACtBM,CAAAA,CAAUD,CAAAA,EAAM,KAAA,EAAO,SAAWA,CAAAA,EAAM,OAAA,EAAWL,CAAAA,CAAM,OAAA,CACzDO,EAAeF,CAAAA,EAAM,KAAA,EAAO,OAAA,EAAW,GAEvCG,CAAAA,CAAiB,IAAI,KAAA,CAAMF,CAAO,EACxC,OAACE,CAAAA,CAAuB,MAAA,CAASR,CAAAA,CAAM,SAAS,MAAA,CAC/CQ,CAAAA,CAAuB,KAAOR,CAAAA,CAAM,QAAA,CAAS,KAC7CQ,CAAAA,CAAuB,OAAA,CAAUD,CAAAA,CAE3BC,CACT,CAEA,OAAIR,CAAAA,CAAM,OAAA,CACD,IAAI,MAAM,wEAAkE,CAAA,CAG9EA,CACT,CAKA,MAAM,GAAA,CAAaS,CAAAA,CAAaZ,CAAAA,CAAsD,CAEpF,QADiB,MAAM,IAAA,CAAK,aAAA,CAAc,GAAA,CAAoBY,EAAKZ,CAAM,CAAA,EACzD,IAClB,CAKA,MAAM,IAAA,CAAcY,CAAAA,CAAaJ,CAAAA,CAAYR,CAAAA,CAAsD,CAEjG,OAAA,CADiB,MAAM,IAAA,CAAK,aAAA,CAAc,KAAqBY,CAAAA,CAAKJ,CAAAA,CAAMR,CAAM,CAAA,EAChE,IAClB,CAKA,MAAM,GAAA,CAAaY,CAAAA,CAAaJ,EAAYR,CAAAA,CAAsD,CAEhG,OAAA,CADiB,MAAM,KAAK,aAAA,CAAc,GAAA,CAAoBY,CAAAA,CAAKJ,CAAAA,CAAMR,CAAM,CAAA,EAC/D,IAClB,CAKA,MAAM,OAAgBY,CAAAA,CAAaZ,CAAAA,CAAsD,CAEvF,OAAA,CADiB,MAAM,IAAA,CAAK,aAAA,CAAc,MAAA,CAAuBY,CAAAA,CAAKZ,CAAM,CAAA,EAC5D,IAClB,CAKA,MAAM,MAAA,CACJY,EACAC,CAAAA,CACAC,CAAAA,CAAoB,MAAA,CACpBC,CAAAA,CACyB,CACzB,IAAMC,CAAAA,CAAW,IAAI,QAAA,CAErB,GAAIH,CAAAA,YAAgB,MAAA,CAAQ,CAC1B,IAAMI,EAAO,IAAI,IAAA,CAAK,CAACJ,CAAI,CAAC,CAAA,CAC5BG,CAAAA,CAAS,MAAA,CAAOF,CAAAA,CAAWG,CAAI,EACjC,CAAA,KACED,CAAAA,CAAS,MAAA,CAAOF,EAAWD,CAAI,CAAA,CAGjC,OAAIE,CAAAA,EACF,OAAO,OAAA,CAAQA,CAAc,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACG,CAAAA,CAAKC,CAAK,CAAA,GAAM,CACvDH,CAAAA,CAAS,MAAA,CAAOE,CAAAA,CAAK,OAAOC,GAAU,QAAA,CAAWA,CAAAA,CAAQ,IAAA,CAAK,SAAA,CAAUA,CAAK,CAAC,EAChF,CAAC,CAAA,CAAA,CAGc,MAAM,IAAA,CAAK,aAAA,CAAc,IAAA,CAAqBP,CAAAA,CAAKI,EAAU,CAC5E,OAAA,CAAS,CACP,cAAA,CAAgB,qBAClB,CACF,CAAC,CAAA,EAEe,IAClB,CAKA,cAAA,CAAed,CAAAA,CAAekB,EAAoB,KAAA,CAAa,CAC7D,KAAK,WAAA,CAAclB,CAAAA,CACnB,IAAA,CAAK,cAAA,CAAiB,KAAK,GAAA,EAAI,CAAIkB,CAAAA,CAAY,IACjD,CAKA,UAAA,EAAmB,CACjB,IAAA,CAAK,WAAA,CAAc,KACnB,IAAA,CAAK,cAAA,CAAiB,EACxB,CACF,ECzQO,IAAMC,CAAAA,CAAN,KAAiB,CACtB,YAAoBC,CAAAA,CAAwB,CAAxB,IAAA,CAAA,UAAA,CAAAA,EAAyB,CAK7C,MAAM,QAAA,CAASC,CAAAA,CAAkBC,CAAAA,CAA8C,CAC7E,IAAMpB,CAAAA,CAAW,MAAM,IAAA,CAAK,UAAA,CAAW,KAAoB,oBAAA,CAAsB,CAC/E,SAAA,CAAWmB,CAAAA,CACX,cAAeC,CACjB,CAAC,CAAA,CAED,GAAI,CAACpB,CAAAA,CAAS,OAAA,EAAW,CAACA,CAAAA,CAAS,KACjC,MAAM,IAAI,KAAA,CAAMA,CAAAA,CAAS,OAAO,OAAA,EAAW,sBAAsB,CAAA,CAGnE,OAAOA,EAAS,IAClB,CACF,CAAA,CClBO,IAAMqB,EAAN,KAAqB,CAC1B,WAAA,CAAoBH,CAAAA,CAAwB,CAAxB,IAAA,CAAA,UAAA,CAAAA,EAAyB,CAK7C,MAAM,IAAA,EAA2B,CAC/B,IAAMlB,CAAAA,CAAW,MAAM,IAAA,CAAK,WAAW,GAAA,CAAe,kBAAkB,CAAA,CAExE,GAAI,CAACA,CAAAA,CAAS,OAAA,EAAW,CAACA,CAAAA,CAAS,KACjC,MAAM,IAAI,KAAA,CAAMA,CAAAA,CAAS,OAAO,OAAA,EAAW,wBAAwB,CAAA,CAGrE,OAAO,MAAM,OAAA,CAAQA,CAAAA,CAAS,IAAI,CAAA,CAAIA,EAAS,IAAA,CAAO,CAACA,CAAAA,CAAS,IAAI,CACtE,CACF,CAAA,CCfO,IAAMsB,CAAAA,CAAN,KAAyB,CAC9B,WAAA,CAAoBJ,CAAAA,CAAwB,CAAxB,gBAAAA,EAAyB,CAK7C,MAAM,aAAA,CAAcK,EAA+C,CACjE,IAAMvB,CAAAA,CAAW,MAAM,KAAK,UAAA,CAAW,IAAA,CAAc,sBAAA,CAAwB,CAC3E,IAAKuB,CAAAA,CAAO,GAAA,CACZ,aAAA,CAAeA,CAAAA,CAAO,aACxB,CAAC,CAAA,CAED,GAAI,CAACvB,EAAS,OAAA,EAAW,CAACA,CAAAA,CAAS,IAAA,CACjC,MAAM,IAAI,KAAA,CAAMA,EAAS,KAAA,EAAO,OAAA,EAAW,wBAAwB,CAAA,CAGrE,OAAOA,CAAAA,CAAS,IAClB,CACF,CAAA,CCGO,IAAMwB,CAAAA,CAAN,KAAqB,CAC1B,WAAA,CAAoBN,CAAAA,CAAwB,CAAxB,IAAA,CAAA,UAAA,CAAAA,EAAyB,CAK7C,MAAM,QAAA,CAASK,CAAAA,CAAgC,CAC7C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,gCAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,WAAA,CAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CAKA,MAAM,UAAUA,CAAAA,CAAiC,CAC/C,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,6BAAA,CAA+B,CACzD,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,QAASA,CAAAA,CAAO,OAAA,CAChB,IAAA,CAAMA,CAAAA,CAAO,KACb,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,CAAAA,CAAoC,CACrD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,iCAAkC,CAC5D,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,YAAA,CAAcA,CAAAA,CAAO,YAAA,CACrB,aAAcA,CAAAA,CAAO,YAAA,CACrB,UAAA,CAAYA,CAAAA,CAAO,UACrB,CAAC,CACH,CAKA,MAAM,YAAYA,CAAAA,CAAmC,CACnD,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,YAAaA,CAAAA,CAAO,WAAA,CACpB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,SAASA,CAAAA,CAAgC,CAC7C,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,4BAAA,CAA8B,CACxD,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,YAAaA,CAAAA,CAAO,WAAA,CACpB,UAAA,CAAYA,CAAAA,CAAO,WACnB,QAAA,CAAUA,CAAAA,CAAO,QACnB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,CAAAA,CAA6B,CAC9C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,iCAAkC,CAC5D,KAAA,CAAOA,EAAO,KAAA,CACd,SAAA,CAAWA,EAAO,SAAA,CAClB,WAAA,CAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,EAA6B,CAC9C,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,gCAAA,CAAkC,CAC5D,KAAA,CAAOA,CAAAA,CAAO,MACd,SAAA,CAAWA,CAAAA,CAAO,SAAA,CAClB,KAAA,CAAOA,EAAO,KAChB,CAAC,CACH,CAKA,MAAM,cAAA,CAAeA,CAAAA,CAA8B,CACjD,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,mCAAoC,CAC9D,KAAA,CAAOA,EAAO,KAAA,CACd,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,SAAUA,CAAAA,CAAO,QAAA,CACjB,QAAA,CAAUA,CAAAA,CAAO,SACjB,UAAA,CAAYA,CAAAA,CAAO,UACrB,CAAC,CACH,CAKA,MAAM,aAAA,CAAczB,CAAAA,CAAe,CACjC,OAAO,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,oCAAoC,kBAAA,CAAmBA,CAAK,CAAC,CAAA,CAAE,CAC5F,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAe2B,EAAoB,CACnD,OAAO,KAAK,UAAA,CAAW,GAAA,CAAI,8BAA8BA,CAAU,CAAA,OAAA,EAAU,kBAAA,CAAmB3B,CAAK,CAAC,CAAA,CAAE,CAC1G,CAKA,MAAM,YAAYyB,CAAAA,CAA2B,CAC3C,OAAO,IAAA,CAAK,WAAW,MAAA,CAAO,+BAAA,CAAiCA,CAAAA,CAAO,IAAA,CAAM,OAAQ,CAClF,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,SAAUA,CAAAA,CAAO,QACnB,CAAC,CACH,CAKA,MAAM,gBAAA,CAAiBA,CAAAA,CAAgC,CACrD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,qCAAA,CAAuC,CACjE,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,OAAA,CAASA,CAAAA,CAAO,OAAA,CAChB,WAAYA,CAAAA,CAAO,UAAA,CACnB,UAAA,CAAYA,CAAAA,CAAO,WACnB,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,cAAA,CAAgBA,EAAO,cACzB,CAAC,CACH,CAKA,MAAM,eAAA,CAAgBA,CAAAA,CAA+B,CACnD,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,oCAAA,CAAsC,CAChE,MAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,QAASA,CAAAA,CAAO,OAAA,CAChB,MAAA,CAAQA,CAAAA,CAAO,OACf,WAAA,CAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAiC,CAC/C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,8BAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,QAAA,CAAUA,CAAAA,CAAO,QACnB,CAAC,CACH,CAKA,MAAM,YAAYA,CAAAA,CAAmC,CACnD,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,WAAYA,CAAAA,CAAO,UACrB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAiC,CAC/C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,6BAAA,CAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,QAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,CAAAA,CAAoC,CACrD,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,gCAAA,CAAkC,CAC5D,MAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,OACf,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,QAAA,CAAUA,EAAO,QAAA,CACjB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,EAAmC,CACnD,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,QAAA,CAAUA,EAAO,QACnB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,CAAAA,CAAoC,CACrD,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,gCAAA,CAAkC,CAC5D,MAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,OACf,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,SAAA,CAAWA,EAAO,SAAA,CAClB,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,QAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,mBAAA,CAAoBA,CAAAA,CAA2C,CACnE,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,wCAAA,CAA0C,CACpE,MAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,OACf,WAAA,CAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CAKA,MAAM,UAAA,CAAWA,CAAAA,CAAkC,CACjD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,gCAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,YAAaA,CAAAA,CAAO,WAAA,CACpB,WAAYA,CAAAA,CAAO,UAAA,CACnB,GAAA,CAAKA,CAAAA,CAAO,GACd,CAAC,CACH,CAKA,MAAM,kBAAkBA,CAAAA,CAAyC,CAC/D,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,sCAAA,CAAwC,CAClE,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,MAAOA,CAAAA,CAAO,KAChB,CAAC,CACH,CACF,CAAA,CCvQO,IAAMG,CAAAA,CAAN,KAAqB,CAC1B,WAAA,CAAoBR,CAAAA,CAAwB,CAAxB,IAAA,CAAA,UAAA,CAAAA,EAAyB,CAK7C,MAAM,WAAA,CAAYK,CAAAA,CAAgC,CAChD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,UAAWA,CAAAA,CAAO,SAAA,CAClB,gBAAA,CAAkBA,CAAAA,CAAO,iBACzB,mBAAA,CAAqBA,CAAAA,CAAO,mBAC9B,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAiC,CAC/C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,8BAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,OAAA,CAASA,CAAAA,CAAO,QAChB,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,OAAA,CAASA,EAAO,OAAA,CAChB,SAAA,CAAWA,CAAAA,CAAO,SAAA,CAClB,iBAAkBA,CAAAA,CAAO,gBAC3B,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAmC,CACnD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,OACf,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,OAAA,CAASA,EAAO,OAAA,CAChB,SAAA,CAAWA,CAAAA,CAAO,SACpB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,EAAoC,CACrD,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,gCAAA,CAAkC,CAC5D,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,QAAA,CAAUA,EAAO,QAAA,CACjB,SAAA,CAAWA,CAAAA,CAAO,SAAA,CAClB,WAAYA,CAAAA,CAAO,UACrB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAmC,CACnD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,UAAWA,CAAAA,CAAO,SAAA,CAClB,QAAA,CAAUA,CAAAA,CAAO,SACjB,KAAA,CAAOA,CAAAA,CAAO,KAChB,CAAC,CACH,CAKA,MAAM,QAAA,CAASA,CAAAA,CAAgC,CAC7C,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,4BAAA,CAA8B,CACxD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,QAASA,CAAAA,CAAO,OAAA,CAChB,WAAA,CAAaA,CAAAA,CAAO,YACpB,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,eAAA,CAAiBA,EAAO,eAC1B,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAiC,CAC/C,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,6BAAA,CAA+B,CACzD,MAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,OACf,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,SAAA,CAAWA,EAAO,SAAA,CAClB,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,QAASA,CAAAA,CAAO,OAAA,CAChB,YAAA,CAAcA,CAAAA,CAAO,YACvB,CAAC,CACH,CAKA,MAAM,SAASA,CAAAA,CAAgC,CAC7C,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,4BAAA,CAA8B,CACxD,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,MAAOA,CAAAA,CAAO,KAChB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAmC,CACnD,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,MAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,OACf,UAAA,CAAYA,CAAAA,CAAO,UACrB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAiC,CAC/C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,8BAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,SAAUA,CAAAA,CAAO,QAAA,CACjB,QAASA,CAAAA,CAAO,OAAA,CAChB,QAAA,CAAUA,CAAAA,CAAO,QACnB,CAAC,CACH,CAKA,MAAM,cAAcA,CAAAA,CAAqC,CACvD,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,kCAAA,CAAoC,CAC9D,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,aAAcA,CAAAA,CAAO,YAAA,CACrB,QAAA,CAAUA,CAAAA,CAAO,SACjB,MAAA,CAAQA,CAAAA,CAAO,MACjB,CAAC,CACH,CAKA,MAAM,eAAeA,CAAAA,CAAsC,CACzD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,mCAAA,CAAqC,CAC/D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,KAAA,CAAOA,CAAAA,CAAO,KAChB,CAAC,CACH,CAKA,MAAM,iBAAA,CAAkBA,EAAyC,CAC/D,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,sCAAA,CAAwC,CAClE,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,IAAA,CAAMA,EAAO,IAAA,CACb,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,eAAgBA,CAAAA,CAAO,cAAA,CACvB,eAAA,CAAiBA,CAAAA,CAAO,eAC1B,CAAC,CACH,CAKA,MAAM,YAAYA,CAAAA,CAAmC,CACnD,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,UAAWA,CAAAA,CAAO,SAAA,CAClB,IAAA,CAAMA,CAAAA,CAAO,KACb,SAAA,CAAWA,CAAAA,CAAO,SACpB,CAAC,CACH,CAKA,MAAM,cAAcA,CAAAA,CAAqC,CACvD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,iCAAA,CAAmC,CAC7D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,SAAA,CAAWA,CAAAA,CAAO,SACpB,CAAC,CACH,CACF,CAAA,CC9MO,IAAMI,EAAN,KAAoB,CACzB,WAAA,CAAoBT,CAAAA,CAAwB,CAAxB,IAAA,CAAA,UAAA,CAAAA,EAAyB,CAK7C,MAAM,SAASK,CAAAA,CAA+B,CAC5C,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,2BAAA,CAA6B,CACvD,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,YAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAgC,CAC9C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,4BAAA,CAA8B,CACxD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,OAAA,CAASA,CAAAA,CAAO,OAAA,CAChB,KAAMA,CAAAA,CAAO,IAAA,CACb,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,EAAmC,CACpD,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,KAAA,CAAOA,EAAO,KAChB,CAAC,CACH,CAKA,MAAM,QAAA,CAASA,CAAAA,CAA+B,CAC5C,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,2BAAA,CAA6B,CACvD,MAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,OACf,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,gBAAA,CAAkBA,CAAAA,CAAO,gBAC3B,CAAC,CACH,CAKA,MAAM,gBAAA,CAAiBA,EAAuC,CAC5D,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,oCAAA,CAAsC,CAChE,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,WAAA,CAAaA,EAAO,WAAA,CACpB,YAAA,CAAcA,CAAAA,CAAO,YACvB,CAAC,CACH,CAKA,MAAM,QAAA,CAASA,EAA+B,CAC5C,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,4BAA6B,CACvD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,KAAA,CAAOA,CAAAA,CAAO,MACd,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,QAAA,CAAUA,EAAO,QAAA,CACjB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,EAAkC,CAClD,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,8BAAA,CAAgC,CAC1D,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,OACf,WAAA,CAAaA,CAAAA,CAAO,YACpB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CACF,CAAA,CCnFO,IAAMK,CAAAA,CAAN,KAAqB,CAC1B,WAAA,CAAoBV,CAAAA,CAAwB,CAAxB,gBAAAA,EAAyB,CAK7C,MAAM,SAAA,CAAUK,EAAyB,CACvC,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,6BAAA,CAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,MACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,KAAA,CAAOA,EAAO,KAChB,CAAC,CACH,CAKA,MAAM,aAAaA,CAAAA,CAA4B,CAC7C,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,gCAAA,CAAkC,CAC5D,KAAA,CAAOA,EAAO,KAAA,CACd,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,MAAOA,CAAAA,CAAO,KAChB,CAAC,CACH,CAKA,MAAM,UAAA,CAAWA,CAAAA,CAA0B,CACzC,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,8BAAA,CAAgC,CAC1D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,OAAA,CAASA,CAAAA,CAAO,OAAA,CAChB,KAAMA,CAAAA,CAAO,IACf,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,CAAAA,CAA4B,CAC7C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,gCAAA,CAAkC,CAC5D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,SAAA,CAAWA,EAAO,SAAA,CAClB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,aAAA,CAAcA,EAA6B,CAC/C,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,iCAAA,CAAmC,CAC7D,MAAOA,CAAAA,CAAO,KAAA,CACd,UAAWA,CAAAA,CAAO,SACpB,CAAC,CACH,CAKA,MAAM,QAAA,CAASA,CAAAA,CAAgC,CAC7C,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,4BAAA,CAA8B,CACxD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,WAAA,CAAaA,EAAO,WAAA,CACpB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,EAAiC,CAC/C,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,6BAAA,CAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,MACd,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,OAAA,CAASA,EAAO,OAAA,CAChB,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,QAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAmC,CACnD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,WAAA,CAAaA,EAAO,WAAA,CACpB,OAAA,CAASA,CAAAA,CAAO,OAAA,CAChB,QAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAmC,CACnD,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,+BAAA,CAAiC,CAC3D,MAAOA,CAAAA,CAAO,KAAA,CACd,WAAA,CAAaA,CAAAA,CAAO,YACpB,SAAA,CAAWA,CAAAA,CAAO,SACpB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,CAAAA,CAAoC,CACrD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,iCAAkC,CAC5D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,UAAWA,CAAAA,CAAO,SAAA,CAClB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,WAAWA,CAAAA,CAAkC,CACjD,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,8BAAA,CAAgC,CAC1D,KAAA,CAAOA,EAAO,KAAA,CACd,SAAA,CAAWA,CAAAA,CAAO,SAAA,CAClB,QAASA,CAAAA,CAAO,OAAA,CAChB,IAAA,CAAMA,CAAAA,CAAO,KACb,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAyB,CACvC,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,6BAAA,CAA+B,CACzD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAA,CAASA,EAAO,OAAA,CAChB,WAAA,CAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CACF,CAAA,CC3IO,IAAMM,EAAN,KAAsB,CAC3B,WAAA,CAAoBX,CAAAA,CAAwB,CAAxB,IAAA,CAAA,UAAA,CAAAA,EAAyB,CAK7C,MAAM,iBAAiBK,CAAAA,CAAyC,CAC9D,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,iCAAA,CAAmC,CAC7D,KAAA,CAAOA,EAAO,KAAA,CACd,SAAA,CAAWA,EAAO,SAAA,CAClB,OAAA,CAASA,EAAO,OAClB,CAAC,CACH,CAKA,MAAM,QAAA,CAASA,CAAAA,CAAiC,CAC9C,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,iCAAA,CAAmC,CAC7D,MAAOA,CAAAA,CAAO,KAAA,CACd,WAAA,CAAaA,CAAAA,CAAO,YACpB,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAkC,CAChD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,mCAAoC,CAC9D,KAAA,CAAOA,EAAO,KAAA,CACd,WAAA,CAAaA,EAAO,WAAA,CACpB,OAAA,CAASA,CAAAA,CAAO,OAAA,CAChB,KAAMA,CAAAA,CAAO,IAAA,CACb,OAAA,CAASA,CAAAA,CAAO,OAClB,CAAC,CACH,CAKA,MAAM,WAAWA,CAAAA,CAAmC,CAClD,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,mCAAA,CAAqC,CAC/D,KAAA,CAAOA,EAAO,KAAA,CACd,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,OAAQA,CAAAA,CAAO,MACjB,CAAC,CACH,CAKA,MAAM,WAAA,CAAYA,CAAAA,CAAoC,CACpD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,oCAAA,CAAsC,CAChE,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,WAAA,CAAaA,EAAO,WAAA,CACpB,WAAA,CAAaA,CAAAA,CAAO,WACtB,CAAC,CACH,CAKA,MAAM,YAAA,CAAaA,EAAqC,CACtD,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,qCAAA,CAAuC,CACjE,KAAA,CAAOA,CAAAA,CAAO,MACd,SAAA,CAAWA,CAAAA,CAAO,SAAA,CAClB,YAAA,CAAcA,EAAO,YACvB,CAAC,CACH,CAKA,MAAM,eAAezB,CAAAA,CAAegC,CAAAA,CAAmB,CACrD,OAAO,KAAK,UAAA,CAAW,MAAA,CAAO,CAAA,0CAAA,EAA6C,kBAAA,CAAmBhC,CAAK,CAAC,CAAA,WAAA,EAAc,kBAAA,CAAmBgC,CAAS,CAAC,CAAA,CAAE,CACnJ,CAKA,MAAM,iBAAiBP,CAAAA,CAAyC,CAC9D,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,0CAAA,CAA4C,CACtE,KAAA,CAAOA,EAAO,KAAA,CACd,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,QAASA,CAAAA,CAAO,OAAA,CAChB,YAAA,CAAcA,CAAAA,CAAO,YACvB,CAAC,CACH,CAKA,MAAM,oBAAoBA,CAAAA,CAA4C,CACpE,OAAO,IAAA,CAAK,WAAW,IAAA,CAAK,6CAAA,CAA+C,CACzE,KAAA,CAAOA,EAAO,KAAA,CACd,WAAA,CAAaA,CAAAA,CAAO,WAAA,CACpB,SAAUA,CAAAA,CAAO,QACnB,CAAC,CACH,CAKA,MAAM,kBAAA,CAAmBA,CAAAA,CAA2C,CAClE,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,4CAAA,CAA8C,CACxE,KAAA,CAAOA,CAAAA,CAAO,MACd,WAAA,CAAaA,CAAAA,CAAO,YACpB,IAAA,CAAMA,CAAAA,CAAO,IAAA,CACb,OAAA,CAASA,EAAO,OAClB,CAAC,CACH,CAKA,MAAM,gBAAA,CAAiBA,CAAAA,CAAyC,CAC9D,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,0CAAA,CAA4C,CACtE,MAAOA,CAAAA,CAAO,KAAA,CACd,WAAA,CAAaA,CAAAA,CAAO,YACpB,MAAA,CAAQA,CAAAA,CAAO,MACjB,CAAC,CACH,CAKA,MAAM,cAAA,CAAeA,CAAAA,CAAuC,CAC1D,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,iCAAkC,CAC5D,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MACjB,CAAC,CACH,CAKA,MAAM,SAAA,CAAUA,CAAAA,CAAkC,CAChD,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,yBAAA,CAA2B,CACrD,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,MAAA,CAAQA,EAAO,MAAA,CACf,KAAA,CAAOA,CAAAA,CAAO,KAChB,CAAC,CACH,CACF,CAAA,CCpIO,IAAMQ,EAAN,KAAoB,CAYzB,YAAYnC,CAAAA,CAAmB,CAC7B,KAAK,UAAA,CAAa,IAAID,CAAAA,CAAWC,CAAM,EAGvC,IAAA,CAAK,IAAA,CAAO,IAAIqB,CAAAA,CAAW,KAAK,UAAU,CAAA,CAC1C,IAAA,CAAK,QAAA,CAAW,IAAII,CAAAA,CAAe,IAAA,CAAK,UAAU,CAAA,CAClD,KAAK,YAAA,CAAe,IAAIC,CAAAA,CAAmB,IAAA,CAAK,UAAU,CAAA,CAC1D,IAAA,CAAK,QAAA,CAAW,IAAIE,EAAe,IAAA,CAAK,UAAU,CAAA,CAClD,IAAA,CAAK,SAAW,IAAIE,CAAAA,CAAe,KAAK,UAAU,CAAA,CAClD,KAAK,OAAA,CAAU,IAAIC,CAAAA,CAAc,IAAA,CAAK,UAAU,CAAA,CAChD,IAAA,CAAK,QAAA,CAAW,IAAIC,EAAe,IAAA,CAAK,UAAU,CAAA,CAClD,IAAA,CAAK,UAAY,IAAIC,CAAAA,CAAgB,IAAA,CAAK,UAAU,EACtD,CAKA,cAAA,CAAe/B,CAAAA,CAAekB,CAAAA,CAAoB,MAAa,CAC7D,IAAA,CAAK,UAAA,CAAW,cAAA,CAAelB,EAAOkB,CAAS,EACjD,CAKA,UAAA,EAAmB,CACjB,IAAA,CAAK,UAAA,CAAW,aAClB,CACF,EAMOgB,CAAAA,CAAQD","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\r\nimport { SDKConfig, ApiResponse, TokenResponse } from '../types';\r\n\r\n/**\r\n * URL base da API OficialAPI (fixa)\r\n */\r\nconst API_BASE_URL = 'https://api.oficialapi.com.br';\r\n\r\n/**\r\n * Cliente HTTP robusto com retry automático e tratamento de erros\r\n */\r\nexport class HttpClient {\r\n private axiosInstance: AxiosInstance;\r\n private accessToken: string | null = null;\r\n private tokenExpiresAt: number = 0;\r\n private config: {\r\n clientId: string;\r\n clientSecret: string;\r\n timeout: number;\r\n maxRetries: number;\r\n retryDelay: number;\r\n headers: Record<string, string>;\r\n };\r\n private refreshTokenPromise: Promise<string> | null = null;\r\n\r\n constructor(config: SDKConfig) {\r\n this.config = {\r\n clientId: config.clientId,\r\n clientSecret: config.clientSecret,\r\n timeout: config.timeout || 30000,\r\n maxRetries: config.maxRetries || 3,\r\n retryDelay: config.retryDelay || 1000,\r\n headers: config.headers || {},\r\n };\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: this.config.timeout,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...this.config.headers,\r\n },\r\n });\r\n\r\n this.setupInterceptors();\r\n }\r\n\r\n private setupInterceptors() {\r\n // Request interceptor - adiciona token de autenticação\r\n this.axiosInstance.interceptors.request.use(\r\n async (config) => {\r\n // Não adiciona token para endpoint de autenticação\r\n if (config.url?.includes('/auth/token')) {\r\n return config;\r\n }\r\n\r\n // Garante que temos um token válido\r\n const token = await this.getValidToken();\r\n if (token && config.headers) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - trata erros e retry\r\n this.axiosInstance.interceptors.response.use(\r\n (response) => response,\r\n async (error: AxiosError) => {\r\n const config = error.config as AxiosRequestConfig & { _retry?: boolean; _retryCount?: number };\r\n\r\n // Se não tiver config, não faz retry\r\n if (!config) {\r\n return Promise.reject(this.formatError(error));\r\n }\r\n\r\n // Se for erro 401, tenta renovar token\r\n if (error.response?.status === 401 && !config._retry) {\r\n config._retry = true;\r\n this.accessToken = null;\r\n this.tokenExpiresAt = 0;\r\n\r\n try {\r\n const token = await this.getValidToken();\r\n if (token && config.headers) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n return this.axiosInstance(config);\r\n }\r\n } catch (refreshError) {\r\n return Promise.reject(this.formatError(refreshError as AxiosError));\r\n }\r\n }\r\n\r\n // Retry para erros de rede ou 5xx\r\n const shouldRetry =\r\n (!error.response || (error.response.status >= 500 && error.response.status < 600)) &&\r\n (!config._retryCount || config._retryCount < this.config.maxRetries);\r\n\r\n if (shouldRetry) {\r\n config._retryCount = (config._retryCount || 0) + 1;\r\n const delay = this.config.retryDelay * config._retryCount;\r\n\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return this.axiosInstance(config);\r\n }\r\n\r\n return Promise.reject(this.formatError(error));\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Obtém um token válido, renovando se necessário\r\n */\r\n private async getValidToken(): Promise<string> {\r\n // Se temos um token válido, retorna\r\n if (this.accessToken && Date.now() < this.tokenExpiresAt - 60000) {\r\n return this.accessToken;\r\n }\r\n\r\n // Se já está renovando, aguarda\r\n if (this.refreshTokenPromise) {\r\n return this.refreshTokenPromise;\r\n }\r\n\r\n // Inicia renovação\r\n this.refreshTokenPromise = this.refreshAccessToken();\r\n \r\n try {\r\n const token = await this.refreshTokenPromise;\r\n return token;\r\n } finally {\r\n this.refreshTokenPromise = null;\r\n }\r\n }\r\n\r\n /**\r\n * Renova o token de acesso\r\n */\r\n private async refreshAccessToken(): Promise<string> {\r\n try {\r\n const response = await axios.post<TokenResponse>(\r\n `${API_BASE_URL}/api/v1/auth/token`,\r\n {\r\n client_id: this.config.clientId,\r\n client_secret: this.config.clientSecret,\r\n },\r\n {\r\n timeout: this.config.timeout,\r\n }\r\n );\r\n\r\n this.accessToken = response.data.access_token;\r\n this.tokenExpiresAt = Date.now() + response.data.expires_in * 1000;\r\n\r\n return this.accessToken;\r\n } catch (error) {\r\n this.accessToken = null;\r\n this.tokenExpiresAt = 0;\r\n throw new Error(\r\n `Falha ao autenticar: ${error instanceof Error ? error.message : 'Erro desconhecido'}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Formata erros da API\r\n */\r\n private formatError(error: AxiosError): Error {\r\n if (error.response) {\r\n const data = error.response.data as ApiResponse;\r\n const message = data?.error?.message || data?.message || error.message;\r\n const errorDetails = data?.error?.details || [];\r\n\r\n const formattedError = new Error(message);\r\n (formattedError as any).status = error.response.status;\r\n (formattedError as any).data = error.response.data;\r\n (formattedError as any).details = errorDetails;\r\n\r\n return formattedError;\r\n }\r\n\r\n if (error.request) {\r\n return new Error('Erro de conexão com a API. Verifique sua conexão com a internet.');\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Faz uma requisição GET\r\n */\r\n async get<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.get<ApiResponse<T>>(url, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição POST\r\n */\r\n async post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição PUT\r\n */\r\n async put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição DELETE\r\n */\r\n async delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const response = await this.axiosInstance.delete<ApiResponse<T>>(url, config);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz upload de arquivo\r\n */\r\n async upload<T = any>(\r\n url: string,\r\n file: File | Blob | Buffer,\r\n fieldName: string = 'file',\r\n additionalData?: Record<string, any>\r\n ): Promise<ApiResponse<T>> {\r\n const formData = new FormData();\r\n\r\n if (file instanceof Buffer) {\r\n const blob = new Blob([file]);\r\n formData.append(fieldName, blob);\r\n } else {\r\n formData.append(fieldName, file);\r\n }\r\n\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));\r\n });\r\n }\r\n\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n });\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Define um token de acesso manualmente (útil para testes)\r\n */\r\n setAccessToken(token: string, expiresIn: number = 86400): void {\r\n this.accessToken = token;\r\n this.tokenExpiresAt = Date.now() + expiresIn * 1000;\r\n }\r\n\r\n /**\r\n * Limpa o token atual\r\n */\r\n clearToken(): void {\r\n this.accessToken = null;\r\n this.tokenExpiresAt = 0;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { TokenResponse } from '../types';\r\n\r\n/**\r\n * Módulo de Autenticação\r\n */\r\nexport class AuthModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Gera um novo token de acesso\r\n */\r\n async getToken(clientId: string, clientSecret: string): Promise<TokenResponse> {\r\n const response = await this.httpClient.post<TokenResponse>('/api/v1/auth/token', {\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao obter token');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { Channel } from '../types';\r\n\r\n/**\r\n * Módulo de Canais\r\n */\r\nexport class ChannelsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista todos os canais do usuário\r\n */\r\n async list(): Promise<Channel[]> {\r\n const response = await this.httpClient.get<Channel[]>('/api/v1/channels');\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao listar canais');\r\n }\r\n\r\n return Array.isArray(response.data) ? response.data : [response.data];\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { CreateWebhookParams, Webhook } from '../types';\r\n\r\n/**\r\n * Módulo de Integrações\r\n */\r\nexport class IntegrationsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Cria um novo webhook\r\n */\r\n async createWebhook(params: CreateWebhookParams): Promise<Webhook> {\r\n const response = await this.httpClient.post<Webhook>('/api/v1/integrations', {\r\n url: params.url,\r\n expiresInDays: params.expiresInDays,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao criar webhook');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWhatsAppTextParams,\r\n SendWhatsAppMediaParams,\r\n SendWhatsAppTemplateParams,\r\n SendWhatsAppButtonsParams,\r\n SendWhatsAppListParams,\r\n ReplyWhatsAppParams,\r\n ReactWhatsAppParams,\r\n CreateTemplateParams,\r\n UploadMediaParams,\r\n SendOrderDetailsParams,\r\n SendOrderStatusParams,\r\n SendWhatsAppAudioParams,\r\n SendWhatsAppStickerParams,\r\n SendWhatsAppVideoParams,\r\n SendWhatsAppDocumentParams,\r\n SendWhatsAppContactParams,\r\n SendWhatsAppLocationParams,\r\n SendWhatsAppLocationRequestParams,\r\n SendWhatsAppCtaUrlParams,\r\n SendWhatsAppMediaCarouselParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WhatsApp - Envio de mensagens e gerenciamento de templates\r\n */\r\nexport class WhatsAppModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendWhatsAppTextParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-message', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia (imagem, vídeo, áudio, documento)\r\n */\r\n async sendMedia(params: SendWhatsAppMediaParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-media', {\r\n token: params.token,\r\n sender: params.sender,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia template\r\n */\r\n async sendTemplate(params: SendWhatsAppTemplateParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-template', {\r\n token: params.token,\r\n sender: params.sender,\r\n templateName: params.templateName,\r\n languageCode: params.languageCode,\r\n components: params.components,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n */\r\n async sendButtons(params: SendWhatsAppButtonsParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-buttons', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia lista interativa\r\n */\r\n async sendList(params: SendWhatsAppListParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-list', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttonText: params.buttonText,\r\n sections: params.sections,\r\n });\r\n }\r\n\r\n /**\r\n * Responde a uma mensagem\r\n */\r\n async replyMessage(params: ReplyWhatsAppParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/reply-message', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n */\r\n async reactMessage(params: ReactWhatsAppParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/react-message', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n emoji: params.emoji,\r\n });\r\n }\r\n\r\n /**\r\n * Cria um template\r\n */\r\n async createTemplate(params: CreateTemplateParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/create-template', {\r\n token: params.token,\r\n name: params.name,\r\n language: params.language,\r\n category: params.category,\r\n components: params.components,\r\n });\r\n }\r\n\r\n /**\r\n * Lista templates\r\n */\r\n async listTemplates(token: string) {\r\n return this.httpClient.get(`/api/v1/whatsapp/templates?token=${encodeURIComponent(token)}`);\r\n }\r\n\r\n /**\r\n * Obtém detalhes de um template\r\n */\r\n async getTemplate(token: string, templateId: string) {\r\n return this.httpClient.get(`/api/v1/whatsapp/templates/${templateId}?token=${encodeURIComponent(token)}`);\r\n }\r\n\r\n /**\r\n * Faz upload de mídia para templates\r\n */\r\n async uploadMedia(params: UploadMediaParams) {\r\n return this.httpClient.upload('/api/v1/whatsapp/upload-media', params.file, 'file', {\r\n token: params.token,\r\n filename: params.filename,\r\n });\r\n }\r\n\r\n /**\r\n * Envia detalhes do pedido com opções de pagamento\r\n */\r\n async sendOrderDetails(params: SendOrderDetailsParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-order-details', {\r\n token: params.token,\r\n sender: params.sender,\r\n orderId: params.orderId,\r\n orderItems: params.orderItems,\r\n orderTotal: params.orderTotal,\r\n currency: params.currency,\r\n paymentMethods: params.paymentMethods,\r\n });\r\n }\r\n\r\n /**\r\n * Atualiza status do pedido\r\n */\r\n async sendOrderStatus(params: SendOrderStatusParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-order-status', {\r\n token: params.token,\r\n sender: params.sender,\r\n orderId: params.orderId,\r\n status: params.status,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia áudio\r\n */\r\n async sendAudio(params: SendWhatsAppAudioParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-audio', {\r\n token: params.token,\r\n sender: params.sender,\r\n audioUrl: params.audioUrl,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n */\r\n async sendSticker(params: SendWhatsAppStickerParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-sticker', {\r\n token: params.token,\r\n sender: params.sender,\r\n stickerUrl: params.stickerUrl,\r\n });\r\n }\r\n\r\n /**\r\n * Envia vídeo\r\n */\r\n async sendVideo(params: SendWhatsAppVideoParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-video', {\r\n token: params.token,\r\n sender: params.sender,\r\n videoUrl: params.videoUrl,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia documento\r\n */\r\n async sendDocument(params: SendWhatsAppDocumentParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-document', {\r\n token: params.token,\r\n sender: params.sender,\r\n documentUrl: params.documentUrl,\r\n filename: params.filename,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia contato\r\n */\r\n async sendContact(params: SendWhatsAppContactParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-contact', {\r\n token: params.token,\r\n sender: params.sender,\r\n contacts: params.contacts,\r\n });\r\n }\r\n\r\n /**\r\n * Envia localização\r\n */\r\n async sendLocation(params: SendWhatsAppLocationParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-location', {\r\n token: params.token,\r\n sender: params.sender,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n name: params.name,\r\n address: params.address,\r\n });\r\n }\r\n\r\n /**\r\n * Solicita localização\r\n */\r\n async sendLocationRequest(params: SendWhatsAppLocationRequestParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-location-request', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botão CTA URL\r\n */\r\n async sendCtaUrl(params: SendWhatsAppCtaUrlParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-cta-url', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttonText: params.buttonText,\r\n url: params.url,\r\n });\r\n }\r\n\r\n /**\r\n * Envia carrossel de mídia\r\n */\r\n async sendMediaCarousel(params: SendWhatsAppMediaCarouselParams) {\r\n return this.httpClient.post('/api/v1/whatsapp/send-media-carousel', {\r\n token: params.token,\r\n sender: params.sender,\r\n cards: params.cards,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendTelegramTextParams,\r\n SendTelegramMediaParams,\r\n SendTelegramButtonsParams,\r\n SendTelegramLocationParams,\r\n SendTelegramContactParams,\r\n SendTelegramPollParams,\r\n SendTelegramVenueParams,\r\n SendTelegramDiceParams,\r\n SendTelegramStickerParams,\r\n SendTelegramVoiceParams,\r\n SendTelegramVideoNoteParams,\r\n SendTelegramMediaGroupParams,\r\n SendTelegramReplyKeyboardParams,\r\n EditTelegramMessageParams,\r\n DeleteTelegramMessageParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Telegram - Envio de mensagens e gerenciamento\r\n */\r\nexport class TelegramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendMessage(params: SendTelegramTextParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-message', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n disableNotification: params.disableNotification,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendTelegramMediaParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-media', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n */\r\n async sendButtons(params: SendTelegramButtonsParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-buttons', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n parseMode: params.parseMode,\r\n });\r\n }\r\n\r\n /**\r\n * Envia localização\r\n */\r\n async sendLocation(params: SendTelegramLocationParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-location', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n livePeriod: params.livePeriod,\r\n });\r\n }\r\n\r\n /**\r\n * Envia contato\r\n */\r\n async sendContact(params: SendTelegramContactParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-contact', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n phoneNumber: params.phoneNumber,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n vcard: params.vcard,\r\n });\r\n }\r\n\r\n /**\r\n * Envia enquete\r\n */\r\n async sendPoll(params: SendTelegramPollParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-poll', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n question: params.question,\r\n options: params.options,\r\n isAnonymous: params.isAnonymous,\r\n type: params.type,\r\n correctOptionId: params.correctOptionId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia venue (local)\r\n */\r\n async sendVenue(params: SendTelegramVenueParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-venue', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n title: params.title,\r\n address: params.address,\r\n foursquareId: params.foursquareId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia dado/emoji animado\r\n */\r\n async sendDice(params: SendTelegramDiceParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-dice', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n emoji: params.emoji,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n */\r\n async sendSticker(params: SendTelegramStickerParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-sticker', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n stickerUrl: params.stickerUrl,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem de voz\r\n */\r\n async sendVoice(params: SendTelegramVoiceParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-voice', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n voiceUrl: params.voiceUrl,\r\n caption: params.caption,\r\n duration: params.duration,\r\n });\r\n }\r\n\r\n /**\r\n * Envia video note\r\n */\r\n async sendVideoNote(params: SendTelegramVideoNoteParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-video-note', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n videoNoteUrl: params.videoNoteUrl,\r\n duration: params.duration,\r\n length: params.length,\r\n });\r\n }\r\n\r\n /**\r\n * Envia grupo de mídia\r\n */\r\n async sendMediaGroup(params: SendTelegramMediaGroupParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-media-group', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n media: params.media,\r\n });\r\n }\r\n\r\n /**\r\n * Envia teclado de resposta\r\n */\r\n async sendReplyKeyboard(params: SendTelegramReplyKeyboardParams) {\r\n return this.httpClient.post('/api/v1/telegram/send-reply-keyboard', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n text: params.text,\r\n keyboard: params.keyboard,\r\n resizeKeyboard: params.resizeKeyboard,\r\n oneTimeKeyboard: params.oneTimeKeyboard,\r\n });\r\n }\r\n\r\n /**\r\n * Edita mensagem\r\n */\r\n async editMessage(params: EditTelegramMessageParams) {\r\n return this.httpClient.post('/api/v1/telegram/edit-message', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n });\r\n }\r\n\r\n /**\r\n * Deleta mensagem\r\n */\r\n async deleteMessage(params: DeleteTelegramMessageParams) {\r\n return this.httpClient.post('/api/v1/telegram/delete-message', {\r\n token: params.token,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWebChatTextParams,\r\n SendWebChatMediaParams,\r\n SendWebChatCarouselParams,\r\n SendWebChatFormParams,\r\n SendWebChatQuickRepliesParams,\r\n SendWebChatCardParams,\r\n SendWebChatButtonsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WebChat - Envio de mensagens via WebChat\r\n */\r\nexport class WebChatModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendWebChatTextParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-text', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendWebChatMediaParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-media', {\r\n token: params.token,\r\n sender: params.sender,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia carousel\r\n */\r\n async sendCarousel(params: SendWebChatCarouselParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-carousel', {\r\n token: params.token,\r\n sender: params.sender,\r\n cards: params.cards,\r\n });\r\n }\r\n\r\n /**\r\n * Envia formulário\r\n */\r\n async sendForm(params: SendWebChatFormParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-form', {\r\n token: params.token,\r\n sender: params.sender,\r\n title: params.title,\r\n fields: params.fields,\r\n submitButtonText: params.submitButtonText,\r\n });\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n */\r\n async sendQuickReplies(params: SendWebChatQuickRepliesParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-quick-replies', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n quickReplies: params.quickReplies,\r\n });\r\n }\r\n\r\n /**\r\n * Envia card\r\n */\r\n async sendCard(params: SendWebChatCardParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-card', {\r\n token: params.token,\r\n sender: params.sender,\r\n title: params.title,\r\n description: params.description,\r\n imageUrl: params.imageUrl,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia botões\r\n */\r\n async sendButtons(params: SendWebChatButtonsParams) {\r\n return this.httpClient.post('/api/v1/webchat/send-buttons', {\r\n token: params.token,\r\n sender: params.sender,\r\n messageText: params.messageText,\r\n buttons: params.buttons,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n ListPostsParams,\r\n ListCommentsParams,\r\n CreatePostParams,\r\n ReplyCommentParams,\r\n DeleteCommentParams,\r\n SendFacebookTextParams,\r\n SendFacebookMediaParams,\r\n SendFacebookButtonsParams,\r\n SendFacebookStickerParams,\r\n ReplyFacebookMessageParams,\r\n ReplyFacebookMediaParams,\r\n SharePostParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Facebook - Gerenciamento de posts e mensagens\r\n */\r\nexport class FacebookModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista posts de uma página\r\n */\r\n async listPosts(params: ListPostsParams) {\r\n return this.httpClient.post('/api/v1/facebook/list-posts', {\r\n token: params.token,\r\n pageId: params.pageId,\r\n limit: params.limit,\r\n });\r\n }\r\n\r\n /**\r\n * Lista comentários de um post\r\n */\r\n async listComments(params: ListCommentsParams) {\r\n return this.httpClient.post('/api/v1/facebook/list-comments', {\r\n token: params.token,\r\n postId: params.postId,\r\n limit: params.limit,\r\n });\r\n }\r\n\r\n /**\r\n * Cria um post\r\n */\r\n async createPost(params: CreatePostParams) {\r\n return this.httpClient.post('/api/v1/facebook/create-post', {\r\n token: params.token,\r\n pageId: params.pageId,\r\n message: params.message,\r\n link: params.link,\r\n });\r\n }\r\n\r\n /**\r\n * Responde um comentário\r\n */\r\n async replyComment(params: ReplyCommentParams) {\r\n return this.httpClient.post('/api/v1/facebook/reply-comment', {\r\n token: params.token,\r\n commentId: params.commentId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Deleta um comentário\r\n */\r\n async deleteComment(params: DeleteCommentParams) {\r\n return this.httpClient.post('/api/v1/facebook/delete-comment', {\r\n token: params.token,\r\n commentId: params.commentId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendFacebookTextParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-text', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendFacebookMediaParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-media', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n */\r\n async sendButtons(params: SendFacebookButtonsParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-buttons', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n */\r\n async sendSticker(params: SendFacebookStickerParams) {\r\n return this.httpClient.post('/api/v1/facebook/send-sticker', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n stickerId: params.stickerId,\r\n });\r\n }\r\n\r\n /**\r\n * Responde uma mensagem\r\n */\r\n async replyMessage(params: ReplyFacebookMessageParams) {\r\n return this.httpClient.post('/api/v1/facebook/reply-message', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Responde com mídia\r\n */\r\n async replyMedia(params: ReplyFacebookMediaParams) {\r\n return this.httpClient.post('/api/v1/facebook/reply-media', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Compartilha um post do Instagram\r\n */\r\n async sharePost(params: SharePostParams) {\r\n return this.httpClient.post('/api/v1/facebook/share-post', {\r\n token: params.token,\r\n mediaId: params.mediaId,\r\n recipientId: params.recipientId,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendInstagramPrivateReplyParams,\r\n SendInstagramTextParams,\r\n SendInstagramMediaParams,\r\n SendInstagramImagesParams,\r\n SendInstagramStickerParams,\r\n ReactInstagramMessageParams,\r\n SendInstagramQuickRepliesParams,\r\n SendInstagramGenericTemplateParams,\r\n SendInstagramButtonTemplateParams,\r\n SendInstagramSenderActionParams,\r\n GetInstagramUserProfileParams,\r\n ListInstagramPostsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Instagram - Envio de mensagens e gerenciamento\r\n */\r\nexport class InstagramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia resposta privada a comentário\r\n */\r\n async sendPrivateReply(params: SendInstagramPrivateReplyParams) {\r\n return this.httpClient.post('/api/v1/instagram/private-reply', {\r\n token: params.token,\r\n commentId: params.commentId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n */\r\n async sendText(params: SendInstagramTextParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/text', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n });\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n */\r\n async sendMedia(params: SendInstagramMediaParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/media', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n });\r\n }\r\n\r\n /**\r\n * Envia múltiplas imagens (carrossel)\r\n */\r\n async sendImages(params: SendInstagramImagesParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/images', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n images: params.images,\r\n });\r\n }\r\n\r\n /**\r\n * Envia sticker (like/heart)\r\n */\r\n async sendSticker(params: SendInstagramStickerParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sticker', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n stickerType: params.stickerType,\r\n });\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n */\r\n async reactMessage(params: ReactInstagramMessageParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/reaction', {\r\n token: params.token,\r\n messageId: params.messageId,\r\n reactionType: params.reactionType,\r\n });\r\n }\r\n\r\n /**\r\n * Remove reação de uma mensagem\r\n */\r\n async removeReaction(token: string, messageId: string) {\r\n return this.httpClient.delete(`/api/v1/instagram/messages/reaction?token=${encodeURIComponent(token)}&messageId=${encodeURIComponent(messageId)}`);\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n */\r\n async sendQuickReplies(params: SendInstagramQuickRepliesParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/quick-replies', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n quickReplies: params.quickReplies,\r\n });\r\n }\r\n\r\n /**\r\n * Envia template genérico (carrossel)\r\n */\r\n async sendGenericTemplate(params: SendInstagramGenericTemplateParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/generic-template', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n elements: params.elements,\r\n });\r\n }\r\n\r\n /**\r\n * Envia template de botões\r\n */\r\n async sendButtonTemplate(params: SendInstagramButtonTemplateParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/button-template', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n });\r\n }\r\n\r\n /**\r\n * Envia ação do remetente (typing, seen)\r\n */\r\n async sendSenderAction(params: SendInstagramSenderActionParams) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sender-action', {\r\n token: params.token,\r\n recipientId: params.recipientId,\r\n action: params.action,\r\n });\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário\r\n */\r\n async getUserProfile(params: GetInstagramUserProfileParams) {\r\n return this.httpClient.post('/api/v1/instagram/user-profile', {\r\n token: params.token,\r\n userId: params.userId,\r\n });\r\n }\r\n\r\n /**\r\n * Lista publicações do Instagram\r\n */\r\n async listPosts(params: ListInstagramPostsParams) {\r\n return this.httpClient.post('/api/v1/instagram/posts', {\r\n token: params.token,\r\n userId: params.userId,\r\n limit: params.limit,\r\n });\r\n }\r\n}\r\n","import { HttpClient } from './client/http-client';\r\nimport { AuthModule } from './modules/auth';\r\nimport { ChannelsModule } from './modules/channels';\r\nimport { IntegrationsModule } from './modules/integrations';\r\nimport { WhatsAppModule } from './modules/whatsapp';\r\nimport { TelegramModule } from './modules/telegram';\r\nimport { WebChatModule } from './modules/webchat';\r\nimport { FacebookModule } from './modules/facebook';\r\nimport { InstagramModule } from './modules/instagram';\r\nimport { SDKConfig } from './types';\r\n\r\n/**\r\n * SDK OficialAPI - Cliente principal\r\n * \r\n * @example\r\n * ```typescript\r\n * import { OficialAPISDK } from '@oficialapi/sdk';\r\n * \r\n * const sdk = new OficialAPISDK({\r\n * clientId: 'your-client-id',\r\n * clientSecret: 'your-client-secret'\r\n * });\r\n * \r\n * // Enviar mensagem WhatsApp\r\n * const result = await sdk.whatsapp.sendText({\r\n * token: 'sk_live_...',\r\n * sender: '5511999999999',\r\n * messageText: 'Olá!'\r\n * });\r\n * ```\r\n */\r\nexport class OficialAPISDK {\r\n private httpClient: HttpClient;\r\n\r\n public readonly auth: AuthModule;\r\n public readonly channels: ChannelsModule;\r\n public readonly integrations: IntegrationsModule;\r\n public readonly whatsapp: WhatsAppModule;\r\n public readonly telegram: TelegramModule;\r\n public readonly webchat: WebChatModule;\r\n public readonly facebook: FacebookModule;\r\n public readonly instagram: InstagramModule;\r\n\r\n constructor(config: SDKConfig) {\r\n this.httpClient = new HttpClient(config);\r\n\r\n // Inicializa módulos\r\n this.auth = new AuthModule(this.httpClient);\r\n this.channels = new ChannelsModule(this.httpClient);\r\n this.integrations = new IntegrationsModule(this.httpClient);\r\n this.whatsapp = new WhatsAppModule(this.httpClient);\r\n this.telegram = new TelegramModule(this.httpClient);\r\n this.webchat = new WebChatModule(this.httpClient);\r\n this.facebook = new FacebookModule(this.httpClient);\r\n this.instagram = new InstagramModule(this.httpClient);\r\n }\r\n\r\n /**\r\n * Define um token de acesso manualmente (útil para testes)\r\n */\r\n setAccessToken(token: string, expiresIn: number = 86400): void {\r\n this.httpClient.setAccessToken(token, expiresIn);\r\n }\r\n\r\n /**\r\n * Limpa o token atual\r\n */\r\n clearToken(): void {\r\n this.httpClient.clearToken();\r\n }\r\n}\r\n\r\n// Exporta tipos\r\nexport * from './types';\r\n\r\n// Exporta instância padrão (opcional)\r\nexport default OficialAPISDK;\r\n"]}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@oficialapi/sdk",
3
+ "version": "1.0.0",
4
+ "description": "SDK oficial da OficialAPI - Integração completa com WhatsApp, Telegram, Facebook, Instagram e WebChat",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsup",
21
+ "dev": "tsup --watch",
22
+ "test": "jest",
23
+ "lint": "eslint src --ext .ts",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "oficialapi",
28
+ "whatsapp",
29
+ "telegram",
30
+ "facebook",
31
+ "instagram",
32
+ "webchat",
33
+ "messaging",
34
+ "api",
35
+ "sdk"
36
+ ],
37
+ "author": "OficialAPI",
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/oficialapi/sdk.git"
42
+ },
43
+ "dependencies": {
44
+ "axios": "^1.6.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^20.10.0",
48
+ "@typescript-eslint/eslint-plugin": "^6.13.0",
49
+ "@typescript-eslint/parser": "^6.13.0",
50
+ "eslint": "^8.54.0",
51
+ "jest": "^29.7.0",
52
+ "tsup": "^8.0.0",
53
+ "typescript": "^5.3.0"
54
+ },
55
+ "peerDependencies": {
56
+ "axios": "^1.6.0"
57
+ },
58
+ "engines": {
59
+ "node": ">=16.0.0"
60
+ }
61
+ }