@vzaps/sdk 0.1.0 → 0.1.1

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/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # VZaps TypeScript SDK
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@vzaps/sdk.svg)](https://www.npmjs.com/package/@vzaps/sdk)
4
+
3
5
  Official TypeScript/JavaScript client for the [VZaps public API](https://docs.vzaps.com). Send WhatsApp messages, manage instances, configure webhooks, and subscribe to realtime events with a typed, promise-based interface.
4
6
 
5
7
  Works in **Node.js 18+** (ESM and CommonJS). Browser usage is supported for HTTP calls; WebSocket realtime in Node uses the bundled `ws` client automatically.
package/dist/index.cjs CHANGED
@@ -485,15 +485,24 @@ var InstancesResource = class {
485
485
  });
486
486
  }
487
487
  list(data = {}, options = {}) {
488
+ const page = data.page ?? 1;
489
+ const size = data.size ?? data.pageSize ?? 20;
490
+ const filter = data.filter ?? (typeof data.search === "string" && data.search.trim() !== "" ? { query: data.search.trim() } : {});
488
491
  return this.http.request("POST", "/instances/list", {
489
- body: data,
492
+ body: {
493
+ page,
494
+ size,
495
+ filter,
496
+ sort: data.sort,
497
+ sortDesc: data.sortDesc
498
+ },
490
499
  signal: options.signal
491
500
  });
492
501
  }
