@workhive/api 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/client.d.ts +160 -6
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +253 -12
  4. package/dist/context.d.ts +122 -3
  5. package/dist/context.d.ts.map +1 -1
  6. package/dist/hooks/index.d.ts +24 -1
  7. package/dist/hooks/index.d.ts.map +1 -1
  8. package/dist/hooks/index.js +20 -1
  9. package/dist/hooks/use-billing-status.d.ts +7 -0
  10. package/dist/hooks/use-billing-status.d.ts.map +1 -0
  11. package/dist/hooks/use-billing-status.js +17 -0
  12. package/dist/hooks/use-card.d.ts +2 -0
  13. package/dist/hooks/use-card.d.ts.map +1 -0
  14. package/dist/hooks/use-card.js +12 -0
  15. package/dist/hooks/use-cards.d.ts +5 -0
  16. package/dist/hooks/use-cards.d.ts.map +1 -0
  17. package/dist/hooks/use-cards.js +12 -0
  18. package/dist/hooks/use-create-card.d.ts +10 -0
  19. package/dist/hooks/use-create-card.d.ts.map +1 -0
  20. package/dist/hooks/use-create-card.js +13 -0
  21. package/dist/hooks/use-delete-card.d.ts +15 -0
  22. package/dist/hooks/use-delete-card.d.ts.map +1 -0
  23. package/dist/hooks/use-delete-card.js +38 -0
  24. package/dist/hooks/use-email-drafts.d.ts +32 -0
  25. package/dist/hooks/use-email-drafts.d.ts.map +1 -0
  26. package/dist/hooks/use-email-drafts.js +98 -0
  27. package/dist/hooks/use-gmail-connection-members.d.ts +2 -0
  28. package/dist/hooks/use-gmail-connection-members.d.ts.map +1 -0
  29. package/dist/hooks/use-gmail-connection-members.js +13 -0
  30. package/dist/hooks/use-gmail-connections.d.ts +5 -0
  31. package/dist/hooks/use-gmail-connections.d.ts.map +1 -0
  32. package/dist/hooks/use-gmail-connections.js +21 -0
  33. package/dist/hooks/use-gmail-messages.d.ts +2 -0
  34. package/dist/hooks/use-gmail-messages.d.ts.map +1 -0
  35. package/dist/hooks/use-gmail-messages.js +13 -0
  36. package/dist/hooks/use-gmail-signature.d.ts +2 -0
  37. package/dist/hooks/use-gmail-signature.d.ts.map +1 -0
  38. package/dist/hooks/use-gmail-signature.js +12 -0
  39. package/dist/hooks/use-gmail-thread-search-infinite.d.ts +2 -0
  40. package/dist/hooks/use-gmail-thread-search-infinite.d.ts.map +1 -0
  41. package/dist/hooks/use-gmail-thread-search-infinite.js +21 -0
  42. package/dist/hooks/use-gmail-thread-search.d.ts +2 -0
  43. package/dist/hooks/use-gmail-thread-search.d.ts.map +1 -0
  44. package/dist/hooks/use-gmail-thread-search.js +12 -0
  45. package/dist/hooks/use-gmail-threads-infinite.d.ts +5 -0
  46. package/dist/hooks/use-gmail-threads-infinite.d.ts.map +1 -0
  47. package/dist/hooks/use-gmail-threads-infinite.js +24 -0
  48. package/dist/hooks/use-gmail-threads.d.ts +7 -0
  49. package/dist/hooks/use-gmail-threads.d.ts.map +1 -0
  50. package/dist/hooks/use-gmail-threads.js +23 -0
  51. package/dist/hooks/use-inbox-badge-count.d.ts +6 -0
  52. package/dist/hooks/use-inbox-badge-count.d.ts.map +1 -0
  53. package/dist/hooks/use-inbox-badge-count.js +17 -0
  54. package/dist/hooks/use-inbox-thread-search.d.ts +2 -0
  55. package/dist/hooks/use-inbox-thread-search.d.ts.map +1 -0
  56. package/dist/hooks/use-inbox-thread-search.js +12 -0
  57. package/dist/hooks/use-inbox-threads-infinite.d.ts.map +1 -1
  58. package/dist/hooks/use-inbox-threads-infinite.js +1 -0
  59. package/dist/hooks/use-link-gmail-thread-contact.d.ts +7 -0
  60. package/dist/hooks/use-link-gmail-thread-contact.d.ts.map +1 -0
  61. package/dist/hooks/use-link-gmail-thread-contact.js +15 -0
  62. package/dist/hooks/use-manage-gmail-connection-members.d.ts +13 -0
  63. package/dist/hooks/use-manage-gmail-connection-members.d.ts.map +1 -0
  64. package/dist/hooks/use-manage-gmail-connection-members.js +25 -0
  65. package/dist/hooks/use-mark-inbox-thread-read.d.ts +3 -1
  66. package/dist/hooks/use-mark-inbox-thread-read.d.ts.map +1 -1
  67. package/dist/hooks/use-mark-inbox-thread-read.js +36 -14
  68. package/dist/hooks/use-mark-inbox-thread-unread.d.ts +3 -1
  69. package/dist/hooks/use-mark-inbox-thread-unread.d.ts.map +1 -1
  70. package/dist/hooks/use-mark-inbox-thread-unread.js +37 -14
  71. package/dist/hooks/use-me.d.ts.map +1 -1
  72. package/dist/hooks/use-me.js +2 -1
  73. package/dist/hooks/use-message-snippets.d.ts +1 -1
  74. package/dist/hooks/use-message-snippets.d.ts.map +1 -1
  75. package/dist/hooks/use-message-snippets.js +4 -3
  76. package/dist/hooks/use-missed-unseen-count.d.ts +8 -0
  77. package/dist/hooks/use-missed-unseen-count.d.ts.map +1 -0
  78. package/dist/hooks/use-missed-unseen-count.js +19 -0
  79. package/dist/hooks/use-patch-card.d.ts +15 -0
  80. package/dist/hooks/use-patch-card.d.ts.map +1 -0
  81. package/dist/hooks/use-patch-card.js +48 -0
  82. package/dist/hooks/use-phone-number.d.ts.map +1 -1
  83. package/dist/hooks/use-phone-number.js +2 -1
  84. package/dist/hooks/use-phone-numbers.d.ts.map +1 -1
  85. package/dist/hooks/use-phone-numbers.js +2 -1
  86. package/dist/hooks/use-send-gmail-message.d.ts +6 -0
  87. package/dist/hooks/use-send-gmail-message.d.ts.map +1 -0
  88. package/dist/hooks/use-send-gmail-message.js +21 -0
  89. package/dist/hooks/use-send-inbox-message.d.ts.map +1 -1
  90. package/dist/hooks/use-send-inbox-message.js +16 -13
  91. package/dist/hooks/use-tasks.d.ts +4 -0
  92. package/dist/hooks/use-tasks.d.ts.map +1 -1
  93. package/dist/hooks/use-tasks.js +14 -2
  94. package/dist/hooks/use-update-inbox-thread-status.d.ts +3 -1
  95. package/dist/hooks/use-update-inbox-thread-status.d.ts.map +1 -1
  96. package/dist/hooks/use-update-inbox-thread-status.js +36 -14
  97. package/dist/index.d.ts +5 -5
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +3 -3
  100. package/dist/query-keys.d.ts +58 -0
  101. package/dist/query-keys.d.ts.map +1 -1
  102. package/dist/query-keys.js +50 -0
  103. package/dist/types.d.ts +402 -14
  104. package/dist/types.d.ts.map +1 -1
  105. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -2,6 +2,16 @@
