resend 6.4.2 → 6.5.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.
@@ -0,0 +1,1453 @@
1
+ import * as React$1 from "react";
2
+
3
+ //#region src/api-keys/interfaces/api-key.d.ts
4
+ interface ApiKey {
5
+ created_at: string;
6
+ id: string;
7
+ name: string;
8
+ }
9
+ //#endregion
10
+ //#region src/domains/interfaces/domain.d.ts
11
+ type DomainRegion = 'us-east-1' | 'eu-west-1' | 'sa-east-1' | 'ap-northeast-1';
12
+ type DomainCapabilityStatus = 'enabled' | 'disabled';
13
+ interface DomainCapabilities {
14
+ sending: DomainCapabilityStatus;
15
+ receiving: DomainCapabilityStatus;
16
+ }
17
+ type DomainNameservers = 'Amazon Route 53' | 'Cloudflare' | 'Digital Ocean' | 'GoDaddy' | 'Google Domains' | 'Namecheap' | 'Unidentified' | 'Vercel';
18
+ type DomainStatus = 'pending' | 'verified' | 'failed' | 'temporary_failure' | 'not_started';
19
+ type DomainRecords = DomainSpfRecord | DomainDkimRecord | ReceivingRecord;
20
+ interface DomainSpfRecord {
21
+ record: 'SPF';
22
+ name: string;
23
+ value: string;
24
+ type: 'MX' | 'TXT';
25
+ ttl: string;
26
+ status: DomainStatus;
27
+ routing_policy?: string;
28
+ priority?: number;
29
+ proxy_status?: 'enable' | 'disable';
30
+ }
31
+ interface DomainDkimRecord {
32
+ record: 'DKIM';
33
+ name: string;
34
+ value: string;
35
+ type: 'CNAME' | 'TXT';
36
+ ttl: string;
37
+ status: DomainStatus;
38
+ routing_policy?: string;
39
+ priority?: number;
40
+ proxy_status?: 'enable' | 'disable';
41
+ }
42
+ interface ReceivingRecord {
43
+ record: 'Receiving';
44
+ name: string;
45
+ value: string;
46
+ type: 'MX';
47
+ ttl: string;
48
+ status: DomainStatus;
49
+ priority: number;
50
+ }
51
+ interface Domain {
52
+ id: string;
53
+ name: string;
54
+ status: DomainStatus;
55
+ created_at: string;
56
+ region: DomainRegion;
57
+ capabilities: DomainCapabilities;
58
+ }
59
+ //#endregion
60
+ //#region src/common/interfaces/domain-api-options.interface.d.ts
61
+ interface DomainApiOptions {
62
+ name: string;
63
+ region?: string;
64
+ custom_return_path?: string;
65
+ capabilities?: Partial<DomainCapabilities>;
66
+ }
67
+ //#endregion
68
+ //#region src/interfaces.d.ts
69
+ declare const RESEND_ERROR_CODES_BY_KEY: {
70
+ readonly missing_required_field: 422;
71
+ readonly invalid_idempotency_key: 400;
72
+ readonly invalid_idempotent_request: 409;
73
+ readonly concurrent_idempotent_requests: 409;
74
+ readonly invalid_access: 422;
75
+ readonly invalid_parameter: 422;
76
+ readonly invalid_region: 422;
77
+ readonly rate_limit_exceeded: 429;
78
+ readonly missing_api_key: 401;
79
+ readonly invalid_api_key: 403;
80
+ readonly suspended_api_key: 403;
81
+ readonly invalid_from_address: 403;
82
+ readonly validation_error: 403;
83
+ readonly not_found: 404;
84
+ readonly method_not_allowed: 405;
85
+ readonly application_error: 500;
86
+ readonly internal_server_error: 500;
87
+ };
88
+ type RESEND_ERROR_CODE_KEY = keyof typeof RESEND_ERROR_CODES_BY_KEY;
89
+ type Response<T> = ({
90
+ data: T;
91
+ error: null;
92
+ } | {
93
+ error: ErrorResponse;
94
+ data: null;
95
+ }) & {
96
+ headers: Record<string, string> | null;
97
+ };
98
+ type ErrorResponse = {
99
+ message: string;
100
+ statusCode: number | null;
101
+ name: RESEND_ERROR_CODE_KEY;
102
+ };
103
+ type Tag$1 = {
104
+ name: string;
105
+ value: string;
106
+ };
107
+ //#endregion
108
+ //#region src/common/interfaces/email-api-options.interface.d.ts
109
+ interface EmailApiAttachment {
110
+ content?: string | Buffer;
111
+ filename?: string | false | undefined;
112
+ path?: string;
113
+ content_type?: string;
114
+ content_id?: string;
115
+ }
116
+ interface EmailApiOptions {
117
+ from?: string;
118
+ to: string | string[];
119
+ subject?: string;
120
+ region?: string;
121
+ headers?: Record<string, string>;
122
+ html?: string;
123
+ text?: string;
124
+ bcc?: string | string[];
125
+ cc?: string | string[];
126
+ reply_to?: string | string[];
127
+ topic_id?: string | null;
128
+ scheduled_at?: string;
129
+ tags?: Tag$1[];
130
+ attachments?: EmailApiAttachment[];
131
+ template?: {
132
+ id: string;
133
+ variables?: Record<string, string | number>;
134
+ };
135
+ }
136
+ //#endregion
137
+ //#region src/common/interfaces/get-option.interface.d.ts
138
+ interface GetOptions {
139
+ query?: Record<string, unknown>;
140
+ headers?: HeadersInit;
141
+ }
142
+ //#endregion
143
+ //#region src/common/interfaces/idempotent-request.interface.d.ts
144
+ interface IdempotentRequest {
145
+ /**
146
+ * Unique key that ensures the same operation is not processed multiple times.
147
+ * Allows for safe retries without duplicating operations.
148
+ * If provided, will be sent as the `Idempotency-Key` header.
149
+ */
150
+ idempotencyKey?: string;
151
+ }
152
+ //#endregion
153
+ //#region src/common/interfaces/pagination-options.interface.d.ts
154
+ type PaginationOptions = {
155
+ /**
156
+ * Maximum number of items to return (1-100, default: 20)
157
+ */
158
+ limit?: number;
159
+ } & ({
160
+ /**
161
+ * Get items after this cursor (cannot be used with 'before')
162
+ */
163
+ after?: string;
164
+ before?: never;
165
+ } | {
166
+ /**
167
+ * Get items before this cursor (cannot be used with 'after')
168
+ */
169
+ before?: string;
170
+ after?: never;
171
+ });
172
+ type PaginatedData<Data> = {
173
+ object: 'list';
174
+ data: Data;
175
+ has_more: boolean;
176
+ };
177
+ //#endregion
178
+ //#region src/common/interfaces/patch-option.interface.d.ts
179
+ interface PatchOptions {
180
+ query?: {
181
+ [key: string]: unknown;
182
+ };
183
+ headers?: HeadersInit;
184
+ }
185
+ //#endregion
186
+ //#region src/common/interfaces/post-option.interface.d.ts
187
+ interface PostOptions {
188
+ query?: {
189
+ [key: string]: unknown;
190
+ };
191
+ headers?: HeadersInit;
192
+ }
193
+ //#endregion
194
+ //#region src/common/interfaces/put-option.interface.d.ts
195
+ interface PutOptions {
196
+ query?: {
197
+ [key: string]: unknown;
198
+ };
199
+ headers?: HeadersInit;
200
+ }
201
+ //#endregion
202
+ //#region src/common/interfaces/require-at-least-one.d.ts
203
+ type RequireAtLeastOne<T> = { [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>> }[keyof T];
204
+ //#endregion
205
+ //#region src/api-keys/interfaces/create-api-key-options.interface.d.ts
206
+ interface CreateApiKeyOptions {
207
+ name: string;
208
+ permission?: 'full_access' | 'sending_access';
209
+ domain_id?: string;
210
+ }
211
+ interface CreateApiKeyRequestOptions extends PostOptions {}
212
+ interface CreateApiKeyResponseSuccess {
213
+ token: string;
214
+ id: string;
215
+ }
216
+ type CreateApiKeyResponse = Response<CreateApiKeyResponseSuccess>;
217
+ //#endregion
218
+ //#region src/api-keys/interfaces/list-api-keys.interface.d.ts
219
+ type ListApiKeysOptions = PaginationOptions;
220
+ type ListApiKeysResponseSuccess = {
221
+ object: 'list';
222
+ has_more: boolean;
223
+ data: Pick<ApiKey, 'name' | 'id' | 'created_at'>[];
224
+ };
225
+ type ListApiKeysResponse = Response<ListApiKeysResponseSuccess>;
226
+ //#endregion
227
+ //#region src/api-keys/interfaces/remove-api-keys.interface.d.ts
228
+ type RemoveApiKeyResponseSuccess = {};
229
+ type RemoveApiKeyResponse = Response<RemoveApiKeyResponseSuccess>;
230
+ //#endregion
231
+ //#region src/emails/interfaces/create-email-options.interface.d.ts
232
+ interface EmailRenderOptions$1 {
233
+ /**
234
+ * The React component used to write the message.
235
+ *
236
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
237
+ */
238
+ react: React$1.ReactNode;
239
+ /**
240
+ * The HTML version of the message.
241
+ *
242
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
243
+ */
244
+ html: string;
245
+ /**
246
+ * The plain text version of the message.
247
+ *
248
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
249
+ */
250
+ text: string;
251
+ }
252
+ interface EmailTemplateOptions {
253
+ template: {
254
+ id: string;
255
+ variables?: Record<string, string | number>;
256
+ };
257
+ }
258
+ interface CreateEmailBaseOptionsWithTemplate extends Omit<CreateEmailBaseOptions, 'from' | 'subject'> {
259
+ from?: string;
260
+ subject?: string;
261
+ }
262
+ interface CreateEmailBaseOptions {
263
+ /**
264
+ * Filename and content of attachments (max 40mb per email)
265
+ *
266
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
267
+ */
268
+ attachments?: Attachment[];
269
+ /**
270
+ * Blind carbon copy recipient email address. For multiple addresses, send as an array of strings.
271
+ *
272
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
273
+ */
274
+ bcc?: string | string[];
275
+ /**
276
+ * Carbon copy recipient email address. For multiple addresses, send as an array of strings.
277
+ *
278
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
279
+ */
280
+ cc?: string | string[];
281
+ /**
282
+ * Sender email address. To include a friendly name, use the format `"Your Name <sender@domain.com>"`
283
+ *
284
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
285
+ */
286
+ from: string;
287
+ /**
288
+ * Custom headers to add to the email.
289
+ *
290
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
291
+ */
292
+ headers?: Record<string, string>;
293
+ /**
294
+ * Reply-to email address. For multiple addresses, send as an array of strings.
295
+ *
296
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
297
+ */
298
+ replyTo?: string | string[];
299
+ /**
300
+ * Email subject.
301
+ *
302
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
303
+ */
304
+ subject: string;
305
+ /**
306
+ * Email tags
307
+ *
308
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
309
+ */
310
+ tags?: Tag[];
311
+ /**
312
+ * Recipient email address. For multiple addresses, send as an array of strings. Max 50.
313
+ *
314
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
315
+ */
316
+ to: string | string[];
317
+ /**
318
+ * The id of the topic you want to send to
319
+ *
320
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
321
+ */
322
+ topicId?: string | null;
323
+ /**
324
+ * Schedule email to be sent later.
325
+ * The date should be in ISO 8601 format (e.g: 2024-08-05T11:52:01.858Z).
326
+ *
327
+ * @link https://resend.com/docs/api-reference/emails/send-email#body-parameters
328
+ */
329
+ scheduledAt?: string;
330
+ }
331
+ type CreateEmailOptions = ((RequireAtLeastOne<EmailRenderOptions$1> & CreateEmailBaseOptions) & {
332
+ template?: never;
333
+ }) | ((EmailTemplateOptions & CreateEmailBaseOptionsWithTemplate) & {
334
+ react?: never;
335
+ html?: never;
336
+ text?: never;
337
+ });
338
+ interface CreateEmailRequestOptions extends PostOptions, IdempotentRequest {}
339
+ interface CreateEmailResponseSuccess {
340
+ /** The ID of the newly created email. */
341
+ id: string;
342
+ }
343
+ type CreateEmailResponse = Response<CreateEmailResponseSuccess>;
344
+ interface Attachment {
345
+ /** Content of an attached file. */
346
+ content?: string | Buffer;
347
+ /** Name of attached file. */
348
+ filename?: string | false | undefined;
349
+ /** Path where the attachment file is hosted */
350
+ path?: string;
351
+ /** Optional content type for the attachment, if not set will be derived from the filename property */
352
+ contentType?: string;
353
+ /**
354
+ * Optional content ID for the attachment, to be used as a reference in the HTML content.
355
+ * If set, this attachment will be sent as an inline attachment and you can reference it in the HTML content using the `cid:` prefix.
356
+ */
357
+ contentId?: string;
358
+ }
359
+ type Tag = {
360
+ /**
361
+ * The name of the email tag. It can only contain ASCII letters (a–z, A–Z), numbers (0–9), underscores (_), or dashes (-). It can contain no more than 256 characters.
362
+ */
363
+ name: string;
364
+ /**
365
+ * The value of the email tag. It can only contain ASCII letters (a–z, A–Z), numbers (0–9), underscores (_), or dashes (-). It can contain no more than 256 characters.
366
+ */
367
+ value: string;
368
+ };
369
+ //#endregion
370
+ //#region src/batch/interfaces/create-batch-options.interface.d.ts
371
+ type CreateBatchOptions = CreateEmailOptions[];
372
+ interface CreateBatchRequestOptions extends PostOptions, IdempotentRequest {
373
+ /**
374
+ * @default 'strict'
375
+ */
376
+ batchValidation?: 'strict' | 'permissive';
377
+ }
378
+ type CreateBatchSuccessResponse<Options extends CreateBatchRequestOptions = CreateBatchRequestOptions> = {
379
+ data: {
380
+ /** The ID of the newly created email. */
381
+ id: string;
382
+ }[];
383
+ } & (Options['batchValidation'] extends 'permissive' ? {
384
+ /**
385
+ * Only present when header "x-batch-validation" is set to 'permissive'.
386
+ */
387
+ errors: {
388
+ /**
389
+ * The index of the failed email in the batch
390
+ */
391
+ index: number;
392
+ /**
393
+ * The error message for the failed email
394
+ */
395
+ message: string;
396
+ }[];
397
+ } : Record<string, never>);
398
+ type CreateBatchResponse<Options extends CreateBatchRequestOptions> = Response<CreateBatchSuccessResponse<Options>>;
399
+ //#endregion
400
+ //#region src/broadcasts/interfaces/broadcast.d.ts
401
+ interface Broadcast {
402
+ id: string;
403
+ name: string;
404
+ segment_id: string | null;
405
+ audience_id: string | null;
406
+ from: string | null;
407
+ subject: string | null;
408
+ reply_to: string[] | null;
409
+ preview_text: string | null;
410
+ status: 'draft' | 'sent' | 'queued';
411
+ created_at: string;
412
+ scheduled_at: string | null;
413
+ sent_at: string | null;
414
+ topic_id?: string | null;
415
+ html: string | null;
416
+ text: string | null;
417
+ }
418
+ //#endregion
419
+ //#region src/broadcasts/interfaces/create-broadcast-options.interface.d.ts
420
+ interface EmailRenderOptions {
421
+ /**
422
+ * The React component used to write the message.
423
+ *
424
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
425
+ */
426
+ react: React$1.ReactNode;
427
+ /**
428
+ * The HTML version of the message.
429
+ *
430
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
431
+ */
432
+ html: string;
433
+ /**
434
+ * The plain text version of the message.
435
+ *
436
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
437
+ */
438
+ text: string;
439
+ }
440
+ interface SegmentOptions {
441
+ /**
442
+ * The id of the segment you want to send to
443
+ *
444
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
445
+ */
446
+ segmentId: string;
447
+ /**
448
+ * @deprecated Use segmentId instead
449
+ */
450
+ audienceId: string;
451
+ }
452
+ interface CreateBroadcastBaseOptions {
453
+ /**
454
+ * The name of the broadcast
455
+ *
456
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
457
+ */
458
+ name?: string;
459
+ /**
460
+ * A short snippet of text displayed as a preview in recipients' inboxes, often shown below or beside the subject line.
461
+ *
462
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
463
+ */
464
+ previewText?: string;
465
+ /**
466
+ * Sender email address. To include a friendly name, use the format `"Your Name <sender@domain.com>"`
467
+ *
468
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
469
+ */
470
+ from: string;
471
+ /**
472
+ * Reply-to email address. For multiple addresses, send as an array of strings.
473
+ *
474
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
475
+ */
476
+ replyTo?: string | string[];
477
+ /**
478
+ * Email subject.
479
+ *
480
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
481
+ */
482
+ subject: string;
483
+ /**
484
+ * The id of the topic you want to send to
485
+ *
486
+ * @link https://resend.com/docs/api-reference/broadcasts/create#body-parameters
487
+ */
488
+ topicId?: string | null;
489
+ }
490
+ type CreateBroadcastOptions = RequireAtLeastOne<EmailRenderOptions> & RequireAtLeastOne<SegmentOptions> & CreateBroadcastBaseOptions;
491
+ interface CreateBroadcastRequestOptions extends PostOptions {}
492
+ interface CreateBroadcastResponseSuccess {
493
+ /** The ID of the newly sent broadcasts. */
494
+ id: string;
495
+ }
496
+ type CreateBroadcastResponse = Response<CreateBroadcastResponseSuccess>;
497
+ //#endregion
498
+ //#region src/broadcasts/interfaces/get-broadcast.interface.d.ts
499
+ interface GetBroadcastResponseSuccess extends Broadcast {
500
+ object: 'broadcast';
501
+ }
502
+ type GetBroadcastResponse = Response<GetBroadcastResponseSuccess>;
503
+ //#endregion
504
+ //#region src/broadcasts/interfaces/list-broadcasts.interface.d.ts
505
+ type ListBroadcastsOptions = PaginationOptions;
506
+ type ListBroadcastsResponseSuccess = {
507
+ object: 'list';
508
+ has_more: boolean;
509
+ data: Pick<Broadcast, 'id' | 'name' | 'audience_id' | 'segment_id' | 'status' | 'created_at' | 'scheduled_at' | 'sent_at'>[];
510
+ };
511
+ type ListBroadcastsResponse = Response<ListBroadcastsResponseSuccess>;
512
+ //#endregion
513
+ //#region src/broadcasts/interfaces/remove-broadcast.interface.d.ts
514
+ interface RemoveBroadcastResponseSuccess extends Pick<Broadcast, 'id'> {
515
+ object: 'broadcast';
516
+ deleted: boolean;
517
+ }
518
+ type RemoveBroadcastResponse = Response<RemoveBroadcastResponseSuccess>;
519
+ //#endregion
520
+ //#region src/broadcasts/interfaces/send-broadcast-options.interface.d.ts
521
+ interface SendBroadcastBaseOptions {
522
+ /**
523
+ * Schedule email to be sent later.
524
+ * The date should be in ISO 8601 format (e.g: 2024-08-05T11:52:01.858Z)
525
+ * or relative time (eg: in 2 days).
526
+ *
527
+ * @link https://resend.com/docs/api-reference/broadcasts/send#body-parameters
528
+ */
529
+ scheduledAt?: string;
530
+ }
531
+ type SendBroadcastOptions = SendBroadcastBaseOptions;
532
+ interface SendBroadcastRequestOptions extends PostOptions {}
533
+ interface SendBroadcastResponseSuccess {
534
+ /** The ID of the sent broadcast. */
535
+ id: string;
536
+ }
537
+ type SendBroadcastResponse = Response<SendBroadcastResponseSuccess>;
538
+ //#endregion
539
+ //#region src/broadcasts/interfaces/update-broadcast.interface.d.ts
540
+ interface UpdateBroadcastResponseSuccess {
541
+ id: string;
542
+ }
543
+ type UpdateBroadcastOptions = {
544
+ name?: string;
545
+ segmentId?: string;
546
+ /**
547
+ * @deprecated Use segmentId instead
548
+ */
549
+ audienceId?: string;
550
+ from?: string;
551
+ html?: string;
552
+ react?: React.ReactNode;
553
+ text?: string;
554
+ subject?: string;
555
+ replyTo?: string[];
556
+ previewText?: string;
557
+ topicId?: string | null;
558
+ };
559
+ type UpdateBroadcastResponse = Response<UpdateBroadcastResponseSuccess>;
560
+ //#endregion
561
+ //#region src/contacts/interfaces/contact.d.ts
562
+ interface Contact {
563
+ created_at: string;
564
+ id: string;
565
+ email: string;
566
+ first_name?: string;
567
+ last_name?: string;
568
+ unsubscribed: boolean;
569
+ }
570
+ type SelectingField = {
571
+ /**
572
+ * The contact id.
573
+ *
574
+ * @link https://resend.com/docs/api-reference/contacts/delete-contact#body-parameters
575
+ */
576
+ id: string;
577
+ /**
578
+ * The contact email.
579
+ *
580
+ * @link https://resend.com/docs/api-reference/contacts/delete-contact#body-parameters
581
+ */
582
+ email?: undefined | null;
583
+ } | {
584
+ /**
585
+ * The contact id.
586
+ *
587
+ * @link https://resend.com/docs/api-reference/contacts/delete-contact#body-parameters
588
+ */
589
+ id?: undefined | null;
590
+ /**
591
+ * The contact email.
592
+ *
593
+ * @link https://resend.com/docs/api-reference/contacts/delete-contact#body-parameters
594
+ */
595
+ email: string;
596
+ };
597
+ //#endregion
598
+ //#region src/contacts/interfaces/create-contact-options.interface.d.ts
599
+ interface CreateContactPropertiesOptions {
600
+ [key: string]: string | number | null;
601
+ }
602
+ interface CreateContactOptions {
603
+ audienceId?: string;
604
+ email: string;
605
+ unsubscribed?: boolean;
606
+ firstName?: string;
607
+ lastName?: string;
608
+ properties?: CreateContactPropertiesOptions;
609
+ }
610
+ interface CreateContactRequestOptions extends PostOptions {}
611
+ interface CreateContactResponseSuccess extends Pick<Contact, 'id'> {
612
+ object: 'contact';
613
+ }
614
+ type CreateContactResponse = Response<CreateContactResponseSuccess>;
615
+ //#endregion
616
+ //#region src/contacts/interfaces/get-contact.interface.d.ts
617
+ type GetContactOptions = string | ({
618
+ audienceId?: string;
619
+ } & SelectingField);
620
+ type ContactPropertyValue = {
621
+ type: 'string';
622
+ value: string;
623
+ } | {
624
+ type: 'number';
625
+ value: number;
626
+ };
627
+ interface ContactProperties$1 {
628
+ [key: string]: ContactPropertyValue;
629
+ }
630
+ interface GetContactResponseSuccess extends Pick<Contact, 'id' | 'email' | 'created_at' | 'first_name' | 'last_name' | 'unsubscribed'> {
631
+ object: 'contact';
632
+ properties: ContactProperties$1;
633
+ }
634
+ type GetContactResponse = Response<GetContactResponseSuccess>;
635
+ //#endregion
636
+ //#region src/contacts/interfaces/list-contacts.interface.d.ts
637
+ type ListContactsOptions = PaginationOptions & {
638
+ segmentId?: string;
639
+ /**
640
+ * @deprecated Use segmentId instead to filter by segment
641
+ */
642
+ audienceId?: string;
643
+ };
644
+ interface ListContactsResponseSuccess {
645
+ object: 'list';
646
+ data: Contact[];
647
+ has_more: boolean;
648
+ }
649
+ type ListContactsResponse = Response<ListContactsResponseSuccess>;
650
+ //#endregion
651
+ //#region src/contacts/interfaces/remove-contact.interface.d.ts
652
+ type RemoveContactsResponseSuccess = {
653
+ object: 'contact';
654
+ deleted: boolean;
655
+ contact: string;
656
+ };
657
+ type RemoveContactOptions = string | (SelectingField & {
658
+ audienceId?: string;
659
+ });
660
+ type RemoveContactsResponse = Response<RemoveContactsResponseSuccess>;
661
+ //#endregion
662
+ //#region src/contacts/interfaces/update-contact.interface.d.ts
663
+ interface UpdateContactPropertiesOptions {
664
+ [key: string]: string | number | null;
665
+ }
666
+ type UpdateContactOptions = {
667
+ audienceId?: string;
668
+ unsubscribed?: boolean;
669
+ firstName?: string;
670
+ lastName?: string;
671
+ properties?: UpdateContactPropertiesOptions;
672
+ } & SelectingField;
673
+ type UpdateContactResponseSuccess = Pick<Contact, 'id'> & {
674
+ object: 'contact';
675
+ };
676
+ type UpdateContactResponse = Response<UpdateContactResponseSuccess>;
677
+ //#endregion
678
+ //#region src/domains/interfaces/create-domain-options.interface.d.ts
679
+ interface CreateDomainOptions {
680
+ name: string;
681
+ region?: DomainRegion;
682
+ customReturnPath?: string;
683
+ capabilities?: Partial<DomainCapabilities>;
684
+ }
685
+ interface CreateDomainRequestOptions extends PostOptions {}
686
+ interface CreateDomainResponseSuccess extends Pick<Domain, 'name' | 'id' | 'status' | 'created_at' | 'region'> {
687
+ records: DomainRecords[];
688
+ capabilities: DomainCapabilities;
689
+ }
690
+ type CreateDomainResponse = Response<CreateDomainResponseSuccess>;
691
+ //#endregion
692
+ //#region src/domains/interfaces/get-domain.interface.d.ts
693
+ interface GetDomainResponseSuccess extends Pick<Domain, 'id' | 'name' | 'created_at' | 'region' | 'status' | 'capabilities'> {
694
+ object: 'domain';
695
+ records: DomainRecords[];
696
+ }
697
+ type GetDomainResponse = Response<GetDomainResponseSuccess>;
698
+ //#endregion
699
+ //#region src/domains/interfaces/list-domains.interface.d.ts
700
+ type ListDomainsOptions = PaginationOptions;
701
+ type ListDomainsResponseSuccess = {
702
+ data: Domain[];
703
+ object: 'list';
704
+ has_more: boolean;
705
+ };
706
+ type ListDomainsResponse = Response<ListDomainsResponseSuccess>;
707
+ //#endregion
708
+ //#region src/domains/interfaces/remove-domain.interface.d.ts
709
+ type RemoveDomainsResponseSuccess = Pick<Domain, 'id'> & {
710
+ object: 'domain';
711
+ deleted: boolean;
712
+ };
713
+ type RemoveDomainsResponse = Response<RemoveDomainsResponseSuccess>;
714
+ //#endregion
715
+ //#region src/domains/interfaces/update-domain.interface.d.ts
716
+ interface UpdateDomainsOptions {
717
+ id: string;
718
+ clickTracking?: boolean;
719
+ openTracking?: boolean;
720
+ tls?: 'enforced' | 'opportunistic';
721
+ capabilities?: Partial<DomainCapabilities>;
722
+ }
723
+ type UpdateDomainsResponseSuccess = Pick<Domain, 'id'> & {
724
+ object: 'domain';
725
+ };
726
+ type UpdateDomainsResponse = Response<UpdateDomainsResponseSuccess>;
727
+ //#endregion
728
+ //#region src/domains/interfaces/verify-domain.interface.d.ts
729
+ type VerifyDomainsResponseSuccess = Pick<Domain, 'id'> & {
730
+ object: 'domain';
731
+ };
732
+ type VerifyDomainsResponse = Response<VerifyDomainsResponseSuccess>;
733
+ //#endregion
734
+ //#region src/common/interfaces/attachment.interface.d.ts
735
+ interface Attachment$1 {
736
+ id: string;
737
+ filename?: string;
738
+ size: number;
739
+ content_type: string;
740
+ content_disposition: 'inline' | 'attachment';
741
+ content_id?: string;
742
+ download_url: string;
743
+ expires_at: string;
744
+ }
745
+ //#endregion
746
+ //#region src/emails/attachments/interfaces/get-attachment.interface.d.ts
747
+ interface GetAttachmentOptions {
748
+ emailId: string;
749
+ id: string;
750
+ }
751
+ type GetAttachmentResponseSuccess = {
752
+ object: 'attachment';
753
+ } & Attachment$1;
754
+ type GetAttachmentResponse = Response<GetAttachmentResponseSuccess>;
755
+ //#endregion
756
+ //#region src/emails/attachments/interfaces/list-attachments.interface.d.ts
757
+ type ListAttachmentsOptions = PaginationOptions & {
758
+ emailId: string;
759
+ };
760
+ interface ListAttachmentsApiResponse {
761
+ object: 'list';
762
+ has_more: boolean;
763
+ data: Attachment$1[];
764
+ }
765
+ interface ListAttachmentsResponseSuccess {
766
+ object: 'list';
767
+ has_more: boolean;
768
+ data: Attachment$1[];
769
+ }
770
+ type ListAttachmentsResponse = Response<ListAttachmentsResponseSuccess>;
771
+ //#endregion
772
+ //#region src/emails/interfaces/cancel-email-options.interface.d.ts
773
+ interface CancelEmailResponseSuccess {
774
+ object: 'email';
775
+ id: string;
776
+ }
777
+ type CancelEmailResponse = Response<CancelEmailResponseSuccess>;
778
+ //#endregion
779
+ //#region src/emails/interfaces/get-email-options.interface.d.ts
780
+ interface GetEmailResponseSuccess {
781
+ bcc: string[] | null;
782
+ cc: string[] | null;
783
+ created_at: string;
784
+ from: string;
785
+ html: string | null;
786
+ id: string;
787
+ last_event: 'bounced' | 'canceled' | 'clicked' | 'complained' | 'delivered' | 'delivery_delayed' | 'failed' | 'opened' | 'queued' | 'scheduled' | 'sent';
788
+ reply_to: string[] | null;
789
+ subject: string;
790
+ text: string | null;
791
+ tags?: {
792
+ name: string;
793
+ value: string;
794
+ }[];
795
+ to: string[];
796
+ topic_id?: string | null;
797
+ scheduled_at: string | null;
798
+ object: 'email';
799
+ }
800
+ type GetEmailResponse = Response<GetEmailResponseSuccess>;
801
+ //#endregion
802
+ //#region src/emails/interfaces/update-email-options.interface.d.ts
803
+ interface UpdateEmailOptions {
804
+ id: string;
805
+ scheduledAt: string;
806
+ }
807
+ interface UpdateEmailResponseSuccess {
808
+ id: string;
809
+ object: 'email';
810
+ }
811
+ type UpdateEmailResponse = Response<UpdateEmailResponseSuccess>;
812
+ //#endregion
813
+ //#region src/emails/receiving/interfaces/get-receiving-email.interface.d.ts
814
+ interface GetReceivingEmailResponseSuccess {
815
+ object: 'email';
816
+ id: string;
817
+ to: string[];
818
+ from: string;
819
+ created_at: string;
820
+ subject: string;
821
+ bcc: string[] | null;
822
+ cc: string[] | null;
823
+ reply_to: string[] | null;
824
+ html: string | null;
825
+ text: string | null;
826
+ headers: Record<string, string>;
827
+ message_id: string;
828
+ attachments: Array<{
829
+ id: string;
830
+ filename: string;
831
+ size: number;
832
+ content_type: string;
833
+ content_id: string;
834
+ content_disposition: string;
835
+ }>;
836
+ }
837
+ type GetReceivingEmailResponse = Response<GetReceivingEmailResponseSuccess>;
838
+ //#endregion
839
+ //#region src/emails/receiving/interfaces/list-receiving-emails.interface.d.ts
840
+ type ListReceivingEmailsOptions = PaginationOptions;
841
+ type ListReceivingEmail = Omit<GetReceivingEmailResponseSuccess, 'html' | 'text' | 'headers' | 'object'>;
842
+ interface ListReceivingEmailsResponseSuccess {
843
+ object: 'list';
844
+ has_more: boolean;
845
+ data: ListReceivingEmail[];
846
+ }
847
+ type ListReceivingEmailsResponse = {
848
+ data: ListReceivingEmailsResponseSuccess;
849
+ error: null;
850
+ } | {
851
+ data: null;
852
+ error: ErrorResponse;
853
+ };
854
+ //#endregion
855
+ //#region src/api-keys/api-keys.d.ts
856
+ declare class ApiKeys {
857
+ private readonly resend;
858
+ constructor(resend: Resend);
859
+ create(payload: CreateApiKeyOptions, options?: CreateApiKeyRequestOptions): Promise<CreateApiKeyResponse>;
860
+ list(options?: ListApiKeysOptions): Promise<ListApiKeysResponse>;
861
+ remove(id: string): Promise<RemoveApiKeyResponse>;
862
+ }
863
+ //#endregion
864
+ //#region src/batch/batch.d.ts
865
+ declare class Batch {
866
+ private readonly resend;
867
+ constructor(resend: Resend);
868
+ send<Options extends CreateBatchRequestOptions>(payload: CreateBatchOptions, options?: Options): Promise<CreateBatchResponse<Options>>;
869
+ create<Options extends CreateBatchRequestOptions>(payload: CreateBatchOptions, options?: Options): Promise<CreateBatchResponse<Options>>;
870
+ }
871
+ //#endregion
872
+ //#region src/broadcasts/broadcasts.d.ts
873
+ declare class Broadcasts {
874
+ private readonly resend;
875
+ constructor(resend: Resend);
876
+ create(payload: CreateBroadcastOptions, options?: CreateBroadcastRequestOptions): Promise<SendBroadcastResponse>;
877
+ send(id: string, payload?: SendBroadcastOptions): Promise<SendBroadcastResponse>;
878
+ list(options?: ListBroadcastsOptions): Promise<ListBroadcastsResponse>;
879
+ get(id: string): Promise<GetBroadcastResponse>;
880
+ remove(id: string): Promise<RemoveBroadcastResponse>;
881
+ update(id: string, payload: UpdateBroadcastOptions): Promise<UpdateBroadcastResponse>;
882
+ }
883
+ //#endregion
884
+ //#region src/contact-properties/interfaces/contact-property.d.ts
885
+ type StringBaseContactProperty = {
886
+ type: 'string';
887
+ fallbackValue: string | null;
888
+ };
889
+ type NumberBaseContactProperty = {
890
+ type: 'number';
891
+ fallbackValue: number | null;
892
+ };
893
+ type ContactProperty = {
894
+ id: string;
895
+ createdAt: string;
896
+ key: string;
897
+ } & (StringBaseContactProperty | NumberBaseContactProperty);
898
+ //#endregion
899
+ //#region src/contact-properties/interfaces/create-contact-property-options.interface.d.ts
900
+ type StringBaseContactPropertyOptions = {
901
+ type: 'string';
902
+ fallbackValue?: string | null;
903
+ };
904
+ type NumberBaseContactPropertyOptions = {
905
+ type: 'number';
906
+ fallbackValue?: number | null;
907
+ };
908
+ type CreateContactPropertyOptions = {
909
+ key: string;
910
+ } & (StringBaseContactPropertyOptions | NumberBaseContactPropertyOptions);
911
+ type CreateContactPropertyResponseSuccess = Pick<ContactProperty, 'id'> & {
912
+ object: 'contact_property';
913
+ };
914
+ type CreateContactPropertyResponse = Response<CreateContactPropertyResponseSuccess>;
915
+ //#endregion
916
+ //#region src/contact-properties/interfaces/delete-contact-property-options.interface.d.ts
917
+ type RemoveContactPropertyResponseSuccess = Pick<ContactProperty, 'id'> & {
918
+ object: 'contact_property';
919
+ deleted: boolean;
920
+ };
921
+ type RemoveContactPropertyResponse = Response<RemoveContactPropertyResponseSuccess>;
922
+ //#endregion
923
+ //#region src/contact-properties/interfaces/get-contact-property.interface.d.ts
924
+ type GetContactPropertyResponse = Response<ContactProperty & {
925
+ object: 'contact_property';
926
+ }>;
927
+ //#endregion
928
+ //#region src/contact-properties/interfaces/list-contact-properties-options.interface.d.ts
929
+ type ListContactPropertiesOptions = PaginationOptions;
930
+ type ListContactPropertiesResponse = Response<{
931
+ object: 'list';
932
+ has_more: boolean;
933
+ data: ContactProperty[];
934
+ }>;
935
+ //#endregion
936
+ //#region src/contact-properties/interfaces/update-contact-property-options.interface.d.ts
937
+ type UpdateContactPropertyOptions = {
938
+ id: string;
939
+ fallbackValue?: string | number | null;
940
+ };
941
+ type UpdateContactPropertyResponseSuccess = Pick<ContactProperty, 'id'> & {
942
+ object: 'contact_property';
943
+ };
944
+ type UpdateContactPropertyResponse = Response<UpdateContactPropertyResponseSuccess>;
945
+ //#endregion
946
+ //#region src/contact-properties/contact-properties.d.ts
947
+ declare class ContactProperties {
948
+ private readonly resend;
949
+ constructor(resend: Resend);
950
+ create(options: CreateContactPropertyOptions): Promise<CreateContactPropertyResponse>;
951
+ list(options?: ListContactPropertiesOptions): Promise<ListContactPropertiesResponse>;
952
+ get(id: string): Promise<GetContactPropertyResponse>;
953
+ update(payload: UpdateContactPropertyOptions): Promise<UpdateContactPropertyResponse>;
954
+ remove(id: string): Promise<RemoveContactPropertyResponse>;
955
+ }
956
+ //#endregion
957
+ //#region src/contacts/segments/interfaces/contact-segments.interface.d.ts
958
+ type ContactSegmentsBaseOptions = {
959
+ contactId: string;
960
+ email?: never;
961
+ } | {
962
+ contactId?: never;
963
+ email: string;
964
+ };
965
+ //#endregion
966
+ //#region src/contacts/segments/interfaces/add-contact-segment.interface.d.ts
967
+ type AddContactSegmentOptions = ContactSegmentsBaseOptions & {
968
+ segmentId: string;
969
+ };
970
+ interface AddContactSegmentResponseSuccess {
971
+ id: string;
972
+ }
973
+ type AddContactSegmentResponse = Response<AddContactSegmentResponseSuccess>;
974
+ //#endregion
975
+ //#region src/segments/interfaces/segment.d.ts
976
+ interface Segment {
977
+ created_at: string;
978
+ id: string;
979
+ name: string;
980
+ }
981
+ //#endregion
982
+ //#region src/contacts/segments/interfaces/list-contact-segments.interface.d.ts
983
+ type ListContactSegmentsOptions = PaginationOptions & ContactSegmentsBaseOptions;
984
+ type ListContactSegmentsResponseSuccess = PaginatedData<Segment[]>;
985
+ type ListContactSegmentsResponse = Response<ListContactSegmentsResponseSuccess>;
986
+ //#endregion
987
+ //#region src/contacts/segments/interfaces/remove-contact-segment.interface.d.ts
988
+ type RemoveContactSegmentOptions = ContactSegmentsBaseOptions & {
989
+ segmentId: string;
990
+ };
991
+ interface RemoveContactSegmentResponseSuccess {
992
+ id: string;
993
+ deleted: boolean;
994
+ }
995
+ type RemoveContactSegmentResponse = Response<RemoveContactSegmentResponseSuccess>;
996
+ //#endregion
997
+ //#region src/contacts/segments/contact-segments.d.ts
998
+ declare class ContactSegments {
999
+ private readonly resend;
1000
+ constructor(resend: Resend);
1001
+ list(options: ListContactSegmentsOptions): Promise<ListContactSegmentsResponse>;
1002
+ add(options: AddContactSegmentOptions): Promise<AddContactSegmentResponse>;
1003
+ remove(options: RemoveContactSegmentOptions): Promise<RemoveContactSegmentResponse>;
1004
+ }
1005
+ //#endregion
1006
+ //#region src/contacts/topics/interfaces/list-contact-topics.interface.d.ts
1007
+ interface ListContactTopicsBaseOptions {
1008
+ id?: string;
1009
+ email?: string;
1010
+ }
1011
+ type ListContactTopicsOptions = ListContactTopicsBaseOptions & PaginationOptions;
1012
+ interface ContactTopic {
1013
+ id: string;
1014
+ name: string;
1015
+ description: string | null;
1016
+ subscription: 'opt_in' | 'opt_out';
1017
+ }
1018
+ type ListContactTopicsResponseSuccess = PaginatedData<ContactTopic[]>;
1019
+ type ListContactTopicsResponse = Response<ListContactTopicsResponseSuccess>;
1020
+ //#endregion
1021
+ //#region src/contacts/topics/interfaces/update-contact-topics.interface.d.ts
1022
+ interface UpdateContactTopicsBaseOptions {
1023
+ id?: string;
1024
+ email?: string;
1025
+ }
1026
+ interface UpdateContactTopicsOptions extends UpdateContactTopicsBaseOptions {
1027
+ topics: {
1028
+ id: string;
1029
+ subscription: 'opt_in' | 'opt_out';
1030
+ }[];
1031
+ }
1032
+ interface UpdateContactTopicsResponseSuccess {
1033
+ id: string;
1034
+ }
1035
+ type UpdateContactTopicsResponse = Response<UpdateContactTopicsResponseSuccess>;
1036
+ //#endregion
1037
+ //#region src/contacts/topics/contact-topics.d.ts
1038
+ declare class ContactTopics {
1039
+ private readonly resend;
1040
+ constructor(resend: Resend);
1041
+ update(payload: UpdateContactTopicsOptions): Promise<UpdateContactTopicsResponse>;
1042
+ list(options: ListContactTopicsOptions): Promise<ListContactTopicsResponse>;
1043
+ }
1044
+ //#endregion
1045
+ //#region src/contacts/contacts.d.ts
1046
+ declare class Contacts {
1047
+ private readonly resend;
1048
+ readonly topics: ContactTopics;
1049
+ readonly segments: ContactSegments;
1050
+ constructor(resend: Resend);
1051
+ create(payload: CreateContactOptions, options?: CreateContactRequestOptions): Promise<CreateContactResponse>;
1052
+ list(options?: ListContactsOptions): Promise<ListContactsResponse>;
1053
+ get(options: GetContactOptions): Promise<GetContactResponse>;
1054
+ update(options: UpdateContactOptions): Promise<UpdateContactResponse>;
1055
+ remove(payload: RemoveContactOptions): Promise<RemoveContactsResponse>;
1056
+ }
1057
+ //#endregion
1058
+ //#region src/domains/domains.d.ts
1059
+ declare class Domains {
1060
+ private readonly resend;
1061
+ constructor(resend: Resend);
1062
+ create(payload: CreateDomainOptions, options?: CreateDomainRequestOptions): Promise<CreateDomainResponse>;
1063
+ list(options?: ListDomainsOptions): Promise<ListDomainsResponse>;
1064
+ get(id: string): Promise<GetDomainResponse>;
1065
+ update(payload: UpdateDomainsOptions): Promise<UpdateDomainsResponse>;
1066
+ remove(id: string): Promise<RemoveDomainsResponse>;
1067
+ verify(id: string): Promise<VerifyDomainsResponse>;
1068
+ }
1069
+ //#endregion
1070
+ //#region src/emails/attachments/attachments.d.ts
1071
+ declare class Attachments {
1072
+ private readonly resend;
1073
+ constructor(resend: Resend);
1074
+ get(options: GetAttachmentOptions): Promise<GetAttachmentResponse>;
1075
+ list(options: ListAttachmentsOptions): Promise<ListAttachmentsResponse>;
1076
+ }
1077
+ //#endregion
1078
+ //#region src/emails/interfaces/list-emails-options.interface.d.ts
1079
+ type ListEmailsOptions = PaginationOptions;
1080
+ type ListEmail = Omit<GetEmailResponseSuccess, 'html' | 'text' | 'tags' | 'object'>;
1081
+ type ListEmailsResponseSuccess = {
1082
+ object: 'list';
1083
+ has_more: boolean;
1084
+ data: ListEmail[];
1085
+ };
1086
+ type ListEmailsResponse = Response<ListEmailsResponseSuccess>;
1087
+ //#endregion
1088
+ //#region src/emails/receiving/attachments/attachments.d.ts
1089
+ declare class Attachments$1 {
1090
+ private readonly resend;
1091
+ constructor(resend: Resend);
1092
+ get(options: GetAttachmentOptions): Promise<GetAttachmentResponse>;
1093
+ list(options: ListAttachmentsOptions): Promise<ListAttachmentsResponse>;
1094
+ }
1095
+ //#endregion
1096
+ //#region src/emails/receiving/receiving.d.ts
1097
+ declare class Receiving {
1098
+ private readonly resend;
1099
+ readonly attachments: Attachments$1;
1100
+ constructor(resend: Resend);
1101
+ get(id: string): Promise<GetReceivingEmailResponse>;
1102
+ list(options?: ListReceivingEmailsOptions): Promise<ListReceivingEmailsResponse>;
1103
+ }
1104
+ //#endregion
1105
+ //#region src/emails/emails.d.ts
1106
+ declare class Emails {
1107
+ private readonly resend;
1108
+ readonly attachments: Attachments;
1109
+ readonly receiving: Receiving;
1110
+ constructor(resend: Resend);
1111
+ send(payload: CreateEmailOptions, options?: CreateEmailRequestOptions): Promise<CreateEmailResponse>;
1112
+ create(payload: CreateEmailOptions, options?: CreateEmailRequestOptions): Promise<CreateEmailResponse>;
1113
+ get(id: string): Promise<GetEmailResponse>;
1114
+ list(options?: ListEmailsOptions): Promise<ListEmailsResponse>;
1115
+ update(payload: UpdateEmailOptions): Promise<UpdateEmailResponse>;
1116
+ cancel(id: string): Promise<CancelEmailResponse>;
1117
+ }
1118
+ //#endregion
1119
+ //#region src/segments/interfaces/create-segment-options.interface.d.ts
1120
+ interface CreateSegmentOptions {
1121
+ name: string;
1122
+ }
1123
+ interface CreateSegmentRequestOptions extends PostOptions {}
1124
+ interface CreateSegmentResponseSuccess extends Pick<Segment, 'name' | 'id'> {
1125
+ object: 'segment';
1126
+ }
1127
+ type CreateSegmentResponse = Response<CreateSegmentResponseSuccess>;
1128
+ //#endregion
1129
+ //#region src/segments/interfaces/get-segment.interface.d.ts
1130
+ interface GetSegmentResponseSuccess extends Pick<Segment, 'id' | 'name' | 'created_at'> {
1131
+ object: 'segment';
1132
+ }
1133
+ type GetSegmentResponse = Response<GetSegmentResponseSuccess>;
1134
+ //#endregion
1135
+ //#region src/segments/interfaces/list-segments.interface.d.ts
1136
+ type ListSegmentsOptions = PaginationOptions;
1137
+ type ListSegmentsResponseSuccess = {
1138
+ object: 'list';
1139
+ data: Segment[];
1140
+ has_more: boolean;
1141
+ };
1142
+ type ListSegmentsResponse = Response<ListSegmentsResponseSuccess>;
1143
+ //#endregion
1144
+ //#region src/segments/interfaces/remove-segment.interface.d.ts
1145
+ interface RemoveSegmentResponseSuccess extends Pick<Segment, 'id'> {
1146
+ object: 'segment';
1147
+ deleted: boolean;
1148
+ }
1149
+ type RemoveSegmentResponse = Response<RemoveSegmentResponseSuccess>;
1150
+ //#endregion
1151
+ //#region src/segments/segments.d.ts
1152
+ declare class Segments {
1153
+ private readonly resend;
1154
+ constructor(resend: Resend);
1155
+ create(payload: CreateSegmentOptions, options?: CreateSegmentRequestOptions): Promise<CreateSegmentResponse>;
1156
+ list(options?: ListSegmentsOptions): Promise<ListSegmentsResponse>;
1157
+ get(id: string): Promise<GetSegmentResponse>;
1158
+ remove(id: string): Promise<RemoveSegmentResponse>;
1159
+ }
1160
+ //#endregion
1161
+ //#region src/templates/interfaces/template.d.ts
1162
+ interface Template {
1163
+ id: string;
1164
+ name: string;
1165
+ subject: string | null;
1166
+ html: string;
1167
+ text: string | null;
1168
+ status: 'draft' | 'published';
1169
+ variables: TemplateVariable[] | null;
1170
+ alias: string | null;
1171
+ from: string | null;
1172
+ reply_to: string[] | null;
1173
+ published_at: string | null;
1174
+ created_at: string;
1175
+ updated_at: string;
1176
+ has_unpublished_versions: boolean;
1177
+ current_version_id: string;
1178
+ }
1179
+ interface TemplateVariable {
1180
+ key: string;
1181
+ fallback_value: string | number | null;
1182
+ type: 'string' | 'number';
1183
+ created_at: string;
1184
+ updated_at: string;
1185
+ }
1186
+ //#endregion
1187
+ //#region src/templates/interfaces/create-template-options.interface.d.ts
1188
+ type TemplateContentCreationOptions = RequireAtLeastOne<{
1189
+ html: string;
1190
+ react: React.ReactNode;
1191
+ }>;
1192
+ type TemplateVariableCreationOptions = Pick<TemplateVariable, 'key' | 'type'> & ({
1193
+ type: 'string';
1194
+ fallbackValue?: string | null;
1195
+ } | {
1196
+ type: 'number';
1197
+ fallbackValue?: number | null;
1198
+ });
1199
+ type TemplateOptionalFieldsForCreation = Partial<Pick<Template, 'subject' | 'text' | 'alias' | 'from'>> & {
1200
+ replyTo?: string[] | string;
1201
+ variables?: TemplateVariableCreationOptions[];
1202
+ };
1203
+ type CreateTemplateOptions = Pick<Template, 'name'> & TemplateOptionalFieldsForCreation & TemplateContentCreationOptions;
1204
+ interface CreateTemplateResponseSuccess extends Pick<Template, 'id'> {
1205
+ object: 'template';
1206
+ }
1207
+ type CreateTemplateResponse = Response<CreateTemplateResponseSuccess>;
1208
+ //#endregion
1209
+ //#region src/templates/interfaces/duplicate-template.interface.d.ts
1210
+ interface DuplicateTemplateResponseSuccess extends Pick<Template, 'id'> {
1211
+ object: 'template';
1212
+ }
1213
+ type DuplicateTemplateResponse = Response<DuplicateTemplateResponseSuccess>;
1214
+ //#endregion
1215
+ //#region src/templates/interfaces/publish-template.interface.d.ts
1216
+ interface PublishTemplateResponseSuccess extends Pick<Template, 'id'> {
1217
+ object: 'template';
1218
+ }
1219
+ type PublishTemplateResponse = Response<PublishTemplateResponseSuccess>;
1220
+ //#endregion
1221
+ //#region src/templates/chainable-template-result.d.ts
1222
+ declare class ChainableTemplateResult<T extends CreateTemplateResponse | DuplicateTemplateResponse> implements PromiseLike<T> {
1223
+ private readonly promise;
1224
+ private readonly publishFn;
1225
+ constructor(promise: Promise<T>, publishFn: (id: string) => Promise<PublishTemplateResponse>);
1226
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
1227
+ publish(): Promise<PublishTemplateResponse>;
1228
+ }
1229
+ //#endregion
1230
+ //#region src/templates/interfaces/get-template.interface.d.ts
1231
+ interface GetTemplateResponseSuccess extends Template {
1232
+ object: 'template';
1233
+ }
1234
+ type GetTemplateResponse = Response<GetTemplateResponseSuccess>;
1235
+ //#endregion
1236
+ //#region src/templates/interfaces/list-templates.interface.d.ts
1237
+ interface TemplateListItem extends Pick<Template, 'id' | 'name' | 'created_at' | 'updated_at' | 'status' | 'published_at' | 'alias'> {}
1238
+ interface ListTemplatesResponseSuccess {
1239
+ object: 'list';
1240
+ data: TemplateListItem[];
1241
+ has_more: boolean;
1242
+ }
1243
+ type ListTemplatesResponse = Response<ListTemplatesResponseSuccess>;
1244
+ //#endregion
1245
+ //#region src/templates/interfaces/remove-template.interface.d.ts
1246
+ interface RemoveTemplateResponseSuccess {
1247
+ object: 'template';
1248
+ id: string;
1249
+ deleted: boolean;
1250
+ }
1251
+ type RemoveTemplateResponse = Response<RemoveTemplateResponseSuccess>;
1252
+ //#endregion
1253
+ //#region src/templates/interfaces/update-template.interface.d.ts
1254
+ type TemplateVariableUpdateOptions = Pick<TemplateVariable, 'key' | 'type'> & ({
1255
+ type: 'string';
1256
+ fallbackValue?: string | null;
1257
+ } | {
1258
+ type: 'number';
1259
+ fallbackValue?: number | null;
1260
+ });
1261
+ interface UpdateTemplateOptions extends Partial<Pick<Template, 'name' | 'subject' | 'html' | 'text' | 'from' | 'alias'>> {
1262
+ variables?: TemplateVariableUpdateOptions[];
1263
+ replyTo?: string[] | string;
1264
+ }
1265
+ interface UpdateTemplateResponseSuccess extends Pick<Template, 'id'> {
1266
+ object: 'template';
1267
+ }
1268
+ type UpdateTemplateResponse = Response<UpdateTemplateResponseSuccess>;
1269
+ //#endregion
1270
+ //#region src/templates/templates.d.ts
1271
+ declare class Templates {
1272
+ private readonly resend;
1273
+ private renderAsync?;
1274
+ constructor(resend: Resend);
1275
+ create(payload: CreateTemplateOptions): ChainableTemplateResult<CreateTemplateResponse>;
1276
+ private performCreate;
1277
+ remove(identifier: string): Promise<RemoveTemplateResponse>;
1278
+ get(identifier: string): Promise<GetTemplateResponse>;
1279
+ list(options?: PaginationOptions): Promise<ListTemplatesResponse>;
1280
+ duplicate(identifier: string): ChainableTemplateResult<DuplicateTemplateResponse>;
1281
+ publish(identifier: string): Promise<PublishTemplateResponse>;
1282
+ update(identifier: string, payload: UpdateTemplateOptions): Promise<UpdateTemplateResponse>;
1283
+ }
1284
+ //#endregion
1285
+ //#region src/topics/interfaces/topic.d.ts
1286
+ interface Topic {
1287
+ id: string;
1288
+ name: string;
1289
+ description?: string;
1290
+ defaultSubscription: 'opt_in' | 'opt_out';
1291
+ created_at: string;
1292
+ }
1293
+ //#endregion
1294
+ //#region src/topics/interfaces/create-topic-options.interface.d.ts
1295
+ interface CreateTopicOptions {
1296
+ name: string;
1297
+ description?: string;
1298
+ defaultSubscription: 'opt_in' | 'opt_out';
1299
+ }
1300
+ type CreateTopicResponseSuccess = Pick<Topic, 'id'>;
1301
+ type CreateTopicResponse = Response<CreateTopicResponseSuccess>;
1302
+ //#endregion
1303
+ //#region src/topics/interfaces/get-contact.interface.d.ts
1304
+ type GetTopicResponseSuccess = Topic;
1305
+ type GetTopicResponse = Response<GetTopicResponseSuccess>;
1306
+ //#endregion
1307
+ //#region src/topics/interfaces/list-topics.interface.d.ts
1308
+ interface ListTopicsResponseSuccess {
1309
+ data: Topic[];
1310
+ }
1311
+ type ListTopicsResponse = Response<ListTopicsResponseSuccess>;
1312
+ //#endregion
1313
+ //#region src/topics/interfaces/remove-topic.interface.d.ts
1314
+ type RemoveTopicResponseSuccess = Pick<Topic, 'id'> & {
1315
+ object: 'topic';
1316
+ deleted: boolean;
1317
+ };
1318
+ type RemoveTopicResponse = Response<RemoveTopicResponseSuccess>;
1319
+ //#endregion
1320
+ //#region src/topics/interfaces/update-topic.interface.d.ts
1321
+ interface UpdateTopicOptions {
1322
+ id: string;
1323
+ name?: string;
1324
+ description?: string;
1325
+ }
1326
+ type UpdateTopicResponseSuccess = Pick<Topic, 'id'>;
1327
+ type UpdateTopicResponse = Response<UpdateTopicResponseSuccess>;
1328
+ //#endregion
1329
+ //#region src/topics/topics.d.ts
1330
+ declare class Topics {
1331
+ private readonly resend;
1332
+ constructor(resend: Resend);
1333
+ create(payload: CreateTopicOptions): Promise<CreateTopicResponse>;
1334
+ list(): Promise<ListTopicsResponse>;
1335
+ get(id: string): Promise<GetTopicResponse>;
1336
+ update(payload: UpdateTopicOptions): Promise<UpdateTopicResponse>;
1337
+ remove(id: string): Promise<RemoveTopicResponse>;
1338
+ }
1339
+ //#endregion
1340
+ //#region src/webhooks/interfaces/webhook-event.interface.d.ts
1341
+ type WebhookEvent = 'email.sent' | 'email.delivered' | 'email.delivery_delayed' | 'email.complained' | 'email.bounced' | 'email.opened' | 'email.clicked' | 'email.received' | 'email.failed' | 'contact.created' | 'contact.updated' | 'contact.deleted' | 'domain.created' | 'domain.updated' | 'domain.deleted';
1342
+ //#endregion
1343
+ //#region src/webhooks/interfaces/create-webhook-options.interface.d.ts
1344
+ interface CreateWebhookOptions {
1345
+ endpoint: string;
1346
+ events: WebhookEvent[];
1347
+ }
1348
+ interface CreateWebhookRequestOptions extends PostOptions {}
1349
+ interface CreateWebhookResponseSuccess {
1350
+ object: 'webhook';
1351
+ id: string;
1352
+ signing_secret: string;
1353
+ }
1354
+ type CreateWebhookResponse = Response<CreateWebhookResponseSuccess>;
1355
+ //#endregion
1356
+ //#region src/webhooks/interfaces/get-webhook.interface.d.ts
1357
+ interface GetWebhookResponseSuccess {
1358
+ object: 'webhook';
1359
+ id: string;
1360
+ created_at: string;
1361
+ status: 'enabled' | 'disabled';
1362
+ endpoint: string;
1363
+ events: WebhookEvent[] | null;
1364
+ signing_secret: string;
1365
+ }
1366
+ type GetWebhookResponse = Response<GetWebhookResponseSuccess>;
1367
+ //#endregion
1368
+ //#region src/webhooks/interfaces/list-webhooks.interface.d.ts
1369
+ type ListWebhooksOptions = PaginationOptions;
1370
+ interface Webhook {
1371
+ id: string;
1372
+ endpoint: string;
1373
+ created_at: string;
1374
+ status: 'enabled' | 'disabled';
1375
+ events: WebhookEvent[] | null;
1376
+ }
1377
+ type ListWebhooksResponseSuccess = {
1378
+ object: 'list';
1379
+ has_more: boolean;
1380
+ data: Webhook[];
1381
+ };
1382
+ type ListWebhooksResponse = Response<ListWebhooksResponseSuccess>;
1383
+ //#endregion
1384
+ //#region src/webhooks/interfaces/remove-webhook.interface.d.ts
1385
+ type RemoveWebhookResponseSuccess = Pick<Webhook, 'id'> & {
1386
+ object: 'webhook';
1387
+ deleted: boolean;
1388
+ };
1389
+ type RemoveWebhookResponse = Response<RemoveWebhookResponseSuccess>;
1390
+ //#endregion
1391
+ //#region src/webhooks/interfaces/update-webhook.interface.d.ts
1392
+ interface UpdateWebhookOptions {
1393
+ endpoint?: string;
1394
+ events?: WebhookEvent[];
1395
+ status?: 'enabled' | 'disabled';
1396
+ }
1397
+ interface UpdateWebhookResponseSuccess {
1398
+ object: 'webhook';
1399
+ id: string;
1400
+ }
1401
+ type UpdateWebhookResponse = Response<UpdateWebhookResponseSuccess>;
1402
+ //#endregion
1403
+ //#region src/webhooks/webhooks.d.ts
1404
+ interface Headers {
1405
+ id: string;
1406
+ timestamp: string;
1407
+ signature: string;
1408
+ }
1409
+ interface VerifyWebhookOptions {
1410
+ payload: string;
1411
+ headers: Headers;
1412
+ webhookSecret: string;
1413
+ }
1414
+ declare class Webhooks {
1415
+ private readonly resend;
1416
+ constructor(resend: Resend);
1417
+ create(payload: CreateWebhookOptions, options?: CreateWebhookRequestOptions): Promise<CreateWebhookResponse>;
1418
+ get(id: string): Promise<GetWebhookResponse>;
1419
+ list(options?: ListWebhooksOptions): Promise<ListWebhooksResponse>;
1420
+ update(id: string, payload: UpdateWebhookOptions): Promise<UpdateWebhookResponse>;
1421
+ remove(id: string): Promise<RemoveWebhookResponse>;
1422
+ verify(payload: VerifyWebhookOptions): unknown;
1423
+ }
1424
+ //#endregion
1425
+ //#region src/resend.d.ts
1426
+ declare class Resend {
1427
+ readonly key?: string | undefined;
1428
+ private readonly headers;
1429
+ readonly apiKeys: ApiKeys;
1430
+ readonly segments: Segments;
1431
+ /**
1432
+ * @deprecated Use segments instead
1433
+ */
1434
+ readonly audiences: Segments;
1435
+ readonly batch: Batch;
1436
+ readonly broadcasts: Broadcasts;
1437
+ readonly contacts: Contacts;
1438
+ readonly contactProperties: ContactProperties;
1439
+ readonly domains: Domains;
1440
+ readonly emails: Emails;
1441
+ readonly webhooks: Webhooks;
1442
+ readonly templates: Templates;
1443
+ readonly topics: Topics;
1444
+ constructor(key?: string | undefined);
1445
+ fetchRequest<T>(path: string, options?: {}): Promise<Response<T>>;
1446
+ post<T>(path: string, entity?: unknown, options?: PostOptions & IdempotentRequest): Promise<Response<T>>;
1447
+ get<T>(path: string, options?: GetOptions): Promise<Response<T>>;
1448
+ put<T>(path: string, entity: unknown, options?: PutOptions): Promise<Response<T>>;
1449
+ patch<T>(path: string, entity: unknown, options?: PatchOptions): Promise<Response<T>>;
1450
+ delete<T>(path: string, query?: unknown): Promise<Response<T>>;
1451
+ }
1452
+ //#endregion
1453
+ export { ApiKey, Attachment, Broadcast, CancelEmailResponse, CancelEmailResponseSuccess, Contact, CreateApiKeyOptions, CreateApiKeyRequestOptions, CreateApiKeyResponse, CreateApiKeyResponseSuccess, CreateBatchOptions, CreateBatchRequestOptions, CreateBatchResponse, CreateBatchSuccessResponse, CreateBroadcastOptions, CreateBroadcastRequestOptions, CreateBroadcastResponse, CreateBroadcastResponseSuccess, CreateContactOptions, CreateContactRequestOptions, CreateContactResponse, CreateContactResponseSuccess, CreateDomainOptions, CreateDomainRequestOptions, CreateDomainResponse, CreateDomainResponseSuccess, CreateEmailOptions, CreateEmailRequestOptions, CreateEmailResponse, CreateEmailResponseSuccess, CreateSegmentOptions, CreateSegmentRequestOptions, CreateSegmentResponse, CreateSegmentResponseSuccess, CreateWebhookOptions, CreateWebhookRequestOptions, CreateWebhookResponse, CreateWebhookResponseSuccess, Domain, DomainApiOptions, DomainCapabilities, DomainCapabilityStatus, DomainDkimRecord, DomainNameservers, DomainRecords, DomainRegion, DomainSpfRecord, DomainStatus, EmailApiAttachment, EmailApiOptions, type ErrorResponse, GetAttachmentOptions, GetAttachmentResponse, GetAttachmentResponseSuccess, GetBroadcastResponse, GetBroadcastResponseSuccess, GetContactOptions, GetContactResponse, GetContactResponseSuccess, GetDomainResponse, GetDomainResponseSuccess, GetEmailResponse, GetEmailResponseSuccess, GetOptions, GetReceivingEmailResponse, GetReceivingEmailResponseSuccess, GetSegmentResponse, GetSegmentResponseSuccess, GetWebhookResponse, GetWebhookResponseSuccess, IdempotentRequest, ListApiKeysOptions, ListApiKeysResponse, ListApiKeysResponseSuccess, ListAttachmentsApiResponse, ListAttachmentsOptions, ListAttachmentsResponse, ListAttachmentsResponseSuccess, ListBroadcastsOptions, ListBroadcastsResponse, ListBroadcastsResponseSuccess, ListContactsOptions, ListContactsResponse, ListContactsResponseSuccess, ListDomainsOptions, ListDomainsResponse, ListDomainsResponseSuccess, ListReceivingEmail, ListReceivingEmailsOptions, ListReceivingEmailsResponse, ListReceivingEmailsResponseSuccess, ListSegmentsOptions, ListSegmentsResponse, ListSegmentsResponseSuccess, ListWebhooksOptions, ListWebhooksResponse, ListWebhooksResponseSuccess, PaginatedData, PaginationOptions, PatchOptions, PostOptions, PutOptions, ReceivingRecord, RemoveApiKeyResponse, RemoveApiKeyResponseSuccess, RemoveBroadcastResponse, RemoveBroadcastResponseSuccess, RemoveContactOptions, RemoveContactsResponse, RemoveContactsResponseSuccess, RemoveDomainsResponse, RemoveDomainsResponseSuccess, RemoveSegmentResponse, RemoveSegmentResponseSuccess, RemoveWebhookResponse, RemoveWebhookResponseSuccess, RequireAtLeastOne, Resend, type Response, Segment, SelectingField, SendBroadcastOptions, SendBroadcastRequestOptions, SendBroadcastResponse, SendBroadcastResponseSuccess, Tag, UpdateBroadcastOptions, UpdateBroadcastResponse, UpdateBroadcastResponseSuccess, UpdateContactOptions, UpdateContactResponse, UpdateContactResponseSuccess, UpdateDomainsOptions, UpdateDomainsResponse, UpdateDomainsResponseSuccess, UpdateEmailOptions, UpdateEmailResponse, UpdateEmailResponseSuccess, UpdateWebhookOptions, UpdateWebhookResponse, UpdateWebhookResponseSuccess, VerifyDomainsResponse, VerifyDomainsResponseSuccess, Webhook, WebhookEvent };