contiguity 0.0.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/LICENSE.md +8 -0
- package/README.md +1 -0
- package/dist/client/fetch.d.ts +30 -0
- package/dist/client/fetch.d.ts.map +1 -0
- package/dist/client/fetch.js +117 -0
- package/dist/contiguity.d.ts +81 -0
- package/dist/contiguity.d.ts.map +1 -0
- package/dist/contiguity.js +106 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12542 -0
- package/dist/services/domains/delete.d.ts +32 -0
- package/dist/services/domains/delete.d.ts.map +1 -0
- package/dist/services/domains/delete.js +43 -0
- package/dist/services/domains/get.d.ts +128 -0
- package/dist/services/domains/get.d.ts.map +1 -0
- package/dist/services/domains/get.js +95 -0
- package/dist/services/domains/index.d.ts +34 -0
- package/dist/services/domains/index.d.ts.map +1 -0
- package/dist/services/domains/index.js +37 -0
- package/dist/services/domains/list.d.ts +68 -0
- package/dist/services/domains/list.d.ts.map +1 -0
- package/dist/services/domains/list.js +52 -0
- package/dist/services/domains/register.d.ts +89 -0
- package/dist/services/domains/register.d.ts.map +1 -0
- package/dist/services/domains/register.js +73 -0
- package/dist/services/email/index.d.ts +17 -0
- package/dist/services/email/index.d.ts.map +1 -0
- package/dist/services/email/index.js +16 -0
- package/dist/services/email/send.d.ts +69 -0
- package/dist/services/email/send.d.ts.map +1 -0
- package/dist/services/email/send.js +84 -0
- package/dist/services/imessage/index.d.ts +24 -0
- package/dist/services/imessage/index.d.ts.map +1 -0
- package/dist/services/imessage/index.js +23 -0
- package/dist/services/imessage/send.d.ts +60 -0
- package/dist/services/imessage/send.d.ts.map +1 -0
- package/dist/services/imessage/send.js +66 -0
- package/dist/services/imessage/typing.d.ts +43 -0
- package/dist/services/imessage/typing.d.ts.map +1 -0
- package/dist/services/imessage/typing.js +55 -0
- package/dist/services/lease/available.d.ts +255 -0
- package/dist/services/lease/available.d.ts.map +1 -0
- package/dist/services/lease/available.js +109 -0
- package/dist/services/lease/create.d.ts +139 -0
- package/dist/services/lease/create.d.ts.map +1 -0
- package/dist/services/lease/create.js +84 -0
- package/dist/services/lease/details.d.ts +210 -0
- package/dist/services/lease/details.d.ts.map +1 -0
- package/dist/services/lease/details.js +71 -0
- package/dist/services/lease/get.d.ts +155 -0
- package/dist/services/lease/get.d.ts.map +1 -0
- package/dist/services/lease/get.js +74 -0
- package/dist/services/lease/index.d.ts +50 -0
- package/dist/services/lease/index.d.ts.map +1 -0
- package/dist/services/lease/index.js +51 -0
- package/dist/services/lease/leased.d.ts +308 -0
- package/dist/services/lease/leased.d.ts.map +1 -0
- package/dist/services/lease/leased.js +114 -0
- package/dist/services/lease/terminate.d.ts +81 -0
- package/dist/services/lease/terminate.d.ts.map +1 -0
- package/dist/services/lease/terminate.js +84 -0
- package/dist/services/otp/index.d.ts +28 -0
- package/dist/services/otp/index.d.ts.map +1 -0
- package/dist/services/otp/index.js +30 -0
- package/dist/services/otp/new.d.ts +29 -0
- package/dist/services/otp/new.d.ts.map +1 -0
- package/dist/services/otp/new.js +44 -0
- package/dist/services/otp/resend.d.ts +25 -0
- package/dist/services/otp/resend.d.ts.map +1 -0
- package/dist/services/otp/resend.js +37 -0
- package/dist/services/otp/verify.d.ts +27 -0
- package/dist/services/otp/verify.d.ts.map +1 -0
- package/dist/services/otp/verify.js +40 -0
- package/dist/services/text/index.d.ts +17 -0
- package/dist/services/text/index.d.ts.map +1 -0
- package/dist/services/text/index.js +16 -0
- package/dist/services/text/send.d.ts +28 -0
- package/dist/services/text/send.d.ts.map +1 -0
- package/dist/services/text/send.js +43 -0
- package/dist/services/whatsapp/index.d.ts +24 -0
- package/dist/services/whatsapp/index.d.ts.map +1 -0
- package/dist/services/whatsapp/index.js +23 -0
- package/dist/services/whatsapp/send.d.ts +60 -0
- package/dist/services/whatsapp/send.d.ts.map +1 -0
- package/dist/services/whatsapp/send.js +66 -0
- package/dist/services/whatsapp/typing.d.ts +43 -0
- package/dist/services/whatsapp/typing.d.ts.map +1 -0
- package/dist/services/whatsapp/typing.js +55 -0
- package/dist/types/base.d.ts +38 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +32 -0
- package/dist/types/common.d.ts +56 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +48 -0
- package/dist/types/error.d.ts +37 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +54 -0
- package/dist/types/metadata.d.ts +10 -0
- package/dist/types/metadata.d.ts.map +1 -0
- package/dist/types/metadata.js +1 -0
- package/dist/types/response.d.ts +17 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +17 -0
- package/dist/utils/parse.d.ts +8 -0
- package/dist/utils/parse.d.ts.map +1 -0
- package/dist/utils/parse.js +36 -0
- package/dist/utils/request.d.ts +6 -0
- package/dist/utils/request.d.ts.map +1 -0
- package/dist/utils/request.js +47 -0
- package/package.json +46 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const LeasedBillingPeriod: z.ZodObject<{
|
|
3
|
+
start: z.ZodNumber;
|
|
4
|
+
end: z.ZodNullable<z.ZodNumber>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export declare const LeasedBilling: z.ZodObject<{
|
|
7
|
+
method: z.ZodEnum<{
|
|
8
|
+
monthly: "monthly";
|
|
9
|
+
service_contract: "service_contract";
|
|
10
|
+
goodwill: "goodwill";
|
|
11
|
+
}>;
|
|
12
|
+
period: z.ZodObject<{
|
|
13
|
+
start: z.ZodNumber;
|
|
14
|
+
end: z.ZodNullable<z.ZodNumber>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export declare const LeasedNumber: z.ZodObject<{
|
|
18
|
+
id: z.ZodString;
|
|
19
|
+
status: z.ZodEnum<{
|
|
20
|
+
available: "available";
|
|
21
|
+
"g-available": "g-available";
|
|
22
|
+
leased: "leased";
|
|
23
|
+
unavailable: "unavailable";
|
|
24
|
+
}>;
|
|
25
|
+
number: z.ZodObject<{
|
|
26
|
+
e164: z.ZodString;
|
|
27
|
+
formatted: z.ZodString;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
location: z.ZodObject<{
|
|
30
|
+
country: z.ZodString;
|
|
31
|
+
region: z.ZodString;
|
|
32
|
+
city: z.ZodString;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
carrier: z.ZodEnum<{
|
|
35
|
+
"T-Mobile": "T-Mobile";
|
|
36
|
+
"AT&T": "AT&T";
|
|
37
|
+
Verizon: "Verizon";
|
|
38
|
+
Contiguity: "Contiguity";
|
|
39
|
+
"International Partner": "International Partner";
|
|
40
|
+
Twilio: "Twilio";
|
|
41
|
+
}>;
|
|
42
|
+
capabilities: z.ZodObject<{
|
|
43
|
+
intl_sms: z.ZodBoolean;
|
|
44
|
+
channels: z.ZodArray<z.ZodEnum<{
|
|
45
|
+
sms: "sms";
|
|
46
|
+
mms: "mms";
|
|
47
|
+
rcs: "rcs";
|
|
48
|
+
imessage: "imessage";
|
|
49
|
+
whatsapp: "whatsapp";
|
|
50
|
+
}>>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
health: z.ZodObject<{
|
|
53
|
+
reputation: z.ZodNumber;
|
|
54
|
+
previous_owners: z.ZodNumber;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
data: z.ZodObject<{
|
|
57
|
+
requirements: z.ZodArray<z.ZodEnum<{
|
|
58
|
+
imessage_entitlement_required: "imessage_entitlement_required";
|
|
59
|
+
whatsapp_entitlement_required: "whatsapp_entitlement_required";
|
|
60
|
+
enterprise_plan_required: "enterprise_plan_required";
|
|
61
|
+
}>>;
|
|
62
|
+
e911_capable: z.ZodBoolean;
|
|
63
|
+
}, z.core.$strip>;
|
|
64
|
+
created_at: z.ZodNumber;
|
|
65
|
+
pricing: z.ZodObject<{
|
|
66
|
+
currency: z.ZodEnum<{
|
|
67
|
+
USD: "USD";
|
|
68
|
+
EUR: "EUR";
|
|
69
|
+
GBP: "GBP";
|
|
70
|
+
CAD: "CAD";
|
|
71
|
+
AUD: "AUD";
|
|
72
|
+
}>;
|
|
73
|
+
upfront_fee: z.ZodNumber;
|
|
74
|
+
monthly_rate: z.ZodNumber;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
lease_id: z.ZodString;
|
|
77
|
+
lease_status: z.ZodEnum<{
|
|
78
|
+
active: "active";
|
|
79
|
+
expired: "expired";
|
|
80
|
+
terminated: "terminated";
|
|
81
|
+
}>;
|
|
82
|
+
billing: z.ZodObject<{
|
|
83
|
+
method: z.ZodEnum<{
|
|
84
|
+
monthly: "monthly";
|
|
85
|
+
service_contract: "service_contract";
|
|
86
|
+
goodwill: "goodwill";
|
|
87
|
+
}>;
|
|
88
|
+
period: z.ZodObject<{
|
|
89
|
+
start: z.ZodNumber;
|
|
90
|
+
end: z.ZodNullable<z.ZodNumber>;
|
|
91
|
+
}, z.core.$strip>;
|
|
92
|
+
}, z.core.$strip>;
|
|
93
|
+
}, z.core.$strip>;
|
|
94
|
+
export declare const LeaseLeasedResponse: z.ZodObject<{
|
|
95
|
+
leased: z.ZodNumber;
|
|
96
|
+
numbers: z.ZodArray<z.ZodObject<{
|
|
97
|
+
id: z.ZodString;
|
|
98
|
+
status: z.ZodEnum<{
|
|
99
|
+
available: "available";
|
|
100
|
+
"g-available": "g-available";
|
|
101
|
+
leased: "leased";
|
|
102
|
+
unavailable: "unavailable";
|
|
103
|
+
}>;
|
|
104
|
+
number: z.ZodObject<{
|
|
105
|
+
e164: z.ZodString;
|
|
106
|
+
formatted: z.ZodString;
|
|
107
|
+
}, z.core.$strip>;
|
|
108
|
+
location: z.ZodObject<{
|
|
109
|
+
country: z.ZodString;
|
|
110
|
+
region: z.ZodString;
|
|
111
|
+
city: z.ZodString;
|
|
112
|
+
}, z.core.$strip>;
|
|
113
|
+
carrier: z.ZodEnum<{
|
|
114
|
+
"T-Mobile": "T-Mobile";
|
|
115
|
+
"AT&T": "AT&T";
|
|
116
|
+
Verizon: "Verizon";
|
|
117
|
+
Contiguity: "Contiguity";
|
|
118
|
+
"International Partner": "International Partner";
|
|
119
|
+
Twilio: "Twilio";
|
|
120
|
+
}>;
|
|
121
|
+
capabilities: z.ZodObject<{
|
|
122
|
+
intl_sms: z.ZodBoolean;
|
|
123
|
+
channels: z.ZodArray<z.ZodEnum<{
|
|
124
|
+
sms: "sms";
|
|
125
|
+
mms: "mms";
|
|
126
|
+
rcs: "rcs";
|
|
127
|
+
imessage: "imessage";
|
|
128
|
+
whatsapp: "whatsapp";
|
|
129
|
+
}>>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
health: z.ZodObject<{
|
|
132
|
+
reputation: z.ZodNumber;
|
|
133
|
+
previous_owners: z.ZodNumber;
|
|
134
|
+
}, z.core.$strip>;
|
|
135
|
+
data: z.ZodObject<{
|
|
136
|
+
requirements: z.ZodArray<z.ZodEnum<{
|
|
137
|
+
imessage_entitlement_required: "imessage_entitlement_required";
|
|
138
|
+
whatsapp_entitlement_required: "whatsapp_entitlement_required";
|
|
139
|
+
enterprise_plan_required: "enterprise_plan_required";
|
|
140
|
+
}>>;
|
|
141
|
+
e911_capable: z.ZodBoolean;
|
|
142
|
+
}, z.core.$strip>;
|
|
143
|
+
created_at: z.ZodNumber;
|
|
144
|
+
pricing: z.ZodObject<{
|
|
145
|
+
currency: z.ZodEnum<{
|
|
146
|
+
USD: "USD";
|
|
147
|
+
EUR: "EUR";
|
|
148
|
+
GBP: "GBP";
|
|
149
|
+
CAD: "CAD";
|
|
150
|
+
AUD: "AUD";
|
|
151
|
+
}>;
|
|
152
|
+
upfront_fee: z.ZodNumber;
|
|
153
|
+
monthly_rate: z.ZodNumber;
|
|
154
|
+
}, z.core.$strip>;
|
|
155
|
+
lease_id: z.ZodString;
|
|
156
|
+
lease_status: z.ZodEnum<{
|
|
157
|
+
active: "active";
|
|
158
|
+
expired: "expired";
|
|
159
|
+
terminated: "terminated";
|
|
160
|
+
}>;
|
|
161
|
+
billing: z.ZodObject<{
|
|
162
|
+
method: z.ZodEnum<{
|
|
163
|
+
monthly: "monthly";
|
|
164
|
+
service_contract: "service_contract";
|
|
165
|
+
goodwill: "goodwill";
|
|
166
|
+
}>;
|
|
167
|
+
period: z.ZodObject<{
|
|
168
|
+
start: z.ZodNumber;
|
|
169
|
+
end: z.ZodNullable<z.ZodNumber>;
|
|
170
|
+
}, z.core.$strip>;
|
|
171
|
+
}, z.core.$strip>;
|
|
172
|
+
}, z.core.$strip>>;
|
|
173
|
+
}, z.core.$strip>;
|
|
174
|
+
export declare const LeaseLeasedResponseBuilder: import("@/types/base").BaseResponseBuilder<z.ZodObject<{
|
|
175
|
+
leased: z.ZodNumber;
|
|
176
|
+
numbers: z.ZodArray<z.ZodObject<{
|
|
177
|
+
id: z.ZodString;
|
|
178
|
+
status: z.ZodEnum<{
|
|
179
|
+
available: "available";
|
|
180
|
+
"g-available": "g-available";
|
|
181
|
+
leased: "leased";
|
|
182
|
+
unavailable: "unavailable";
|
|
183
|
+
}>;
|
|
184
|
+
number: z.ZodObject<{
|
|
185
|
+
e164: z.ZodString;
|
|
186
|
+
formatted: z.ZodString;
|
|
187
|
+
}, z.core.$strip>;
|
|
188
|
+
location: z.ZodObject<{
|
|
189
|
+
country: z.ZodString;
|
|
190
|
+
region: z.ZodString;
|
|
191
|
+
city: z.ZodString;
|
|
192
|
+
}, z.core.$strip>;
|
|
193
|
+
carrier: z.ZodEnum<{
|
|
194
|
+
"T-Mobile": "T-Mobile";
|
|
195
|
+
"AT&T": "AT&T";
|
|
196
|
+
Verizon: "Verizon";
|
|
197
|
+
Contiguity: "Contiguity";
|
|
198
|
+
"International Partner": "International Partner";
|
|
199
|
+
Twilio: "Twilio";
|
|
200
|
+
}>;
|
|
201
|
+
capabilities: z.ZodObject<{
|
|
202
|
+
intl_sms: z.ZodBoolean;
|
|
203
|
+
channels: z.ZodArray<z.ZodEnum<{
|
|
204
|
+
sms: "sms";
|
|
205
|
+
mms: "mms";
|
|
206
|
+
rcs: "rcs";
|
|
207
|
+
imessage: "imessage";
|
|
208
|
+
whatsapp: "whatsapp";
|
|
209
|
+
}>>;
|
|
210
|
+
}, z.core.$strip>;
|
|
211
|
+
health: z.ZodObject<{
|
|
212
|
+
reputation: z.ZodNumber;
|
|
213
|
+
previous_owners: z.ZodNumber;
|
|
214
|
+
}, z.core.$strip>;
|
|
215
|
+
data: z.ZodObject<{
|
|
216
|
+
requirements: z.ZodArray<z.ZodEnum<{
|
|
217
|
+
imessage_entitlement_required: "imessage_entitlement_required";
|
|
218
|
+
whatsapp_entitlement_required: "whatsapp_entitlement_required";
|
|
219
|
+
enterprise_plan_required: "enterprise_plan_required";
|
|
220
|
+
}>>;
|
|
221
|
+
e911_capable: z.ZodBoolean;
|
|
222
|
+
}, z.core.$strip>;
|
|
223
|
+
created_at: z.ZodNumber;
|
|
224
|
+
pricing: z.ZodObject<{
|
|
225
|
+
currency: z.ZodEnum<{
|
|
226
|
+
USD: "USD";
|
|
227
|
+
EUR: "EUR";
|
|
228
|
+
GBP: "GBP";
|
|
229
|
+
CAD: "CAD";
|
|
230
|
+
AUD: "AUD";
|
|
231
|
+
}>;
|
|
232
|
+
upfront_fee: z.ZodNumber;
|
|
233
|
+
monthly_rate: z.ZodNumber;
|
|
234
|
+
}, z.core.$strip>;
|
|
235
|
+
lease_id: z.ZodString;
|
|
236
|
+
lease_status: z.ZodEnum<{
|
|
237
|
+
active: "active";
|
|
238
|
+
expired: "expired";
|
|
239
|
+
terminated: "terminated";
|
|
240
|
+
}>;
|
|
241
|
+
billing: z.ZodObject<{
|
|
242
|
+
method: z.ZodEnum<{
|
|
243
|
+
monthly: "monthly";
|
|
244
|
+
service_contract: "service_contract";
|
|
245
|
+
goodwill: "goodwill";
|
|
246
|
+
}>;
|
|
247
|
+
period: z.ZodObject<{
|
|
248
|
+
start: z.ZodNumber;
|
|
249
|
+
end: z.ZodNullable<z.ZodNumber>;
|
|
250
|
+
}, z.core.$strip>;
|
|
251
|
+
}, z.core.$strip>;
|
|
252
|
+
}, z.core.$strip>>;
|
|
253
|
+
}, z.core.$strip>>;
|
|
254
|
+
export type LeaseLeasedResponseType = z.infer<typeof LeaseLeasedResponse>;
|
|
255
|
+
export type LeasedNumberType = z.infer<typeof LeasedNumber>;
|
|
256
|
+
/**
|
|
257
|
+
* Gets all phone numbers currently leased by the user
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* const response = await contiguity.lease.leased();
|
|
262
|
+
* console.log(`You have ${response.leased} leased numbers`);
|
|
263
|
+
*
|
|
264
|
+
* // List all active leases
|
|
265
|
+
* const activeLeases = response.numbers.filter(
|
|
266
|
+
* num => num.lease_status === 'active'
|
|
267
|
+
* );
|
|
268
|
+
* console.log(`Active leases: ${activeLeases.length}`);
|
|
269
|
+
* ```
|
|
270
|
+
*
|
|
271
|
+
* @example
|
|
272
|
+
* ```typescript
|
|
273
|
+
* // Find leases by capabilities
|
|
274
|
+
* const response = await contiguity.lease.leased();
|
|
275
|
+
*
|
|
276
|
+
* const imessageNumbers = response.numbers.filter(
|
|
277
|
+
* num => num.capabilities.channels.includes('imessage')
|
|
278
|
+
* );
|
|
279
|
+
*
|
|
280
|
+
* const whatsappNumbers = response.numbers.filter(
|
|
281
|
+
* num => num.capabilities.channels.includes('whatsapp')
|
|
282
|
+
* );
|
|
283
|
+
*
|
|
284
|
+
* console.log(`iMessage numbers: ${imessageNumbers.length}`);
|
|
285
|
+
* console.log(`WhatsApp numbers: ${whatsappNumbers.length}`);
|
|
286
|
+
* ```
|
|
287
|
+
*
|
|
288
|
+
* @example
|
|
289
|
+
* ```typescript
|
|
290
|
+
* // Check lease expiration dates
|
|
291
|
+
* const response = await contiguity.lease.leased();
|
|
292
|
+
*
|
|
293
|
+
* response.numbers.forEach(num => {
|
|
294
|
+
* console.log(`${num.number.formatted}:`);
|
|
295
|
+
* console.log(` Lease ID: ${num.lease_id}`);
|
|
296
|
+
* console.log(` Status: ${num.lease_status}`);
|
|
297
|
+
*
|
|
298
|
+
* if (num.billing.period.end) {
|
|
299
|
+
* const endDate = new Date(num.billing.period.end * 1000);
|
|
300
|
+
* console.log(` Expires: ${endDate.toLocaleDateString()}`);
|
|
301
|
+
* } else {
|
|
302
|
+
* console.log(` Billing: Month-to-month`);
|
|
303
|
+
* }
|
|
304
|
+
* });
|
|
305
|
+
* ```
|
|
306
|
+
*/
|
|
307
|
+
export declare function _leasedNumbers(this: any): Promise<any>;
|
|
308
|
+
//# sourceMappingURL=leased.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leased.d.ts","sourceRoot":"","sources":["../../../src/services/lease/leased.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,mBAAmB;;;iBAK9B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;iBAKxB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2BvB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK9B,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAsC,CAAC;AAE9E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAY5D"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createResponse } from "@/types/base";
|
|
3
|
+
import { NumberCapabilities, NumberHealth, NumberLocation, NumberFormat, NumberData, NumberPricing } from "@/services/lease/available";
|
|
4
|
+
export const LeasedBillingPeriod = z.object({
|
|
5
|
+
/** Lease start timestamp */
|
|
6
|
+
start: z.number(),
|
|
7
|
+
/** Lease end timestamp. Null if month-to-month with no set cancellation date */
|
|
8
|
+
end: z.number().nullable()
|
|
9
|
+
});
|
|
10
|
+
export const LeasedBilling = z.object({
|
|
11
|
+
/** Billing method */
|
|
12
|
+
method: z.enum(["monthly", "service_contract", "goodwill"]),
|
|
13
|
+
/** Lease billing period */
|
|
14
|
+
period: LeasedBillingPeriod
|
|
15
|
+
});
|
|
16
|
+
export const LeasedNumber = z.object({
|
|
17
|
+
/** Phone number in E.164 format */
|
|
18
|
+
id: z.string(),
|
|
19
|
+
/** Number status (leased) */
|
|
20
|
+
status: z.enum(["available", "g-available", "leased", "unavailable"]),
|
|
21
|
+
/** Number formats */
|
|
22
|
+
number: NumberFormat,
|
|
23
|
+
/** Geographic location */
|
|
24
|
+
location: NumberLocation,
|
|
25
|
+
/** Carrier name */
|
|
26
|
+
carrier: z.enum(["T-Mobile", "AT&T", "Verizon", "Twilio", "Contiguity", "International Partner"]),
|
|
27
|
+
/** Number capabilities */
|
|
28
|
+
capabilities: NumberCapabilities,
|
|
29
|
+
/** Number health metrics */
|
|
30
|
+
health: NumberHealth,
|
|
31
|
+
/** Additional data */
|
|
32
|
+
data: NumberData,
|
|
33
|
+
/** Creation timestamp */
|
|
34
|
+
created_at: z.number(),
|
|
35
|
+
/** Pricing information */
|
|
36
|
+
pricing: NumberPricing,
|
|
37
|
+
/** Lease ID */
|
|
38
|
+
lease_id: z.string(),
|
|
39
|
+
/** Lease status */
|
|
40
|
+
lease_status: z.enum(["active", "expired", "terminated"]),
|
|
41
|
+
/** Lease billing information */
|
|
42
|
+
billing: LeasedBilling
|
|
43
|
+
});
|
|
44
|
+
export const LeaseLeasedResponse = z.object({
|
|
45
|
+
/** Number of leased numbers */
|
|
46
|
+
leased: z.number(),
|
|
47
|
+
/** User's leased numbers */
|
|
48
|
+
numbers: z.array(LeasedNumber)
|
|
49
|
+
});
|
|
50
|
+
// Using the new base response builder
|
|
51
|
+
export const LeaseLeasedResponseBuilder = createResponse(LeaseLeasedResponse);
|
|
52
|
+
/**
|
|
53
|
+
* Gets all phone numbers currently leased by the user
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const response = await contiguity.lease.leased();
|
|
58
|
+
* console.log(`You have ${response.leased} leased numbers`);
|
|
59
|
+
*
|
|
60
|
+
* // List all active leases
|
|
61
|
+
* const activeLeases = response.numbers.filter(
|
|
62
|
+
* num => num.lease_status === 'active'
|
|
63
|
+
* );
|
|
64
|
+
* console.log(`Active leases: ${activeLeases.length}`);
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* // Find leases by capabilities
|
|
70
|
+
* const response = await contiguity.lease.leased();
|
|
71
|
+
*
|
|
72
|
+
* const imessageNumbers = response.numbers.filter(
|
|
73
|
+
* num => num.capabilities.channels.includes('imessage')
|
|
74
|
+
* );
|
|
75
|
+
*
|
|
76
|
+
* const whatsappNumbers = response.numbers.filter(
|
|
77
|
+
* num => num.capabilities.channels.includes('whatsapp')
|
|
78
|
+
* );
|
|
79
|
+
*
|
|
80
|
+
* console.log(`iMessage numbers: ${imessageNumbers.length}`);
|
|
81
|
+
* console.log(`WhatsApp numbers: ${whatsappNumbers.length}`);
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* // Check lease expiration dates
|
|
87
|
+
* const response = await contiguity.lease.leased();
|
|
88
|
+
*
|
|
89
|
+
* response.numbers.forEach(num => {
|
|
90
|
+
* console.log(`${num.number.formatted}:`);
|
|
91
|
+
* console.log(` Lease ID: ${num.lease_id}`);
|
|
92
|
+
* console.log(` Status: ${num.lease_status}`);
|
|
93
|
+
*
|
|
94
|
+
* if (num.billing.period.end) {
|
|
95
|
+
* const endDate = new Date(num.billing.period.end * 1000);
|
|
96
|
+
* console.log(` Expires: ${endDate.toLocaleDateString()}`);
|
|
97
|
+
* } else {
|
|
98
|
+
* console.log(` Billing: Month-to-month`);
|
|
99
|
+
* }
|
|
100
|
+
* });
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export async function _leasedNumbers() {
|
|
104
|
+
const response = await this.request("/numbers/leased", {
|
|
105
|
+
method: "GET",
|
|
106
|
+
});
|
|
107
|
+
return this.parse({
|
|
108
|
+
response,
|
|
109
|
+
schemas: {
|
|
110
|
+
sdk: LeaseLeasedResponse,
|
|
111
|
+
raw: LeaseLeasedResponseBuilder.raw
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const LeaseTerminateRequest: z.ZodObject<{
|
|
3
|
+
number: z.ZodString;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
export declare const LeaseTerminateResponse: z.ZodObject<{
|
|
6
|
+
lease_id: z.ZodString;
|
|
7
|
+
number_id: z.ZodString;
|
|
8
|
+
status: z.ZodEnum<{
|
|
9
|
+
active: "active";
|
|
10
|
+
expired: "expired";
|
|
11
|
+
terminated: "terminated";
|
|
12
|
+
}>;
|
|
13
|
+
terminated_at: z.ZodNumber;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export declare const LeaseTerminateResponseBuilder: import("@/types/base").BaseResponseBuilder<z.ZodObject<{
|
|
16
|
+
lease_id: z.ZodString;
|
|
17
|
+
number_id: z.ZodString;
|
|
18
|
+
status: z.ZodEnum<{
|
|
19
|
+
active: "active";
|
|
20
|
+
expired: "expired";
|
|
21
|
+
terminated: "terminated";
|
|
22
|
+
}>;
|
|
23
|
+
terminated_at: z.ZodNumber;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
export type LeaseTerminateParams = z.infer<typeof LeaseTerminateRequest>;
|
|
26
|
+
export type LeaseTerminateResponseType = z.infer<typeof LeaseTerminateResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Terminates your lease for a number
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const response = await contiguity.lease.terminate({
|
|
33
|
+
* number: "+1234567890"
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* console.log(`Lease ${response.lease_id} terminated`);
|
|
37
|
+
* console.log(`Number: ${response.number_id}`);
|
|
38
|
+
* console.log(`Status: ${response.status}`);
|
|
39
|
+
* console.log(`Terminated at: ${new Date(response.terminated_at * 1000)}`);
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* // Terminate lease with confirmation
|
|
45
|
+
* try {
|
|
46
|
+
* const response = await contiguity.lease.terminate({
|
|
47
|
+
* number: "+1234567890"
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* if (response.status === 'terminated') {
|
|
51
|
+
* console.log('✓ Lease successfully terminated');
|
|
52
|
+
* console.log(`Termination date: ${new Date(response.terminated_at * 1000).toLocaleDateString()}`);
|
|
53
|
+
* }
|
|
54
|
+
* } catch (error) {
|
|
55
|
+
* console.error('Failed to terminate lease:', error.message);
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* // Bulk terminate multiple leases
|
|
62
|
+
* const numbersToTerminate = ["+1234567890", "+0987654321"];
|
|
63
|
+
*
|
|
64
|
+
* const results = await Promise.allSettled(
|
|
65
|
+
* numbersToTerminate.map(number =>
|
|
66
|
+
* contiguity.lease.terminate({ number })
|
|
67
|
+
* )
|
|
68
|
+
* );
|
|
69
|
+
*
|
|
70
|
+
* results.forEach((result, index) => {
|
|
71
|
+
* const number = numbersToTerminate[index];
|
|
72
|
+
* if (result.status === 'fulfilled') {
|
|
73
|
+
* console.log(`✓ ${number}: Lease terminated`);
|
|
74
|
+
* } else {
|
|
75
|
+
* console.log(`✗ ${number}: Failed to terminate - ${result.reason.message}`);
|
|
76
|
+
* }
|
|
77
|
+
* });
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function _leaseTerminate(this: any, params: LeaseTerminateParams): Promise<any>;
|
|
81
|
+
//# sourceMappingURL=terminate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminate.d.ts","sourceRoot":"","sources":["../../../src/services/lease/terminate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,qBAAqB;;iBAGhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;iBASjC,CAAC;AAGH,eAAO,MAAM,6BAA6B;;;;;;;;;kBAAyC,CAAC;AAEpF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACzE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAa3F"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createResponse } from "@/types/base";
|
|
3
|
+
export const LeaseTerminateRequest = z.object({
|
|
4
|
+
/** Phone number in E.164 format to terminate lease for */
|
|
5
|
+
number: z.string().regex(/^\+[1-9]\d{1,14}$/, "Phone number must be in E.164 format"),
|
|
6
|
+
});
|
|
7
|
+
export const LeaseTerminateResponse = z.object({
|
|
8
|
+
/** Terminated lease ID */
|
|
9
|
+
lease_id: z.string(),
|
|
10
|
+
/** Number ID */
|
|
11
|
+
number_id: z.string(),
|
|
12
|
+
/** The lease's new status */
|
|
13
|
+
status: z.enum(["active", "expired", "terminated"]),
|
|
14
|
+
/** Termination timestamp */
|
|
15
|
+
terminated_at: z.number()
|
|
16
|
+
});
|
|
17
|
+
// Using the new base response builder
|
|
18
|
+
export const LeaseTerminateResponseBuilder = createResponse(LeaseTerminateResponse);
|
|
19
|
+
/**
|
|
20
|
+
* Terminates your lease for a number
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const response = await contiguity.lease.terminate({
|
|
25
|
+
* number: "+1234567890"
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* console.log(`Lease ${response.lease_id} terminated`);
|
|
29
|
+
* console.log(`Number: ${response.number_id}`);
|
|
30
|
+
* console.log(`Status: ${response.status}`);
|
|
31
|
+
* console.log(`Terminated at: ${new Date(response.terminated_at * 1000)}`);
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Terminate lease with confirmation
|
|
37
|
+
* try {
|
|
38
|
+
* const response = await contiguity.lease.terminate({
|
|
39
|
+
* number: "+1234567890"
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* if (response.status === 'terminated') {
|
|
43
|
+
* console.log('✓ Lease successfully terminated');
|
|
44
|
+
* console.log(`Termination date: ${new Date(response.terminated_at * 1000).toLocaleDateString()}`);
|
|
45
|
+
* }
|
|
46
|
+
* } catch (error) {
|
|
47
|
+
* console.error('Failed to terminate lease:', error.message);
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Bulk terminate multiple leases
|
|
54
|
+
* const numbersToTerminate = ["+1234567890", "+0987654321"];
|
|
55
|
+
*
|
|
56
|
+
* const results = await Promise.allSettled(
|
|
57
|
+
* numbersToTerminate.map(number =>
|
|
58
|
+
* contiguity.lease.terminate({ number })
|
|
59
|
+
* )
|
|
60
|
+
* );
|
|
61
|
+
*
|
|
62
|
+
* results.forEach((result, index) => {
|
|
63
|
+
* const number = numbersToTerminate[index];
|
|
64
|
+
* if (result.status === 'fulfilled') {
|
|
65
|
+
* console.log(`✓ ${number}: Lease terminated`);
|
|
66
|
+
* } else {
|
|
67
|
+
* console.log(`✗ ${number}: Failed to terminate - ${result.reason.message}`);
|
|
68
|
+
* }
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export async function _leaseTerminate(params) {
|
|
73
|
+
const validatedParams = LeaseTerminateRequest.parse(params);
|
|
74
|
+
const response = await this.request(`/numbers/leased/${encodeURIComponent(validatedParams.number)}`, {
|
|
75
|
+
method: "DELETE",
|
|
76
|
+
});
|
|
77
|
+
return this.parse({
|
|
78
|
+
response,
|
|
79
|
+
schemas: {
|
|
80
|
+
sdk: LeaseTerminateResponse,
|
|
81
|
+
raw: LeaseTerminateResponseBuilder.raw
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ContiguityClient } from "@/client/fetch";
|
|
3
|
+
import type { WithMetadata } from "@/types/metadata";
|
|
4
|
+
import { type OTPNewParams, OTPNewResponse } from "./new";
|
|
5
|
+
import { type OTPVerifyParams, OTPVerifyResponse } from "./verify";
|
|
6
|
+
import { type OTPResendParams, OTPResendResponse } from "./resend";
|
|
7
|
+
export type OTPNewResponseType = z.infer<typeof OTPNewResponse>;
|
|
8
|
+
export type OTPVerifyResponseType = z.infer<typeof OTPVerifyResponse>;
|
|
9
|
+
export type OTPResendResponseType = z.infer<typeof OTPResendResponse>;
|
|
10
|
+
/**
|
|
11
|
+
* OTP service for sending, verifying, and resending one-time passwords
|
|
12
|
+
*/
|
|
13
|
+
export declare class OTPService extends ContiguityClient {
|
|
14
|
+
constructor(token: string);
|
|
15
|
+
/**
|
|
16
|
+
* Send a new OTP to the specified phone number
|
|
17
|
+
*/
|
|
18
|
+
new(params: OTPNewParams): Promise<WithMetadata<OTPNewResponseType>>;
|
|
19
|
+
/**
|
|
20
|
+
* Verify an OTP code
|
|
21
|
+
*/
|
|
22
|
+
verify(params: OTPVerifyParams): Promise<WithMetadata<OTPVerifyResponseType>>;
|
|
23
|
+
/**
|
|
24
|
+
* Resend an OTP to the same phone number
|
|
25
|
+
*/
|
|
26
|
+
resend(params: OTPResendParams): Promise<WithMetadata<OTPResendResponseType>>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/otp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAW,KAAK,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAc,KAAK,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAc,KAAK,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEtE;;GAEG;AACH,qBAAa,UAAW,SAAQ,gBAAgB;gBAChC,KAAK,EAAE,MAAM;IAIzB;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAI1E;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAInF;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;CAGtF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ContiguityClient } from "@/client/fetch";
|
|
2
|
+
import { _otpNew } from "./new";
|
|
3
|
+
import { _otpVerify } from "./verify";
|
|
4
|
+
import { _otpResend } from "./resend";
|
|
5
|
+
/**
|
|
6
|
+
* OTP service for sending, verifying, and resending one-time passwords
|
|
7
|
+
*/
|
|
8
|
+
export class OTPService extends ContiguityClient {
|
|
9
|
+
constructor(token) {
|
|
10
|
+
super(token);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Send a new OTP to the specified phone number
|
|
14
|
+
*/
|
|
15
|
+
async new(params) {
|
|
16
|
+
return _otpNew.call(this, params);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Verify an OTP code
|
|
20
|
+
*/
|
|
21
|
+
async verify(params) {
|
|
22
|
+
return _otpVerify.call(this, params);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resend an OTP to the same phone number
|
|
26
|
+
*/
|
|
27
|
+
async resend(params) {
|
|
28
|
+
return _otpResend.call(this, params);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const OTPNewRequest: z.ZodObject<{
|
|
3
|
+
to: z.ZodString;
|
|
4
|
+
language: z.ZodString;
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export declare const OTPNewResponse: z.ZodObject<{
|
|
8
|
+
otp_id: z.ZodString;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export declare const OTPNewResponseBuilder: import("@/types/base").BaseResponseBuilder<z.ZodObject<{
|
|
11
|
+
otp_id: z.ZodString;
|
|
12
|
+
}, z.core.$strip>>;
|
|
13
|
+
export type OTPNewParams = z.infer<typeof OTPNewRequest>;
|
|
14
|
+
export type OTPNewResponse = z.infer<typeof OTPNewResponse>;
|
|
15
|
+
/**
|
|
16
|
+
* Sends a new OTP to the specified phone number
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const response = await contiguity.otp.new({
|
|
21
|
+
* to: "+1234567890",
|
|
22
|
+
* language: "en",
|
|
23
|
+
* name: "My App"
|
|
24
|
+
* });
|
|
25
|
+
* console.log(`OTP ID: ${response.otp_id}`);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function _otpNew(this: any, params: OTPNewParams): Promise<any>;
|
|
29
|
+
//# sourceMappingURL=new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/services/otp/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;iBAOxB,CAAA;AAEF,eAAO,MAAM,cAAc;;iBAGzB,CAAA;AAGF,eAAO,MAAM,qBAAqB;;kBAAiC,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAc3E"}
|