@voltade/envoy-sdk 1.3.0 → 1.3.2

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 (51) hide show
  1. package/README.md +536 -64
  2. package/dist/client.d.ts +5 -1
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +2 -1
  5. package/dist/client.js.map +1 -1
  6. package/dist/resources/base-resource.d.ts +9 -0
  7. package/dist/resources/base-resource.d.ts.map +1 -0
  8. package/dist/resources/base-resource.js +9 -0
  9. package/dist/resources/base-resource.js.map +1 -0
  10. package/dist/resources/campaigns/index.d.ts +123 -0
  11. package/dist/resources/campaigns/index.d.ts.map +1 -0
  12. package/dist/resources/campaigns/index.js +159 -0
  13. package/dist/resources/campaigns/index.js.map +1 -0
  14. package/dist/resources/campaigns/types.d.ts +757 -0
  15. package/dist/resources/campaigns/types.d.ts.map +1 -0
  16. package/dist/resources/campaigns/types.js +132 -0
  17. package/dist/resources/campaigns/types.js.map +1 -0
  18. package/dist/resources/companies/index.d.ts +1 -7
  19. package/dist/resources/companies/index.d.ts.map +1 -1
  20. package/dist/resources/companies/index.js +1 -8
  21. package/dist/resources/companies/index.js.map +1 -1
  22. package/dist/resources/companies/types.d.ts +14 -14
  23. package/dist/resources/company-members/index.d.ts +1 -8
  24. package/dist/resources/company-members/index.d.ts.map +1 -1
  25. package/dist/resources/company-members/index.js +1 -8
  26. package/dist/resources/company-members/index.js.map +1 -1
  27. package/dist/resources/contacts/index.d.ts +1 -8
  28. package/dist/resources/contacts/index.d.ts.map +1 -1
  29. package/dist/resources/contacts/index.js +1 -8
  30. package/dist/resources/contacts/index.js.map +1 -1
  31. package/dist/resources/conversations/index.d.ts +1 -8
  32. package/dist/resources/conversations/index.d.ts.map +1 -1
  33. package/dist/resources/conversations/index.js +1 -8
  34. package/dist/resources/conversations/index.js.map +1 -1
  35. package/dist/resources/conversations/types.d.ts +67 -67
  36. package/dist/resources/inboxes/index.d.ts +1 -8
  37. package/dist/resources/inboxes/index.d.ts.map +1 -1
  38. package/dist/resources/inboxes/index.js +1 -8
  39. package/dist/resources/inboxes/index.js.map +1 -1
  40. package/dist/resources/inboxes/types.d.ts +12 -12
  41. package/dist/resources/index.d.ts +1 -0
  42. package/dist/resources/index.d.ts.map +1 -1
  43. package/dist/resources/index.js +1 -0
  44. package/dist/resources/index.js.map +1 -1
  45. package/dist/resources/orders/index.d.ts +1 -8
  46. package/dist/resources/orders/index.d.ts.map +1 -1
  47. package/dist/resources/orders/index.js +1 -8
  48. package/dist/resources/orders/index.js.map +1 -1
  49. package/dist/resources/orders/types.d.ts +116 -116
  50. package/dist/resources/webhooks/types.d.ts +753 -753
  51. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { HttpClient } from "./http-client.js";