493
502
  get(instanceId, options = {}) {
494
- return this.http.request("GET", `/instances/${encodeURIComponent(instanceId)}`, {
495
- signal: options.signal,
496
- instanceToken: options.instanceToken
503
+ return this.http.request("POST", "/instances/get", {
504
+ body: { id: instanceId },
505
+ signal: options.signal
497
506
  });
498
507
  }
499
508
  update(instanceId, data, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/events.ts","../src/errors.ts","../src/casing.ts","../src/http.ts","../src/resources.ts","../src/client.ts"],"sourcesContent":["export { VZapsClient } from './client.js';\nexport { EventSubscription, EventsResource } from './events.js';\nexport {\n AuthResource,\n ChatwootResource,\n ChatsResource,\n ContactsResource,\n GroupsResource,\n InstancesResource,\n MessagesResource,\n QueuesResource,\n SessionsResource,\n TypebotsResource,\n UsersResource,\n WebhooksResource,\n} from './resources.js';\nexport {\n VZapsAuthenticationError,\n VZapsError,\n VZapsTimeoutError,\n} from './errors.js';\nexport type {\n AuthTokenResponse,\n ChatClearRequest,\n ChatDeleteRequest,\n ChatExpirationRequest,\n ChatListRequest,\n ChatMuteRequest,\n ChatRequest,\n ChatwootImportRequest,\n ChatwootImportScope,\n ChatwootRequest,\n ContactAddRequest,\n ErrorHandler,\n EventHandler,\n EventSubscribeRequest,\n FetchLike,\n GroupInfoRequest,\n GroupInviteLinkRequest,\n GroupListRequest,\n GroupMutationRequest,\n InstanceCreateRequest,\n InstanceListRequest,\n InstanceRequestOptions,\n InstanceScopedRequest,\n JsonObject,\n MessageButton,\n MessageDeleteRequest,\n MessageDownloadRequest,\n MessageEditRequest,\n MessageListRow,\n MessageListSection,\n MessageMarkReadRequest,\n MessagePollVoteRequest,\n MessagePresenceRequest,\n MessageReactRemoveRequest,\n MessageReactRequest,\n MessageSendAudioRequest,\n MessageSendBaseRequest,\n MessageSendButtonsRequest,\n MessageSendContactRequest,\n MessageSendDocumentRequest,\n MessageSendGifRequest,\n MessageSendImageRequest,\n MessageSendLinkRequest,\n MessageSendListRequest,\n MessageSendLocationRequest,\n MessageSendPollRequest,\n MessageSendStickerRequest,\n MessageSendTextRequest,\n MessageSendVideoRequest,\n PaginatedQuery,\n QueueMessageRequest,\n QueueRequest,\n RequestOptions,\n TypebotMutationRequest,\n TypebotRequest,\n TypebotSessionRequest,\n TypebotStartSessionRequest,\n UserAvatarRequest,\n UserPhonesRequest,\n VZapsClientOptions,\n VZapsEvent,\n VZapsEventType,\n WebhookConfigRequest,\n WebhookLogRequest,\n WebhookLogSearchRequest,\n WebSocketFactory,\n WebSocketLike,\n} from './types.js';\n","import WebSocket from 'ws';\nimport type {\n ErrorHandler,\n EventHandler,\n EventSubscribeRequest,\n VZapsEvent,\n WebSocketFactory,\n WebSocketLike,\n} from './types.js';\nimport type { HttpClient } from './http.js';\n\ntype LifecycleEvent = 'open' | 'close' | 'error';\ntype HandlerMap = Map<string, Set<EventHandler>>;\n\nexport class EventsResource {\n constructor(\n private readonly http: HttpClient,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async subscribe(request: EventSubscribeRequest): Promise<EventSubscription> {\n const subscription = new EventSubscription(this.http, request, this.webSocketFactory);\n await subscription.open();\n return subscription;\n }\n}\n\nexport class EventSubscription {\n private readonly handlers: HandlerMap = new Map();\n private readonly errorHandlers = new Set<ErrorHandler>();\n private readonly lifecycleHandlers = new Map<LifecycleEvent, Set<(...args: unknown[]) => void>>();\n private socket?: WebSocketLike;\n private closed = false;\n private retryCount = 0;\n\n constructor(\n private readonly http: HttpClient,\n private readonly request: EventSubscribeRequest,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async open(): Promise<void> {\n const token = await this.http.getAccessToken(this.request.signal);\n const url = this.http.buildRealtimeUrl('/events/ws', {\n instance_id: this.request.instanceId,\n events: this.request.events?.join(','),\n access_token: token,\n client_token: this.http.clientToken,\n instance_token: this.request.instanceToken,\n last_event_id: this.request.lastEventId,\n });\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'X-Client-Token': this.http.clientToken,\n };\n\n headers['X-Instance-Token'] = this.request.instanceToken;\n\n this.socket = this.createSocket(url, headers);\n this.bindSocket(this.socket);\n }\n\n on<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.add(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.addLifecycleHandler(event, handler as (...args: unknown[]) => void);\n return this;\n }\n\n const handlers = this.handlers.get(event) ?? new Set<EventHandler>();\n handlers.add(handler as EventHandler);\n this.handlers.set(event, handlers);\n return this;\n }\n\n off<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.delete(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.lifecycleHandlers.get(event)?.delete(handler as (...args: unknown[]) => void);\n return this;\n }\n\n this.handlers.get(event)?.delete(handler as EventHandler);\n return this;\n }\n\n async close(code = 1000, reason = 'Client closed subscription'): Promise<void> {\n this.closed = true;\n this.socket?.close(code, reason);\n }\n\n private createSocket(url: string, headers: Record<string, string>): WebSocketLike {\n if (this.webSocketFactory) {\n return this.webSocketFactory(url, headers);\n }\n\n if (typeof globalThis.WebSocket !== 'undefined') {\n return new globalThis.WebSocket(url) as unknown as WebSocketLike;\n }\n\n return new WebSocket(url, { headers }) as unknown as WebSocketLike;\n }\n\n private bindSocket(socket: WebSocketLike): void {\n listen(socket, 'open', () => {\n this.retryCount = 0;\n this.emitLifecycle('open');\n });\n\n listen(socket, 'message', (eventOrData) => {\n const raw = readMessageData(eventOrData);\n if (raw !== undefined) {\n void this.dispatch(raw);\n }\n });\n\n listen(socket, 'error', (error) => {\n this.emitError(error);\n });\n\n listen(socket, 'close', () => {\n this.emitLifecycle('close');\n void this.reconnectIfNeeded();\n });\n\n this.request.signal?.addEventListener('abort', () => {\n void this.close(1000, 'Subscription aborted');\n }, { once: true });\n }\n\n private async dispatch(raw: unknown): Promise<void> {\n try {\n const event = parseEvent(raw);\n const handlers = new Set<EventHandler>([\n ...(this.handlers.get(event.type) ?? []),\n ...(this.handlers.get('All') ?? []),\n ]);\n\n await Promise.all([...handlers].map((handler) => handler(event)));\n this.ack(event.id);\n } catch (error) {\n this.emitError(error);\n }\n }\n\n private ack(eventId: string): void {\n if (!eventId || !this.socket) {\n return;\n }\n this.socket.send(JSON.stringify({ type: 'ack', event_id: eventId }));\n }\n\n private async reconnectIfNeeded(): Promise<void> {\n if (this.closed || this.request.reconnect === false) {\n return;\n }\n\n const maxRetries = this.request.maxRetries ?? Number.POSITIVE_INFINITY;\n if (this.retryCount >= maxRetries) {\n return;\n }\n\n this.retryCount += 1;\n await delay(this.request.retryDelayMs ?? Math.min(30_000, 1000 * this.retryCount));\n await this.open();\n }\n\n private addLifecycleHandler(event: LifecycleEvent, handler: (...args: unknown[]) => void): void {\n const handlers = this.lifecycleHandlers.get(event) ?? new Set<(...args: unknown[]) => void>();\n handlers.add(handler);\n this.lifecycleHandlers.set(event, handlers);\n }\n\n private emitLifecycle(event: LifecycleEvent, ...args: unknown[]): void {\n for (const handler of this.lifecycleHandlers.get(event) ?? []) {\n handler(...args);\n }\n }\n\n private emitError(error: unknown): void {\n if (this.errorHandlers.size === 0) {\n return;\n }\n\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }\n}\n\nfunction listen(socket: WebSocketLike, type: string, listener: (event: unknown) => void): void {\n if (socket.addEventListener) {\n socket.addEventListener(type, listener);\n return;\n }\n\n socket.on?.(type, listener);\n}\n\nfunction readMessageData(eventOrData: unknown): unknown {\n if (isRecord(eventOrData) && 'data' in eventOrData) {\n return eventOrData.data;\n }\n return eventOrData;\n}\n\nfunction parseEvent(raw: unknown): VZapsEvent {\n const text = typeof raw === 'string' ? raw : Buffer.isBuffer(raw) ? raw.toString('utf8') : String(raw);\n return JSON.parse(text) as VZapsEvent;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n","export class VZapsError extends Error {\n readonly status?: number;\n readonly code?: string;\n readonly details?: unknown;\n\n constructor(message: string, options: { status?: number; code?: string; details?: unknown } = {}) {\n super(message);\n this.name = 'VZapsError';\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class VZapsAuthenticationError extends VZapsError {\n constructor(message = 'Invalid VZaps client credentials', details?: unknown) {\n super(message, { status: 401, code: 'AUTHENTICATION_FAILED', details });\n this.name = 'VZapsAuthenticationError';\n }\n}\n\nexport class VZapsTimeoutError extends VZapsError {\n constructor(message = 'VZaps request timed out') {\n super(message, { code: 'REQUEST_TIMEOUT' });\n this.name = 'VZapsTimeoutError';\n }\n}\n","function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport function toSnakeCaseKey(key: string): string {\n return key\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .toLowerCase();\n}\n\nexport function toCamelCaseKey(key: string): string {\n return key.replace(/_([a-z0-9])/g, (_, char: string) => char.toUpperCase());\n}\n\nexport function keysToSnakeCase<T>(value: T): T {\n return transformKeys(value, toSnakeCaseKey) as T;\n}\n\nexport function keysToCamelCase<T>(value: T): T {\n return transformKeys(value, toCamelCaseKey) as T;\n}\n\nfunction transformKeys<T>(value: T, transformKey: (key: string) => string): T {\n if (Array.isArray(value)) {\n return value.map((item) => transformKeys(item, transformKey)) as T;\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, nested] of Object.entries(value)) {\n result[transformKey(key)] = transformKeys(nested, transformKey);\n }\n\n return result as T;\n}\n","import { VZapsAuthenticationError, VZapsError, VZapsTimeoutError } from './errors.js';\nimport { keysToCamelCase, keysToSnakeCase, toSnakeCaseKey } from './casing.js';\nimport type { AuthTokenResponse, FetchLike, RequestOptions, VZapsClientOptions } from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://api.vzaps.com';\nconst DEFAULT_REALTIME_URL = 'wss://realtime.vzaps.com';\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_TOKEN_SKEW_MS = 60_000;\n\ninterface CachedToken {\n accessToken: string;\n expiresAt: number;\n}\n\nexport class HttpClient {\n readonly baseUrl: string;\n readonly realtimeUrl?: string;\n readonly clientToken: string;\n readonly clientSecret: string;\n\n private readonly fetchImpl: FetchLike;\n private readonly timeoutMs: number;\n private readonly tokenSkewMs: number;\n private readonly userAgent?: string;\n private cachedToken?: CachedToken;\n private pendingToken?: Promise<string>;\n\n constructor(options: VZapsClientOptions) {\n this.clientToken = requireNonEmpty(options.clientToken, 'clientToken');\n this.clientSecret = requireNonEmpty(options.clientSecret, 'clientSecret');\n this.baseUrl = normalizeBaseUrl(options.baseUrl ?? DEFAULT_BASE_URL);\n this.realtimeUrl = normalizeBaseUrl(options.realtimeUrl ?? DEFAULT_REALTIME_URL);\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.tokenSkewMs = options.tokenSkewMs ?? DEFAULT_TOKEN_SKEW_MS;\n this.userAgent = options.userAgent;\n this.fetchImpl = options.fetch ?? globalThis.fetch;\n\n if (!this.fetchImpl) {\n throw new VZapsError('No fetch implementation available. Use Node.js 18+ or pass options.fetch.');\n }\n }\n\n async getAccessToken(signal?: AbortSignal): Promise<string> {\n if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {\n return this.cachedToken.accessToken;\n }\n\n this.pendingToken ??= this.requestToken(signal).finally(() => {\n this.pendingToken = undefined;\n });\n\n return this.pendingToken;\n }\n\n async request<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const url = this.buildUrl(path, options.query);\n const headers = new Headers();\n headers.set('Accept', 'application/json');\n\n if (options.body !== undefined) {\n headers.set('Content-Type', 'application/json');\n }\n\n if (this.userAgent) {\n headers.set('User-Agent', this.userAgent);\n }\n\n for (const [key, value] of Object.entries(options.headers ?? {})) {\n if (value !== undefined) {\n headers.set(key, value);\n }\n }\n\n if (options.auth !== false) {\n headers.set('Authorization', `Bearer ${await this.getAccessToken(options.signal)}`);\n headers.set('X-Client-Token', this.clientToken);\n }\n\n if (options.instanceToken) {\n headers.set('X-Instance-Token', options.instanceToken);\n }\n\n const body =\n options.body === undefined ? undefined : JSON.stringify(keysToSnakeCase(options.body));\n\n const response = await this.fetchWithTimeout(url, {\n method,\n headers,\n body,\n signal: options.signal,\n });\n\n return parseResponse<T>(response);\n }\n\n buildRealtimeUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.realtimeUrl!, path, query);\n }\n\n private async requestToken(signal?: AbortSignal): Promise<string> {\n const response = await this.request<AuthTokenResponse>('POST', '/token', {\n auth: false,\n signal,\n body: {\n clientToken: this.clientToken,\n clientSecret: this.clientSecret,\n },\n });\n\n if (!response.accessToken || !response.expiresIn) {\n throw new VZapsAuthenticationError('VZaps token response is missing accessToken or expiresIn', response);\n }\n\n this.cachedToken = {\n accessToken: response.accessToken,\n expiresAt: Date.now() + response.expiresIn * 1000 - this.tokenSkewMs,\n };\n\n return response.accessToken;\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.baseUrl, path, query);\n }\n\n private async fetchWithTimeout(url: string, init: RequestInit): Promise<Response> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n const signal = mergeSignals(controller.signal, init.signal ?? undefined);\n\n try {\n return await this.fetchImpl(url, { ...init, signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw new VZapsTimeoutError();\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n }\n}\n\nfunction requireNonEmpty(value: string | undefined, name: string): string {\n if (!value || value.trim() === '') {\n throw new VZapsError(`VZaps ${name} is required`);\n }\n return value;\n}\n\nfunction normalizeBaseUrl(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(`${normalizeBaseUrl(baseUrl)}${cleanPath}`);\n\n for (const [key, value] of Object.entries(query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(toSnakeCaseKey(key), String(value));\n }\n }\n\n return url.toString();\n}\n\nasync function parseResponse<T>(response: Response): Promise<T> {\n const text = await response.text();\n const data = text ? safeJsonParse(text) : undefined;\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new VZapsAuthenticationError(readErrorMessage(data, response.statusText), data);\n }\n\n throw new VZapsError(readErrorMessage(data, response.statusText), {\n status: response.status,\n details: data,\n });\n }\n\n return keysToCamelCase(data) as T;\n}\n\nfunction safeJsonParse(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction readErrorMessage(data: unknown, fallback: string): string {\n if (isRecord(data)) {\n if (typeof data.error === 'string') return data.error;\n if (typeof data.message === 'string') return data.message;\n }\n return fallback || 'VZaps request failed';\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction mergeSignals(primary: AbortSignal, secondary?: AbortSignal): AbortSignal {\n if (!secondary) {\n return primary;\n }\n\n if (secondary.aborted) {\n return secondary;\n }\n\n const controller = new AbortController();\n const abort = () => controller.abort();\n\n primary.addEventListener('abort', abort, { once: true });\n secondary.addEventListener('abort', abort, { once: true });\n\n return controller.signal;\n}\n","import type { HttpClient } from './http.js';\nimport type {\n ChatClearRequest,\n ChatDeleteRequest,\n ChatExpirationRequest,\n ChatListRequest,\n ChatMuteRequest,\n ChatRequest,\n ChatwootImportRequest,\n ChatwootRequest,\n ContactAddRequest,\n GroupInfoRequest,\n GroupInviteLinkRequest,\n GroupListRequest,\n GroupMutationRequest,\n InstanceCreateRequest,\n InstanceListRequest,\n InstanceRequestOptions,\n InstanceScopedRequest,\n MessageDeleteRequest,\n MessageDownloadRequest,\n MessageEditRequest,\n MessageMarkReadRequest,\n MessagePollVoteRequest,\n MessagePresenceRequest,\n MessageReactRemoveRequest,\n MessageReactRequest,\n MessageSendAudioRequest,\n MessageSendButtonsRequest,\n MessageSendContactRequest,\n MessageSendDocumentRequest,\n MessageSendGifRequest,\n MessageSendImageRequest,\n MessageSendLinkRequest,\n MessageSendListRequest,\n MessageSendLocationRequest,\n MessageSendPollRequest,\n MessageSendStickerRequest,\n MessageSendTextRequest,\n MessageSendVideoRequest,\n QueueMessageRequest,\n QueueRequest,\n TypebotMutationRequest,\n TypebotRequest,\n TypebotSessionRequest,\n TypebotStartSessionRequest,\n UserAvatarRequest,\n UserPhonesRequest,\n WebhookConfigRequest,\n WebhookLogRequest,\n WebhookLogSearchRequest,\n} from './types.js';\n\ntype SignalOptions = { signal?: AbortSignal };\ntype Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport class AuthResource {\n constructor(private readonly http: HttpClient) {}\n\n getAccessToken(signal?: AbortSignal): Promise<string> {\n return this.http.getAccessToken(signal);\n }\n}\n\nexport class InstancesResource {\n constructor(private readonly http: HttpClient) {}\n\n create<TResponse = unknown>(data: InstanceCreateRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/create', {\n body: data,\n signal: options.signal,\n });\n }\n\n list<TResponse = unknown>(data: InstanceListRequest = {}, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/list', {\n body: data,\n signal: options.signal,\n });\n }\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n update<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('PATCH', `/instances/${encodeURIComponent(instanceId)}`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n restart<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/restart`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n provision<TResponse = unknown>(data: InstanceCreateRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/provision', {\n body: data,\n signal: options.signal,\n });\n }\n\n search<TResponse = unknown>(data: Record<string, unknown>, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/search', {\n body: data,\n signal: options.signal,\n });\n }\n\n subscribe<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown> = {},\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/subscribe`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n resumeSubscription<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/resume-subscription`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n cancel<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', `/instances/${encodeURIComponent(instanceId)}/cancel`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class MessagesResource {\n constructor(private readonly http: HttpClient) {}\n\n sendText<TResponse = unknown>(request: MessageSendTextRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/text', request, options);\n }\n\n sendImage<TResponse = unknown>(request: MessageSendImageRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/image', request, options);\n }\n\n sendAudio<TResponse = unknown>(request: MessageSendAudioRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/audio', request, options);\n }\n\n sendDocument<TResponse = unknown>(request: MessageSendDocumentRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/document', request, options);\n }\n\n sendVideo<TResponse = unknown>(request: MessageSendVideoRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/video', request, options);\n }\n\n sendSticker<TResponse = unknown>(request: MessageSendStickerRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/sticker', request, options);\n }\n\n sendGif<TResponse = unknown>(request: MessageSendGifRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/gif', request, options);\n }\n\n sendLocation<TResponse = unknown>(request: MessageSendLocationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/location', request, options);\n }\n\n sendContact<TResponse = unknown>(request: MessageSendContactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/contact', request, options);\n }\n\n sendButtons<TResponse = unknown>(request: MessageSendButtonsRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/buttons', request, options);\n }\n\n sendList<TResponse = unknown>(request: MessageSendListRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/list', request, options);\n }\n\n sendLink<TResponse = unknown>(request: MessageSendLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/link', request, options);\n }\n\n sendPoll<TResponse = unknown>(request: MessageSendPollRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/poll', request, options);\n }\n\n pollVote<TResponse = unknown>(request: MessagePollVoteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/poll/vote', request, options);\n }\n\n react<TResponse = unknown>(request: MessageReactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/react', request, options);\n }\n\n removeReaction<TResponse = unknown>(request: MessageReactRemoveRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.sendRequest<TResponse>('DELETE', '/chat/react', request, options);\n }\n\n presence<TResponse = unknown>(request: MessagePresenceRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/presence', request, options);\n }\n\n markRead<TResponse = unknown>(request: MessageMarkReadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/markread', request, options);\n }\n\n downloadImage<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadimage', request, options);\n }\n\n downloadVideo<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadvideo', request, options);\n }\n\n downloadAudio<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadaudio', request, options);\n }\n\n downloadDocument<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloaddocument', request, options);\n }\n\n edit<TResponse = unknown>(request: MessageEditRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('PATCH', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n delete<TResponse = unknown>(request: MessageDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('DELETE', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n send<TResponse = unknown>(\n instanceId: string,\n path: string,\n body: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/chat/${path.replace(/^\\/+/, '')}`, {\n body,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n private post<TResponse>(path: string, request: InstanceScopedRequest, options: SignalOptions): Promise<TResponse> {\n return this.sendRequest<TResponse>('POST', path, request, options);\n }\n\n private sendRequest<TResponse>(\n method: Method,\n path: string,\n request: InstanceScopedRequest,\n options: SignalOptions,\n ): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: WebhookConfigRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n searchLogs<TResponse = unknown>(request: WebhookLogSearchRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook/logs/search`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n getLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n\n retryLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'POST',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}/retry`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n}\n\nexport class ContactsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/contact/list`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n add<TResponse = unknown>(request: ContactAddRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/contact/add`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class GroupsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: GroupListRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/group/list`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: GroupInfoRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/info`, {\n query: { groupId: request.groupId },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n inviteLink<TResponse = unknown>(request: GroupInviteLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/invitelink`, {\n query: { groupId: request.groupId, reset: request.reset },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n setPhoto<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/photo', options);\n }\n\n setName<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/name', options);\n }\n\n setDescription<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/description', options);\n }\n\n setSettings<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/settings', options);\n }\n\n create<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/create', options);\n }\n\n addAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/add-admin', options);\n }\n\n removeAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/remove-admin', options);\n }\n}\n\nexport class SessionsResource {\n constructor(private readonly http: HttpClient) {}\n\n status<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/status`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n qr<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/qr`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n pairCode<TResponse = unknown>(instanceId: string, phone: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(instanceId)}/session/paircode/${encodeURIComponent(phone)}`,\n {\n signal: options.signal,\n instanceToken: options.instanceToken,\n },\n );\n }\n\n disconnect<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/session/disconnect`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class UsersResource {\n constructor(private readonly http: HttpClient) {}\n\n info<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/info', options);\n }\n\n check<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/check', options);\n }\n\n avatar<TResponse = unknown>(request: UserAvatarRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/avatar', options);\n }\n\n contacts<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/user/contacts`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class QueuesResource {\n constructor(private readonly http: HttpClient) {}\n\n listMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/messages', options);\n }\n\n purgeMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/messages', options);\n }\n\n removeMessage<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/messages/${encodeURIComponent(messageId)}`, options);\n }\n\n listOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/operations', options);\n }\n\n purgeOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/operations', options);\n }\n\n removeOperation<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/operations/${encodeURIComponent(messageId)}`, options);\n }\n}\n\nexport class TypebotsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n create<TResponse = unknown>(request: TypebotRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/typebots', options);\n }\n\n update<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return requestInstancePath(this.http, 'PATCH', rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n delete<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n listSessions<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots/sessions`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n startSession<TResponse = unknown>(request: TypebotStartSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n const path = typebotId ? `/typebots/${encodeURIComponent(typebotId)}/sessions/start` : '/typebots/sessions/start';\n return postInstancePath(this.http, rest, path, options);\n }\n\n closeSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/close`, options);\n }\n\n pauseSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/pause`, options);\n }\n}\n\nexport class ChatwootResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: ChatwootRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/chatwoot', options);\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n triggerImport<TResponse = unknown>(request: ChatwootImportRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { what, ...rest } = request;\n return postInstancePath(this.http, rest, `/chatwoot/import/${encodeURIComponent(what)}`, options);\n }\n}\n\nexport class ChatsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: ChatListRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chats`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('GET', request, '', options);\n }\n\n archive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/archive', options);\n }\n\n unarchive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unarchive', options);\n }\n\n mute<TResponse = unknown>(request: ChatMuteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/mute', options);\n }\n\n unmute<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unmute', options);\n }\n\n pin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/pin', options);\n }\n\n unpin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unpin', options);\n }\n\n read<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/read', options);\n }\n\n unread<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unread', options);\n }\n\n clear<TResponse = unknown>(request: ChatClearRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/clear', options);\n }\n\n delete<TResponse = unknown>(request: ChatDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('DELETE', request, '', options);\n }\n\n setExpiration<TResponse = unknown>(request: ChatExpirationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('PUT', request, '/expiration', options);\n }\n\n private chatAction<TResponse>(method: Method, request: ChatRequest, suffix: string, options: SignalOptions): Promise<TResponse> {\n const { instanceId, instanceToken, phone, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}/chats/${encodeURIComponent(phone)}${suffix}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nfunction getInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'GET', request, path, options);\n}\n\nfunction postInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'POST', request, path, options);\n}\n\nfunction deleteInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'DELETE', request, path, options);\n}\n\nfunction requestInstancePath<TResponse>(\n http: HttpClient,\n method: Method,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n}\n","import { EventsResource } from './events.js';\nimport { HttpClient } from './http.js';\nimport {\n AuthResource,\n ChatwootResource,\n ChatsResource,\n ContactsResource,\n GroupsResource,\n InstancesResource,\n MessagesResource,\n QueuesResource,\n SessionsResource,\n TypebotsResource,\n UsersResource,\n WebhooksResource,\n} from './resources.js';\nimport type { RequestOptions, VZapsClientOptions } from './types.js';\n\nexport class VZapsClient {\n readonly auth: AuthResource;\n readonly instances: InstancesResource;\n readonly sessions: SessionsResource;\n readonly messages: MessagesResource;\n readonly webhooks: WebhooksResource;\n readonly contacts: ContactsResource;\n readonly groups: GroupsResource;\n readonly users: UsersResource;\n readonly queues: QueuesResource;\n readonly typebots: TypebotsResource;\n readonly chatwoot: ChatwootResource;\n readonly chats: ChatsResource;\n readonly events: EventsResource;\n\n private readonly http: HttpClient;\n\n constructor(options: VZapsClientOptions) {\n this.http = new HttpClient(options);\n this.auth = new AuthResource(this.http);\n this.instances = new InstancesResource(this.http);\n this.sessions = new SessionsResource(this.http);\n this.messages = new MessagesResource(this.http);\n this.webhooks = new WebhooksResource(this.http);\n this.contacts = new ContactsResource(this.http);\n this.groups = new GroupsResource(this.http);\n this.users = new UsersResource(this.http);\n this.queues = new QueuesResource(this.http);\n this.typebots = new TypebotsResource(this.http);\n this.chatwoot = new ChatwootResource(this.http);\n this.chats = new ChatsResource(this.http);\n this.events = new EventsResource(this.http, options.webSocketFactory);\n }\n\n request<TResponse = unknown>(method: string, path: string, options: RequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(method, path, options);\n }\n}\n"],"mappings":"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","names":["WebSocket","isRecord"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/events.ts","../src/errors.ts","../src/casing.ts","../src/http.ts","../src/resources.ts","../src/client.ts"],"sourcesContent":["export { VZapsClient } from './client.js';\nexport { EventSubscription, EventsResource } from './events.js';\nexport {\n AuthResource,\n ChatwootResource,\n ChatsResource,\n ContactsResource,\n GroupsResource,\n InstancesResource,\n MessagesResource,\n QueuesResource,\n SessionsResource,\n TypebotsResource,\n UsersResource,\n WebhooksResource,\n} from './resources.js';\nexport {\n VZapsAuthenticationError,\n VZapsError,\n VZapsTimeoutError,\n} from './errors.js';\nexport type {\n AuthTokenResponse,\n ChatClearRequest,\n ChatDeleteRequest,\n ChatExpirationRequest,\n ChatListRequest,\n ChatMuteRequest,\n ChatRequest,\n ChatwootImportRequest,\n ChatwootImportScope,\n ChatwootRequest,\n ContactAddRequest,\n ErrorHandler,\n EventHandler,\n EventSubscribeRequest,\n FetchLike,\n GroupInfoRequest,\n GroupInviteLinkRequest,\n GroupListRequest,\n GroupMutationRequest,\n InstanceCreateRequest,\n InstanceListRequest,\n InstanceRequestOptions,\n InstanceScopedRequest,\n JsonObject,\n MessageButton,\n MessageDeleteRequest,\n MessageDownloadRequest,\n MessageEditRequest,\n MessageListRow,\n MessageListSection,\n MessageMarkReadRequest,\n MessagePollVoteRequest,\n MessagePresenceRequest,\n MessageReactRemoveRequest,\n MessageReactRequest,\n MessageSendAudioRequest,\n MessageSendBaseRequest,\n MessageSendButtonsRequest,\n MessageSendContactRequest,\n MessageSendDocumentRequest,\n MessageSendGifRequest,\n MessageSendImageRequest,\n MessageSendLinkRequest,\n MessageSendListRequest,\n MessageSendLocationRequest,\n MessageSendPollRequest,\n MessageSendStickerRequest,\n MessageSendTextRequest,\n MessageSendVideoRequest,\n PaginatedQuery,\n QueueMessageRequest,\n QueueRequest,\n RequestOptions,\n TypebotMutationRequest,\n TypebotRequest,\n TypebotSessionRequest,\n TypebotStartSessionRequest,\n UserAvatarRequest,\n UserPhonesRequest,\n VZapsClientOptions,\n VZapsEvent,\n VZapsEventType,\n WebhookConfigRequest,\n WebhookLogRequest,\n WebhookLogSearchRequest,\n WebSocketFactory,\n WebSocketLike,\n} from './types.js';\n","import WebSocket from 'ws';\nimport type {\n ErrorHandler,\n EventHandler,\n EventSubscribeRequest,\n VZapsEvent,\n WebSocketFactory,\n WebSocketLike,\n} from './types.js';\nimport type { HttpClient } from './http.js';\n\ntype LifecycleEvent = 'open' | 'close' | 'error';\ntype HandlerMap = Map<string, Set<EventHandler>>;\n\nexport class EventsResource {\n constructor(\n private readonly http: HttpClient,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async subscribe(request: EventSubscribeRequest): Promise<EventSubscription> {\n const subscription = new EventSubscription(this.http, request, this.webSocketFactory);\n await subscription.open();\n return subscription;\n }\n}\n\nexport class EventSubscription {\n private readonly handlers: HandlerMap = new Map();\n private readonly errorHandlers = new Set<ErrorHandler>();\n private readonly lifecycleHandlers = new Map<LifecycleEvent, Set<(...args: unknown[]) => void>>();\n private socket?: WebSocketLike;\n private closed = false;\n private retryCount = 0;\n\n constructor(\n private readonly http: HttpClient,\n private readonly request: EventSubscribeRequest,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async open(): Promise<void> {\n const token = await this.http.getAccessToken(this.request.signal);\n const url = this.http.buildRealtimeUrl('/events/ws', {\n instance_id: this.request.instanceId,\n events: this.request.events?.join(','),\n access_token: token,\n client_token: this.http.clientToken,\n instance_token: this.request.instanceToken,\n last_event_id: this.request.lastEventId,\n });\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'X-Client-Token': this.http.clientToken,\n };\n\n headers['X-Instance-Token'] = this.request.instanceToken;\n\n this.socket = this.createSocket(url, headers);\n this.bindSocket(this.socket);\n }\n\n on<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.add(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.addLifecycleHandler(event, handler as (...args: unknown[]) => void);\n return this;\n }\n\n const handlers = this.handlers.get(event) ?? new Set<EventHandler>();\n handlers.add(handler as EventHandler);\n this.handlers.set(event, handlers);\n return this;\n }\n\n off<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.delete(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.lifecycleHandlers.get(event)?.delete(handler as (...args: unknown[]) => void);\n return this;\n }\n\n this.handlers.get(event)?.delete(handler as EventHandler);\n return this;\n }\n\n async close(code = 1000, reason = 'Client closed subscription'): Promise<void> {\n this.closed = true;\n this.socket?.close(code, reason);\n }\n\n private createSocket(url: string, headers: Record<string, string>): WebSocketLike {\n if (this.webSocketFactory) {\n return this.webSocketFactory(url, headers);\n }\n\n if (typeof globalThis.WebSocket !== 'undefined') {\n return new globalThis.WebSocket(url) as unknown as WebSocketLike;\n }\n\n return new WebSocket(url, { headers }) as unknown as WebSocketLike;\n }\n\n private bindSocket(socket: WebSocketLike): void {\n listen(socket, 'open', () => {\n this.retryCount = 0;\n this.emitLifecycle('open');\n });\n\n listen(socket, 'message', (eventOrData) => {\n const raw = readMessageData(eventOrData);\n if (raw !== undefined) {\n void this.dispatch(raw);\n }\n });\n\n listen(socket, 'error', (error) => {\n this.emitError(error);\n });\n\n listen(socket, 'close', () => {\n this.emitLifecycle('close');\n void this.reconnectIfNeeded();\n });\n\n this.request.signal?.addEventListener('abort', () => {\n void this.close(1000, 'Subscription aborted');\n }, { once: true });\n }\n\n private async dispatch(raw: unknown): Promise<void> {\n try {\n const event = parseEvent(raw);\n const handlers = new Set<EventHandler>([\n ...(this.handlers.get(event.type) ?? []),\n ...(this.handlers.get('All') ?? []),\n ]);\n\n await Promise.all([...handlers].map((handler) => handler(event)));\n this.ack(event.id);\n } catch (error) {\n this.emitError(error);\n }\n }\n\n private ack(eventId: string): void {\n if (!eventId || !this.socket) {\n return;\n }\n this.socket.send(JSON.stringify({ type: 'ack', event_id: eventId }));\n }\n\n private async reconnectIfNeeded(): Promise<void> {\n if (this.closed || this.request.reconnect === false) {\n return;\n }\n\n const maxRetries = this.request.maxRetries ?? Number.POSITIVE_INFINITY;\n if (this.retryCount >= maxRetries) {\n return;\n }\n\n this.retryCount += 1;\n await delay(this.request.retryDelayMs ?? Math.min(30_000, 1000 * this.retryCount));\n await this.open();\n }\n\n private addLifecycleHandler(event: LifecycleEvent, handler: (...args: unknown[]) => void): void {\n const handlers = this.lifecycleHandlers.get(event) ?? new Set<(...args: unknown[]) => void>();\n handlers.add(handler);\n this.lifecycleHandlers.set(event, handlers);\n }\n\n private emitLifecycle(event: LifecycleEvent, ...args: unknown[]): void {\n for (const handler of this.lifecycleHandlers.get(event) ?? []) {\n handler(...args);\n }\n }\n\n private emitError(error: unknown): void {\n if (this.errorHandlers.size === 0) {\n return;\n }\n\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }\n}\n\nfunction listen(socket: WebSocketLike, type: string, listener: (event: unknown) => void): void {\n if (socket.addEventListener) {\n socket.addEventListener(type, listener);\n return;\n }\n\n socket.on?.(type, listener);\n}\n\nfunction readMessageData(eventOrData: unknown): unknown {\n if (isRecord(eventOrData) && 'data' in eventOrData) {\n return eventOrData.data;\n }\n return eventOrData;\n}\n\nfunction parseEvent(raw: unknown): VZapsEvent {\n const text = typeof raw === 'string' ? raw : Buffer.isBuffer(raw) ? raw.toString('utf8') : String(raw);\n return JSON.parse(text) as VZapsEvent;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n","export class VZapsError extends Error {\n readonly status?: number;\n readonly code?: string;\n readonly details?: unknown;\n\n constructor(message: string, options: { status?: number; code?: string; details?: unknown } = {}) {\n super(message);\n this.name = 'VZapsError';\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class VZapsAuthenticationError extends VZapsError {\n constructor(message = 'Invalid VZaps client credentials', details?: unknown) {\n super(message, { status: 401, code: 'AUTHENTICATION_FAILED', details });\n this.name = 'VZapsAuthenticationError';\n }\n}\n\nexport class VZapsTimeoutError extends VZapsError {\n constructor(message = 'VZaps request timed out') {\n super(message, { code: 'REQUEST_TIMEOUT' });\n this.name = 'VZapsTimeoutError';\n }\n}\n","function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport function toSnakeCaseKey(key: string): string {\n return key\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .toLowerCase();\n}\n\nexport function toCamelCaseKey(key: string): string {\n return key.replace(/_([a-z0-9])/g, (_, char: string) => char.toUpperCase());\n}\n\nexport function keysToSnakeCase<T>(value: T): T {\n return transformKeys(value, toSnakeCaseKey) as T;\n}\n\nexport function keysToCamelCase<T>(value: T): T {\n return transformKeys(value, toCamelCaseKey) as T;\n}\n\nfunction transformKeys<T>(value: T, transformKey: (key: string) => string): T {\n if (Array.isArray(value)) {\n return value.map((item) => transformKeys(item, transformKey)) as T;\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, nested] of Object.entries(value)) {\n result[transformKey(key)] = transformKeys(nested, transformKey);\n }\n\n return result as T;\n}\n","import { VZapsAuthenticationError, VZapsError, VZapsTimeoutError } from './errors.js';\nimport { keysToCamelCase, keysToSnakeCase, toSnakeCaseKey } from './casing.js';\nimport type { AuthTokenResponse, FetchLike, RequestOptions, VZapsClientOptions } from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://api.vzaps.com';\nconst DEFAULT_REALTIME_URL = 'wss://realtime.vzaps.com';\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_TOKEN_SKEW_MS = 60_000;\n\ninterface CachedToken {\n accessToken: string;\n expiresAt: number;\n}\n\nexport class HttpClient {\n readonly baseUrl: string;\n readonly realtimeUrl?: string;\n readonly clientToken: string;\n readonly clientSecret: string;\n\n private readonly fetchImpl: FetchLike;\n private readonly timeoutMs: number;\n private readonly tokenSkewMs: number;\n private readonly userAgent?: string;\n private cachedToken?: CachedToken;\n private pendingToken?: Promise<string>;\n\n constructor(options: VZapsClientOptions) {\n this.clientToken = requireNonEmpty(options.clientToken, 'clientToken');\n this.clientSecret = requireNonEmpty(options.clientSecret, 'clientSecret');\n this.baseUrl = normalizeBaseUrl(options.baseUrl ?? DEFAULT_BASE_URL);\n this.realtimeUrl = normalizeBaseUrl(options.realtimeUrl ?? DEFAULT_REALTIME_URL);\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.tokenSkewMs = options.tokenSkewMs ?? DEFAULT_TOKEN_SKEW_MS;\n this.userAgent = options.userAgent;\n this.fetchImpl = options.fetch ?? globalThis.fetch;\n\n if (!this.fetchImpl) {\n throw new VZapsError('No fetch implementation available. Use Node.js 18+ or pass options.fetch.');\n }\n }\n\n async getAccessToken(signal?: AbortSignal): Promise<string> {\n if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {\n return this.cachedToken.accessToken;\n }\n\n this.pendingToken ??= this.requestToken(signal).finally(() => {\n this.pendingToken = undefined;\n });\n\n return this.pendingToken;\n }\n\n async request<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const url = this.buildUrl(path, options.query);\n const headers = new Headers();\n headers.set('Accept', 'application/json');\n\n if (options.body !== undefined) {\n headers.set('Content-Type', 'application/json');\n }\n\n if (this.userAgent) {\n headers.set('User-Agent', this.userAgent);\n }\n\n for (const [key, value] of Object.entries(options.headers ?? {})) {\n if (value !== undefined) {\n headers.set(key, value);\n }\n }\n\n if (options.auth !== false) {\n headers.set('Authorization', `Bearer ${await this.getAccessToken(options.signal)}`);\n headers.set('X-Client-Token', this.clientToken);\n }\n\n if (options.instanceToken) {\n headers.set('X-Instance-Token', options.instanceToken);\n }\n\n const body =\n options.body === undefined ? undefined : JSON.stringify(keysToSnakeCase(options.body));\n\n const response = await this.fetchWithTimeout(url, {\n method,\n headers,\n body,\n signal: options.signal,\n });\n\n return parseResponse<T>(response);\n }\n\n buildRealtimeUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.realtimeUrl!, path, query);\n }\n\n private async requestToken(signal?: AbortSignal): Promise<string> {\n const response = await this.request<AuthTokenResponse>('POST', '/token', {\n auth: false,\n signal,\n body: {\n clientToken: this.clientToken,\n clientSecret: this.clientSecret,\n },\n });\n\n if (!response.accessToken || !response.expiresIn) {\n throw new VZapsAuthenticationError('VZaps token response is missing accessToken or expiresIn', response);\n }\n\n this.cachedToken = {\n accessToken: response.accessToken,\n expiresAt: Date.now() + response.expiresIn * 1000 - this.tokenSkewMs,\n };\n\n return response.accessToken;\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.baseUrl, path, query);\n }\n\n private async fetchWithTimeout(url: string, init: RequestInit): Promise<Response> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n const signal = mergeSignals(controller.signal, init.signal ?? undefined);\n\n try {\n return await this.fetchImpl(url, { ...init, signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw new VZapsTimeoutError();\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n }\n}\n\nfunction requireNonEmpty(value: string | undefined, name: string): string {\n if (!value || value.trim() === '') {\n throw new VZapsError(`VZaps ${name} is required`);\n }\n return value;\n}\n\nfunction normalizeBaseUrl(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(`${normalizeBaseUrl(baseUrl)}${cleanPath}`);\n\n for (const [key, value] of Object.entries(query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(toSnakeCaseKey(key), String(value));\n }\n }\n\n return url.toString();\n}\n\nasync function parseResponse<T>(response: Response): Promise<T> {\n const text = await response.text();\n const data = text ? safeJsonParse(text) : undefined;\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new VZapsAuthenticationError(readErrorMessage(data, response.statusText), data);\n }\n\n throw new VZapsError(readErrorMessage(data, response.statusText), {\n status: response.status,\n details: data,\n });\n }\n\n return keysToCamelCase(data) as T;\n}\n\nfunction safeJsonParse(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction readErrorMessage(data: unknown, fallback: string): string {\n if (isRecord(data)) {\n if (typeof data.error === 'string') return data.error;\n if (typeof data.message === 'string') return data.message;\n }\n return fallback || 'VZaps request failed';\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction mergeSignals(primary: AbortSignal, secondary?: AbortSignal): AbortSignal {\n if (!secondary) {\n return primary;\n }\n\n if (secondary.aborted) {\n return secondary;\n }\n\n const controller = new AbortController();\n const abort = () => controller.abort();\n\n primary.addEventListener('abort', abort, { once: true });\n secondary.addEventListener('abort', abort, { once: true });\n\n return controller.signal;\n}\n","import type { HttpClient } from './http.js';\nimport type {\n ChatClearRequest,\n ChatDeleteRequest,\n ChatExpirationRequest,\n ChatListRequest,\n ChatMuteRequest,\n ChatRequest,\n ChatwootImportRequest,\n ChatwootRequest,\n ContactAddRequest,\n GroupInfoRequest,\n GroupInviteLinkRequest,\n GroupListRequest,\n GroupMutationRequest,\n InstanceCreateRequest,\n InstanceListRequest,\n InstanceRequestOptions,\n InstanceScopedRequest,\n MessageDeleteRequest,\n MessageDownloadRequest,\n MessageEditRequest,\n MessageMarkReadRequest,\n MessagePollVoteRequest,\n MessagePresenceRequest,\n MessageReactRemoveRequest,\n MessageReactRequest,\n MessageSendAudioRequest,\n MessageSendButtonsRequest,\n MessageSendContactRequest,\n MessageSendDocumentRequest,\n MessageSendGifRequest,\n MessageSendImageRequest,\n MessageSendLinkRequest,\n MessageSendListRequest,\n MessageSendLocationRequest,\n MessageSendPollRequest,\n MessageSendStickerRequest,\n MessageSendTextRequest,\n MessageSendVideoRequest,\n QueueMessageRequest,\n QueueRequest,\n TypebotMutationRequest,\n TypebotRequest,\n TypebotSessionRequest,\n TypebotStartSessionRequest,\n UserAvatarRequest,\n UserPhonesRequest,\n WebhookConfigRequest,\n WebhookLogRequest,\n WebhookLogSearchRequest,\n} from './types.js';\n\ntype SignalOptions = { signal?: AbortSignal };\ntype Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport class AuthResource {\n constructor(private readonly http: HttpClient) {}\n\n getAccessToken(signal?: AbortSignal): Promise<string> {\n return this.http.getAccessToken(signal);\n }\n}\n\nexport class InstancesResource {\n constructor(private readonly http: HttpClient) {}\n\n create<TResponse = unknown>(data: InstanceCreateRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/create', {\n body: data,\n signal: options.signal,\n });\n }\n\n list<TResponse = unknown>(data: InstanceListRequest = {}, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const page = data.page ?? 1;\n const size = data.size ?? data.pageSize ?? 20;\n const filter =\n data.filter ??\n (typeof data.search === 'string' && data.search.trim() !== '' ? { query: data.search.trim() } : {});\n\n return this.http.request<TResponse>('POST', '/instances/list', {\n body: {\n page,\n size,\n filter,\n sort: data.sort,\n sortDesc: data.sortDesc,\n },\n signal: options.signal,\n });\n }\n\n get<TResponse = unknown>(instanceId: string, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/get', {\n body: { id: instanceId },\n signal: options.signal,\n });\n }\n\n update<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('PATCH', `/instances/${encodeURIComponent(instanceId)}`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n restart<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/restart`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n provision<TResponse = unknown>(data: InstanceCreateRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/provision', {\n body: data,\n signal: options.signal,\n });\n }\n\n search<TResponse = unknown>(data: Record<string, unknown>, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/search', {\n body: data,\n signal: options.signal,\n });\n }\n\n subscribe<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown> = {},\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/subscribe`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n resumeSubscription<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/resume-subscription`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n cancel<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', `/instances/${encodeURIComponent(instanceId)}/cancel`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class MessagesResource {\n constructor(private readonly http: HttpClient) {}\n\n sendText<TResponse = unknown>(request: MessageSendTextRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/text', request, options);\n }\n\n sendImage<TResponse = unknown>(request: MessageSendImageRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/image', request, options);\n }\n\n sendAudio<TResponse = unknown>(request: MessageSendAudioRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/audio', request, options);\n }\n\n sendDocument<TResponse = unknown>(request: MessageSendDocumentRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/document', request, options);\n }\n\n sendVideo<TResponse = unknown>(request: MessageSendVideoRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/video', request, options);\n }\n\n sendSticker<TResponse = unknown>(request: MessageSendStickerRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/sticker', request, options);\n }\n\n sendGif<TResponse = unknown>(request: MessageSendGifRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/gif', request, options);\n }\n\n sendLocation<TResponse = unknown>(request: MessageSendLocationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/location', request, options);\n }\n\n sendContact<TResponse = unknown>(request: MessageSendContactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/contact', request, options);\n }\n\n sendButtons<TResponse = unknown>(request: MessageSendButtonsRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/buttons', request, options);\n }\n\n sendList<TResponse = unknown>(request: MessageSendListRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/list', request, options);\n }\n\n sendLink<TResponse = unknown>(request: MessageSendLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/link', request, options);\n }\n\n sendPoll<TResponse = unknown>(request: MessageSendPollRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/poll', request, options);\n }\n\n pollVote<TResponse = unknown>(request: MessagePollVoteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/poll/vote', request, options);\n }\n\n react<TResponse = unknown>(request: MessageReactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/react', request, options);\n }\n\n removeReaction<TResponse = unknown>(request: MessageReactRemoveRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.sendRequest<TResponse>('DELETE', '/chat/react', request, options);\n }\n\n presence<TResponse = unknown>(request: MessagePresenceRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/presence', request, options);\n }\n\n markRead<TResponse = unknown>(request: MessageMarkReadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/markread', request, options);\n }\n\n downloadImage<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadimage', request, options);\n }\n\n downloadVideo<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadvideo', request, options);\n }\n\n downloadAudio<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadaudio', request, options);\n }\n\n downloadDocument<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloaddocument', request, options);\n }\n\n edit<TResponse = unknown>(request: MessageEditRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('PATCH', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n delete<TResponse = unknown>(request: MessageDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('DELETE', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n send<TResponse = unknown>(\n instanceId: string,\n path: string,\n body: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/chat/${path.replace(/^\\/+/, '')}`, {\n body,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n private post<TResponse>(path: string, request: InstanceScopedRequest, options: SignalOptions): Promise<TResponse> {\n return this.sendRequest<TResponse>('POST', path, request, options);\n }\n\n private sendRequest<TResponse>(\n method: Method,\n path: string,\n request: InstanceScopedRequest,\n options: SignalOptions,\n ): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: WebhookConfigRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n searchLogs<TResponse = unknown>(request: WebhookLogSearchRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook/logs/search`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n getLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n\n retryLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'POST',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}/retry`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n}\n\nexport class ContactsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/contact/list`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n add<TResponse = unknown>(request: ContactAddRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/contact/add`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class GroupsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: GroupListRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/group/list`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: GroupInfoRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/info`, {\n query: { groupId: request.groupId },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n inviteLink<TResponse = unknown>(request: GroupInviteLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/invitelink`, {\n query: { groupId: request.groupId, reset: request.reset },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n setPhoto<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/photo', options);\n }\n\n setName<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/name', options);\n }\n\n setDescription<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/description', options);\n }\n\n setSettings<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/settings', options);\n }\n\n create<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/create', options);\n }\n\n addAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/add-admin', options);\n }\n\n removeAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/remove-admin', options);\n }\n}\n\nexport class SessionsResource {\n constructor(private readonly http: HttpClient) {}\n\n status<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/status`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n qr<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/qr`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n pairCode<TResponse = unknown>(instanceId: string, phone: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(instanceId)}/session/paircode/${encodeURIComponent(phone)}`,\n {\n signal: options.signal,\n instanceToken: options.instanceToken,\n },\n );\n }\n\n disconnect<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/session/disconnect`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class UsersResource {\n constructor(private readonly http: HttpClient) {}\n\n info<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/info', options);\n }\n\n check<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/check', options);\n }\n\n avatar<TResponse = unknown>(request: UserAvatarRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/avatar', options);\n }\n\n contacts<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/user/contacts`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class QueuesResource {\n constructor(private readonly http: HttpClient) {}\n\n listMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/messages', options);\n }\n\n purgeMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/messages', options);\n }\n\n removeMessage<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/messages/${encodeURIComponent(messageId)}`, options);\n }\n\n listOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/operations', options);\n }\n\n purgeOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/operations', options);\n }\n\n removeOperation<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/operations/${encodeURIComponent(messageId)}`, options);\n }\n}\n\nexport class TypebotsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n create<TResponse = unknown>(request: TypebotRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/typebots', options);\n }\n\n update<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return requestInstancePath(this.http, 'PATCH', rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n delete<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n listSessions<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots/sessions`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n startSession<TResponse = unknown>(request: TypebotStartSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n const path = typebotId ? `/typebots/${encodeURIComponent(typebotId)}/sessions/start` : '/typebots/sessions/start';\n return postInstancePath(this.http, rest, path, options);\n }\n\n closeSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/close`, options);\n }\n\n pauseSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/pause`, options);\n }\n}\n\nexport class ChatwootResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: ChatwootRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/chatwoot', options);\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n triggerImport<TResponse = unknown>(request: ChatwootImportRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { what, ...rest } = request;\n return postInstancePath(this.http, rest, `/chatwoot/import/${encodeURIComponent(what)}`, options);\n }\n}\n\nexport class ChatsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: ChatListRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chats`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('GET', request, '', options);\n }\n\n archive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/archive', options);\n }\n\n unarchive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unarchive', options);\n }\n\n mute<TResponse = unknown>(request: ChatMuteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/mute', options);\n }\n\n unmute<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unmute', options);\n }\n\n pin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/pin', options);\n }\n\n unpin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unpin', options);\n }\n\n read<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/read', options);\n }\n\n unread<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unread', options);\n }\n\n clear<TResponse = unknown>(request: ChatClearRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/clear', options);\n }\n\n delete<TResponse = unknown>(request: ChatDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('DELETE', request, '', options);\n }\n\n setExpiration<TResponse = unknown>(request: ChatExpirationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('PUT', request, '/expiration', options);\n }\n\n private chatAction<TResponse>(method: Method, request: ChatRequest, suffix: string, options: SignalOptions): Promise<TResponse> {\n const { instanceId, instanceToken, phone, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}/chats/${encodeURIComponent(phone)}${suffix}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nfunction getInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'GET', request, path, options);\n}\n\nfunction postInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'POST', request, path, options);\n}\n\nfunction deleteInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'DELETE', request, path, options);\n}\n\nfunction requestInstancePath<TResponse>(\n http: HttpClient,\n method: Method,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n}\n","import { EventsResource } from './events.js';\nimport { HttpClient } from './http.js';\nimport {\n AuthResource,\n ChatwootResource,\n ChatsResource,\n ContactsResource,\n GroupsResource,\n InstancesResource,\n MessagesResource,\n QueuesResource,\n SessionsResource,\n TypebotsResource,\n UsersResource,\n WebhooksResource,\n} from './resources.js';\nimport type { RequestOptions, VZapsClientOptions } from './types.js';\n\nexport class VZapsClient {\n readonly auth: AuthResource;\n readonly instances: InstancesResource;\n readonly sessions: SessionsResource;\n readonly messages: MessagesResource;\n readonly webhooks: WebhooksResource;\n readonly contacts: ContactsResource;\n readonly groups: GroupsResource;\n readonly users: UsersResource;\n readonly queues: QueuesResource;\n readonly typebots: TypebotsResource;\n readonly chatwoot: ChatwootResource;\n readonly chats: ChatsResource;\n readonly events: EventsResource;\n\n private readonly http: HttpClient;\n\n constructor(options: VZapsClientOptions) {\n this.http = new HttpClient(options);\n this.auth = new AuthResource(this.http);\n this.instances = new InstancesResource(this.http);\n this.sessions = new SessionsResource(this.http);\n this.messages = new MessagesResource(this.http);\n this.webhooks = new WebhooksResource(this.http);\n this.contacts = new ContactsResource(this.http);\n this.groups = new GroupsResource(this.http);\n this.users = new UsersResource(this.http);\n this.queues = new QueuesResource(this.http);\n this.typebots = new TypebotsResource(this.http);\n this.chatwoot = new ChatwootResource(this.http);\n this.chats = new ChatsResource(this.http);\n this.events = new EventsResource(this.http, options.webSocketFactory);\n }\n\n request<TResponse = unknown>(method: string, path: string, options: RequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(method, path, options);\n }\n}\n"],"mappings":"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","names":["WebSocket","isRecord"]}
package/dist/index.d.cts CHANGED
@@ -53,7 +53,12 @@ interface InstanceCreateRequest extends JsonObject {
53
53
  }
54
54
  interface InstanceListRequest extends JsonObject {
55
55
  page?: number;
56
+ /** Page size for POST /instances/list (wire field: `size`). */
57
+ size?: number;
58
+ /** Alias for `size` in SDK requests. */
56
59
  pageSize?: number;
60
+ filter?: JsonObject;
61
+ /** Shorthand for `filter.query`. */
57
62
  search?: string;
58
63
  sort?: string;
59
64
  sortDesc?: boolean;
@@ -376,7 +381,9 @@ declare class InstancesResource {
376
381
  list<TResponse = unknown>(data?: InstanceListRequest, options?: {
377
382
  signal?: AbortSignal;
378
383
  }): Promise<TResponse>;
379
- get<TResponse = unknown>(instanceId: string, options?: InstanceRequestOptions): Promise<TResponse>;
384
+ get<TResponse = unknown>(instanceId: string, options?: {
385
+ signal?: AbortSignal;
386
+ }): Promise<TResponse>;
380
387
  update<TResponse = unknown>(instanceId: string, data: Record<string, unknown>, options?: InstanceRequestOptions): Promise<TResponse>;
381
388
  restart<TResponse = unknown>(instanceId: string, options?: InstanceRequestOptions): Promise<TResponse>;
382
389
  delete<TResponse = unknown>(instanceId: string, options?: InstanceRequestOptions): Promise<TResponse>;
package/dist/index.d.ts CHANGED
@@ -53,7 +53,12 @@ interface InstanceCreateRequest extends JsonObject {
53
53
  }
54
54
  interface InstanceListRequest extends JsonObject {
55
55
  page?: number;
56
+ /** Page size for POST /instances/list (wire field: `size`). */
57
+ size?: number;
58
+ /** Alias for `size` in SDK requests. */
56
59
  pageSize?: number;
60
+ filter?: JsonObject;
61
+ /** Shorthand for `filter.query`. */
57
62
  search?: string;
58
63
  sort?: string;
59
64
  sortDesc?: boolean;
@@ -376,7 +381,9 @@ declare class InstancesResource {
376
381
  list<TResponse = unknown>(data?: InstanceListRequest, options?: {
377
382
  signal?: AbortSignal;
378
383
  }): Promise<TResponse>;
379
- get<TResponse = unknown>(instanceId: string, options?: InstanceRequestOptions): Promise<TResponse>;
384
+ get<TResponse = unknown>(instanceId: string, options?: {
385
+ signal?: AbortSignal;
386
+ }): Promise<TResponse>;
380
387
  update<TResponse = unknown>(instanceId: string, data: Record<string, unknown>, options?: InstanceRequestOptions): Promise<TResponse>;
381
388
  restart<TResponse = unknown>(instanceId: string, options?: InstanceRequestOptions): Promise<TResponse>;
382
389
  delete<TResponse = unknown>(instanceId: string, options?: InstanceRequestOptions): Promise<TResponse>;
package/dist/index.js CHANGED
@@ -432,15 +432,24 @@ var InstancesResource = class {
432
432
  });
433
433
  }
434
434
  list(data = {}, options = {}) {
435
+ const page = data.page ?? 1;
436
+ const size = data.size ?? data.pageSize ?? 20;
437
+ const filter = data.filter ?? (typeof data.search === "string" && data.search.trim() !== "" ? { query: data.search.trim() } : {});
435
438
  return this.http.request("POST", "/instances/list", {
436
- body: data,
439
+ body: {
440
+ page,
441
+ size,
442
+ filter,
443
+ sort: data.sort,
444
+ sortDesc: data.sortDesc
445
+ },
437
446
  signal: options.signal
438
447
  });
439
448
  }
440
449
  get(instanceId, options = {}) {
441
- return this.http.request("GET", `/instances/${encodeURIComponent(instanceId)}`, {
442
- signal: options.signal,
443
- instanceToken: options.instanceToken
450
+ return this.http.request("POST", "/instances/get", {
451
+ body: { id: instanceId },
452
+ signal: options.signal
444
453
  });
445
454
  }
446
455
  update(instanceId, data, options = {}) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/events.ts","../src/errors.ts","../src/casing.ts","../src/http.ts","../src/resources.ts","../src/client.ts"],"sourcesContent":["import WebSocket from 'ws';\nimport type {\n ErrorHandler,\n EventHandler,\n EventSubscribeRequest,\n VZapsEvent,\n WebSocketFactory,\n WebSocketLike,\n} from './types.js';\nimport type { HttpClient } from './http.js';\n\ntype LifecycleEvent = 'open' | 'close' | 'error';\ntype HandlerMap = Map<string, Set<EventHandler>>;\n\nexport class EventsResource {\n constructor(\n private readonly http: HttpClient,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async subscribe(request: EventSubscribeRequest): Promise<EventSubscription> {\n const subscription = new EventSubscription(this.http, request, this.webSocketFactory);\n await subscription.open();\n return subscription;\n }\n}\n\nexport class EventSubscription {\n private readonly handlers: HandlerMap = new Map();\n private readonly errorHandlers = new Set<ErrorHandler>();\n private readonly lifecycleHandlers = new Map<LifecycleEvent, Set<(...args: unknown[]) => void>>();\n private socket?: WebSocketLike;\n private closed = false;\n private retryCount = 0;\n\n constructor(\n private readonly http: HttpClient,\n private readonly request: EventSubscribeRequest,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async open(): Promise<void> {\n const token = await this.http.getAccessToken(this.request.signal);\n const url = this.http.buildRealtimeUrl('/events/ws', {\n instance_id: this.request.instanceId,\n events: this.request.events?.join(','),\n access_token: token,\n client_token: this.http.clientToken,\n instance_token: this.request.instanceToken,\n last_event_id: this.request.lastEventId,\n });\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'X-Client-Token': this.http.clientToken,\n };\n\n headers['X-Instance-Token'] = this.request.instanceToken;\n\n this.socket = this.createSocket(url, headers);\n this.bindSocket(this.socket);\n }\n\n on<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.add(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.addLifecycleHandler(event, handler as (...args: unknown[]) => void);\n return this;\n }\n\n const handlers = this.handlers.get(event) ?? new Set<EventHandler>();\n handlers.add(handler as EventHandler);\n this.handlers.set(event, handlers);\n return this;\n }\n\n off<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.delete(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.lifecycleHandlers.get(event)?.delete(handler as (...args: unknown[]) => void);\n return this;\n }\n\n this.handlers.get(event)?.delete(handler as EventHandler);\n return this;\n }\n\n async close(code = 1000, reason = 'Client closed subscription'): Promise<void> {\n this.closed = true;\n this.socket?.close(code, reason);\n }\n\n private createSocket(url: string, headers: Record<string, string>): WebSocketLike {\n if (this.webSocketFactory) {\n return this.webSocketFactory(url, headers);\n }\n\n if (typeof globalThis.WebSocket !== 'undefined') {\n return new globalThis.WebSocket(url) as unknown as WebSocketLike;\n }\n\n return new WebSocket(url, { headers }) as unknown as WebSocketLike;\n }\n\n private bindSocket(socket: WebSocketLike): void {\n listen(socket, 'open', () => {\n this.retryCount = 0;\n this.emitLifecycle('open');\n });\n\n listen(socket, 'message', (eventOrData) => {\n const raw = readMessageData(eventOrData);\n if (raw !== undefined) {\n void this.dispatch(raw);\n }\n });\n\n listen(socket, 'error', (error) => {\n this.emitError(error);\n });\n\n listen(socket, 'close', () => {\n this.emitLifecycle('close');\n void this.reconnectIfNeeded();\n });\n\n this.request.signal?.addEventListener('abort', () => {\n void this.close(1000, 'Subscription aborted');\n }, { once: true });\n }\n\n private async dispatch(raw: unknown): Promise<void> {\n try {\n const event = parseEvent(raw);\n const handlers = new Set<EventHandler>([\n ...(this.handlers.get(event.type) ?? []),\n ...(this.handlers.get('All') ?? []),\n ]);\n\n await Promise.all([...handlers].map((handler) => handler(event)));\n this.ack(event.id);\n } catch (error) {\n this.emitError(error);\n }\n }\n\n private ack(eventId: string): void {\n if (!eventId || !this.socket) {\n return;\n }\n this.socket.send(JSON.stringify({ type: 'ack', event_id: eventId }));\n }\n\n private async reconnectIfNeeded(): Promise<void> {\n if (this.closed || this.request.reconnect === false) {\n return;\n }\n\n const maxRetries = this.request.maxRetries ?? Number.POSITIVE_INFINITY;\n if (this.retryCount >= maxRetries) {\n return;\n }\n\n this.retryCount += 1;\n await delay(this.request.retryDelayMs ?? Math.min(30_000, 1000 * this.retryCount));\n await this.open();\n }\n\n private addLifecycleHandler(event: LifecycleEvent, handler: (...args: unknown[]) => void): void {\n const handlers = this.lifecycleHandlers.get(event) ?? new Set<(...args: unknown[]) => void>();\n handlers.add(handler);\n this.lifecycleHandlers.set(event, handlers);\n }\n\n private emitLifecycle(event: LifecycleEvent, ...args: unknown[]): void {\n for (const handler of this.lifecycleHandlers.get(event) ?? []) {\n handler(...args);\n }\n }\n\n private emitError(error: unknown): void {\n if (this.errorHandlers.size === 0) {\n return;\n }\n\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }\n}\n\nfunction listen(socket: WebSocketLike, type: string, listener: (event: unknown) => void): void {\n if (socket.addEventListener) {\n socket.addEventListener(type, listener);\n return;\n }\n\n socket.on?.(type, listener);\n}\n\nfunction readMessageData(eventOrData: unknown): unknown {\n if (isRecord(eventOrData) && 'data' in eventOrData) {\n return eventOrData.data;\n }\n return eventOrData;\n}\n\nfunction parseEvent(raw: unknown): VZapsEvent {\n const text = typeof raw === 'string' ? raw : Buffer.isBuffer(raw) ? raw.toString('utf8') : String(raw);\n return JSON.parse(text) as VZapsEvent;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n","export class VZapsError extends Error {\n readonly status?: number;\n readonly code?: string;\n readonly details?: unknown;\n\n constructor(message: string, options: { status?: number; code?: string; details?: unknown } = {}) {\n super(message);\n this.name = 'VZapsError';\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class VZapsAuthenticationError extends VZapsError {\n constructor(message = 'Invalid VZaps client credentials', details?: unknown) {\n super(message, { status: 401, code: 'AUTHENTICATION_FAILED', details });\n this.name = 'VZapsAuthenticationError';\n }\n}\n\nexport class VZapsTimeoutError extends VZapsError {\n constructor(message = 'VZaps request timed out') {\n super(message, { code: 'REQUEST_TIMEOUT' });\n this.name = 'VZapsTimeoutError';\n }\n}\n","function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport function toSnakeCaseKey(key: string): string {\n return key\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .toLowerCase();\n}\n\nexport function toCamelCaseKey(key: string): string {\n return key.replace(/_([a-z0-9])/g, (_, char: string) => char.toUpperCase());\n}\n\nexport function keysToSnakeCase<T>(value: T): T {\n return transformKeys(value, toSnakeCaseKey) as T;\n}\n\nexport function keysToCamelCase<T>(value: T): T {\n return transformKeys(value, toCamelCaseKey) as T;\n}\n\nfunction transformKeys<T>(value: T, transformKey: (key: string) => string): T {\n if (Array.isArray(value)) {\n return value.map((item) => transformKeys(item, transformKey)) as T;\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, nested] of Object.entries(value)) {\n result[transformKey(key)] = transformKeys(nested, transformKey);\n }\n\n return result as T;\n}\n","import { VZapsAuthenticationError, VZapsError, VZapsTimeoutError } from './errors.js';\nimport { keysToCamelCase, keysToSnakeCase, toSnakeCaseKey } from './casing.js';\nimport type { AuthTokenResponse, FetchLike, RequestOptions, VZapsClientOptions } from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://api.vzaps.com';\nconst DEFAULT_REALTIME_URL = 'wss://realtime.vzaps.com';\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_TOKEN_SKEW_MS = 60_000;\n\ninterface CachedToken {\n accessToken: string;\n expiresAt: number;\n}\n\nexport class HttpClient {\n readonly baseUrl: string;\n readonly realtimeUrl?: string;\n readonly clientToken: string;\n readonly clientSecret: string;\n\n private readonly fetchImpl: FetchLike;\n private readonly timeoutMs: number;\n private readonly tokenSkewMs: number;\n private readonly userAgent?: string;\n private cachedToken?: CachedToken;\n private pendingToken?: Promise<string>;\n\n constructor(options: VZapsClientOptions) {\n this.clientToken = requireNonEmpty(options.clientToken, 'clientToken');\n this.clientSecret = requireNonEmpty(options.clientSecret, 'clientSecret');\n this.baseUrl = normalizeBaseUrl(options.baseUrl ?? DEFAULT_BASE_URL);\n this.realtimeUrl = normalizeBaseUrl(options.realtimeUrl ?? DEFAULT_REALTIME_URL);\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.tokenSkewMs = options.tokenSkewMs ?? DEFAULT_TOKEN_SKEW_MS;\n this.userAgent = options.userAgent;\n this.fetchImpl = options.fetch ?? globalThis.fetch;\n\n if (!this.fetchImpl) {\n throw new VZapsError('No fetch implementation available. Use Node.js 18+ or pass options.fetch.');\n }\n }\n\n async getAccessToken(signal?: AbortSignal): Promise<string> {\n if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {\n return this.cachedToken.accessToken;\n }\n\n this.pendingToken ??= this.requestToken(signal).finally(() => {\n this.pendingToken = undefined;\n });\n\n return this.pendingToken;\n }\n\n async request<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const url = this.buildUrl(path, options.query);\n const headers = new Headers();\n headers.set('Accept', 'application/json');\n\n if (options.body !== undefined) {\n headers.set('Content-Type', 'application/json');\n }\n\n if (this.userAgent) {\n headers.set('User-Agent', this.userAgent);\n }\n\n for (const [key, value] of Object.entries(options.headers ?? {})) {\n if (value !== undefined) {\n headers.set(key, value);\n }\n }\n\n if (options.auth !== false) {\n headers.set('Authorization', `Bearer ${await this.getAccessToken(options.signal)}`);\n headers.set('X-Client-Token', this.clientToken);\n }\n\n if (options.instanceToken) {\n headers.set('X-Instance-Token', options.instanceToken);\n }\n\n const body =\n options.body === undefined ? undefined : JSON.stringify(keysToSnakeCase(options.body));\n\n const response = await this.fetchWithTimeout(url, {\n method,\n headers,\n body,\n signal: options.signal,\n });\n\n return parseResponse<T>(response);\n }\n\n buildRealtimeUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.realtimeUrl!, path, query);\n }\n\n private async requestToken(signal?: AbortSignal): Promise<string> {\n const response = await this.request<AuthTokenResponse>('POST', '/token', {\n auth: false,\n signal,\n body: {\n clientToken: this.clientToken,\n clientSecret: this.clientSecret,\n },\n });\n\n if (!response.accessToken || !response.expiresIn) {\n throw new VZapsAuthenticationError('VZaps token response is missing accessToken or expiresIn', response);\n }\n\n this.cachedToken = {\n accessToken: response.accessToken,\n expiresAt: Date.now() + response.expiresIn * 1000 - this.tokenSkewMs,\n };\n\n return response.accessToken;\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.baseUrl, path, query);\n }\n\n private async fetchWithTimeout(url: string, init: RequestInit): Promise<Response> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n const signal = mergeSignals(controller.signal, init.signal ?? undefined);\n\n try {\n return await this.fetchImpl(url, { ...init, signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw new VZapsTimeoutError();\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n }\n}\n\nfunction requireNonEmpty(value: string | undefined, name: string): string {\n if (!value || value.trim() === '') {\n throw new VZapsError(`VZaps ${name} is required`);\n }\n return value;\n}\n\nfunction normalizeBaseUrl(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(`${normalizeBaseUrl(baseUrl)}${cleanPath}`);\n\n for (const [key, value] of Object.entries(query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(toSnakeCaseKey(key), String(value));\n }\n }\n\n return url.toString();\n}\n\nasync function parseResponse<T>(response: Response): Promise<T> {\n const text = await response.text();\n const data = text ? safeJsonParse(text) : undefined;\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new VZapsAuthenticationError(readErrorMessage(data, response.statusText), data);\n }\n\n throw new VZapsError(readErrorMessage(data, response.statusText), {\n status: response.status,\n details: data,\n });\n }\n\n return keysToCamelCase(data) as T;\n}\n\nfunction safeJsonParse(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction readErrorMessage(data: unknown, fallback: string): string {\n if (isRecord(data)) {\n if (typeof data.error === 'string') return data.error;\n if (typeof data.message === 'string') return data.message;\n }\n return fallback || 'VZaps request failed';\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction mergeSignals(primary: AbortSignal, secondary?: AbortSignal): AbortSignal {\n if (!secondary) {\n return primary;\n }\n\n if (secondary.aborted) {\n return secondary;\n }\n\n const controller = new AbortController();\n const abort = () => controller.abort();\n\n primary.addEventListener('abort', abort, { once: true });\n secondary.addEventListener('abort', abort, { once: true });\n\n return controller.signal;\n}\n","import type { HttpClient } from './http.js';\nimport type {\n ChatClearRequest,\n ChatDeleteRequest,\n ChatExpirationRequest,\n ChatListRequest,\n ChatMuteRequest,\n ChatRequest,\n ChatwootImportRequest,\n ChatwootRequest,\n ContactAddRequest,\n GroupInfoRequest,\n GroupInviteLinkRequest,\n GroupListRequest,\n GroupMutationRequest,\n InstanceCreateRequest,\n InstanceListRequest,\n InstanceRequestOptions,\n InstanceScopedRequest,\n MessageDeleteRequest,\n MessageDownloadRequest,\n MessageEditRequest,\n MessageMarkReadRequest,\n MessagePollVoteRequest,\n MessagePresenceRequest,\n MessageReactRemoveRequest,\n MessageReactRequest,\n MessageSendAudioRequest,\n MessageSendButtonsRequest,\n MessageSendContactRequest,\n MessageSendDocumentRequest,\n MessageSendGifRequest,\n MessageSendImageRequest,\n MessageSendLinkRequest,\n MessageSendListRequest,\n MessageSendLocationRequest,\n MessageSendPollRequest,\n MessageSendStickerRequest,\n MessageSendTextRequest,\n MessageSendVideoRequest,\n QueueMessageRequest,\n QueueRequest,\n TypebotMutationRequest,\n TypebotRequest,\n TypebotSessionRequest,\n TypebotStartSessionRequest,\n UserAvatarRequest,\n UserPhonesRequest,\n WebhookConfigRequest,\n WebhookLogRequest,\n WebhookLogSearchRequest,\n} from './types.js';\n\ntype SignalOptions = { signal?: AbortSignal };\ntype Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport class AuthResource {\n constructor(private readonly http: HttpClient) {}\n\n getAccessToken(signal?: AbortSignal): Promise<string> {\n return this.http.getAccessToken(signal);\n }\n}\n\nexport class InstancesResource {\n constructor(private readonly http: HttpClient) {}\n\n create<TResponse = unknown>(data: InstanceCreateRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/create', {\n body: data,\n signal: options.signal,\n });\n }\n\n list<TResponse = unknown>(data: InstanceListRequest = {}, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/list', {\n body: data,\n signal: options.signal,\n });\n }\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n update<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('PATCH', `/instances/${encodeURIComponent(instanceId)}`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n restart<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/restart`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n provision<TResponse = unknown>(data: InstanceCreateRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/provision', {\n body: data,\n signal: options.signal,\n });\n }\n\n search<TResponse = unknown>(data: Record<string, unknown>, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/search', {\n body: data,\n signal: options.signal,\n });\n }\n\n subscribe<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown> = {},\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/subscribe`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n resumeSubscription<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/resume-subscription`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n cancel<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', `/instances/${encodeURIComponent(instanceId)}/cancel`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class MessagesResource {\n constructor(private readonly http: HttpClient) {}\n\n sendText<TResponse = unknown>(request: MessageSendTextRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/text', request, options);\n }\n\n sendImage<TResponse = unknown>(request: MessageSendImageRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/image', request, options);\n }\n\n sendAudio<TResponse = unknown>(request: MessageSendAudioRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/audio', request, options);\n }\n\n sendDocument<TResponse = unknown>(request: MessageSendDocumentRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/document', request, options);\n }\n\n sendVideo<TResponse = unknown>(request: MessageSendVideoRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/video', request, options);\n }\n\n sendSticker<TResponse = unknown>(request: MessageSendStickerRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/sticker', request, options);\n }\n\n sendGif<TResponse = unknown>(request: MessageSendGifRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/gif', request, options);\n }\n\n sendLocation<TResponse = unknown>(request: MessageSendLocationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/location', request, options);\n }\n\n sendContact<TResponse = unknown>(request: MessageSendContactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/contact', request, options);\n }\n\n sendButtons<TResponse = unknown>(request: MessageSendButtonsRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/buttons', request, options);\n }\n\n sendList<TResponse = unknown>(request: MessageSendListRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/list', request, options);\n }\n\n sendLink<TResponse = unknown>(request: MessageSendLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/link', request, options);\n }\n\n sendPoll<TResponse = unknown>(request: MessageSendPollRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/poll', request, options);\n }\n\n pollVote<TResponse = unknown>(request: MessagePollVoteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/poll/vote', request, options);\n }\n\n react<TResponse = unknown>(request: MessageReactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/react', request, options);\n }\n\n removeReaction<TResponse = unknown>(request: MessageReactRemoveRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.sendRequest<TResponse>('DELETE', '/chat/react', request, options);\n }\n\n presence<TResponse = unknown>(request: MessagePresenceRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/presence', request, options);\n }\n\n markRead<TResponse = unknown>(request: MessageMarkReadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/markread', request, options);\n }\n\n downloadImage<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadimage', request, options);\n }\n\n downloadVideo<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadvideo', request, options);\n }\n\n downloadAudio<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadaudio', request, options);\n }\n\n downloadDocument<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloaddocument', request, options);\n }\n\n edit<TResponse = unknown>(request: MessageEditRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('PATCH', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n delete<TResponse = unknown>(request: MessageDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('DELETE', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n send<TResponse = unknown>(\n instanceId: string,\n path: string,\n body: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/chat/${path.replace(/^\\/+/, '')}`, {\n body,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n private post<TResponse>(path: string, request: InstanceScopedRequest, options: SignalOptions): Promise<TResponse> {\n return this.sendRequest<TResponse>('POST', path, request, options);\n }\n\n private sendRequest<TResponse>(\n method: Method,\n path: string,\n request: InstanceScopedRequest,\n options: SignalOptions,\n ): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: WebhookConfigRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n searchLogs<TResponse = unknown>(request: WebhookLogSearchRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook/logs/search`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n getLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n\n retryLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'POST',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}/retry`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n}\n\nexport class ContactsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/contact/list`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n add<TResponse = unknown>(request: ContactAddRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/contact/add`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class GroupsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: GroupListRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/group/list`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: GroupInfoRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/info`, {\n query: { groupId: request.groupId },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n inviteLink<TResponse = unknown>(request: GroupInviteLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/invitelink`, {\n query: { groupId: request.groupId, reset: request.reset },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n setPhoto<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/photo', options);\n }\n\n setName<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/name', options);\n }\n\n setDescription<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/description', options);\n }\n\n setSettings<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/settings', options);\n }\n\n create<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/create', options);\n }\n\n addAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/add-admin', options);\n }\n\n removeAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/remove-admin', options);\n }\n}\n\nexport class SessionsResource {\n constructor(private readonly http: HttpClient) {}\n\n status<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/status`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n qr<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/qr`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n pairCode<TResponse = unknown>(instanceId: string, phone: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(instanceId)}/session/paircode/${encodeURIComponent(phone)}`,\n {\n signal: options.signal,\n instanceToken: options.instanceToken,\n },\n );\n }\n\n disconnect<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/session/disconnect`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class UsersResource {\n constructor(private readonly http: HttpClient) {}\n\n info<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/info', options);\n }\n\n check<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/check', options);\n }\n\n avatar<TResponse = unknown>(request: UserAvatarRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/avatar', options);\n }\n\n contacts<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/user/contacts`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class QueuesResource {\n constructor(private readonly http: HttpClient) {}\n\n listMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/messages', options);\n }\n\n purgeMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/messages', options);\n }\n\n removeMessage<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/messages/${encodeURIComponent(messageId)}`, options);\n }\n\n listOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/operations', options);\n }\n\n purgeOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/operations', options);\n }\n\n removeOperation<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/operations/${encodeURIComponent(messageId)}`, options);\n }\n}\n\nexport class TypebotsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n create<TResponse = unknown>(request: TypebotRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/typebots', options);\n }\n\n update<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return requestInstancePath(this.http, 'PATCH', rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n delete<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n listSessions<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots/sessions`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n startSession<TResponse = unknown>(request: TypebotStartSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n const path = typebotId ? `/typebots/${encodeURIComponent(typebotId)}/sessions/start` : '/typebots/sessions/start';\n return postInstancePath(this.http, rest, path, options);\n }\n\n closeSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/close`, options);\n }\n\n pauseSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/pause`, options);\n }\n}\n\nexport class ChatwootResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: ChatwootRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/chatwoot', options);\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n triggerImport<TResponse = unknown>(request: ChatwootImportRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { what, ...rest } = request;\n return postInstancePath(this.http, rest, `/chatwoot/import/${encodeURIComponent(what)}`, options);\n }\n}\n\nexport class ChatsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: ChatListRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chats`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('GET', request, '', options);\n }\n\n archive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/archive', options);\n }\n\n unarchive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unarchive', options);\n }\n\n mute<TResponse = unknown>(request: ChatMuteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/mute', options);\n }\n\n unmute<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unmute', options);\n }\n\n pin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/pin', options);\n }\n\n unpin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unpin', options);\n }\n\n read<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/read', options);\n }\n\n unread<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unread', options);\n }\n\n clear<TResponse = unknown>(request: ChatClearRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/clear', options);\n }\n\n delete<TResponse = unknown>(request: ChatDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('DELETE', request, '', options);\n }\n\n setExpiration<TResponse = unknown>(request: ChatExpirationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('PUT', request, '/expiration', options);\n }\n\n private chatAction<TResponse>(method: Method, request: ChatRequest, suffix: string, options: SignalOptions): Promise<TResponse> {\n const { instanceId, instanceToken, phone, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}/chats/${encodeURIComponent(phone)}${suffix}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nfunction getInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'GET', request, path, options);\n}\n\nfunction postInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'POST', request, path, options);\n}\n\nfunction deleteInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'DELETE', request, path, options);\n}\n\nfunction requestInstancePath<TResponse>(\n http: HttpClient,\n method: Method,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n}\n","import { EventsResource } from './events.js';\nimport { HttpClient } from './http.js';\nimport {\n AuthResource,\n ChatwootResource,\n ChatsResource,\n ContactsResource,\n GroupsResource,\n InstancesResource,\n MessagesResource,\n QueuesResource,\n SessionsResource,\n TypebotsResource,\n UsersResource,\n WebhooksResource,\n} from './resources.js';\nimport type { RequestOptions, VZapsClientOptions } from './types.js';\n\nexport class VZapsClient {\n readonly auth: AuthResource;\n readonly instances: InstancesResource;\n readonly sessions: SessionsResource;\n readonly messages: MessagesResource;\n readonly webhooks: WebhooksResource;\n readonly contacts: ContactsResource;\n readonly groups: GroupsResource;\n readonly users: UsersResource;\n readonly queues: QueuesResource;\n readonly typebots: TypebotsResource;\n readonly chatwoot: ChatwootResource;\n readonly chats: ChatsResource;\n readonly events: EventsResource;\n\n private readonly http: HttpClient;\n\n constructor(options: VZapsClientOptions) {\n this.http = new HttpClient(options);\n this.auth = new AuthResource(this.http);\n this.instances = new InstancesResource(this.http);\n this.sessions = new SessionsResource(this.http);\n this.messages = new MessagesResource(this.http);\n this.webhooks = new WebhooksResource(this.http);\n this.contacts = new ContactsResource(this.http);\n this.groups = new GroupsResource(this.http);\n this.users = new UsersResource(this.http);\n this.queues = new QueuesResource(this.http);\n this.typebots = new TypebotsResource(this.http);\n this.chatwoot = new ChatwootResource(this.http);\n this.chats = new ChatsResource(this.http);\n this.events = new EventsResource(this.http, options.webSocketFactory);\n }\n\n request<TResponse = unknown>(method: string, path: string, options: RequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(method, path, options);\n }\n}\n"],"mappings":";AAAA,OAAO,eAAe;AAcf,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YACmB,MACA,kBACjB;AAFiB;AACA;AAAA,EAChB;AAAA,EAFgB;AAAA,EACA;AAAA,EAGnB,MAAM,UAAU,SAA4D;AAC1E,UAAM,eAAe,IAAI,kBAAkB,KAAK,MAAM,SAAS,KAAK,gBAAgB;AACpF,UAAM,aAAa,KAAK;AACxB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,oBAAN,MAAwB;AAAA,EAQ7B,YACmB,MACA,SACA,kBACjB;AAHiB;AACA;AACA;AAAA,EAChB;AAAA,EAHgB;AAAA,EACA;AAAA,EACA;AAAA,EAVF,WAAuB,oBAAI,IAAI;AAAA,EAC/B,gBAAgB,oBAAI,IAAkB;AAAA,EACtC,oBAAoB,oBAAI,IAAuD;AAAA,EACxF;AAAA,EACA,SAAS;AAAA,EACT,aAAa;AAAA,EAQrB,MAAM,OAAsB;AAC1B,UAAM,QAAQ,MAAM,KAAK,KAAK,eAAe,KAAK,QAAQ,MAAM;AAChE,UAAM,MAAM,KAAK,KAAK,iBAAiB,cAAc;AAAA,MACnD,aAAa,KAAK,QAAQ;AAAA,MAC1B,QAAQ,KAAK,QAAQ,QAAQ,KAAK,GAAG;AAAA,MACrC,cAAc;AAAA,MACd,cAAc,KAAK,KAAK;AAAA,MACxB,gBAAgB,KAAK,QAAQ;AAAA,MAC7B,eAAe,KAAK,QAAQ;AAAA,IAC9B,CAAC;AACD,UAAM,UAAkC;AAAA,MACtC,eAAe,UAAU,KAAK;AAAA,MAC9B,kBAAkB,KAAK,KAAK;AAAA,IAC9B;AAEA,YAAQ,kBAAkB,IAAI,KAAK,QAAQ;AAE3C,SAAK,SAAS,KAAK,aAAa,KAAK,OAAO;AAC5C,SAAK,WAAW,KAAK,MAAM;AAAA,EAC7B;AAAA,EAEA,GAA2C,OAAe,SAAqC;AAC7F,QAAI,UAAU,SAAS;AACrB,WAAK,cAAc,IAAI,OAAuB;AAC9C,aAAO;AAAA,IACT;AAEA,QAAI,UAAU,UAAU,UAAU,SAAS;AACzC,WAAK,oBAAoB,OAAO,OAAuC;AACvE,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,oBAAI,IAAkB;AACnE,aAAS,IAAI,OAAuB;AACpC,SAAK,SAAS,IAAI,OAAO,QAAQ;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,IAA4C,OAAe,SAAqC;AAC9F,QAAI,UAAU,SAAS;AACrB,WAAK,cAAc,OAAO,OAAuB;AACjD,aAAO;AAAA,IACT;AAEA,QAAI,UAAU,UAAU,UAAU,SAAS;AACzC,WAAK,kBAAkB,IAAI,KAAK,GAAG,OAAO,OAAuC;AACjF,aAAO;AAAA,IACT;AAEA,SAAK,SAAS,IAAI,KAAK,GAAG,OAAO,OAAuB;AACxD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAM,OAAO,KAAM,SAAS,8BAA6C;AAC7E,SAAK,SAAS;AACd,SAAK,QAAQ,MAAM,MAAM,MAAM;AAAA,EACjC;AAAA,EAEQ,aAAa,KAAa,SAAgD;AAChF,QAAI,KAAK,kBAAkB;AACzB,aAAO,KAAK,iBAAiB,KAAK,OAAO;AAAA,IAC3C;AAEA,QAAI,OAAO,WAAW,cAAc,aAAa;AAC/C,aAAO,IAAI,WAAW,UAAU,GAAG;AAAA,IACrC;AAEA,WAAO,IAAI,UAAU,KAAK,EAAE,QAAQ,CAAC;AAAA,EACvC;AAAA,EAEQ,WAAW,QAA6B;AAC9C,WAAO,QAAQ,QAAQ,MAAM;AAC3B,WAAK,aAAa;AAClB,WAAK,cAAc,MAAM;AAAA,IAC3B,CAAC;AAED,WAAO,QAAQ,WAAW,CAAC,gBAAgB;AACzC,YAAM,MAAM,gBAAgB,WAAW;AACvC,UAAI,QAAQ,QAAW;AACrB,aAAK,KAAK,SAAS,GAAG;AAAA,MACxB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,SAAS,CAAC,UAAU;AACjC,WAAK,UAAU,KAAK;AAAA,IACtB,CAAC;AAED,WAAO,QAAQ,SAAS,MAAM;AAC5B,WAAK,cAAc,OAAO;AAC1B,WAAK,KAAK,kBAAkB;AAAA,IAC9B,CAAC;AAED,SAAK,QAAQ,QAAQ,iBAAiB,SAAS,MAAM;AACnD,WAAK,KAAK,MAAM,KAAM,sBAAsB;AAAA,IAC9C,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,EACnB;AAAA,EAEA,MAAc,SAAS,KAA6B;AAClD,QAAI;AACF,YAAM,QAAQ,WAAW,GAAG;AAC5B,YAAM,WAAW,oBAAI,IAAkB;AAAA,QACrC,GAAI,KAAK,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,QACtC,GAAI,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC;AAAA,MACnC,CAAC;AAED,YAAM,QAAQ,IAAI,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,YAAY,QAAQ,KAAK,CAAC,CAAC;AAChE,WAAK,IAAI,MAAM,EAAE;AAAA,IACnB,SAAS,OAAO;AACd,WAAK,UAAU,KAAK;AAAA,IACtB;AAAA,EACF;AAAA,EAEQ,IAAI,SAAuB;AACjC,QAAI,CAAC,WAAW,CAAC,KAAK,QAAQ;AAC5B;AAAA,IACF;AACA,SAAK,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,OAAO,UAAU,QAAQ,CAAC,CAAC;AAAA,EACrE;AAAA,EAEA,MAAc,oBAAmC;AAC/C,QAAI,KAAK,UAAU,KAAK,QAAQ,cAAc,OAAO;AACnD;AAAA,IACF;AAEA,UAAM,aAAa,KAAK,QAAQ,cAAc,OAAO;AACrD,QAAI,KAAK,cAAc,YAAY;AACjC;AAAA,IACF;AAEA,SAAK,cAAc;AACnB,UAAM,MAAM,KAAK,QAAQ,gBAAgB,KAAK,IAAI,KAAQ,MAAO,KAAK,UAAU,CAAC;AACjF,UAAM,KAAK,KAAK;AAAA,EAClB;AAAA,EAEQ,oBAAoB,OAAuB,SAA6C;AAC9F,UAAM,WAAW,KAAK,kBAAkB,IAAI,KAAK,KAAK,oBAAI,IAAkC;AAC5F,aAAS,IAAI,OAAO;AACpB,SAAK,kBAAkB,IAAI,OAAO,QAAQ;AAAA,EAC5C;AAAA,EAEQ,cAAc,UAA0B,MAAuB;AACrE,eAAW,WAAW,KAAK,kBAAkB,IAAI,KAAK,KAAK,CAAC,GAAG;AAC7D,cAAQ,GAAG,IAAI;AAAA,IACjB;AAAA,EACF;AAAA,EAEQ,UAAU,OAAsB;AACtC,QAAI,KAAK,cAAc,SAAS,GAAG;AACjC;AAAA,IACF;AAEA,eAAW,WAAW,KAAK,eAAe;AACxC,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,OAAO,QAAuB,MAAc,UAA0C;AAC7F,MAAI,OAAO,kBAAkB;AAC3B,WAAO,iBAAiB,MAAM,QAAQ;AACtC;AAAA,EACF;AAEA,SAAO,KAAK,MAAM,QAAQ;AAC5B;AAEA,SAAS,gBAAgB,aAA+B;AACtD,MAAI,SAAS,WAAW,KAAK,UAAU,aAAa;AAClD,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AACT;AAEA,SAAS,WAAW,KAA0B;AAC5C,QAAM,OAAO,OAAO,QAAQ,WAAW,MAAM,OAAO,SAAS,GAAG,IAAI,IAAI,SAAS,MAAM,IAAI,OAAO,GAAG;AACrG,SAAO,KAAK,MAAM,IAAI;AACxB;AAEA,SAAS,MAAM,IAA2B;AACxC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;;;ACjOO,IAAM,aAAN,cAAyB,MAAM;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,SAAiB,UAAiE,CAAC,GAAG;AAChG,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,SAAS,QAAQ;AACtB,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ;AAAA,EACzB;AACF;AAEO,IAAM,2BAAN,cAAuC,WAAW;AAAA,EACvD,YAAY,UAAU,oCAAoC,SAAmB;AAC3E,UAAM,SAAS,EAAE,QAAQ,KAAK,MAAM,yBAAyB,QAAQ,CAAC;AACtE,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAChD,YAAY,UAAU,2BAA2B;AAC/C,UAAM,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1C,SAAK,OAAO;AAAA,EACd;AACF;;;AC1BA,SAAS,cAAc,OAAkD;AACvE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEO,SAAS,eAAe,KAAqB;AAClD,SAAO,IACJ,QAAQ,sBAAsB,OAAO,EACrC,QAAQ,yBAAyB,OAAO,EACxC,YAAY;AACjB;AAEO,SAAS,eAAe,KAAqB;AAClD,SAAO,IAAI,QAAQ,gBAAgB,CAAC,GAAG,SAAiB,KAAK,YAAY,CAAC;AAC5E;AAEO,SAAS,gBAAmB,OAAa;AAC9C,SAAO,cAAc,OAAO,cAAc;AAC5C;AAEO,SAAS,gBAAmB,OAAa;AAC9C,SAAO,cAAc,OAAO,cAAc;AAC5C;AAEA,SAAS,cAAiB,OAAU,cAA0C;AAC5E,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,cAAc,MAAM,YAAY,CAAC;AAAA,EAC9D;AAEA,MAAI,CAAC,cAAc,KAAK,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,SAAkC,CAAC;AAEzC,aAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,KAAK,GAAG;AACjD,WAAO,aAAa,GAAG,CAAC,IAAI,cAAc,QAAQ,YAAY;AAAA,EAChE;AAEA,SAAO;AACT;;;ACnCA,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,wBAAwB;AAOvB,IAAM,aAAN,MAAiB;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEQ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACA;AAAA,EAER,YAAY,SAA6B;AACvC,SAAK,cAAc,gBAAgB,QAAQ,aAAa,aAAa;AACrE,SAAK,eAAe,gBAAgB,QAAQ,cAAc,cAAc;AACxE,SAAK,UAAU,iBAAiB,QAAQ,WAAW,gBAAgB;AACnE,SAAK,cAAc,iBAAiB,QAAQ,eAAe,oBAAoB;AAC/E,SAAK,YAAY,QAAQ,aAAa;AACtC,SAAK,cAAc,QAAQ,eAAe;AAC1C,SAAK,YAAY,QAAQ;AACzB,SAAK,YAAY,QAAQ,SAAS,WAAW;AAE7C,QAAI,CAAC,KAAK,WAAW;AACnB,YAAM,IAAI,WAAW,2EAA2E;AAAA,IAClG;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,QAAuC;AAC1D,QAAI,KAAK,eAAe,KAAK,YAAY,YAAY,KAAK,IAAI,GAAG;AAC/D,aAAO,KAAK,YAAY;AAAA,IAC1B;AAEA,SAAK,iBAAiB,KAAK,aAAa,MAAM,EAAE,QAAQ,MAAM;AAC5D,WAAK,eAAe;AAAA,IACtB,CAAC;AAED,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAW,QAAgB,MAAc,UAA0B,CAAC,GAAe;AACvF,UAAM,MAAM,KAAK,SAAS,MAAM,QAAQ,KAAK;AAC7C,UAAM,UAAU,IAAI,QAAQ;AAC5B,YAAQ,IAAI,UAAU,kBAAkB;AAExC,QAAI,QAAQ,SAAS,QAAW;AAC9B,cAAQ,IAAI,gBAAgB,kBAAkB;AAAA,IAChD;AAEA,QAAI,KAAK,WAAW;AAClB,cAAQ,IAAI,cAAc,KAAK,SAAS;AAAA,IAC1C;AAEA,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,WAAW,CAAC,CAAC,GAAG;AAChE,UAAI,UAAU,QAAW;AACvB,gBAAQ,IAAI,KAAK,KAAK;AAAA,MACxB;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,OAAO;AAC1B,cAAQ,IAAI,iBAAiB,UAAU,MAAM,KAAK,eAAe,QAAQ,MAAM,CAAC,EAAE;AAClF,cAAQ,IAAI,kBAAkB,KAAK,WAAW;AAAA,IAChD;AAEA,QAAI,QAAQ,eAAe;AACzB,cAAQ,IAAI,oBAAoB,QAAQ,aAAa;AAAA,IACvD;AAEA,UAAM,OACJ,QAAQ,SAAS,SAAY,SAAY,KAAK,UAAU,gBAAgB,QAAQ,IAAI,CAAC;AAEvF,UAAM,WAAW,MAAM,KAAK,iBAAiB,KAAK;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,cAAiB,QAAQ;AAAA,EAClC;AAAA,EAEA,iBAAiB,MAAc,OAAuE;AACpG,WAAO,SAAS,KAAK,aAAc,MAAM,KAAK;AAAA,EAChD;AAAA,EAEA,MAAc,aAAa,QAAuC;AAChE,UAAM,WAAW,MAAM,KAAK,QAA2B,QAAQ,UAAU;AAAA,MACvE,MAAM;AAAA,MACN;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,KAAK;AAAA,QAClB,cAAc,KAAK;AAAA,MACrB;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,eAAe,CAAC,SAAS,WAAW;AAChD,YAAM,IAAI,yBAAyB,4DAA4D,QAAQ;AAAA,IACzG;AAEA,SAAK,cAAc;AAAA,MACjB,aAAa,SAAS;AAAA,MACtB,WAAW,KAAK,IAAI,IAAI,SAAS,YAAY,MAAO,KAAK;AAAA,IAC3D;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEQ,SAAS,MAAc,OAAuE;AACpG,WAAO,SAAS,KAAK,SAAS,MAAM,KAAK;AAAA,EAC3C;AAAA,EAEA,MAAc,iBAAiB,KAAa,MAAsC;AAChF,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,UAAU,WAAW,MAAM,WAAW,MAAM,GAAG,KAAK,SAAS;AACnE,UAAM,SAAS,aAAa,WAAW,QAAQ,KAAK,UAAU,MAAS;AAEvE,QAAI;AACF,aAAO,MAAM,KAAK,UAAU,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;AAAA,IACtD,SAAS,OAAO;AACd,UAAI,WAAW,OAAO,SAAS;AAC7B,cAAM,IAAI,kBAAkB;AAAA,MAC9B;AACA,YAAM;AAAA,IACR,UAAE;AACA,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,OAA2B,MAAsB;AACxE,MAAI,CAAC,SAAS,MAAM,KAAK,MAAM,IAAI;AACjC,UAAM,IAAI,WAAW,SAAS,IAAI,cAAc;AAAA,EAClD;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAuB;AAC/C,SAAO,MAAM,QAAQ,QAAQ,EAAE;AACjC;AAEA,SAAS,SAAS,SAAiB,MAAc,OAAuE;AACtH,QAAM,YAAY,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AACxD,QAAM,MAAM,IAAI,IAAI,GAAG,iBAAiB,OAAO,CAAC,GAAG,SAAS,EAAE;AAE9D,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,SAAS,CAAC,CAAC,GAAG;AACtD,QAAI,UAAU,QAAW;AACvB,UAAI,aAAa,IAAI,eAAe,GAAG,GAAG,OAAO,KAAK,CAAC;AAAA,IACzD;AAAA,EACF;AAEA,SAAO,IAAI,SAAS;AACtB;AAEA,eAAe,cAAiB,UAAgC;AAC9D,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,QAAM,OAAO,OAAO,cAAc,IAAI,IAAI;AAE1C,MAAI,CAAC,SAAS,IAAI;AAChB,QAAI,SAAS,WAAW,KAAK;AAC3B,YAAM,IAAI,yBAAyB,iBAAiB,MAAM,SAAS,UAAU,GAAG,IAAI;AAAA,IACtF;AAEA,UAAM,IAAI,WAAW,iBAAiB,MAAM,SAAS,UAAU,GAAG;AAAA,MAChE,QAAQ,SAAS;AAAA,MACjB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,SAAO,gBAAgB,IAAI;AAC7B;AAEA,SAAS,cAAc,MAAuB;AAC5C,MAAI;AACF,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,MAAe,UAA0B;AACjE,MAAIA,UAAS,IAAI,GAAG;AAClB,QAAI,OAAO,KAAK,UAAU,SAAU,QAAO,KAAK;AAChD,QAAI,OAAO,KAAK,YAAY,SAAU,QAAO,KAAK;AAAA,EACpD;AACA,SAAO,YAAY;AACrB;AAEA,SAASA,UAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEA,SAAS,aAAa,SAAsB,WAAsC;AAChF,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,QAAQ,MAAM,WAAW,MAAM;AAErC,UAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AACvD,YAAU,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzD,SAAO,WAAW;AACpB;;;ACrKO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,eAAe,QAAuC;AACpD,WAAO,KAAK,KAAK,eAAe,MAAM;AAAA,EACxC;AACF;AAEO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,OAA4B,MAA6B,UAAoC,CAAC,GAAuB;AACnH,WAAO,KAAK,KAAK,QAAmB,OAAO,qBAAqB;AAAA,MAC9D,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,KAA0B,OAA4B,CAAC,GAAG,UAAoC,CAAC,GAAuB;AACpH,WAAO,KAAK,KAAK,QAAmB,QAAQ,mBAAmB;AAAA,MAC7D,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,IAAyB,YAAoB,UAAkC,CAAC,GAAuB;AACrG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,IAAI;AAAA,MACzF,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,OACE,YACA,MACA,UAAkC,CAAC,GACf;AACpB,WAAO,KAAK,KAAK,QAAmB,SAAS,cAAc,mBAAmB,UAAU,CAAC,IAAI;AAAA,MAC3F,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,QAA6B,YAAoB,UAAkC,CAAC,GAAuB;AACzG,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,YAAY;AAAA,MAClG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,OAA4B,YAAoB,UAAkC,CAAC,GAAuB;AACxG,WAAO,KAAK,KAAK,QAAmB,UAAU,cAAc,mBAAmB,UAAU,CAAC,IAAI;AAAA,MAC5F,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,UAA+B,MAA6B,UAAyB,CAAC,GAAuB;AAC3G,WAAO,KAAK,KAAK,QAAmB,OAAO,wBAAwB;AAAA,MACjE,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,OAA4B,MAA+B,UAAyB,CAAC,GAAuB;AAC1G,WAAO,KAAK,KAAK,QAAmB,QAAQ,qBAAqB;AAAA,MAC/D,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,UACE,YACA,OAAgC,CAAC,GACjC,UAAkC,CAAC,GACf;AACpB,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,cAAc;AAAA,MACpG,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,mBAAwC,YAAoB,UAAkC,CAAC,GAAuB;AACpH,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,wBAAwB;AAAA,MAC9G,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,OAA4B,YAAoB,UAAkC,CAAC,GAAuB;AACxG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,WAAW;AAAA,MAChG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,SAA8B,SAAiC,UAAoC,CAAC,GAAuB;AACzH,WAAO,KAAK,KAAgB,mBAAmB,SAAS,OAAO;AAAA,EACjE;AAAA,EAEA,UAA+B,SAAkC,UAAyB,CAAC,GAAuB;AAChH,WAAO,KAAK,KAAgB,oBAAoB,SAAS,OAAO;AAAA,EAClE;AAAA,EAEA,UAA+B,SAAkC,UAAyB,CAAC,GAAuB;AAChH,WAAO,KAAK,KAAgB,oBAAoB,SAAS,OAAO;AAAA,EAClE;AAAA,EAEA,aAAkC,SAAqC,UAAyB,CAAC,GAAuB;AACtH,WAAO,KAAK,KAAgB,uBAAuB,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,UAA+B,SAAkC,UAAyB,CAAC,GAAuB;AAChH,WAAO,KAAK,KAAgB,oBAAoB,SAAS,OAAO;AAAA,EAClE;AAAA,EAEA,YAAiC,SAAoC,UAAyB,CAAC,GAAuB;AACpH,WAAO,KAAK,KAAgB,sBAAsB,SAAS,OAAO;AAAA,EACpE;AAAA,EAEA,QAA6B,SAAgC,UAAyB,CAAC,GAAuB;AAC5G,WAAO,KAAK,KAAgB,kBAAkB,SAAS,OAAO;AAAA,EAChE;AAAA,EAEA,aAAkC,SAAqC,UAAyB,CAAC,GAAuB;AACtH,WAAO,KAAK,KAAgB,uBAAuB,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,YAAiC,SAAoC,UAAyB,CAAC,GAAuB;AACpH,WAAO,KAAK,KAAgB,sBAAsB,SAAS,OAAO;AAAA,EACpE;AAAA,EAEA,YAAiC,SAAoC,UAAyB,CAAC,GAAuB;AACpH,WAAO,KAAK,KAAgB,sBAAsB,SAAS,OAAO;AAAA,EACpE;AAAA,EAEA,SAA8B,SAAiC,UAAyB,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAgB,mBAAmB,SAAS,OAAO;AAAA,EACjE;AAAA,EAEA,SAA8B,SAAiC,UAAyB,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAgB,mBAAmB,SAAS,OAAO;AAAA,EACjE;AAAA,EAEA,SAA8B,SAAiC,UAAyB,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAgB,mBAAmB,SAAS,OAAO;AAAA,EACjE;AAAA,EAEA,SAA8B,SAAiC,UAAyB,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAgB,mBAAmB,SAAS,OAAO;AAAA,EACjE;AAAA,EAEA,MAA2B,SAA8B,UAAyB,CAAC,GAAuB;AACxG,WAAO,KAAK,KAAgB,eAAe,SAAS,OAAO;AAAA,EAC7D;AAAA,EAEA,eAAoC,SAAoC,UAAyB,CAAC,GAAuB;AACvH,WAAO,KAAK,YAAuB,UAAU,eAAe,SAAS,OAAO;AAAA,EAC9E;AAAA,EAEA,SAA8B,SAAiC,UAAyB,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAgB,kBAAkB,SAAS,OAAO;AAAA,EAChE;AAAA,EAEA,SAA8B,SAAiC,UAAyB,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAgB,kBAAkB,SAAS,OAAO;AAAA,EAChE;AAAA,EAEA,cAAmC,SAAiC,UAAyB,CAAC,GAAuB;AACnH,WAAO,KAAK,KAAgB,uBAAuB,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,cAAmC,SAAiC,UAAyB,CAAC,GAAuB;AACnH,WAAO,KAAK,KAAgB,uBAAuB,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,cAAmC,SAAiC,UAAyB,CAAC,GAAuB;AACnH,WAAO,KAAK,KAAgB,uBAAuB,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,iBAAsC,SAAiC,UAAyB,CAAC,GAAuB;AACtH,WAAO,KAAK,KAAgB,0BAA0B,SAAS,OAAO;AAAA,EACxE;AAAA,EAEA,KAA0B,SAA6B,UAAyB,CAAC,GAAuB;AACtG,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,WAAO,KAAK,YAAuB,SAAS,kBAAkB,mBAAmB,SAAS,CAAC,IAAI,MAAM,OAAO;AAAA,EAC9G;AAAA,EAEA,OAA4B,SAA+B,UAAyB,CAAC,GAAuB;AAC1G,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,WAAO,KAAK,YAAuB,UAAU,kBAAkB,mBAAmB,SAAS,CAAC,IAAI,MAAM,OAAO;AAAA,EAC/G;AAAA,EAEA,KACE,YACA,MACA,MACA,UAAkC,CAAC,GACf;AACpB,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,SAAS,KAAK,QAAQ,QAAQ,EAAE,CAAC,IAAI;AAAA,MAC3H;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEQ,KAAgB,MAAc,SAAgC,SAA4C;AAChH,WAAO,KAAK,YAAuB,QAAQ,MAAM,SAAS,OAAO;AAAA,EACnE;AAAA,EAEQ,YACN,QACA,MACA,SACA,SACoB;AACpB,UAAM,EAAE,YAAY,eAAe,GAAG,KAAK,IAAI;AAC/C,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,GAAG,IAAI,IAAI;AAAA,MACjG;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,IAAyB,YAAoB,UAAkC,CAAC,GAAuB;AACrG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,YAAY;AAAA,MACjG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,IAAyB,SAA+B,UAAoC,CAAC,GAAuB;AAClH,UAAM,EAAE,YAAY,eAAe,GAAG,KAAK,IAAI;AAE/C,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,YAAY;AAAA,MAClG;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,WAAgC,SAAkC,UAAyB,CAAC,GAAuB;AACjH,UAAM,EAAE,YAAY,eAAe,GAAG,KAAK,IAAI;AAC/C,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,wBAAwB;AAAA,MAC9G;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAA4B,SAA4B,UAAyB,CAAC,GAAuB;AACvG,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,cAAc,mBAAmB,QAAQ,UAAU,CAAC,iBAAiB,mBAAmB,QAAQ,KAAK,CAAC;AAAA,MACtG;AAAA,QACE,QAAQ,QAAQ;AAAA,QAChB,eAAe,QAAQ;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAA8B,SAA4B,UAAyB,CAAC,GAAuB;AACzG,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,cAAc,mBAAmB,QAAQ,UAAU,CAAC,iBAAiB,mBAAmB,QAAQ,KAAK,CAAC;AAAA,MACtG;AAAA,QACE,QAAQ,QAAQ;AAAA,QAChB,eAAe,QAAQ;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,KAA0B,YAAoB,UAAkC,CAAC,GAAuB;AACtG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,iBAAiB;AAAA,MACtG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,IAAyB,SAA4B,UAAoC,CAAC,GAAuB;AAC/G,UAAM,EAAE,YAAY,eAAe,GAAG,KAAK,IAAI;AAE/C,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,gBAAgB;AAAA,MACtG;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,KAA0B,SAA2B,UAAoC,CAAC,GAAuB;AAC/G,UAAM,EAAE,YAAY,eAAe,MAAM,SAAS,IAAI;AAEtD,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,eAAe;AAAA,MACpG,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,IAAyB,SAA2B,UAAoC,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,QAAQ,UAAU,CAAC,eAAe;AAAA,MAC5G,OAAO,EAAE,SAAS,QAAQ,QAAQ;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,WAAgC,SAAiC,UAAyB,CAAC,GAAuB;AAChH,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,QAAQ,UAAU,CAAC,qBAAqB;AAAA,MAClH,OAAO,EAAE,SAAS,QAAQ,SAAS,OAAO,QAAQ,MAAM;AAAA,MACxD,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,SAA8B,SAA+B,UAAyB,CAAC,GAAuB;AAC5G,WAAO,iBAAiB,KAAK,MAAM,SAAS,gBAAgB,OAAO;AAAA,EACrE;AAAA,EAEA,QAA6B,SAA+B,UAAyB,CAAC,GAAuB;AAC3G,WAAO,iBAAiB,KAAK,MAAM,SAAS,eAAe,OAAO;AAAA,EACpE;AAAA,EAEA,eAAoC,SAA+B,UAAyB,CAAC,GAAuB;AAClH,WAAO,iBAAiB,KAAK,MAAM,SAAS,sBAAsB,OAAO;AAAA,EAC3E;AAAA,EAEA,YAAiC,SAA+B,UAAyB,CAAC,GAAuB;AAC/G,WAAO,iBAAiB,KAAK,MAAM,SAAS,mBAAmB,OAAO;AAAA,EACxE;AAAA,EAEA,OAA4B,SAA+B,UAAyB,CAAC,GAAuB;AAC1G,WAAO,iBAAiB,KAAK,MAAM,SAAS,iBAAiB,OAAO;AAAA,EACtE;AAAA,EAEA,SAA8B,SAA+B,UAAyB,CAAC,GAAuB;AAC5G,WAAO,iBAAiB,KAAK,MAAM,SAAS,oBAAoB,OAAO;AAAA,EACzE;AAAA,EAEA,YAAiC,SAA+B,UAAyB,CAAC,GAAuB;AAC/G,WAAO,iBAAiB,KAAK,MAAM,SAAS,uBAAuB,OAAO;AAAA,EAC5E;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,OAA4B,YAAoB,UAAkC,CAAC,GAAuB;AACxG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,mBAAmB;AAAA,MACxG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,GAAwB,YAAoB,UAAkC,CAAC,GAAuB;AACpG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,eAAe;AAAA,MACpG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,SAA8B,YAAoB,OAAe,UAAkC,CAAC,GAAuB;AACzH,WAAO,KAAK,KAAK;AAAA,MACf;AAAA,MACA,cAAc,mBAAmB,UAAU,CAAC,qBAAqB,mBAAmB,KAAK,CAAC;AAAA,MAC1F;AAAA,QACE,QAAQ,QAAQ;AAAA,QAChB,eAAe,QAAQ;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAgC,YAAoB,UAAkC,CAAC,GAAuB;AAC5G,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,uBAAuB;AAAA,MAC7G,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AACF;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,KAA0B,SAA4B,UAAyB,CAAC,GAAuB;AACrG,WAAO,iBAAiB,KAAK,MAAM,SAAS,cAAc,OAAO;AAAA,EACnE;AAAA,EAEA,MAA2B,SAA4B,UAAyB,CAAC,GAAuB;AACtG,WAAO,iBAAiB,KAAK,MAAM,SAAS,eAAe,OAAO;AAAA,EACpE;AAAA,EAEA,OAA4B,SAA4B,UAAyB,CAAC,GAAuB;AACvG,WAAO,iBAAiB,KAAK,MAAM,SAAS,gBAAgB,OAAO;AAAA,EACrE;AAAA,EAEA,SAA8B,YAAoB,UAAkC,CAAC,GAAuB;AAC1G,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,kBAAkB;AAAA,MACvG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AACF;AAEO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,aAAkC,SAAuB,UAAyB,CAAC,GAAuB;AACxG,WAAO,gBAAgB,KAAK,MAAM,SAAS,mBAAmB,OAAO;AAAA,EACvE;AAAA,EAEA,cAAmC,SAAuB,UAAyB,CAAC,GAAuB;AACzG,WAAO,mBAAmB,KAAK,MAAM,SAAS,mBAAmB,OAAO;AAAA,EAC1E;AAAA,EAEA,cAAmC,SAA8B,UAAyB,CAAC,GAAuB;AAChH,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,WAAO,mBAAmB,KAAK,MAAM,MAAM,mBAAmB,mBAAmB,SAAS,CAAC,IAAI,OAAO;AAAA,EACxG;AAAA,EAEA,eAAoC,SAAuB,UAAyB,CAAC,GAAuB;AAC1G,WAAO,gBAAgB,KAAK,MAAM,SAAS,qBAAqB,OAAO;AAAA,EACzE;AAAA,EAEA,gBAAqC,SAAuB,UAAyB,CAAC,GAAuB;AAC3G,WAAO,mBAAmB,KAAK,MAAM,SAAS,qBAAqB,OAAO;AAAA,EAC5E;AAAA,EAEA,gBAAqC,SAA8B,UAAyB,CAAC,GAAuB;AAClH,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,WAAO,mBAAmB,KAAK,MAAM,MAAM,qBAAqB,mBAAmB,SAAS,CAAC,IAAI,OAAO;AAAA,EAC1G;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,KAA0B,YAAoB,UAAkC,CAAC,GAAuB;AACtG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,aAAa;AAAA,MAClG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,OAA4B,SAAyB,UAAyB,CAAC,GAAuB;AACpG,WAAO,iBAAiB,KAAK,MAAM,SAAS,aAAa,OAAO;AAAA,EAClE;AAAA,EAEA,OAA4B,SAAiC,UAAyB,CAAC,GAAuB;AAC5G,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,WAAO,oBAAoB,KAAK,MAAM,SAAS,MAAM,aAAa,mBAAmB,SAAS,CAAC,IAAI,OAAO;AAAA,EAC5G;AAAA,EAEA,OAA4B,SAAiC,UAAyB,CAAC,GAAuB;AAC5G,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,WAAO,mBAAmB,KAAK,MAAM,MAAM,aAAa,mBAAmB,SAAS,CAAC,IAAI,OAAO;AAAA,EAClG;AAAA,EAEA,aAAkC,YAAoB,UAAkC,CAAC,GAAuB;AAC9G,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,sBAAsB;AAAA,MAC3G,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,aAAkC,SAAqC,UAAyB,CAAC,GAAuB;AACtH,UAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,UAAM,OAAO,YAAY,aAAa,mBAAmB,SAAS,CAAC,oBAAoB;AACvF,WAAO,iBAAiB,KAAK,MAAM,MAAM,MAAM,OAAO;AAAA,EACxD;AAAA,EAEA,aAAkC,SAAgC,UAAyB,CAAC,GAAuB;AACjH,UAAM,EAAE,SAAS,GAAG,KAAK,IAAI;AAC7B,WAAO,iBAAiB,KAAK,MAAM,MAAM,sBAAsB,mBAAmB,OAAO,CAAC,UAAU,OAAO;AAAA,EAC7G;AAAA,EAEA,aAAkC,SAAgC,UAAyB,CAAC,GAAuB;AACjH,UAAM,EAAE,SAAS,GAAG,KAAK,IAAI;AAC7B,WAAO,iBAAiB,KAAK,MAAM,MAAM,sBAAsB,mBAAmB,OAAO,CAAC,UAAU,OAAO;AAAA,EAC7G;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,IAAyB,YAAoB,UAAkC,CAAC,GAAuB;AACrG,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,aAAa;AAAA,MAClG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,IAAyB,SAA0B,UAAyB,CAAC,GAAuB;AAClG,WAAO,iBAAiB,KAAK,MAAM,SAAS,aAAa,OAAO;AAAA,EAClE;AAAA,EAEA,OAA4B,YAAoB,UAAkC,CAAC,GAAuB;AACxG,WAAO,KAAK,KAAK,QAAmB,UAAU,cAAc,mBAAmB,UAAU,CAAC,aAAa;AAAA,MACrG,QAAQ,QAAQ;AAAA,MAChB,eAAe,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,cAAmC,SAAgC,UAAyB,CAAC,GAAuB;AAClH,UAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,WAAO,iBAAiB,KAAK,MAAM,MAAM,oBAAoB,mBAAmB,IAAI,CAAC,IAAI,OAAO;AAAA,EAClG;AACF;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAAnB;AAAA,EAE7B,KAA0B,SAA0B,UAAyB,CAAC,GAAuB;AACnG,UAAM,EAAE,YAAY,eAAe,MAAM,SAAS,IAAI;AACtD,WAAO,KAAK,KAAK,QAAmB,OAAO,cAAc,mBAAmB,UAAU,CAAC,UAAU;AAAA,MAC/F,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,IAAyB,SAAsB,UAAyB,CAAC,GAAuB;AAC9F,WAAO,KAAK,WAAsB,OAAO,SAAS,IAAI,OAAO;AAAA,EAC/D;AAAA,EAEA,QAA6B,SAAsB,UAAyB,CAAC,GAAuB;AAClG,WAAO,KAAK,WAAsB,QAAQ,SAAS,YAAY,OAAO;AAAA,EACxE;AAAA,EAEA,UAA+B,SAAsB,UAAyB,CAAC,GAAuB;AACpG,WAAO,KAAK,WAAsB,QAAQ,SAAS,cAAc,OAAO;AAAA,EAC1E;AAAA,EAEA,KAA0B,SAA0B,UAAyB,CAAC,GAAuB;AACnG,WAAO,KAAK,WAAsB,QAAQ,SAAS,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,OAA4B,SAAsB,UAAyB,CAAC,GAAuB;AACjG,WAAO,KAAK,WAAsB,QAAQ,SAAS,WAAW,OAAO;AAAA,EACvE;AAAA,EAEA,IAAyB,SAAsB,UAAyB,CAAC,GAAuB;AAC9F,WAAO,KAAK,WAAsB,QAAQ,SAAS,QAAQ,OAAO;AAAA,EACpE;AAAA,EAEA,MAA2B,SAAsB,UAAyB,CAAC,GAAuB;AAChG,WAAO,KAAK,WAAsB,QAAQ,SAAS,UAAU,OAAO;AAAA,EACtE;AAAA,EAEA,KAA0B,SAAsB,UAAyB,CAAC,GAAuB;AAC/F,WAAO,KAAK,WAAsB,QAAQ,SAAS,SAAS,OAAO;AAAA,EACrE;AAAA,EAEA,OAA4B,SAAsB,UAAyB,CAAC,GAAuB;AACjG,WAAO,KAAK,WAAsB,QAAQ,SAAS,WAAW,OAAO;AAAA,EACvE;AAAA,EAEA,MAA2B,SAA2B,UAAyB,CAAC,GAAuB;AACrG,WAAO,KAAK,WAAsB,QAAQ,SAAS,UAAU,OAAO;AAAA,EACtE;AAAA,EAEA,OAA4B,SAA4B,UAAyB,CAAC,GAAuB;AACvG,WAAO,KAAK,WAAsB,UAAU,SAAS,IAAI,OAAO;AAAA,EAClE;AAAA,EAEA,cAAmC,SAAgC,UAAyB,CAAC,GAAuB;AAClH,WAAO,KAAK,WAAsB,OAAO,SAAS,eAAe,OAAO;AAAA,EAC1E;AAAA,EAEQ,WAAsB,QAAgB,SAAsB,QAAgB,SAA4C;AAC9H,UAAM,EAAE,YAAY,eAAe,OAAO,GAAG,KAAK,IAAI;AACtD,WAAO,KAAK,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,UAAU,mBAAmB,KAAK,CAAC,GAAG,MAAM,IAAI;AAAA,MACtI,MAAM,OAAO,KAAK,IAAI,EAAE,SAAS,IAAI,OAAO;AAAA,MAC5C,QAAQ,QAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,SAAS,gBACP,MACA,SACA,MACA,SACoB;AACpB,SAAO,oBAAoB,MAAM,OAAO,SAAS,MAAM,OAAO;AAChE;AAEA,SAAS,iBACP,MACA,SACA,MACA,SACoB;AACpB,SAAO,oBAAoB,MAAM,QAAQ,SAAS,MAAM,OAAO;AACjE;AAEA,SAAS,mBACP,MACA,SACA,MACA,SACoB;AACpB,SAAO,oBAAoB,MAAM,UAAU,SAAS,MAAM,OAAO;AACnE;AAEA,SAAS,oBACP,MACA,QACA,SACA,MACA,SACoB;AACpB,QAAM,EAAE,YAAY,eAAe,GAAG,KAAK,IAAI;AAC/C,SAAO,KAAK,QAAmB,QAAQ,cAAc,mBAAmB,UAAU,CAAC,GAAG,IAAI,IAAI;AAAA,IAC5F,MAAM,OAAO,KAAK,IAAI,EAAE,SAAS,IAAI,OAAO;AAAA,IAC5C,QAAQ,QAAQ;AAAA,IAChB;AAAA,EACF,CAAC;AACH;;;ACnqBO,IAAM,cAAN,MAAkB;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEQ;AAAA,EAEjB,YAAY,SAA6B;AACvC,SAAK,OAAO,IAAI,WAAW,OAAO;AAClC,SAAK,OAAO,IAAI,aAAa,KAAK,IAAI;AACtC,SAAK,YAAY,IAAI,kBAAkB,KAAK,IAAI;AAChD,SAAK,WAAW,IAAI,iBAAiB,KAAK,IAAI;AAC9C,SAAK,WAAW,IAAI,iBAAiB,KAAK,IAAI;AAC9C,SAAK,WAAW,IAAI,iBAAiB,KAAK,IAAI;AAC9C,SAAK,WAAW,IAAI,iBAAiB,KAAK,IAAI;AAC9C,SAAK,SAAS,IAAI,eAAe,KAAK,IAAI;AAC1C,SAAK,QAAQ,IAAI,cAAc,KAAK,IAAI;AACxC,SAAK,SAAS,IAAI,eAAe,KAAK,IAAI;AAC1C,SAAK,WAAW,IAAI,iBAAiB,KAAK,IAAI;AAC9C,SAAK,WAAW,IAAI,iBAAiB,KAAK,IAAI;AAC9C,SAAK,QAAQ,IAAI,cAAc,KAAK,IAAI;AACxC,SAAK,SAAS,IAAI,eAAe,KAAK,MAAM,QAAQ,gBAAgB;AAAA,EACtE;AAAA,EAEA,QAA6B,QAAgB,MAAc,UAA0B,CAAC,GAAuB;AAC3G,WAAO,KAAK,KAAK,QAAmB,QAAQ,MAAM,OAAO;AAAA,EAC3D;AACF;","names":["isRecord"]}
1
+ {"version":3,"sources":["../src/events.ts","../src/errors.ts","../src/casing.ts","../src/http.ts","../src/resources.ts","../src/client.ts"],"sourcesContent":["import WebSocket from 'ws';\nimport type {\n ErrorHandler,\n EventHandler,\n EventSubscribeRequest,\n VZapsEvent,\n WebSocketFactory,\n WebSocketLike,\n} from './types.js';\nimport type { HttpClient } from './http.js';\n\ntype LifecycleEvent = 'open' | 'close' | 'error';\ntype HandlerMap = Map<string, Set<EventHandler>>;\n\nexport class EventsResource {\n constructor(\n private readonly http: HttpClient,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async subscribe(request: EventSubscribeRequest): Promise<EventSubscription> {\n const subscription = new EventSubscription(this.http, request, this.webSocketFactory);\n await subscription.open();\n return subscription;\n }\n}\n\nexport class EventSubscription {\n private readonly handlers: HandlerMap = new Map();\n private readonly errorHandlers = new Set<ErrorHandler>();\n private readonly lifecycleHandlers = new Map<LifecycleEvent, Set<(...args: unknown[]) => void>>();\n private socket?: WebSocketLike;\n private closed = false;\n private retryCount = 0;\n\n constructor(\n private readonly http: HttpClient,\n private readonly request: EventSubscribeRequest,\n private readonly webSocketFactory?: WebSocketFactory,\n ) {}\n\n async open(): Promise<void> {\n const token = await this.http.getAccessToken(this.request.signal);\n const url = this.http.buildRealtimeUrl('/events/ws', {\n instance_id: this.request.instanceId,\n events: this.request.events?.join(','),\n access_token: token,\n client_token: this.http.clientToken,\n instance_token: this.request.instanceToken,\n last_event_id: this.request.lastEventId,\n });\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'X-Client-Token': this.http.clientToken,\n };\n\n headers['X-Instance-Token'] = this.request.instanceToken;\n\n this.socket = this.createSocket(url, headers);\n this.bindSocket(this.socket);\n }\n\n on<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.add(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.addLifecycleHandler(event, handler as (...args: unknown[]) => void);\n return this;\n }\n\n const handlers = this.handlers.get(event) ?? new Set<EventHandler>();\n handlers.add(handler as EventHandler);\n this.handlers.set(event, handlers);\n return this;\n }\n\n off<TEvent extends VZapsEvent = VZapsEvent>(event: string, handler: EventHandler<TEvent>): this {\n if (event === 'error') {\n this.errorHandlers.delete(handler as ErrorHandler);\n return this;\n }\n\n if (event === 'open' || event === 'close') {\n this.lifecycleHandlers.get(event)?.delete(handler as (...args: unknown[]) => void);\n return this;\n }\n\n this.handlers.get(event)?.delete(handler as EventHandler);\n return this;\n }\n\n async close(code = 1000, reason = 'Client closed subscription'): Promise<void> {\n this.closed = true;\n this.socket?.close(code, reason);\n }\n\n private createSocket(url: string, headers: Record<string, string>): WebSocketLike {\n if (this.webSocketFactory) {\n return this.webSocketFactory(url, headers);\n }\n\n if (typeof globalThis.WebSocket !== 'undefined') {\n return new globalThis.WebSocket(url) as unknown as WebSocketLike;\n }\n\n return new WebSocket(url, { headers }) as unknown as WebSocketLike;\n }\n\n private bindSocket(socket: WebSocketLike): void {\n listen(socket, 'open', () => {\n this.retryCount = 0;\n this.emitLifecycle('open');\n });\n\n listen(socket, 'message', (eventOrData) => {\n const raw = readMessageData(eventOrData);\n if (raw !== undefined) {\n void this.dispatch(raw);\n }\n });\n\n listen(socket, 'error', (error) => {\n this.emitError(error);\n });\n\n listen(socket, 'close', () => {\n this.emitLifecycle('close');\n void this.reconnectIfNeeded();\n });\n\n this.request.signal?.addEventListener('abort', () => {\n void this.close(1000, 'Subscription aborted');\n }, { once: true });\n }\n\n private async dispatch(raw: unknown): Promise<void> {\n try {\n const event = parseEvent(raw);\n const handlers = new Set<EventHandler>([\n ...(this.handlers.get(event.type) ?? []),\n ...(this.handlers.get('All') ?? []),\n ]);\n\n await Promise.all([...handlers].map((handler) => handler(event)));\n this.ack(event.id);\n } catch (error) {\n this.emitError(error);\n }\n }\n\n private ack(eventId: string): void {\n if (!eventId || !this.socket) {\n return;\n }\n this.socket.send(JSON.stringify({ type: 'ack', event_id: eventId }));\n }\n\n private async reconnectIfNeeded(): Promise<void> {\n if (this.closed || this.request.reconnect === false) {\n return;\n }\n\n const maxRetries = this.request.maxRetries ?? Number.POSITIVE_INFINITY;\n if (this.retryCount >= maxRetries) {\n return;\n }\n\n this.retryCount += 1;\n await delay(this.request.retryDelayMs ?? Math.min(30_000, 1000 * this.retryCount));\n await this.open();\n }\n\n private addLifecycleHandler(event: LifecycleEvent, handler: (...args: unknown[]) => void): void {\n const handlers = this.lifecycleHandlers.get(event) ?? new Set<(...args: unknown[]) => void>();\n handlers.add(handler);\n this.lifecycleHandlers.set(event, handlers);\n }\n\n private emitLifecycle(event: LifecycleEvent, ...args: unknown[]): void {\n for (const handler of this.lifecycleHandlers.get(event) ?? []) {\n handler(...args);\n }\n }\n\n private emitError(error: unknown): void {\n if (this.errorHandlers.size === 0) {\n return;\n }\n\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }\n}\n\nfunction listen(socket: WebSocketLike, type: string, listener: (event: unknown) => void): void {\n if (socket.addEventListener) {\n socket.addEventListener(type, listener);\n return;\n }\n\n socket.on?.(type, listener);\n}\n\nfunction readMessageData(eventOrData: unknown): unknown {\n if (isRecord(eventOrData) && 'data' in eventOrData) {\n return eventOrData.data;\n }\n return eventOrData;\n}\n\nfunction parseEvent(raw: unknown): VZapsEvent {\n const text = typeof raw === 'string' ? raw : Buffer.isBuffer(raw) ? raw.toString('utf8') : String(raw);\n return JSON.parse(text) as VZapsEvent;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n","export class VZapsError extends Error {\n readonly status?: number;\n readonly code?: string;\n readonly details?: unknown;\n\n constructor(message: string, options: { status?: number; code?: string; details?: unknown } = {}) {\n super(message);\n this.name = 'VZapsError';\n this.status = options.status;\n this.code = options.code;\n this.details = options.details;\n }\n}\n\nexport class VZapsAuthenticationError extends VZapsError {\n constructor(message = 'Invalid VZaps client credentials', details?: unknown) {\n super(message, { status: 401, code: 'AUTHENTICATION_FAILED', details });\n this.name = 'VZapsAuthenticationError';\n }\n}\n\nexport class VZapsTimeoutError extends VZapsError {\n constructor(message = 'VZaps request timed out') {\n super(message, { code: 'REQUEST_TIMEOUT' });\n this.name = 'VZapsTimeoutError';\n }\n}\n","function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport function toSnakeCaseKey(key: string): string {\n return key\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .toLowerCase();\n}\n\nexport function toCamelCaseKey(key: string): string {\n return key.replace(/_([a-z0-9])/g, (_, char: string) => char.toUpperCase());\n}\n\nexport function keysToSnakeCase<T>(value: T): T {\n return transformKeys(value, toSnakeCaseKey) as T;\n}\n\nexport function keysToCamelCase<T>(value: T): T {\n return transformKeys(value, toCamelCaseKey) as T;\n}\n\nfunction transformKeys<T>(value: T, transformKey: (key: string) => string): T {\n if (Array.isArray(value)) {\n return value.map((item) => transformKeys(item, transformKey)) as T;\n }\n\n if (!isPlainObject(value)) {\n return value;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, nested] of Object.entries(value)) {\n result[transformKey(key)] = transformKeys(nested, transformKey);\n }\n\n return result as T;\n}\n","import { VZapsAuthenticationError, VZapsError, VZapsTimeoutError } from './errors.js';\nimport { keysToCamelCase, keysToSnakeCase, toSnakeCaseKey } from './casing.js';\nimport type { AuthTokenResponse, FetchLike, RequestOptions, VZapsClientOptions } from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://api.vzaps.com';\nconst DEFAULT_REALTIME_URL = 'wss://realtime.vzaps.com';\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_TOKEN_SKEW_MS = 60_000;\n\ninterface CachedToken {\n accessToken: string;\n expiresAt: number;\n}\n\nexport class HttpClient {\n readonly baseUrl: string;\n readonly realtimeUrl?: string;\n readonly clientToken: string;\n readonly clientSecret: string;\n\n private readonly fetchImpl: FetchLike;\n private readonly timeoutMs: number;\n private readonly tokenSkewMs: number;\n private readonly userAgent?: string;\n private cachedToken?: CachedToken;\n private pendingToken?: Promise<string>;\n\n constructor(options: VZapsClientOptions) {\n this.clientToken = requireNonEmpty(options.clientToken, 'clientToken');\n this.clientSecret = requireNonEmpty(options.clientSecret, 'clientSecret');\n this.baseUrl = normalizeBaseUrl(options.baseUrl ?? DEFAULT_BASE_URL);\n this.realtimeUrl = normalizeBaseUrl(options.realtimeUrl ?? DEFAULT_REALTIME_URL);\n this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.tokenSkewMs = options.tokenSkewMs ?? DEFAULT_TOKEN_SKEW_MS;\n this.userAgent = options.userAgent;\n this.fetchImpl = options.fetch ?? globalThis.fetch;\n\n if (!this.fetchImpl) {\n throw new VZapsError('No fetch implementation available. Use Node.js 18+ or pass options.fetch.');\n }\n }\n\n async getAccessToken(signal?: AbortSignal): Promise<string> {\n if (this.cachedToken && this.cachedToken.expiresAt > Date.now()) {\n return this.cachedToken.accessToken;\n }\n\n this.pendingToken ??= this.requestToken(signal).finally(() => {\n this.pendingToken = undefined;\n });\n\n return this.pendingToken;\n }\n\n async request<T>(method: string, path: string, options: RequestOptions = {}): Promise<T> {\n const url = this.buildUrl(path, options.query);\n const headers = new Headers();\n headers.set('Accept', 'application/json');\n\n if (options.body !== undefined) {\n headers.set('Content-Type', 'application/json');\n }\n\n if (this.userAgent) {\n headers.set('User-Agent', this.userAgent);\n }\n\n for (const [key, value] of Object.entries(options.headers ?? {})) {\n if (value !== undefined) {\n headers.set(key, value);\n }\n }\n\n if (options.auth !== false) {\n headers.set('Authorization', `Bearer ${await this.getAccessToken(options.signal)}`);\n headers.set('X-Client-Token', this.clientToken);\n }\n\n if (options.instanceToken) {\n headers.set('X-Instance-Token', options.instanceToken);\n }\n\n const body =\n options.body === undefined ? undefined : JSON.stringify(keysToSnakeCase(options.body));\n\n const response = await this.fetchWithTimeout(url, {\n method,\n headers,\n body,\n signal: options.signal,\n });\n\n return parseResponse<T>(response);\n }\n\n buildRealtimeUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.realtimeUrl!, path, query);\n }\n\n private async requestToken(signal?: AbortSignal): Promise<string> {\n const response = await this.request<AuthTokenResponse>('POST', '/token', {\n auth: false,\n signal,\n body: {\n clientToken: this.clientToken,\n clientSecret: this.clientSecret,\n },\n });\n\n if (!response.accessToken || !response.expiresIn) {\n throw new VZapsAuthenticationError('VZaps token response is missing accessToken or expiresIn', response);\n }\n\n this.cachedToken = {\n accessToken: response.accessToken,\n expiresAt: Date.now() + response.expiresIn * 1000 - this.tokenSkewMs,\n };\n\n return response.accessToken;\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n return buildUrl(this.baseUrl, path, query);\n }\n\n private async fetchWithTimeout(url: string, init: RequestInit): Promise<Response> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n const signal = mergeSignals(controller.signal, init.signal ?? undefined);\n\n try {\n return await this.fetchImpl(url, { ...init, signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw new VZapsTimeoutError();\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n }\n}\n\nfunction requireNonEmpty(value: string | undefined, name: string): string {\n if (!value || value.trim() === '') {\n throw new VZapsError(`VZaps ${name} is required`);\n }\n return value;\n}\n\nfunction normalizeBaseUrl(value: string): string {\n return value.replace(/\\/+$/, '');\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = new URL(`${normalizeBaseUrl(baseUrl)}${cleanPath}`);\n\n for (const [key, value] of Object.entries(query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(toSnakeCaseKey(key), String(value));\n }\n }\n\n return url.toString();\n}\n\nasync function parseResponse<T>(response: Response): Promise<T> {\n const text = await response.text();\n const data = text ? safeJsonParse(text) : undefined;\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new VZapsAuthenticationError(readErrorMessage(data, response.statusText), data);\n }\n\n throw new VZapsError(readErrorMessage(data, response.statusText), {\n status: response.status,\n details: data,\n });\n }\n\n return keysToCamelCase(data) as T;\n}\n\nfunction safeJsonParse(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction readErrorMessage(data: unknown, fallback: string): string {\n if (isRecord(data)) {\n if (typeof data.error === 'string') return data.error;\n if (typeof data.message === 'string') return data.message;\n }\n return fallback || 'VZaps request failed';\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction mergeSignals(primary: AbortSignal, secondary?: AbortSignal): AbortSignal {\n if (!secondary) {\n return primary;\n }\n\n if (secondary.aborted) {\n return secondary;\n }\n\n const controller = new AbortController();\n const abort = () => controller.abort();\n\n primary.addEventListener('abort', abort, { once: true });\n secondary.addEventListener('abort', abort, { once: true });\n\n return controller.signal;\n}\n","import type { HttpClient } from './http.js';\nimport type {\n ChatClearRequest,\n ChatDeleteRequest,\n ChatExpirationRequest,\n ChatListRequest,\n ChatMuteRequest,\n ChatRequest,\n ChatwootImportRequest,\n ChatwootRequest,\n ContactAddRequest,\n GroupInfoRequest,\n GroupInviteLinkRequest,\n GroupListRequest,\n GroupMutationRequest,\n InstanceCreateRequest,\n InstanceListRequest,\n InstanceRequestOptions,\n InstanceScopedRequest,\n MessageDeleteRequest,\n MessageDownloadRequest,\n MessageEditRequest,\n MessageMarkReadRequest,\n MessagePollVoteRequest,\n MessagePresenceRequest,\n MessageReactRemoveRequest,\n MessageReactRequest,\n MessageSendAudioRequest,\n MessageSendButtonsRequest,\n MessageSendContactRequest,\n MessageSendDocumentRequest,\n MessageSendGifRequest,\n MessageSendImageRequest,\n MessageSendLinkRequest,\n MessageSendListRequest,\n MessageSendLocationRequest,\n MessageSendPollRequest,\n MessageSendStickerRequest,\n MessageSendTextRequest,\n MessageSendVideoRequest,\n QueueMessageRequest,\n QueueRequest,\n TypebotMutationRequest,\n TypebotRequest,\n TypebotSessionRequest,\n TypebotStartSessionRequest,\n UserAvatarRequest,\n UserPhonesRequest,\n WebhookConfigRequest,\n WebhookLogRequest,\n WebhookLogSearchRequest,\n} from './types.js';\n\ntype SignalOptions = { signal?: AbortSignal };\ntype Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport class AuthResource {\n constructor(private readonly http: HttpClient) {}\n\n getAccessToken(signal?: AbortSignal): Promise<string> {\n return this.http.getAccessToken(signal);\n }\n}\n\nexport class InstancesResource {\n constructor(private readonly http: HttpClient) {}\n\n create<TResponse = unknown>(data: InstanceCreateRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/create', {\n body: data,\n signal: options.signal,\n });\n }\n\n list<TResponse = unknown>(data: InstanceListRequest = {}, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const page = data.page ?? 1;\n const size = data.size ?? data.pageSize ?? 20;\n const filter =\n data.filter ??\n (typeof data.search === 'string' && data.search.trim() !== '' ? { query: data.search.trim() } : {});\n\n return this.http.request<TResponse>('POST', '/instances/list', {\n body: {\n page,\n size,\n filter,\n sort: data.sort,\n sortDesc: data.sortDesc,\n },\n signal: options.signal,\n });\n }\n\n get<TResponse = unknown>(instanceId: string, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/get', {\n body: { id: instanceId },\n signal: options.signal,\n });\n }\n\n update<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('PATCH', `/instances/${encodeURIComponent(instanceId)}`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n restart<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/restart`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n provision<TResponse = unknown>(data: InstanceCreateRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', '/instances/provision', {\n body: data,\n signal: options.signal,\n });\n }\n\n search<TResponse = unknown>(data: Record<string, unknown>, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', '/instances/search', {\n body: data,\n signal: options.signal,\n });\n }\n\n subscribe<TResponse = unknown>(\n instanceId: string,\n data: Record<string, unknown> = {},\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/subscribe`, {\n body: data,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n resumeSubscription<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/resume-subscription`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n cancel<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('PUT', `/instances/${encodeURIComponent(instanceId)}/cancel`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class MessagesResource {\n constructor(private readonly http: HttpClient) {}\n\n sendText<TResponse = unknown>(request: MessageSendTextRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/text', request, options);\n }\n\n sendImage<TResponse = unknown>(request: MessageSendImageRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/image', request, options);\n }\n\n sendAudio<TResponse = unknown>(request: MessageSendAudioRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/audio', request, options);\n }\n\n sendDocument<TResponse = unknown>(request: MessageSendDocumentRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/document', request, options);\n }\n\n sendVideo<TResponse = unknown>(request: MessageSendVideoRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/video', request, options);\n }\n\n sendSticker<TResponse = unknown>(request: MessageSendStickerRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/sticker', request, options);\n }\n\n sendGif<TResponse = unknown>(request: MessageSendGifRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/gif', request, options);\n }\n\n sendLocation<TResponse = unknown>(request: MessageSendLocationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/location', request, options);\n }\n\n sendContact<TResponse = unknown>(request: MessageSendContactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/contact', request, options);\n }\n\n sendButtons<TResponse = unknown>(request: MessageSendButtonsRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/buttons', request, options);\n }\n\n sendList<TResponse = unknown>(request: MessageSendListRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/list', request, options);\n }\n\n sendLink<TResponse = unknown>(request: MessageSendLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/link', request, options);\n }\n\n sendPoll<TResponse = unknown>(request: MessageSendPollRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/send/poll', request, options);\n }\n\n pollVote<TResponse = unknown>(request: MessagePollVoteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/poll/vote', request, options);\n }\n\n react<TResponse = unknown>(request: MessageReactRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/react', request, options);\n }\n\n removeReaction<TResponse = unknown>(request: MessageReactRemoveRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.sendRequest<TResponse>('DELETE', '/chat/react', request, options);\n }\n\n presence<TResponse = unknown>(request: MessagePresenceRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/presence', request, options);\n }\n\n markRead<TResponse = unknown>(request: MessageMarkReadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/markread', request, options);\n }\n\n downloadImage<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadimage', request, options);\n }\n\n downloadVideo<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadvideo', request, options);\n }\n\n downloadAudio<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloadaudio', request, options);\n }\n\n downloadDocument<TResponse = unknown>(request: MessageDownloadRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.post<TResponse>('/chat/downloaddocument', request, options);\n }\n\n edit<TResponse = unknown>(request: MessageEditRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('PATCH', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n delete<TResponse = unknown>(request: MessageDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return this.sendRequest<TResponse>('DELETE', `/chat/messages/${encodeURIComponent(messageId)}`, rest, options);\n }\n\n send<TResponse = unknown>(\n instanceId: string,\n path: string,\n body: Record<string, unknown>,\n options: InstanceRequestOptions = {},\n ): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/chat/${path.replace(/^\\/+/, '')}`, {\n body,\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n private post<TResponse>(path: string, request: InstanceScopedRequest, options: SignalOptions): Promise<TResponse> {\n return this.sendRequest<TResponse>('POST', path, request, options);\n }\n\n private sendRequest<TResponse>(\n method: Method,\n path: string,\n request: InstanceScopedRequest,\n options: SignalOptions,\n ): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: WebhookConfigRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n searchLogs<TResponse = unknown>(request: WebhookLogSearchRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/webhook/logs/search`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n\n getLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n\n retryLog<TResponse = unknown>(request: WebhookLogRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'POST',\n `/instances/${encodeURIComponent(request.instanceId)}/webhook/logs/${encodeURIComponent(request.logId)}/retry`,\n {\n signal: options.signal,\n instanceToken: request.instanceToken,\n },\n );\n }\n}\n\nexport class ContactsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/contact/list`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n add<TResponse = unknown>(request: ContactAddRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/contact/add`, {\n body,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nexport class GroupsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: GroupListRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/group/list`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: GroupInfoRequest, options: { signal?: AbortSignal } = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/info`, {\n query: { groupId: request.groupId },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n inviteLink<TResponse = unknown>(request: GroupInviteLinkRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(request.instanceId)}/group/invitelink`, {\n query: { groupId: request.groupId, reset: request.reset },\n signal: options.signal,\n instanceToken: request.instanceToken,\n });\n }\n\n setPhoto<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/photo', options);\n }\n\n setName<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/name', options);\n }\n\n setDescription<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/description', options);\n }\n\n setSettings<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/settings', options);\n }\n\n create<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/create', options);\n }\n\n addAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/add-admin', options);\n }\n\n removeAdmin<TResponse = unknown>(request: GroupMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/group/remove-admin', options);\n }\n}\n\nexport class SessionsResource {\n constructor(private readonly http: HttpClient) {}\n\n status<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/status`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n qr<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/session/qr`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n pairCode<TResponse = unknown>(instanceId: string, phone: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(\n 'GET',\n `/instances/${encodeURIComponent(instanceId)}/session/paircode/${encodeURIComponent(phone)}`,\n {\n signal: options.signal,\n instanceToken: options.instanceToken,\n },\n );\n }\n\n disconnect<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('POST', `/instances/${encodeURIComponent(instanceId)}/session/disconnect`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class UsersResource {\n constructor(private readonly http: HttpClient) {}\n\n info<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/info', options);\n }\n\n check<TResponse = unknown>(request: UserPhonesRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/check', options);\n }\n\n avatar<TResponse = unknown>(request: UserAvatarRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/user/avatar', options);\n }\n\n contacts<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/user/contacts`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n}\n\nexport class QueuesResource {\n constructor(private readonly http: HttpClient) {}\n\n listMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/messages', options);\n }\n\n purgeMessages<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/messages', options);\n }\n\n removeMessage<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/messages/${encodeURIComponent(messageId)}`, options);\n }\n\n listOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return getInstancePath(this.http, request, '/queue/operations', options);\n }\n\n purgeOperations<TResponse = unknown>(request: QueueRequest, options: SignalOptions = {}): Promise<TResponse> {\n return deleteInstancePath(this.http, request, '/queue/operations', options);\n }\n\n removeOperation<TResponse = unknown>(request: QueueMessageRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { messageId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/queue/operations/${encodeURIComponent(messageId)}`, options);\n }\n}\n\nexport class TypebotsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n create<TResponse = unknown>(request: TypebotRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/typebots', options);\n }\n\n update<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return requestInstancePath(this.http, 'PATCH', rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n delete<TResponse = unknown>(request: TypebotMutationRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n return deleteInstancePath(this.http, rest, `/typebots/${encodeURIComponent(typebotId)}`, options);\n }\n\n listSessions<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/typebots/sessions`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n startSession<TResponse = unknown>(request: TypebotStartSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { typebotId, ...rest } = request;\n const path = typebotId ? `/typebots/${encodeURIComponent(typebotId)}/sessions/start` : '/typebots/sessions/start';\n return postInstancePath(this.http, rest, path, options);\n }\n\n closeSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/close`, options);\n }\n\n pauseSession<TResponse = unknown>(request: TypebotSessionRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { session, ...rest } = request;\n return postInstancePath(this.http, rest, `/typebots/sessions/${encodeURIComponent(session)}/pause`, options);\n }\n}\n\nexport class ChatwootResource {\n constructor(private readonly http: HttpClient) {}\n\n get<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n set<TResponse = unknown>(request: ChatwootRequest, options: SignalOptions = {}): Promise<TResponse> {\n return postInstancePath(this.http, request, '/chatwoot', options);\n }\n\n delete<TResponse = unknown>(instanceId: string, options: InstanceRequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>('DELETE', `/instances/${encodeURIComponent(instanceId)}/chatwoot`, {\n signal: options.signal,\n instanceToken: options.instanceToken,\n });\n }\n\n triggerImport<TResponse = unknown>(request: ChatwootImportRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { what, ...rest } = request;\n return postInstancePath(this.http, rest, `/chatwoot/import/${encodeURIComponent(what)}`, options);\n }\n}\n\nexport class ChatsResource {\n constructor(private readonly http: HttpClient) {}\n\n list<TResponse = unknown>(request: ChatListRequest, options: SignalOptions = {}): Promise<TResponse> {\n const { instanceId, instanceToken, page, pageSize } = request;\n return this.http.request<TResponse>('GET', `/instances/${encodeURIComponent(instanceId)}/chats`, {\n query: { page, pageSize },\n signal: options.signal,\n instanceToken,\n });\n }\n\n get<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('GET', request, '', options);\n }\n\n archive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/archive', options);\n }\n\n unarchive<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unarchive', options);\n }\n\n mute<TResponse = unknown>(request: ChatMuteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/mute', options);\n }\n\n unmute<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unmute', options);\n }\n\n pin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/pin', options);\n }\n\n unpin<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unpin', options);\n }\n\n read<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/read', options);\n }\n\n unread<TResponse = unknown>(request: ChatRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/unread', options);\n }\n\n clear<TResponse = unknown>(request: ChatClearRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('POST', request, '/clear', options);\n }\n\n delete<TResponse = unknown>(request: ChatDeleteRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('DELETE', request, '', options);\n }\n\n setExpiration<TResponse = unknown>(request: ChatExpirationRequest, options: SignalOptions = {}): Promise<TResponse> {\n return this.chatAction<TResponse>('PUT', request, '/expiration', options);\n }\n\n private chatAction<TResponse>(method: Method, request: ChatRequest, suffix: string, options: SignalOptions): Promise<TResponse> {\n const { instanceId, instanceToken, phone, ...body } = request;\n return this.http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}/chats/${encodeURIComponent(phone)}${suffix}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n }\n}\n\nfunction getInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'GET', request, path, options);\n}\n\nfunction postInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'POST', request, path, options);\n}\n\nfunction deleteInstancePath<TResponse>(\n http: HttpClient,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n return requestInstancePath(http, 'DELETE', request, path, options);\n}\n\nfunction requestInstancePath<TResponse>(\n http: HttpClient,\n method: Method,\n request: InstanceScopedRequest,\n path: string,\n options: SignalOptions,\n): Promise<TResponse> {\n const { instanceId, instanceToken, ...body } = request;\n return http.request<TResponse>(method, `/instances/${encodeURIComponent(instanceId)}${path}`, {\n body: Object.keys(body).length > 0 ? body : undefined,\n signal: options.signal,\n instanceToken,\n });\n}\n","import { EventsResource } from './events.js';\nimport { HttpClient } from './http.js';\nimport {\n AuthResource,\n ChatwootResource,\n ChatsResource,\n ContactsResource,\n GroupsResource,\n InstancesResource,\n MessagesResource,\n QueuesResource,\n SessionsResource,\n TypebotsResource,\n UsersResource,\n WebhooksResource,\n} from './resources.js';\nimport type { RequestOptions, VZapsClientOptions } from './types.js';\n\nexport class VZapsClient {\n readonly auth: AuthResource;\n readonly instances: InstancesResource;\n readonly sessions: SessionsResource;\n readonly messages: MessagesResource;\n readonly webhooks: WebhooksResource;\n readonly contacts: ContactsResource;\n readonly groups: GroupsResource;\n readonly users: UsersResource;\n readonly queues: QueuesResource;\n readonly typebots: TypebotsResource;\n readonly chatwoot: ChatwootResource;\n readonly chats: ChatsResource;\n readonly events: EventsResource;\n\n private readonly http: HttpClient;\n\n constructor(options: VZapsClientOptions) {\n this.http = new HttpClient(options);\n this.auth = new AuthResource(this.http);\n this.instances = new InstancesResource(this.http);\n this.sessions = new SessionsResource(this.http);\n this.messages = new MessagesResource(this.http);\n this.webhooks = new WebhooksResource(this.http);\n this.contacts = new ContactsResource(this.http);\n this.groups = new GroupsResource(this.http);\n this.users = new UsersResource(this.http);\n this.queues = new QueuesResource(this.http);\n this.typebots = new TypebotsResource(this.http);\n this.chatwoot = new ChatwootResource(this.http);\n this.chats = new ChatsResource(this.http);\n this.events = new EventsResource(this.http, options.webSocketFactory);\n }\n\n request<TResponse = unknown>(method: string, path: string, options: RequestOptions = {}): Promise<TResponse> {\n return this.http.request<TResponse>(method, path, options);\n }\n}\n"],"mappings":"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","names":["isRecord"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vzaps/sdk",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Official TypeScript SDK for the VZaps public API.",
5
5
  "type": "module",
6
6
  "license": "MIT",