2
2
  * WorkHive API client – base URL + auth, methods for each route.
3
3
  * Used by both SaaS and mobile; mobile passes EXPO_PUBLIC_API_URL and Supabase getToken.
4
4
  */
5
+ /** Thrown when `fetch` returns a non-OK response; includes HTTP status for callers (e.g. 402 insufficient credits). */
6
+ export class ApiRequestError extends Error {
7
+ constructor(status, message, body) {
8
+ super(message);
9
+ this.name = 'ApiRequestError';
10
+ this.status = status;
11
+ this.body = body;
12
+ Object.setPrototypeOf(this, new.target.prototype);
13
+ }
14
+ }
5
15
  function buildUrl(baseURL, path) {
6
16
  const base = baseURL.replace(/\/$/, '');
7
17
  const p = path.startsWith('/') ? path : `/${path}`;
@@ -30,7 +40,8 @@ export function createApiClient(config) {
30
40
  catch {
31
41
  // Server returned non-JSON (e.g. HTML error page); avoid "Unexpected token '<'" in Sentry
32
42
  }
33
- throw new Error(err.error || res.statusText || 'Request failed');
43
+ const message = err.error || res.statusText || 'Request failed';
44
+ throw new ApiRequestError(res.status, message, err);
34
45
  }
35
46
  if (res.status === 204)
36
47
  return undefined;
@@ -57,7 +68,8 @@ export function createApiClient(config) {
57
68
  catch {
58
69
  // Server returned non-JSON
59
70
  }
60
- throw new Error(err.error || res.statusText || 'Request failed');
71
+ const message = err.error || res.statusText || 'Request failed';
72
+ throw new ApiRequestError(res.status, message, err);
61
73
  }
62
74
  return res.json();
63
75
  }