2
- import { Companies, Contacts, Conversations, Inboxes, Orders, } from "./resources/index.js";
2
+ import { Campaigns, Companies, Contacts, Conversations, Inboxes, Orders, } from "./resources/index.js";
3
3
  /**
4
4
  * Envoy API Client
5
5
  * A comprehensive SDK for interacting with the Envoy API
@@ -35,6 +35,7 @@ export class EnvoyClient {
35
35
  };
36
36
  this.httpClient = new HttpClient(httpConfig);
37
37
  // Initialize resources
38
+ this.campaigns = new Campaigns(this.httpClient);
38
39
  this.companies = new Companies(this.httpClient);
39
40
  this.contacts = new Contacts(this.httpClient);
40
41
  this.conversations = new Conversations(this.httpClient);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,MAAM,GACP,MAAM,sBAAsB,CAAC;AAY9B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,WAAW;IA4BtB,YAAY,MAAyB;QACnC,MAAM,UAAU,GAAqB;YACnC,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7C,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,MAAM,GACP,MAAM,sBAAsB,CAAC;AAY9B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,WAAW;IAiCtB,YAAY,MAAyB;QACnC,MAAM,UAAU,GAAqB;YACnC,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAE7C,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Base resource class that all resource classes extend from
3
+ */
4
+ import type { HttpClient } from "../http-client.js";
5
+ export declare abstract class BaseResource {
6
+ protected readonly client: HttpClient;
7
+ constructor(client: HttpClient);
8
+ }
9
+ //# sourceMappingURL=base-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../resources/base-resource.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,8BAAsB,YAAY;IACpB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU;gBAAlB,MAAM,EAAE,UAAU;CAClD"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Base resource class that all resource classes extend from
3
+ */
4
+ export class BaseResource {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ }
9
+ //# sourceMappingURL=base-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-resource.js","sourceRoot":"","sources":["../../resources/base-resource.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAgB,YAAY;IAChC,YAA+B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;CACtD"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Campaigns resource module
3
+ * Provides functionality for managing campaigns in Envoy
4
+ */
5
+ import { BaseResource } from "../base-resource.js";
6
+ import type { CampaignResponse, CreateCampaignPayload, CreateWhatsAppCampaignParams } from "./types.js";
7
+ /**
8
+ * Campaigns resource class for managing campaign-related operations
9
+ */
10
+ export declare class Campaigns extends BaseResource {
11
+ /**
12
+ * Create a campaign
13
+ * @param payload - Campaign creation parameters
14
+ * @returns The created campaign
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const campaign = await client.campaigns.create({
19
+ * title: "Welcome Campaign",
20
+ * message: "Welcome to our service!",
21
+ * inbox_id: 12,
22
+ * campaign_status: "active"
23
+ * });
24
+ * ```
25
+ *
26
+ * @example With audience
27
+ * ```typescript
28
+ * const campaign = await client.campaigns.create({
29
+ * title: "Promo Campaign",
30
+ * message: "Check out our new offers!",
31
+ * inbox_id: 12,
32
+ * campaign_status: "active",
33
+ * audience: [
34
+ * { type: "Contact", id: 123, name: "John Doe" },
35
+ * { type: "PhoneNumber", id: "+6591234567", name: "Jane Doe" }
36
+ * ]
37
+ * });
38
+ * ```
39
+ *
40
+ * @example Scheduled campaign
41
+ * ```typescript
42
+ * const campaign = await client.campaigns.create({
43
+ * title: "Scheduled Campaign",
44
+ * message: "This is a scheduled message",
45
+ * inbox_id: 12,
46
+ * campaign_status: "scheduled",
47
+ * scheduled_at: Math.floor(Date.now() / 1000) + 3600 // 1 hour from now
48
+ * });
49
+ * ```
50
+ *
51
+ * @example WhatsApp template campaign
52
+ * ```typescript
53
+ * const campaign = await client.campaigns.create({
54
+ * title: "Balance Reminder",
55
+ * message: "Sending WhatsApp template: 1_bal_reminder_2025",
56
+ * inbox_id: 12,
57
+ * campaign_status: "active",
58
+ * audience: [
59
+ * {
60
+ * type: "PhoneNumber",
61
+ * id: "+6591234567",
62
+ * name: "John Doe",
63
+ * processed_params: { customers_name: "John", balance: "3" }
64
+ * }
65
+ * ],
66
+ * trigger_rules: {
67
+ * template_params: {
68
+ * category: "MARKETING",
69
+ * language: "en",
70
+ * name: "1_bal_reminder_2025",
71
+ * processed_params: { customers_name: "Customer", balance: "0" },
72
+ * media_id: null
73
+ * }
74
+ * }
75
+ * });
76
+ * ```
77
+ */
78
+ create(payload: CreateCampaignPayload): Promise<CampaignResponse>;
79
+ /**
80
+ * Create a WhatsApp template campaign with a simplified helper
81
+ * @param params - WhatsApp campaign parameters
82
+ * @returns The created campaign
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const campaign = await client.campaigns.createWhatsAppCampaign({
87
+ * title: "Lesson Balance Reminder",
88
+ * inboxId: 12,
89
+ * whatsappTemplate: {
90
+ * name: "1_bal_reminder_2025",
91
+ * category: "MARKETING",
92
+ * language: "en",
93
+ * defaultParams: {
94
+ * customers_name: "Customer",
95
+ * child_name: "Student"
96
+ * }
97
+ * },
98
+ * recipients: [
99
+ * {
100
+ * phoneNumber: "+6591234567",
101
+ * name: "John Doe",
102
+ * params: {
103
+ * customers_name: "John",
104
+ * child_name: "Alice"
105
+ * }
106
+ * },
107
+ * {
108
+ * phoneNumber: "+6598765432",
109
+ * name: "Jane Doe",
110
+ * params: {
111
+ * customers_name: "Jane",
112
+ * child_name: "Bob"
113
+ * }
114
+ * }
115
+ * ]
116
+ * });
117
+ * ```
118
+ */
119
+ createWhatsAppCampaign(params: CreateWhatsAppCampaignParams): Promise<CampaignResponse>;
120
+ }
121
+ export type { AudienceEntry, AudienceType, CampaignInbox, CampaignResponse, CampaignSender, CampaignStatus, CreateCampaignError, CreateCampaignPayload, CreateWhatsAppCampaignParams, Recipient, SendTimingStrategy, TemplateCategory, TriggerRules, WhatsAppTemplateConfig, WhatsAppTemplateParams, } from "./types.js";
122
+ export { AudienceEntrySchema, AudienceTypeSchema, CampaignInboxSchema, CampaignResponseSchema, CampaignSenderSchema, CampaignStatusSchema, CreateCampaignErrorSchema, CreateCampaignPayloadSchema, CreateWhatsAppCampaignParamsSchema, RecipientSchema, SendTimingStrategySchema, TemplateCategorySchema, TriggerRulesSchema, WhatsAppTemplateConfigSchema, WhatsAppTemplateParamsSchema, } from "./types.js";
123
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../resources/campaigns/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAEV,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACG,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACG,sBAAsB,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,gBAAgB,CAAC;CAuC7B;AAGD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Campaigns resource module
3
+ * Provides functionality for managing campaigns in Envoy
4
+ */
5
+ import { BaseResource } from "../base-resource.js";
6
+ /**
7
+ * Campaigns resource class for managing campaign-related operations
8
+ */
9
+ export class Campaigns extends BaseResource {
10
+ /**
11
+ * Create a campaign
12
+ * @param payload - Campaign creation parameters
13
+ * @returns The created campaign
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const campaign = await client.campaigns.create({
18
+ * title: "Welcome Campaign",
19
+ * message: "Welcome to our service!",
20
+ * inbox_id: 12,
21
+ * campaign_status: "active"
22
+ * });
23
+ * ```
24
+ *
25
+ * @example With audience
26
+ * ```typescript
27
+ * const campaign = await client.campaigns.create({
28
+ * title: "Promo Campaign",
29
+ * message: "Check out our new offers!",
30
+ * inbox_id: 12,
31
+ * campaign_status: "active",
32
+ * audience: [
33
+ * { type: "Contact", id: 123, name: "John Doe" },
34
+ * { type: "PhoneNumber", id: "+6591234567", name: "Jane Doe" }
35
+ * ]
36
+ * });
37
+ * ```
38
+ *
39
+ * @example Scheduled campaign
40
+ * ```typescript
41
+ * const campaign = await client.campaigns.create({
42
+ * title: "Scheduled Campaign",
43
+ * message: "This is a scheduled message",
44
+ * inbox_id: 12,
45
+ * campaign_status: "scheduled",
46
+ * scheduled_at: Math.floor(Date.now() / 1000) + 3600 // 1 hour from now
47
+ * });
48
+ * ```
49
+ *
50
+ * @example WhatsApp template campaign
51
+ * ```typescript
52
+ * const campaign = await client.campaigns.create({
53
+ * title: "Balance Reminder",
54
+ * message: "Sending WhatsApp template: 1_bal_reminder_2025",
55
+ * inbox_id: 12,
56
+ * campaign_status: "active",
57
+ * audience: [
58
+ * {
59
+ * type: "PhoneNumber",
60
+ * id: "+6591234567",
61
+ * name: "John Doe",
62
+ * processed_params: { customers_name: "John", balance: "3" }
63
+ * }
64
+ * ],
65
+ * trigger_rules: {
66
+ * template_params: {
67
+ * category: "MARKETING",
68
+ * language: "en",
69
+ * name: "1_bal_reminder_2025",
70
+ * processed_params: { customers_name: "Customer", balance: "0" },
71
+ * media_id: null
72
+ * }
73
+ * }
74
+ * });
75
+ * ```
76
+ */
77
+ async create(payload) {
78
+ // Validate required fields
79
+ if (!payload.title || !payload.message || !payload.inbox_id) {
80
+ throw new Error("Missing required fields: title, message, and inbox_id are required");
81
+ }
82
+ // Validate campaign_status and scheduled_at
83
+ if (payload.campaign_status === "scheduled" && !payload.scheduled_at) {
84
+ throw new Error('scheduled_at is required when campaign_status is "scheduled"');
85
+ }
86
+ return await this.client.post("/campaigns", payload);
87
+ }
88
+ /**
89
+ * Create a WhatsApp template campaign with a simplified helper
90
+ * @param params - WhatsApp campaign parameters
91
+ * @returns The created campaign
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const campaign = await client.campaigns.createWhatsAppCampaign({
96
+ * title: "Lesson Balance Reminder",
97
+ * inboxId: 12,
98
+ * whatsappTemplate: {
99
+ * name: "1_bal_reminder_2025",
100
+ * category: "MARKETING",
101
+ * language: "en",
102
+ * defaultParams: {
103
+ * customers_name: "Customer",
104
+ * child_name: "Student"
105
+ * }
106
+ * },
107
+ * recipients: [
108
+ * {
109
+ * phoneNumber: "+6591234567",
110
+ * name: "John Doe",
111
+ * params: {
112
+ * customers_name: "John",
113
+ * child_name: "Alice"
114
+ * }
115
+ * },
116
+ * {
117
+ * phoneNumber: "+6598765432",
118
+ * name: "Jane Doe",
119
+ * params: {
120
+ * customers_name: "Jane",
121
+ * child_name: "Bob"
122
+ * }
123
+ * }
124
+ * ]
125
+ * });
126
+ * ```
127
+ */
128
+ async createWhatsAppCampaign(params) {
129
+ const { title, inboxId, whatsappTemplate, recipients, scheduledAt, campaignStatus = "active", description, } = params;
130
+ const audience = recipients.map((recipient) => ({
131
+ type: "PhoneNumber",
132
+ name: recipient.name,
133
+ id: recipient.phoneNumber,
134
+ processed_params: recipient.params,
135
+ }));
136
+ const payload = {
137
+ title,
138
+ message: `Sending WhatsApp template: ${whatsappTemplate.name}`,
139
+ inbox_id: inboxId,
140
+ campaign_status: campaignStatus,
141
+ scheduled_at: scheduledAt,
142
+ description,
143
+ audience,
144
+ trigger_rules: {
145
+ template_params: {
146
+ category: whatsappTemplate.category ?? "MARKETING",
147
+ language: whatsappTemplate.language ?? "en",
148
+ name: whatsappTemplate.name,
149
+ processed_params: whatsappTemplate.defaultParams,
150
+ media_id: whatsappTemplate.mediaId ?? null,
151
+ },
152
+ },
153
+ };
154
+ return this.create(payload);
155
+ }
156
+ }
157
+ // Re-export Zod schemas
158
+ export { AudienceEntrySchema, AudienceTypeSchema, CampaignInboxSchema, CampaignResponseSchema, CampaignSenderSchema, CampaignStatusSchema, CreateCampaignErrorSchema, CreateCampaignPayloadSchema, CreateWhatsAppCampaignParamsSchema, RecipientSchema, SendTimingStrategySchema, TemplateCategorySchema, TriggerRulesSchema, WhatsAppTemplateConfigSchema, WhatsAppTemplateParamsSchema, } from "./types.js";
159
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../resources/campaigns/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACH,KAAK,CAAC,MAAM,CAAC,OAA8B;QACzC,2BAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,CAAC,eAAe,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmB,YAAY,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,KAAK,CAAC,sBAAsB,CAC1B,MAAoC;QAEpC,MAAM,EACJ,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,cAAc,GAAG,QAAQ,EACzB,WAAW,GACZ,GAAG,MAAM,CAAC;QAEX,MAAM,QAAQ,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,EAAE,aAAsB;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,EAAE,EAAE,SAAS,CAAC,WAAW;YACzB,gBAAgB,EAAE,SAAS,CAAC,MAAM;SACnC,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAA0B;YACrC,KAAK;YACL,OAAO,EAAE,8BAA8B,gBAAgB,CAAC,IAAI,EAAE;YAC9D,QAAQ,EAAE,OAAO;YACjB,eAAe,EAAE,cAAc;YAC/B,YAAY,EAAE,WAAW;YACzB,WAAW;YACX,QAAQ;YACR,aAAa,EAAE;gBACb,eAAe,EAAE;oBACf,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,WAAW;oBAClD,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,IAAI;oBAC3C,IAAI,EAAE,gBAAgB,CAAC,IAAI;oBAC3B,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;oBAChD,QAAQ,EAAE,gBAAgB,CAAC,OAAO,IAAI,IAAI;iBAC3C;aACF;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF;AAqBD,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC"}