@@ -77,10 +89,14 @@ export function createApiClient(config) {
77
89
  search.set('offset', String(params.offset));
78
90
  if (params?.status)
79
91
  search.set('status', params.status);
80
- if (params?.formId)
92
+ if (params?.formIds?.length)
93
+ search.set('formIds', params.formIds.join(','));
94
+ else if (params?.formId)
81
95
  search.set('formId', params.formId);
82
96
  if (params?.ownerIds?.length)
83
97
  search.set('ownerIds', params.ownerIds.join(','));
98
+ if (params?.setterIds?.length)
99
+ search.set('setterIds', params.setterIds.join(','));
84
100
  if (params?.pipelineIds?.length)
85
101
  search.set('pipelineIds', params.pipelineIds.join(','));
86
102
  if (params?.search)
@@ -91,6 +107,16 @@ export function createApiClient(config) {
91
107
  search.set('sortOrder', params.sortOrder);
92
108
  if (params?.showArchivedOnly)
93
109
  search.set('showArchivedOnly', 'true');
110
+ if (params?.allPipelines)
111
+ search.set('allPipelines', 'true');
112
+ if (params?.taskType)
113
+ search.set('taskType', params.taskType);
114
+ if (params?.dueDateFilter)
115
+ search.set('dueDateFilter', params.dueDateFilter);
116
+ if (params?.dueDateTimezone)
117
+ search.set('dueDateTimezone', params.dueDateTimezone);
118
+ if (params?.showCompletedOnly)
119
+ search.set('showCompletedOnly', 'true');
94
120
  return request(`/api/lead-submissions?${search}`);
95
121
  },
96
122
  // -------------------------------------------------------------------------
@@ -114,6 +140,8 @@ export function createApiClient(config) {
114
140
  search.set('status', params.status);
115
141
  if (params?.related_card_id)
116
142
  search.set('related_card_id', params.related_card_id);
143
+ if (params?.contact_id)
144
+ search.set('contact_id', params.contact_id);
117
145
  if (params?.limit != null)
118
146
  search.set('limit', String(params.limit));
119
147
  if (params?.offset != null)
@@ -124,6 +152,12 @@ export function createApiClient(config) {
124
152
  search.set('sort_order', params.sort_order);
125
153
  return request(`/api/tasks?${search}`);
126
154
  },
155
+ createTask(body) {
156
+ return request('/api/tasks', {
157
+ method: 'POST',
158
+ body: JSON.stringify(body),
159
+ });
160
+ },
127
161
  /** POST /api/tasks/[taskId]/outcome – record call/chat outcome */
128
162
  postTaskOutcome(taskId, body) {
129
163
  return request(`/api/tasks/${taskId}/outcome`, {
@@ -159,10 +193,14 @@ export function createApiClient(config) {
159
193
  return request(`/api/meetings/${encodeURIComponent(meetingId)}`);
160
194
  },
161
195
  // -------------------------------------------------------------------------
162
- // Pipeline card (GET /api/pipelines/[id]/cards/[cardId], PATCH)
196
+ // Pipeline cards (GET /api/pipelines/[id]/cards, GET/PATCH .../[cardId])
163
197
  // -------------------------------------------------------------------------
164
- getCard(pipelineId, cardId) {
165
- return request(`/api/pipelines/${pipelineId}/cards/${cardId}`);
198
+ getPipelineCards(pipelineId, params, opts) {
199
+ const qs = params?.showArchivedOnly ? '?showArchivedOnly=true' : '';
200
+ return request(`/api/pipelines/${pipelineId}/cards${qs}`, { signal: opts?.signal });
201
+ },
202
+ getCard(pipelineId, cardId, opts) {
203
+ return request(`/api/pipelines/${pipelineId}/cards/${cardId}`, { signal: opts?.signal });
166
204
  },
167
205
  patchCard(pipelineId, cardId, body) {
168
206
  return request(`/api/pipelines/${pipelineId}/cards/${cardId}`, {
@@ -170,6 +208,15 @@ export function createApiClient(config) {
170
208
  body: JSON.stringify(body),
171
209
  });
172
210
  },
211
+ createCard(pipelineId, body) {
212
+ return request(`/api/pipelines/${pipelineId}/cards`, {
213
+ method: 'POST',
214
+ body: JSON.stringify(body),
215
+ });
216
+ },
217
+ deleteCard(pipelineId, cardId, action = 'archive') {
218
+ return request(`/api/pipelines/${pipelineId}/cards/${cardId}?action=${action}`, { method: 'DELETE' });
219
+ },
173
220
  // -------------------------------------------------------------------------
174
221
  // Post-meeting booked prompt (GET /api/cards/[cardId]/post-meeting-booked-prompt)
175
222
  // -------------------------------------------------------------------------
@@ -291,6 +338,31 @@ export function createApiClient(config) {
291
338
  });
292
339
  },
293
340
  // -------------------------------------------------------------------------
341
+ // Meeting outcome (POST/PUT /api/meetings/[id]/outcome)
342
+ // -------------------------------------------------------------------------
343
+ postMeetingOutcome(meetingId, body, method = 'POST') {
344
+ return request(`/api/meetings/${meetingId}/outcome`, {
345
+ method,
346
+ body: JSON.stringify(body),
347
+ });
348
+ },
349
+ // -------------------------------------------------------------------------
350
+ // Meeting attachments (GET/POST/DELETE /api/meetings/[id]/attachments)
351
+ // -------------------------------------------------------------------------
352
+ getMeetingAttachments(meetingId) {
353
+ return request(`/api/meetings/${encodeURIComponent(meetingId)}/attachments`);
354
+ },
355
+ postMeetingAttachment(meetingId, body) {
356
+ return request(`/api/meetings/${encodeURIComponent(meetingId)}/attachments`, {
357
+ method: 'POST',
358
+ body: JSON.stringify(body),
359
+ });
360
+ },
361
+ deleteMeetingAttachment(meetingId, attachmentId) {
362
+ const params = new URLSearchParams({ attachmentId });
363
+ return request(`/api/meetings/${encodeURIComponent(meetingId)}/attachments?${params}`, { method: 'DELETE' });
364
+ },
365
+ // -------------------------------------------------------------------------
294
366
  // Phone numbers / inboxes (GET /api/phone-numbers)
295
367
  // For header phone-number switch; filter by current user assignment client-side
296
368
  // or use assignments to show only numbers the user can use for inbox/calls.
@@ -302,7 +374,7 @@ export function createApiClient(config) {
302
374
  getPhoneNumber(phoneNumberId) {
303
375
  return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}`);
304
376
  },
305
- /** PATCH /api/phone-numbers/[id] – update phone number (admin/owner only). Includes call_recording_transcribe_enabled. */
377
+ /** PATCH /api/phone-numbers/[id] – update phone number (admin/owner only). Includes call_recording_enabled and call_recording_transcribe_enabled. */
306
378
  patchPhoneNumber(phoneNumberId, body) {
307
379
  return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}`, { method: 'PATCH', body: JSON.stringify(body) });
308
380
  },
@@ -311,8 +383,9 @@ export function createApiClient(config) {
311
383
  return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}`, { method: 'DELETE' }).then(() => undefined);
312
384
  },
313
385
  /** POST /api/phone-numbers/[id]/voice-token – Twilio Voice Access Token for Device SDK. */
314
- postVoiceToken(phoneNumberId) {
315
- return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/voice-token`, { method: 'POST' });
386
+ postVoiceToken(phoneNumberId, mode) {
387
+ const modeQuery = mode ? `?mode=${mode}` : '';
388
+ return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/voice-token${modeQuery}`, { method: 'POST' });
316
389
  },
317
390
  /** POST /api/phone-numbers/[id]/upload-media – upload files for outbound MMS; returns signed URLs + attachment metadata. */
318
391
  uploadInboxMedia(phoneNumberId, formData) {
@@ -321,19 +394,31 @@ export function createApiClient(config) {
321
394
  // -------------------------------------------------------------------------
322
395
  // Inbox: threads, messages, send (use shared API; no raw fetch in app)
323
396
  // -------------------------------------------------------------------------
324
- /** List conversation threads for an inbox (phone number). Optional status filter: active (Open) or archived (Done). Supports cursor pagination via limit and cursor. */
397
+ /** List conversation threads for an inbox (phone number). Optional status filter: active (Open) or archived (Done). Supports cursor pagination via limit and cursor. When contact_id is set, finds the thread for that contact regardless of status. */
325
398
  getInboxThreads(phoneNumberId, params) {
326
399
  const search = new URLSearchParams();
400
+ if (params?.contact_id)
401
+ search.set('contact_id', params.contact_id);
327
402
  if (params?.status)
328
403
  search.set('status', params.status);
329
404
  if (params?.limit != null)
330
405
  search.set('limit', String(params.limit));
331
406
  if (params?.cursor)
332
407
  search.set('cursor', params.cursor);
408
+ if (params?.unread_only)
409
+ search.set('unread_only', 'true');
333
410
  const qs = search.toString();
334
411
  const path = `/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/threads` + (qs ? `?${qs}` : '');
335
412
  return request(path);
336
413
  },
414
+ /** Search SMS threads by message body or contact name/phone. */
415
+ searchInboxThreads(phoneNumberId, params) {
416
+ const sp = new URLSearchParams();
417
+ sp.set('q', params.q);
418
+ if (params.limit)
419
+ sp.set('limit', String(params.limit));
420
+ return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/threads/search?${sp.toString()}`);
421
+ },
337
422
  /** List call events for an inbox (phone number). Same auth as getInboxThreads. Supports cursor pagination via limit and cursor. Optional missed_only returns only missed/busy/voicemail calls. */
338
423
  getInboxCalls(phoneNumberId, params) {
339
424
  const search = new URLSearchParams();
@@ -362,6 +447,18 @@ export function createApiClient(config) {
362
447
  getInboxCallRecordingUrl(callEventId) {
363
448
  return buildUrl(baseURL, `/api/inbox/calls/${encodeURIComponent(callEventId)}/recording`);
364
449
  },
450
+ /** Aggregate badge count: unread threads + unseen missed calls across all assigned phone numbers. */
451
+ getInboxBadgeCount() {
452
+ return request('/api/inbox/badge-count');
453
+ },
454
+ /** Get the count of unseen missed inbound calls since the user last viewed the Calls tab. */
455
+ getMissedUnseenCount(phoneNumberId) {
456
+ return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/calls/missed-unseen-count`);
457
+ },
458
+ /** Mark calls as seen for the current user (resets badge to 0). Returns void (204). */
459
+ async markCallsSeen(phoneNumberId) {
460
+ await request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/calls/mark-seen`, { method: 'POST' });
461
+ },
365
462
  /** Send an outbound message from an inbox (SMS). */
366
463
  sendInboxMessage(phoneNumberId, body) {
367
464
  return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/send`, {
@@ -420,8 +517,9 @@ export function createApiClient(config) {
420
517
  // Message snippets (Settings → Messaging; Inbox picker)
421
518
  // -------------------------------------------------------------------------
422
519
  /** List message snippets for the current org. */
423
- getMessageSnippets() {
424
- return request('/api/settings/messaging/snippets');
520
+ getMessageSnippets(channel) {
521
+ const params = channel ? `?channel=${channel}` : '';
522
+ return request(`/api/settings/messaging/snippets${params}`);
425
523
  },
426
524
  /** Create a message snippet. */
427
525
  createMessageSnippet(body) {
@@ -435,5 +533,148 @@ export function createApiClient(config) {
435
533
  deleteMessageSnippet(id) {
436
534
  return request(`/api/settings/messaging/snippets/${encodeURIComponent(id)}`, { method: 'DELETE' });
437
535
  },
536
+ // -------------------------------------------------------------------------
537
+ // Billing (POST /api/billing/checkout, POST /api/billing/portal, GET /api/billing/status)
538
+ // -------------------------------------------------------------------------
539
+ /** Create a Stripe Checkout Session and return the redirect URL. */
540
+ createCheckoutSession(body) {
541
+ return request('/api/billing/checkout', {
542
+ method: 'POST',
543
+ body: JSON.stringify(body),
544
+ });
545
+ },
546
+ /** Create a Stripe Customer Portal session and return the redirect URL. */
547
+ createPortalSession() {
548
+ return request('/api/billing/portal', {
549
+ method: 'POST',
550
+ });
551
+ },
552
+ /** Fetch current billing status for the org. */
553
+ getBillingStatus() {
554
+ return request('/api/billing/status');
555
+ },
556
+ /** Toggle auto top-up for the org. */
557
+ toggleAutoTopUp(enabled) {
558
+ return request('/api/billing/auto-topup', {
559
+ method: 'POST',
560
+ body: JSON.stringify({ enabled }),
561
+ });
562
+ },
563
+ /** Add or remove an additional seat. */
564
+ updateSeats(action) {
565
+ return request('/api/billing/seats', {
566
+ method: 'POST',
567
+ body: JSON.stringify({ action }),
568
+ });
569
+ },
570
+ // -------------------------------------------------------------------------
571
+ // Mobile Push Tokens (POST /api/mobile/push-tokens, DELETE /api/mobile/push-tokens/[token])
572
+ // -------------------------------------------------------------------------
573
+ /** Register (upsert) an APNs push token for the current user. */
574
+ registerPushToken(body) {
575
+ return request('/api/mobile/push-tokens', {
576
+ method: 'POST',
577
+ body: JSON.stringify(body),
578
+ });
579
+ },
580
+ /** Unregister (soft-delete) an APNs push token. */
581
+ unregisterPushToken(apnsToken, platform = 'ios') {
582
+ return request(`/api/mobile/push-tokens/${encodeURIComponent(apnsToken)}?platform=${platform}`, { method: 'DELETE' });
583
+ },
584
+ // -----------------------------------------------------------------------
585
+ // Gmail
586
+ // -----------------------------------------------------------------------
587
+ /** Initiate Gmail OAuth flow. Returns authUrl for redirect. */
588
+ connectGmail(connectionType) {
589
+ return request('/api/gmail/connect', {
590
+ method: 'POST',
591
+ body: JSON.stringify({ connection_type: connectionType ?? 'personal' }),
592
+ });
593
+ },
594
+ /** List current user's Gmail connections. */
595
+ getGmailConnections() {
596
+ return request('/api/gmail/connections');
597
+ },
598
+ /** Disconnect a Gmail account (soft-delete). */
599
+ disconnectGmail(connectionId) {
600
+ return request(`/api/gmail/disconnect?id=${connectionId}`, { method: 'DELETE' });
601
+ },
602
+ /** List email threads for a Gmail connection (page-based). */
603
+ getGmailThreads(connectionId, params) {
604
+ const sp = new URLSearchParams();
605
+ if (params?.status)
606
+ sp.set('status', params.status);
607
+ if (params?.page)
608
+ sp.set('page', String(params.page));
609
+ if (params?.page_size)
610
+ sp.set('page_size', String(params.page_size));
611
+ if (params?.unread_only)
612
+ sp.set('unread_only', 'true');
613
+ const qs = sp.toString();
614
+ return request(`/api/gmail/${connectionId}/threads${qs ? `?${qs}` : ''}`);
615
+ },
616
+ /** Get messages for an email thread. */
617
+ getGmailThreadMessages(connectionId, threadId) {
618
+ return request(`/api/gmail/${connectionId}/threads/${threadId}/messages`);
619
+ },
620
+ /** Send an email via Gmail. */
621
+ sendGmailMessage(connectionId, body) {
622
+ return request(`/api/gmail/${connectionId}/send`, { method: 'POST', body: JSON.stringify(body) });
623
+ },
624
+ /** Fetch the authenticated user's resolved email signature. */
625
+ getGmailSignature(connectionId) {
626
+ return request(`/api/gmail/${connectionId}/signature`);
627
+ },
628
+ /** Save or clear an email draft for a Gmail thread. Empty body = clear. */
629
+ putGmailThreadDraft(connectionId, threadId, body) {
630
+ return request(`/api/gmail/${encodeURIComponent(connectionId)}/threads/${encodeURIComponent(threadId)}/draft`, { method: 'PUT', body: JSON.stringify({ body }) });
631
+ },
632
+ linkGmailThreadContact(connectionId, threadId, body) {
633
+ return request(`/api/gmail/${connectionId}/threads/${threadId}/link-contact`, { method: 'POST', body: JSON.stringify(body) });
634
+ },
635
+ searchGmailThreads(connectionId, params) {
636
+ const sp = new URLSearchParams();
637
+ sp.set('q', params.q);
638
+ if (params.limit)
639
+ sp.set('limit', String(params.limit));
640
+ if (params.cursor)
641
+ sp.set('cursor', params.cursor);
642
+ return request(`/api/gmail/${connectionId}/threads/search?${sp.toString()}`);
643
+ },
644
+ /** Trigger a manual Gmail sync for a connection. POST /api/gmail/[connectionId]/sync */
645
+ triggerGmailSync(connectionId) {
646
+ return request(`/api/gmail/${connectionId}/sync`, { method: 'POST' });
647
+ },
648
+ /** List members of a shared Gmail connection. */
649
+ getGmailConnectionMembers(connectionId) {
650
+ return request(`/api/gmail/connections/${connectionId}/members`);
651
+ },
652
+ /** Add a member to a shared Gmail connection. */
653
+ addGmailConnectionMember(connectionId, userId) {
654
+ return request(`/api/gmail/connections/${connectionId}/members`, { method: 'POST', body: JSON.stringify({ user_id: userId }) });
655
+ },
656
+ /** Remove a member from a shared Gmail connection. */
657
+ removeGmailConnectionMember(connectionId, userId) {
658
+ return request(`/api/gmail/connections/${connectionId}/members/${userId}`, { method: 'DELETE' });
659
+ },
660
+ // -----------------------------------------------------------------------
661
+ // Standalone Email Drafts
662
+ // -----------------------------------------------------------------------
663
+ /** Create a standalone email draft (new compose, no thread). */
664
+ createEmailDraft(connectionId, payload) {
665
+ return request(`/api/gmail/${encodeURIComponent(connectionId)}/drafts`, { method: 'POST', body: JSON.stringify(payload) });
666
+ },
667
+ /** Update a standalone email draft. */
668
+ updateEmailDraft(connectionId, draftId, payload) {
669
+ return request(`/api/gmail/${encodeURIComponent(connectionId)}/drafts/${encodeURIComponent(draftId)}`, { method: 'PUT', body: JSON.stringify(payload) });
670
+ },
671
+ /** List standalone email drafts for the current user on a connection. */
672
+ getEmailDrafts(connectionId) {
673
+ return request(`/api/gmail/${encodeURIComponent(connectionId)}/drafts`);
674
+ },
675
+ /** Delete a standalone email draft. */
676
+ deleteEmailDraft(connectionId, draftId) {
677
+ return request(`/api/gmail/${encodeURIComponent(connectionId)}/drafts/${encodeURIComponent(draftId)}`, { method: 'DELETE' });
678
+ },
438
679
  };
439
680
  }
package/dist/context.d.ts CHANGED
@@ -10,12 +10,19 @@ export declare const ApiProvider: import("react").Provider<{
10
10
  offset?: number;
11
11
  status?: "potential" | "qualified" | "disqualified";
12
12
  formId?: string;
13
+ formIds?: string[];
13
14
  ownerIds?: string[];
15
+ setterIds?: string[];
14
16
  pipelineIds?: string[];
15
17
  search?: string;
16
18
  sortBy?: "date" | "status" | "next_task";
17
19
  sortOrder?: "asc" | "desc";
18
20
  showArchivedOnly?: boolean;
21
+ allPipelines?: boolean;
22
+ taskType?: string;
23
+ dueDateFilter?: string;
24
+ dueDateTimezone?: string;
25
+ showCompletedOnly?: boolean;
19
26
  }): Promise<import("./types").LeadSubmissionsResponse>;
20
27
  getContactLeadSubmissions(contactId: string): Promise<import("./types").ContactLeadSubmissionsResponse>;
21
28
  getContactMeetings(contactId: string): Promise<{
@@ -25,6 +32,7 @@ export declare const ApiProvider: import("react").Provider<{
25
32
  getTasks(params?: {
26
33
  status?: string;
27
34
  related_card_id?: string;
35
+ contact_id?: string;
28
36
  limit?: number;
29
37
  offset?: number;
30
38
  sort_by?: string;
@@ -32,6 +40,9 @@ export declare const ApiProvider: import("react").Provider<{
32
40
  }): Promise<{
33
41
  tasks: import("./types").TaskListItem[];
34
42
  }>;
43
+ createTask(body: import("./types").CreateTaskInput): Promise<{
44
+ task: import("./types").TaskListItem;
45
+ }>;
35
46
  postTaskOutcome(taskId: string, body: {
36
47
  outcomeType: string;
37
48
  notes?: string;
@@ -53,12 +64,28 @@ export declare const ApiProvider: import("react").Provider<{
53
64
  getMeeting(meetingId: string): Promise<{
54
65
  meeting: import("./types").Meeting;
55
66
  }>;
56
- getCard(pipelineId: string, cardId: string): Promise<{
67
+ getPipelineCards(pipelineId: string, params?: {
68
+ showArchivedOnly?: boolean;
69
+ }, opts?: {
70
+ signal?: AbortSignal;
71
+ }): Promise<import("./types").PipelineCardsResponse>;
72
+ getCard(pipelineId: string, cardId: string, opts?: {
73
+ signal?: AbortSignal;
74
+ }): Promise<{
57
75
  card: import("./types").PipelineCard;
58
76
  }>;
59
77
  patchCard(pipelineId: string, cardId: string, body: Record<string, unknown>): Promise<{
60
78
  card: import("./types").PipelineCard;
61
79
  }>;
80
+ createCard(pipelineId: string, body: import("./types").CreateCardPayload): Promise<{
81
+ card: import("./types").PipelineCard;
82
+ message: string;
83
+ }>;
84
+ deleteCard(pipelineId: string, cardId: string, action?: "archive" | "delete"): Promise<{
85
+ success: boolean;
86
+ message: string;
87
+ card?: import("./types").PipelineCard;
88
+ }>;
62
89
  getPostMeetingBookedPrompt(cardId: string, pipelineId: string): Promise<import("./types").PostMeetingBookedPromptResponse & {
63
90
  scenario?: string | null;
64
91
  }>;
@@ -113,6 +140,25 @@ export declare const ApiProvider: import("react").Provider<{
113
140
  rescheduleUrl?: string;
114
141
  };
115
142
  }>;
143
+ postMeetingOutcome(meetingId: string, body: import("./types").MeetingOutcomePayload, method?: "POST" | "PUT"): Promise<{
144
+ status: "success";
145
+ outcome: import("./types").MeetingCallOutcome;
146
+ }>;
147
+ getMeetingAttachments(meetingId: string): Promise<{
148
+ success: true;
149
+ data: import("./types").MeetingAttachment[];
150
+ }>;
151
+ postMeetingAttachment(meetingId: string, body: {
152
+ attachment_type: "url";
153
+ file_name: string;
154
+ file_url: string;
155
+ }): Promise<{
156
+ success: true;
157
+ data: import("./types").MeetingAttachment;
158
+ }>;
159
+ deleteMeetingAttachment(meetingId: string, attachmentId: string): Promise<{
160
+ success: true;
161
+ }>;
116
162
  getPhoneNumbers(): Promise<import("./types").PhoneNumbersResponse>;
117
163
  getPhoneNumber(phoneNumberId: string): Promise<{
118
164
  phone_number: import("./types").PhoneNumberRecord;
@@ -121,13 +167,19 @@ export declare const ApiProvider: import("react").Provider<{
121
167
  phone_number: import("./types").PhoneNumberRecord;
122
168
  }>;
123
169
  deletePhoneNumber(phoneNumberId: string): Promise<void>;
124
- postVoiceToken(phoneNumberId: string): Promise<import("./types").VoiceTokenResponse>;
170
+ postVoiceToken(phoneNumberId: string, mode?: "incoming" | "outbound"): Promise<import("./types").VoiceTokenResponse>;
125
171
  uploadInboxMedia(phoneNumberId: string, formData: FormData): Promise<import("./types").UploadInboxMediaResponse>;
126
172
  getInboxThreads(phoneNumberId: string, params?: {
127
173
  status?: "active" | "archived";
128
174
  limit?: number;
129
175
  cursor?: string;
176
+ contact_id?: string;
177
+ unread_only?: boolean;
130
178
  }): Promise<import("./types").InboxThreadsResponse>;
179
+ searchInboxThreads(phoneNumberId: string, params: {
180
+ q: string;
181
+ limit?: number;
182
+ }): Promise<import("./types").InboxThreadSearchResponse>;
131
183
  getInboxCalls(phoneNumberId: string, params?: {
132
184
  limit?: number;
133
185
  cursor?: string;
@@ -136,6 +188,9 @@ export declare const ApiProvider: import("react").Provider<{
136
188
  getInboxThreadMessages(threadId: string): Promise<import("./types").InboxMessagesResponse>;
137
189
  createInboxCall(payload: import("./types").CreateInboxCallPayload): Promise<import("./types").InboxCallEvent>;
138
190
  getInboxCallRecordingUrl(callEventId: string): string;
191
+ getInboxBadgeCount(): Promise<import("./types").InboxBadgeCountResponse>;
192
+ getMissedUnseenCount(phoneNumberId: string): Promise<import("./types").MissedUnseenCountResponse>;
193
+ markCallsSeen(phoneNumberId: string): Promise<void>;
139
194
  sendInboxMessage(phoneNumberId: string, body: import("./types").SendInboxMessagePayload): Promise<import("./types").SendInboxMessageResponse>;
140
195
  markInboxThreadRead(threadId: string): Promise<{
141
196
  ok: true;
@@ -165,7 +220,7 @@ export declare const ApiProvider: import("react").Provider<{
165
220
  rating?: string;
166
221
  lang?: string;
167
222
  }): Promise<import("./types").InboxGifsResponse>;
168
- getMessageSnippets(): Promise<import("./types").MessageSnippetsResponse>;
223
+ getMessageSnippets(channel?: "sms" | "email"): Promise<import("./types").MessageSnippetsResponse>;
169
224
  createMessageSnippet(body: import("./types").CreateMessageSnippetPayload): Promise<{
170
225
  snippet: import("./types").MessageSnippet;
171
226
  }>;
@@ -175,6 +230,70 @@ export declare const ApiProvider: import("react").Provider<{
175
230
  deleteMessageSnippet(id: string): Promise<{
176
231
  ok: true;
177
232
  }>;
233
+ createCheckoutSession(body: {
234
+ action: string;
235
+ priceKey?: string;
236
+ quantity?: number;
237
+ }): Promise<{
238
+ url: string;
239
+ }>;
240
+ createPortalSession(): Promise<{
241
+ url: string;
242
+ }>;
243
+ getBillingStatus(): Promise<{
244
+ billing: import("./types").MeOrganizationBilling;
245
+ }>;
246
+ toggleAutoTopUp(enabled: boolean): Promise<{
247
+ autoTopUpEnabled: boolean;
248
+ }>;
249
+ updateSeats(action: "add" | "remove"): Promise<import("./types").SeatUpdateResponse>;
250
+ registerPushToken(body: import("./types").RegisterPushTokenPayload): Promise<import("./types").RegisterPushTokenResponse>;
251
+ unregisterPushToken(apnsToken: string, platform?: "ios"): Promise<import("./types").UnregisterPushTokenResponse>;
252
+ connectGmail(connectionType?: "personal" | "shared"): Promise<{
253
+ authUrl: string;
254
+ }>;
255
+ getGmailConnections(): Promise<import("./types").GmailConnectionsResponse>;
256
+ disconnectGmail(connectionId: string): Promise<{
257
+ success: boolean;
258
+ }>;
259
+ getGmailThreads(connectionId: string, params?: {
260
+ status?: string;
261
+ page?: number;
262
+ page_size?: number;
263
+ unread_only?: boolean;
264
+ }): Promise<import("./types").GmailThreadsPageResponse>;
265
+ getGmailThreadMessages(connectionId: string, threadId: string): Promise<import("./types").InboxMessagesResponse>;
266
+ sendGmailMessage(connectionId: string, body: import("./types").SendGmailMessagePayload): Promise<import("./types").SendGmailMessageResponse>;
267
+ getGmailSignature(connectionId: string): Promise<import("./types").GmailSignatureResponse>;
268
+ putGmailThreadDraft(connectionId: string, threadId: string, body: string): Promise<{
269
+ ok: true;
270
+ }>;
271
+ linkGmailThreadContact(connectionId: string, threadId: string, body: import("./types").LinkGmailThreadContactPayload): Promise<import("./types").LinkGmailThreadContactResponse>;
272
+ searchGmailThreads(connectionId: string, params: {
273
+ q: string;
274
+ limit?: number;
275
+ cursor?: string;
276
+ }): Promise<import("./types").GmailThreadSearchResponse>;
277
+ triggerGmailSync(connectionId: string): Promise<{
278
+ ok: boolean;
279
+ }>;
280
+ getGmailConnectionMembers(connectionId: string): Promise<{
281
+ members: import("./types").GmailConnectionMember[];
282
+ }>;
283
+ addGmailConnectionMember(connectionId: string, userId: string): Promise<{
284
+ member: import("./types").GmailConnectionMember;
285
+ }>;
286
+ removeGmailConnectionMember(connectionId: string, userId: string): Promise<{
287
+ success: boolean;
288
+ }>;
289
+ createEmailDraft(connectionId: string, payload: import("./types").CreateEmailDraftPayload): Promise<import("./types").CreateEmailDraftResponse>;
290
+ updateEmailDraft(connectionId: string, draftId: string, payload: import("./types").UpdateEmailDraftPayload): Promise<{
291
+ ok: true;
292
+ }>;
293
+ getEmailDrafts(connectionId: string): Promise<import("./types").EmailDraftsListResponse>;
294
+ deleteEmailDraft(connectionId: string, draftId: string): Promise<{
295
+ ok: true;
296
+ }>;
178
297
  } | null>;
179
298
  export declare function useApiClient(): ApiClient;
180
299
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIzC,eAAO,MAAM,WAAW;;WASgsF,CAAC;YAA6C,CAAC;aAAoB,CAAC;cAAqB,CAAC;cAAqB,CAAC;cAAyD,CAAC;gBAAuB,CAAC;mBAA4B,CAAC;cAAuB,CAAC;cAAqB,CAAC;iBAAiD,CAAC;wBAAuC,CAAC;;;;;;;;cAA4lE,CAAC;uBAA8B,CAAC;aAAoB,CAAC;cAAqB,CAAC;eAAsB,CAAC;kBAAyB,CAAC;;;;;;aAA8wB,CAAC;;;;;cAAub,CAAC;uBAA8B,CAAC;cAAqB,CAAC;kBAAyB,CAAC;gBAAuB,CAAC;;;;;;;;;;;;;;;;;gBAA67D,CAAC;;;sBAAke,CAAC;;;;;;;cAAm8B,CAAC;;;;;;;oBAAm5B,CAAC;;;;;;;;;;cAA2lD,CAAC;;;;;;;;;;YAA0+B,CAAC;;;;;;;mBAAirC,CAAC;kBAAoB,CAAC;;;aAAyD,CAAC;qBAAa,CAAC;yBAAuB,CAAC;;;;;;;;;;;;;;cAAg8F,CAAC;aAA8B,CAAC;cAAgB,CAAC;;;aAAyvB,CAAC;cAAgB,CAAC;mBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;aAA49G,CAAC;cAAqB,CAAC;cAAqB,CAAC;YAAmB,CAAC;;;aAA+nB,CAAC;cAAuB,CAAC;cAAuB,CAAC;YAAqB,CAAC;;;;;;;;;;;;SATnntB,CAAA;AAE9C,wBAAgB,YAAY,IAAI,SAAS,CAMxC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIzC,eAAO,MAAM,WAAW;;WAS8+H,CAAC;YAA6C,CAAC;aAAoB,CAAC;cAAqB,CAAC;cAAqB,CAAC;cAAyD,CAAC;eAA4G,CAAC;gBAAyB,CAAC;iBAA0B,CAAC;mBAA4B,CAAC;cAAuB,CAAC;cAAqB,CAAC;iBAAiD,CAAC;wBAAuC,CAAC;oBAA4B,CAAC;gBAAwB,CAAC;qBAA4B,CAAC;uBAAwH,CAAC;yBAAgC,CAAC;;;;;;;;cAA6oF,CAAC;uBAA8B,CAAC;kBAAyB,CAAC;aAAoB,CAAC;cAAqB,CAAC;eAAsB,CAAC;kBAAyB,CAAC;;;;;;;;;aAA2iC,CAAC;;;;;cAAub,CAAC;uBAA8B,CAAC;cAAqB,CAAC;kBAAyB,CAAC;gBAAuB,CAAC;;;;;;;;;;;wBAAmtC,CAAC;;cAAkC,CAAC;;;cAAmS,CAAC;;;;;;;;;;;;;;YAA+2B,CAAC;;;gBAAmiB,CAAC;;;sBAAke,CAAC;;;;;;;cAAm8B,CAAC;;;;;;;oBAAm5B,CAAC;;;;;;;;;;cAA2lD,CAAC;;;;;;;;;;YAA0+B,CAAC;;;;;;;mBAAirC,CAAC;kBAAoB,CAAC;;;aAAyD,CAAC;qBAAa,CAAC;yBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA4vJ,CAAC;aAA8B,CAAC;cAAgB,CAAC;kBAAoB,CAAC;mBAAqB,CAAC;;;;aAAkxB,CAAC;;;aAA0mB,CAAC;cAAgB,CAAC;mBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;aAA61I,CAAC;cAAqB,CAAC;cAAqB,CAAC;YAAmB,CAAC;;;aAA+nB,CAAC;cAAuB,CAAC;cAAuB,CAAC;YAAqB,CAAC;;;;;;;;;;;;;;gBAA0vE,CAAC;gBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;cAAgsG,CAAC;YAAc,CAAC;iBAAmB,CAAC;mBAAqB,CAAC;;;;;;;;;;;aAAisE,CAAC;cAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;SAT7rqC,CAAA;AAE9C,wBAAgB,YAAY,IAAI,SAAS,CAMxC"}
@@ -3,7 +3,7 @@ export type { GetLeadSubmissionsParams } from './use-leads';
3
3
  export { useContactLeadSubmissions } from './use-contact-lead-submissions';
4
4
  export { useContactMeetings } from './use-contact-meetings';
5
5
  export { useContactCalls } from './use-contact-calls';
6
- export { useTasks } from './use-tasks';
6
+ export { useTasks, useCreateTask } from './use-tasks';
7
7
  export type { GetTasksParams } from './use-tasks';
8
8
  export { useMeetings } from './use-meetings';
9
9
  export type { GetMeetingsParams } from './use-meetings';
@@ -28,5 +28,28 @@ export { useMarkInboxThreadRead } from './use-mark-inbox-thread-read';
28
28
  export { useMarkInboxThreadUnread } from './use-mark-inbox-thread-unread';
29
29
  export { useUpdateInboxThreadStatus } from './use-update-inbox-thread-status';
30
30
  export { useDeleteInboxThread } from './use-delete-inbox-thread';
31
+ export { useInboxBadgeCount } from './use-inbox-badge-count';
32
+ export { useMissedUnseenCount } from './use-missed-unseen-count';
31
33
  export { useMessageSnippets } from './use-message-snippets';
34
+ export { useCard } from './use-card';
35
+ export { useCards } from './use-cards';
36
+ export type { UseCardsParams } from './use-cards';
37
+ export { usePatchCard } from './use-patch-card';
38
+ export type { PatchCardVariables } from './use-patch-card';
39
+ export { useCreateCard } from './use-create-card';
40
+ export type { CreateCardVariables } from './use-create-card';
41
+ export { useDeleteCard } from './use-delete-card';
42
+ export type { DeleteCardVariables } from './use-delete-card';
43
+ export { useBillingStatus } from './use-billing-status';
44
+ export { useGmailConnections, useTriggerGmailSync } from './use-gmail-connections';
45
+ export { useGmailThreads } from './use-gmail-threads';
46
+ export { useGmailMessages } from './use-gmail-messages';
47
+ export { useSendGmailMessage } from './use-send-gmail-message';
48
+ export { useLinkGmailThreadContact } from './use-link-gmail-thread-contact';
49
+ export { useGmailThreadSearchInfinite } from './use-gmail-thread-search-infinite';
50
+ export { useInboxThreadSearch } from './use-inbox-thread-search';
51
+ export { useGmailConnectionMembers } from './use-gmail-connection-members';
52
+ export { useGmailSignature } from './use-gmail-signature';
53
+ export { useAddGmailConnectionMember, useRemoveGmailConnectionMember } from './use-manage-gmail-connection-members';
54
+ export { useEmailDrafts, useCreateEmailDraft, useUpdateEmailDraft, useDeleteEmailDraft } from './use-email-drafts';
32
55
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,YAAY,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,YAAY,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}