samva 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +51 -6
  3. package/dist/{categories-DvsHUJtX.js → categories-BGUBFdH9.js} +13 -1
  4. package/dist/client/sdk.gen.d.ts +130 -32
  5. package/dist/client/types.gen.d.ts +979 -168
  6. package/dist/{client-Cj1bqIEe.js → client-CZjhOKPM.js} +898 -177
  7. package/dist/effect/analytics.d.ts +6 -6
  8. package/dist/effect/analytics.js +1 -1
  9. package/dist/effect/api-keys.d.ts +20 -20
  10. package/dist/effect/api-keys.js +1 -1
  11. package/dist/effect/attachments.js +1 -1
  12. package/dist/effect/brands.js +2 -2
  13. package/dist/effect/campaigns.d.ts +13 -13
  14. package/dist/effect/campaigns.js +1 -1
  15. package/dist/effect/categories.js +1 -1
  16. package/dist/effect/client.js +1 -1
  17. package/dist/effect/contact-groups.d.ts +9 -12
  18. package/dist/effect/contact-groups.js +1 -1
  19. package/dist/effect/contacts.d.ts +161 -76
  20. package/dist/effect/contacts.js +1 -1
  21. package/dist/effect/conversations.d.ts +20 -20
  22. package/dist/effect/conversations.js +1 -1
  23. package/dist/effect/custom-fields.d.ts +1 -1
  24. package/dist/effect/custom-fields.js +1 -1
  25. package/dist/effect/email.d.ts +27 -27
  26. package/dist/effect/email.js +2 -2
  27. package/dist/effect/extension-installations.d.ts +68 -2
  28. package/dist/effect/extension-installations.js +5 -3
  29. package/dist/effect/extensions.d.ts +3 -3
  30. package/dist/effect/extensions.js +1 -1
  31. package/dist/effect/feedback.d.ts +1 -1
  32. package/dist/effect/feedback.js +2 -2
  33. package/dist/effect/generated-metadata.d.ts +12 -0
  34. package/dist/effect/generated.d.ts +6502 -906
  35. package/dist/effect/index.d.ts +3 -1
  36. package/dist/effect/index.js +6 -4
  37. package/dist/effect/internal/client.d.ts +16 -2
  38. package/dist/effect/internal/operation.d.ts +14 -11
  39. package/dist/effect/mailboxes.d.ts +1725 -108
  40. package/dist/effect/mailboxes.js +3 -3
  41. package/dist/effect/media.d.ts +1 -1
  42. package/dist/effect/media.js +1 -1
  43. package/dist/effect/messages.d.ts +21 -19
  44. package/dist/effect/messages.js +1 -1
  45. package/dist/effect/namespaces.js +1 -1
  46. package/dist/effect/operations.d.ts +6 -6
  47. package/dist/effect/operations.js +1 -1
  48. package/dist/effect/organizations.d.ts +30 -0
  49. package/dist/effect/organizations.js +4 -2
  50. package/dist/effect/retry.js +1 -1
  51. package/dist/effect/scheduled-messages.d.ts +7 -7
  52. package/dist/effect/scheduled-messages.js +1 -1
  53. package/dist/effect/subscriptions.d.ts +15 -0
  54. package/dist/effect/subscriptions.js +9 -0
  55. package/dist/effect/templates.d.ts +52 -14
  56. package/dist/effect/templates.js +5 -3
  57. package/dist/effect/unsubscribe-groups.d.ts +1 -1
  58. package/dist/effect/unsubscribe-groups.js +1 -1
  59. package/dist/effect/webhooks.d.ts +15 -15
  60. package/dist/effect/webhooks.js +2 -2
  61. package/dist/index.js +4 -3
  62. package/dist/inline-attachments-BrNnSMF2.js +121 -0
  63. package/dist/inline-attachments.d.ts +65 -0
  64. package/dist/{mailbox-events-CsbF35vH.js → mailbox-events-VKR4f3qq.js} +6 -4
  65. package/dist/mailbox-events.d.ts +1 -1
  66. package/dist/{mailboxes-BtcktcNB.js → mailboxes-DT02zP7q.js} +13 -5
  67. package/dist/{operation-BEghYyLu.js → operation-g8nAzmIM.js} +63 -3
  68. package/dist/promises/errors.gen.d.ts +38 -2
  69. package/dist/promises/index.d.ts +7 -4
  70. package/dist/promises/index.js +4 -3
  71. package/dist/promises/types.gen.d.ts +1 -1
  72. package/dist/{promises-BzrwhHEW.js → promises-BFRKhpSS.js} +1070 -49
  73. package/dist/service-map.d.ts +40 -0
  74. package/package.json +7 -2
  75. package/dist/client-attribution-BTWYSXxo.js +0 -9
@@ -222,13 +222,13 @@ export declare const getAgentActivity: (input: {
222
222
  readonly count: number;
223
223
  }[];
224
224
  readonly byState: readonly {
225
- readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
225
+ readonly state: "accepted" | "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "completed" | "executed" | "executing" | "failed" | "notSent" | "policyDenied" | "proposed" | "queued" | "uncertain";
226
226
  readonly count: number;
227
227
  }[];
228
228
  };
229
229
  readonly events: {
230
230
  readonly byType: readonly {
231
- readonly type: "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "draft.created" | "draft.updated" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created" | "thread.updated";
231
+ readonly type: "action.accepted" | "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created";
232
232
  readonly count: number;
233
233
  }[];
234
234
  };
@@ -289,8 +289,8 @@ export declare const listGrants: ((input: {
289
289
  export declare const createGrant: (input: {
290
290
  readonly id: string;
291
291
  readonly userId: string;
292
- readonly role: string;
293
- readonly sendMode?: string | null | undefined;
292
+ readonly role: "admin" | "collaborator" | "viewer";
293
+ readonly sendMode?: "approval" | "send" | null | undefined;
294
294
  }) => import("effect/Effect").Effect<{
295
295
  readonly id: string & import("effect/Brand").Brand<"MailboxGrantId">;
296
296
  readonly actor: {
@@ -305,8 +305,8 @@ export declare const createGrant: (input: {
305
305
  export declare const updateGrant: (input: {
306
306
  readonly id: string;
307
307
  readonly grantId: string;
308
- readonly role?: string | null | undefined;
309
- readonly sendMode?: string | null | undefined;
308
+ readonly role?: "admin" | "collaborator" | "viewer" | null | undefined;
309
+ readonly sendMode?: "approval" | "send" | null | undefined;
310
310
  }) => import("effect/Effect").Effect<{
311
311
  readonly id: string & import("effect/Brand").Brand<"MailboxGrantId">;
312
312
  readonly actor: {
@@ -340,7 +340,7 @@ export declare const listPolicies: (input: {
340
340
  export declare const createPolicy: (input: {
341
341
  readonly id: string;
342
342
  readonly name: string;
343
- readonly outcome: string;
343
+ readonly outcome: "deny" | "requireApproval";
344
344
  readonly reason?: string | null | undefined;
345
345
  readonly enabled?: boolean | null | undefined;
346
346
  }) => import("effect/Effect").Effect<{
@@ -368,7 +368,7 @@ export declare const updatePolicy: (input: {
368
368
  readonly id: string;
369
369
  readonly policyId: string;
370
370
  readonly name?: string | null | undefined;
371
- readonly outcome?: string | null | undefined;
371
+ readonly outcome?: "deny" | "requireApproval" | null | undefined;
372
372
  readonly reason?: string | null | undefined;
373
373
  readonly enabled?: boolean | null | undefined;
374
374
  }) => import("effect/Effect").Effect<{
@@ -411,7 +411,7 @@ export declare const createLabel: (input: {
411
411
  readonly id: string;
412
412
  readonly slug: string;
413
413
  readonly displayName: string;
414
- readonly color?: string | null | undefined;
414
+ readonly color?: "agent" | "billing" | "domain" | "important" | "neutral" | "routing" | null | undefined;
415
415
  }) => import("effect/Effect").Effect<{
416
416
  readonly id: string & import("effect/Brand").Brand<"MailboxLabelId">;
417
417
  readonly slug: string;
@@ -424,7 +424,7 @@ export declare const updateLabel: (input: {
424
424
  readonly id: string;
425
425
  readonly labelId: string;
426
426
  readonly displayName?: string | null | undefined;
427
- readonly color?: string | null | undefined;
427
+ readonly color?: "agent" | "billing" | "domain" | "important" | "neutral" | "routing" | null | undefined;
428
428
  }) => import("effect/Effect").Effect<{
429
429
  readonly id: string & import("effect/Brand").Brand<"MailboxLabelId">;
430
430
  readonly slug: string;
@@ -446,11 +446,11 @@ export declare const listThreads: ((input: {
446
446
  readonly after?: string | null | undefined;
447
447
  readonly before?: string | null | undefined;
448
448
  readonly q?: string | null | undefined;
449
- readonly folder?: string | null | undefined;
449
+ readonly folder?: "archived" | "assigned" | "inbox" | "pending" | "sent" | "trash" | null | undefined;
450
450
  readonly label?: string | null | undefined;
451
- readonly unread?: string | null | undefined;
452
- readonly starred?: string | null | undefined;
453
- readonly snoozed?: string | null | undefined;
451
+ readonly unread?: "false" | "true" | null | undefined;
452
+ readonly starred?: "false" | "true" | null | undefined;
453
+ readonly snoozed?: "false" | "true" | null | undefined;
454
454
  }) => import("effect/Effect").Effect<{
455
455
  readonly items: readonly {
456
456
  readonly id: string & import("effect/Brand").Brand<"MailboxThreadId">;
@@ -480,11 +480,11 @@ export declare const listThreads: ((input: {
480
480
  readonly after?: string | null | undefined;
481
481
  readonly before?: string | null | undefined;
482
482
  readonly q?: string | null | undefined;
483
- readonly folder?: string | null | undefined;
483
+ readonly folder?: "archived" | "assigned" | "inbox" | "pending" | "sent" | "trash" | null | undefined;
484
484
  readonly label?: string | null | undefined;
485
- readonly unread?: string | null | undefined;
486
- readonly starred?: string | null | undefined;
487
- readonly snoozed?: string | null | undefined;
485
+ readonly unread?: "false" | "true" | null | undefined;
486
+ readonly starred?: "false" | "true" | null | undefined;
487
+ readonly snoozed?: "false" | "true" | null | undefined;
488
488
  }) => import("effect/Stream").Stream<{
489
489
  readonly items: readonly {
490
490
  readonly id: string & import("effect/Brand").Brand<"MailboxThreadId">;
@@ -514,11 +514,11 @@ export declare const listThreads: ((input: {
514
514
  readonly after?: string | null | undefined;
515
515
  readonly before?: string | null | undefined;
516
516
  readonly q?: string | null | undefined;
517
- readonly folder?: string | null | undefined;
517
+ readonly folder?: "archived" | "assigned" | "inbox" | "pending" | "sent" | "trash" | null | undefined;
518
518
  readonly label?: string | null | undefined;
519
- readonly unread?: string | null | undefined;
520
- readonly starred?: string | null | undefined;
521
- readonly snoozed?: string | null | undefined;
519
+ readonly unread?: "false" | "true" | null | undefined;
520
+ readonly starred?: "false" | "true" | null | undefined;
521
+ readonly snoozed?: "false" | "true" | null | undefined;
522
522
  }) => import("effect/Stream").Stream<{
523
523
  readonly id: string & import("effect/Brand").Brand<"MailboxThreadId">;
524
524
  readonly subject: string | null;
@@ -575,8 +575,8 @@ export declare const getThread: (input: {
575
575
  export declare const updateThread: (input: {
576
576
  readonly id: string;
577
577
  readonly threadId: string;
578
- readonly folder?: string | null | undefined;
579
- readonly priority?: string | null | undefined;
578
+ readonly folder?: "archived" | "assigned" | "inbox" | "pending" | "sent" | "trash" | null | undefined;
579
+ readonly priority?: "high" | "low" | "normal" | "urgent" | null | undefined;
580
580
  readonly read?: boolean | null | undefined;
581
581
  readonly starred?: boolean | null | undefined;
582
582
  readonly snoozedUntil?: string | null | undefined;
@@ -999,18 +999,141 @@ export declare const sendMessage: (input: {
999
999
  readonly idempotencyKey?: string | undefined;
1000
1000
  }) => import("effect/Effect").Effect<{
1001
1001
  readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1002
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1002
1003
  readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1003
- readonly threadId: string & import("effect/Brand").Brand<"MailboxThreadId">;
1004
- readonly status: "pending_approval" | "sent";
1005
- readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "sending-paused" | "upstream-unavailable" | null;
1004
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1005
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1006
+ readonly acceptedAt: string | null;
1007
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1006
1008
  readonly reviewExpectedAt: string | null;
1007
1009
  readonly skippedRecipients: readonly {
1008
1010
  readonly address: string;
1009
1011
  readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1010
1012
  readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1011
1013
  }[];
1014
+ readonly executeUntil: string | null;
1015
+ readonly retryAt: string | null;
1016
+ readonly problem: {
1017
+ readonly code: string;
1018
+ readonly message: string;
1019
+ readonly error?: {
1020
+ readonly _tag: "SenderNotReadyError";
1021
+ readonly message: string;
1022
+ readonly sender: string;
1023
+ readonly retryAfterSeconds?: number | null;
1024
+ } | {
1025
+ readonly _tag: "RateLimitedError";
1026
+ readonly message: string;
1027
+ readonly retryAfterSeconds: number;
1028
+ } | {
1029
+ readonly _tag: "OnboardingReviewRequiredError";
1030
+ readonly message: string;
1031
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1032
+ readonly decision: "approved" | "rejected" | "undecided";
1033
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1034
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1035
+ readonly identityId?: string | null;
1036
+ } | {
1037
+ readonly _tag: "PaymentRequiredError";
1038
+ readonly message: string;
1039
+ readonly resource: string;
1040
+ readonly currentUsage: number;
1041
+ readonly limit: number;
1042
+ } | {
1043
+ readonly _tag: "ValidationError";
1044
+ readonly message: string;
1045
+ readonly fields?: {
1046
+ readonly [x: string]: readonly string[];
1047
+ } | null;
1048
+ } | {
1049
+ readonly _tag: "ForbiddenError";
1050
+ readonly message: string;
1051
+ } | {
1052
+ readonly _tag: "ResourceNotFoundError";
1053
+ readonly resource: string;
1054
+ readonly id: string;
1055
+ readonly message: string;
1056
+ } | null;
1057
+ } | null;
1058
+ readonly retryEligible: boolean;
1059
+ readonly decision: {
1060
+ readonly outcome: "allow" | "deny" | "requireApproval";
1061
+ readonly reason: string | null;
1062
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1063
+ readonly source: "grant" | "installation" | "policy" | null;
1064
+ readonly decidedAt: string;
1065
+ } | null;
1012
1066
  readonly createdAt: string;
1013
- }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1067
+ readonly updatedAt: string;
1068
+ } | {
1069
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1070
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1071
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1072
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1073
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1074
+ readonly acceptedAt: string | null;
1075
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1076
+ readonly reviewExpectedAt: string | null;
1077
+ readonly skippedRecipients: readonly {
1078
+ readonly address: string;
1079
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1080
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1081
+ }[];
1082
+ readonly executeUntil: string | null;
1083
+ readonly retryAt: string | null;
1084
+ readonly problem: {
1085
+ readonly code: string;
1086
+ readonly message: string;
1087
+ readonly error?: {
1088
+ readonly _tag: "SenderNotReadyError";
1089
+ readonly message: string;
1090
+ readonly sender: string;
1091
+ readonly retryAfterSeconds?: number | null;
1092
+ } | {
1093
+ readonly _tag: "RateLimitedError";
1094
+ readonly message: string;
1095
+ readonly retryAfterSeconds: number;
1096
+ } | {
1097
+ readonly _tag: "OnboardingReviewRequiredError";
1098
+ readonly message: string;
1099
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1100
+ readonly decision: "approved" | "rejected" | "undecided";
1101
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1102
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1103
+ readonly identityId?: string | null;
1104
+ } | {
1105
+ readonly _tag: "PaymentRequiredError";
1106
+ readonly message: string;
1107
+ readonly resource: string;
1108
+ readonly currentUsage: number;
1109
+ readonly limit: number;
1110
+ } | {
1111
+ readonly _tag: "ValidationError";
1112
+ readonly message: string;
1113
+ readonly fields?: {
1114
+ readonly [x: string]: readonly string[];
1115
+ } | null;
1116
+ } | {
1117
+ readonly _tag: "ForbiddenError";
1118
+ readonly message: string;
1119
+ } | {
1120
+ readonly _tag: "ResourceNotFoundError";
1121
+ readonly resource: string;
1122
+ readonly id: string;
1123
+ readonly message: string;
1124
+ } | null;
1125
+ } | null;
1126
+ readonly retryEligible: boolean;
1127
+ readonly decision: {
1128
+ readonly outcome: "allow" | "deny" | "requireApproval";
1129
+ readonly reason: string | null;
1130
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1131
+ readonly source: "grant" | "installation" | "policy" | null;
1132
+ readonly decidedAt: string;
1133
+ } | null;
1134
+ readonly createdAt: string;
1135
+ readonly updatedAt: string;
1136
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1014
1137
  export declare const getMessage: (input: {
1015
1138
  readonly id: string;
1016
1139
  readonly messageId: string;
@@ -1082,6 +1205,17 @@ export declare const getMessageAttachment: (input: {
1082
1205
  readonly url: string;
1083
1206
  readonly expiresAt: string;
1084
1207
  }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1208
+ export declare const copyMessageAttachment: (input: {
1209
+ readonly id: string;
1210
+ readonly messageId: string;
1211
+ readonly attachmentId: string;
1212
+ }) => import("effect/Effect").Effect<{
1213
+ readonly filename: string;
1214
+ readonly content?: string | null;
1215
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
1216
+ readonly contentType: string;
1217
+ readonly size: number;
1218
+ }, import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1085
1219
  export declare const reply: (input: {
1086
1220
  readonly id: string;
1087
1221
  readonly messageId: string;
@@ -1100,18 +1234,141 @@ export declare const reply: (input: {
1100
1234
  readonly idempotencyKey?: string | undefined;
1101
1235
  }) => import("effect/Effect").Effect<{
1102
1236
  readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1237
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1103
1238
  readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1104
- readonly threadId: string & import("effect/Brand").Brand<"MailboxThreadId">;
1105
- readonly status: "pending_approval" | "sent";
1106
- readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "sending-paused" | "upstream-unavailable" | null;
1239
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1240
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1241
+ readonly acceptedAt: string | null;
1242
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1107
1243
  readonly reviewExpectedAt: string | null;
1108
1244
  readonly skippedRecipients: readonly {
1109
1245
  readonly address: string;
1110
1246
  readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1111
1247
  readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1112
1248
  }[];
1249
+ readonly executeUntil: string | null;
1250
+ readonly retryAt: string | null;
1251
+ readonly problem: {
1252
+ readonly code: string;
1253
+ readonly message: string;
1254
+ readonly error?: {
1255
+ readonly _tag: "SenderNotReadyError";
1256
+ readonly message: string;
1257
+ readonly sender: string;
1258
+ readonly retryAfterSeconds?: number | null;
1259
+ } | {
1260
+ readonly _tag: "RateLimitedError";
1261
+ readonly message: string;
1262
+ readonly retryAfterSeconds: number;
1263
+ } | {
1264
+ readonly _tag: "OnboardingReviewRequiredError";
1265
+ readonly message: string;
1266
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1267
+ readonly decision: "approved" | "rejected" | "undecided";
1268
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1269
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1270
+ readonly identityId?: string | null;
1271
+ } | {
1272
+ readonly _tag: "PaymentRequiredError";
1273
+ readonly message: string;
1274
+ readonly resource: string;
1275
+ readonly currentUsage: number;
1276
+ readonly limit: number;
1277
+ } | {
1278
+ readonly _tag: "ValidationError";
1279
+ readonly message: string;
1280
+ readonly fields?: {
1281
+ readonly [x: string]: readonly string[];
1282
+ } | null;
1283
+ } | {
1284
+ readonly _tag: "ForbiddenError";
1285
+ readonly message: string;
1286
+ } | {
1287
+ readonly _tag: "ResourceNotFoundError";
1288
+ readonly resource: string;
1289
+ readonly id: string;
1290
+ readonly message: string;
1291
+ } | null;
1292
+ } | null;
1293
+ readonly retryEligible: boolean;
1294
+ readonly decision: {
1295
+ readonly outcome: "allow" | "deny" | "requireApproval";
1296
+ readonly reason: string | null;
1297
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1298
+ readonly source: "grant" | "installation" | "policy" | null;
1299
+ readonly decidedAt: string;
1300
+ } | null;
1113
1301
  readonly createdAt: string;
1114
- }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1302
+ readonly updatedAt: string;
1303
+ } | {
1304
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1305
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1306
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1307
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1308
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1309
+ readonly acceptedAt: string | null;
1310
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1311
+ readonly reviewExpectedAt: string | null;
1312
+ readonly skippedRecipients: readonly {
1313
+ readonly address: string;
1314
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1315
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1316
+ }[];
1317
+ readonly executeUntil: string | null;
1318
+ readonly retryAt: string | null;
1319
+ readonly problem: {
1320
+ readonly code: string;
1321
+ readonly message: string;
1322
+ readonly error?: {
1323
+ readonly _tag: "SenderNotReadyError";
1324
+ readonly message: string;
1325
+ readonly sender: string;
1326
+ readonly retryAfterSeconds?: number | null;
1327
+ } | {
1328
+ readonly _tag: "RateLimitedError";
1329
+ readonly message: string;
1330
+ readonly retryAfterSeconds: number;
1331
+ } | {
1332
+ readonly _tag: "OnboardingReviewRequiredError";
1333
+ readonly message: string;
1334
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1335
+ readonly decision: "approved" | "rejected" | "undecided";
1336
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1337
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1338
+ readonly identityId?: string | null;
1339
+ } | {
1340
+ readonly _tag: "PaymentRequiredError";
1341
+ readonly message: string;
1342
+ readonly resource: string;
1343
+ readonly currentUsage: number;
1344
+ readonly limit: number;
1345
+ } | {
1346
+ readonly _tag: "ValidationError";
1347
+ readonly message: string;
1348
+ readonly fields?: {
1349
+ readonly [x: string]: readonly string[];
1350
+ } | null;
1351
+ } | {
1352
+ readonly _tag: "ForbiddenError";
1353
+ readonly message: string;
1354
+ } | {
1355
+ readonly _tag: "ResourceNotFoundError";
1356
+ readonly resource: string;
1357
+ readonly id: string;
1358
+ readonly message: string;
1359
+ } | null;
1360
+ } | null;
1361
+ readonly retryEligible: boolean;
1362
+ readonly decision: {
1363
+ readonly outcome: "allow" | "deny" | "requireApproval";
1364
+ readonly reason: string | null;
1365
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1366
+ readonly source: "grant" | "installation" | "policy" | null;
1367
+ readonly decidedAt: string;
1368
+ } | null;
1369
+ readonly createdAt: string;
1370
+ readonly updatedAt: string;
1371
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1115
1372
  export declare const replyAll: (input: {
1116
1373
  readonly id: string;
1117
1374
  readonly messageId: string;
@@ -1130,18 +1387,141 @@ export declare const replyAll: (input: {
1130
1387
  readonly idempotencyKey?: string | undefined;
1131
1388
  }) => import("effect/Effect").Effect<{
1132
1389
  readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1390
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1133
1391
  readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1134
- readonly threadId: string & import("effect/Brand").Brand<"MailboxThreadId">;
1135
- readonly status: "pending_approval" | "sent";
1136
- readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "sending-paused" | "upstream-unavailable" | null;
1392
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1393
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1394
+ readonly acceptedAt: string | null;
1395
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1396
+ readonly reviewExpectedAt: string | null;
1397
+ readonly skippedRecipients: readonly {
1398
+ readonly address: string;
1399
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1400
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1401
+ }[];
1402
+ readonly executeUntil: string | null;
1403
+ readonly retryAt: string | null;
1404
+ readonly problem: {
1405
+ readonly code: string;
1406
+ readonly message: string;
1407
+ readonly error?: {
1408
+ readonly _tag: "SenderNotReadyError";
1409
+ readonly message: string;
1410
+ readonly sender: string;
1411
+ readonly retryAfterSeconds?: number | null;
1412
+ } | {
1413
+ readonly _tag: "RateLimitedError";
1414
+ readonly message: string;
1415
+ readonly retryAfterSeconds: number;
1416
+ } | {
1417
+ readonly _tag: "OnboardingReviewRequiredError";
1418
+ readonly message: string;
1419
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1420
+ readonly decision: "approved" | "rejected" | "undecided";
1421
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1422
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1423
+ readonly identityId?: string | null;
1424
+ } | {
1425
+ readonly _tag: "PaymentRequiredError";
1426
+ readonly message: string;
1427
+ readonly resource: string;
1428
+ readonly currentUsage: number;
1429
+ readonly limit: number;
1430
+ } | {
1431
+ readonly _tag: "ValidationError";
1432
+ readonly message: string;
1433
+ readonly fields?: {
1434
+ readonly [x: string]: readonly string[];
1435
+ } | null;
1436
+ } | {
1437
+ readonly _tag: "ForbiddenError";
1438
+ readonly message: string;
1439
+ } | {
1440
+ readonly _tag: "ResourceNotFoundError";
1441
+ readonly resource: string;
1442
+ readonly id: string;
1443
+ readonly message: string;
1444
+ } | null;
1445
+ } | null;
1446
+ readonly retryEligible: boolean;
1447
+ readonly decision: {
1448
+ readonly outcome: "allow" | "deny" | "requireApproval";
1449
+ readonly reason: string | null;
1450
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1451
+ readonly source: "grant" | "installation" | "policy" | null;
1452
+ readonly decidedAt: string;
1453
+ } | null;
1454
+ readonly createdAt: string;
1455
+ readonly updatedAt: string;
1456
+ } | {
1457
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1458
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1459
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1460
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1461
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1462
+ readonly acceptedAt: string | null;
1463
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1137
1464
  readonly reviewExpectedAt: string | null;
1138
1465
  readonly skippedRecipients: readonly {
1139
1466
  readonly address: string;
1140
1467
  readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1141
1468
  readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1142
1469
  }[];
1470
+ readonly executeUntil: string | null;
1471
+ readonly retryAt: string | null;
1472
+ readonly problem: {
1473
+ readonly code: string;
1474
+ readonly message: string;
1475
+ readonly error?: {
1476
+ readonly _tag: "SenderNotReadyError";
1477
+ readonly message: string;
1478
+ readonly sender: string;
1479
+ readonly retryAfterSeconds?: number | null;
1480
+ } | {
1481
+ readonly _tag: "RateLimitedError";
1482
+ readonly message: string;
1483
+ readonly retryAfterSeconds: number;
1484
+ } | {
1485
+ readonly _tag: "OnboardingReviewRequiredError";
1486
+ readonly message: string;
1487
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1488
+ readonly decision: "approved" | "rejected" | "undecided";
1489
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1490
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1491
+ readonly identityId?: string | null;
1492
+ } | {
1493
+ readonly _tag: "PaymentRequiredError";
1494
+ readonly message: string;
1495
+ readonly resource: string;
1496
+ readonly currentUsage: number;
1497
+ readonly limit: number;
1498
+ } | {
1499
+ readonly _tag: "ValidationError";
1500
+ readonly message: string;
1501
+ readonly fields?: {
1502
+ readonly [x: string]: readonly string[];
1503
+ } | null;
1504
+ } | {
1505
+ readonly _tag: "ForbiddenError";
1506
+ readonly message: string;
1507
+ } | {
1508
+ readonly _tag: "ResourceNotFoundError";
1509
+ readonly resource: string;
1510
+ readonly id: string;
1511
+ readonly message: string;
1512
+ } | null;
1513
+ } | null;
1514
+ readonly retryEligible: boolean;
1515
+ readonly decision: {
1516
+ readonly outcome: "allow" | "deny" | "requireApproval";
1517
+ readonly reason: string | null;
1518
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1519
+ readonly source: "grant" | "installation" | "policy" | null;
1520
+ readonly decidedAt: string;
1521
+ } | null;
1143
1522
  readonly createdAt: string;
1144
- }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1523
+ readonly updatedAt: string;
1524
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1145
1525
  export declare const forward: (input: {
1146
1526
  readonly id: string;
1147
1527
  readonly messageId: string;
@@ -1161,18 +1541,141 @@ export declare const forward: (input: {
1161
1541
  readonly idempotencyKey?: string | undefined;
1162
1542
  }) => import("effect/Effect").Effect<{
1163
1543
  readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1544
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1164
1545
  readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1165
- readonly threadId: string & import("effect/Brand").Brand<"MailboxThreadId">;
1166
- readonly status: "pending_approval" | "sent";
1167
- readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "sending-paused" | "upstream-unavailable" | null;
1546
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1547
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1548
+ readonly acceptedAt: string | null;
1549
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1550
+ readonly reviewExpectedAt: string | null;
1551
+ readonly skippedRecipients: readonly {
1552
+ readonly address: string;
1553
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1554
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1555
+ }[];
1556
+ readonly executeUntil: string | null;
1557
+ readonly retryAt: string | null;
1558
+ readonly problem: {
1559
+ readonly code: string;
1560
+ readonly message: string;
1561
+ readonly error?: {
1562
+ readonly _tag: "SenderNotReadyError";
1563
+ readonly message: string;
1564
+ readonly sender: string;
1565
+ readonly retryAfterSeconds?: number | null;
1566
+ } | {
1567
+ readonly _tag: "RateLimitedError";
1568
+ readonly message: string;
1569
+ readonly retryAfterSeconds: number;
1570
+ } | {
1571
+ readonly _tag: "OnboardingReviewRequiredError";
1572
+ readonly message: string;
1573
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1574
+ readonly decision: "approved" | "rejected" | "undecided";
1575
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1576
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1577
+ readonly identityId?: string | null;
1578
+ } | {
1579
+ readonly _tag: "PaymentRequiredError";
1580
+ readonly message: string;
1581
+ readonly resource: string;
1582
+ readonly currentUsage: number;
1583
+ readonly limit: number;
1584
+ } | {
1585
+ readonly _tag: "ValidationError";
1586
+ readonly message: string;
1587
+ readonly fields?: {
1588
+ readonly [x: string]: readonly string[];
1589
+ } | null;
1590
+ } | {
1591
+ readonly _tag: "ForbiddenError";
1592
+ readonly message: string;
1593
+ } | {
1594
+ readonly _tag: "ResourceNotFoundError";
1595
+ readonly resource: string;
1596
+ readonly id: string;
1597
+ readonly message: string;
1598
+ } | null;
1599
+ } | null;
1600
+ readonly retryEligible: boolean;
1601
+ readonly decision: {
1602
+ readonly outcome: "allow" | "deny" | "requireApproval";
1603
+ readonly reason: string | null;
1604
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1605
+ readonly source: "grant" | "installation" | "policy" | null;
1606
+ readonly decidedAt: string;
1607
+ } | null;
1608
+ readonly createdAt: string;
1609
+ readonly updatedAt: string;
1610
+ } | {
1611
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1612
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1613
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1614
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1615
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1616
+ readonly acceptedAt: string | null;
1617
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1168
1618
  readonly reviewExpectedAt: string | null;
1169
1619
  readonly skippedRecipients: readonly {
1170
1620
  readonly address: string;
1171
1621
  readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1172
1622
  readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1173
1623
  }[];
1624
+ readonly executeUntil: string | null;
1625
+ readonly retryAt: string | null;
1626
+ readonly problem: {
1627
+ readonly code: string;
1628
+ readonly message: string;
1629
+ readonly error?: {
1630
+ readonly _tag: "SenderNotReadyError";
1631
+ readonly message: string;
1632
+ readonly sender: string;
1633
+ readonly retryAfterSeconds?: number | null;
1634
+ } | {
1635
+ readonly _tag: "RateLimitedError";
1636
+ readonly message: string;
1637
+ readonly retryAfterSeconds: number;
1638
+ } | {
1639
+ readonly _tag: "OnboardingReviewRequiredError";
1640
+ readonly message: string;
1641
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1642
+ readonly decision: "approved" | "rejected" | "undecided";
1643
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1644
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1645
+ readonly identityId?: string | null;
1646
+ } | {
1647
+ readonly _tag: "PaymentRequiredError";
1648
+ readonly message: string;
1649
+ readonly resource: string;
1650
+ readonly currentUsage: number;
1651
+ readonly limit: number;
1652
+ } | {
1653
+ readonly _tag: "ValidationError";
1654
+ readonly message: string;
1655
+ readonly fields?: {
1656
+ readonly [x: string]: readonly string[];
1657
+ } | null;
1658
+ } | {
1659
+ readonly _tag: "ForbiddenError";
1660
+ readonly message: string;
1661
+ } | {
1662
+ readonly _tag: "ResourceNotFoundError";
1663
+ readonly resource: string;
1664
+ readonly id: string;
1665
+ readonly message: string;
1666
+ } | null;
1667
+ } | null;
1668
+ readonly retryEligible: boolean;
1669
+ readonly decision: {
1670
+ readonly outcome: "allow" | "deny" | "requireApproval";
1671
+ readonly reason: string | null;
1672
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
1673
+ readonly source: "grant" | "installation" | "policy" | null;
1674
+ readonly decidedAt: string;
1675
+ } | null;
1174
1676
  readonly createdAt: string;
1175
- }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1677
+ readonly updatedAt: string;
1678
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1176
1679
  export declare const listQuarantine: ((input: {
1177
1680
  readonly id: string;
1178
1681
  readonly limit?: string | null | undefined;
@@ -1294,7 +1797,8 @@ export declare const listDrafts: ((input: {
1294
1797
  readonly id: string & import("effect/Brand").Brand<"MailboxDraftId">;
1295
1798
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1296
1799
  readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1297
- readonly state: "approvalPending" | "saved" | "sent";
1800
+ readonly state: "locked" | "saved" | "sent";
1801
+ readonly lockedByActionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1298
1802
  readonly to: readonly string[];
1299
1803
  readonly subject: string | null;
1300
1804
  readonly createdAt: string;
@@ -1312,7 +1816,8 @@ export declare const listDrafts: ((input: {
1312
1816
  readonly id: string & import("effect/Brand").Brand<"MailboxDraftId">;
1313
1817
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1314
1818
  readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1315
- readonly state: "approvalPending" | "saved" | "sent";
1819
+ readonly state: "locked" | "saved" | "sent";
1820
+ readonly lockedByActionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1316
1821
  readonly to: readonly string[];
1317
1822
  readonly subject: string | null;
1318
1823
  readonly createdAt: string;
@@ -1329,7 +1834,8 @@ export declare const listDrafts: ((input: {
1329
1834
  readonly id: string & import("effect/Brand").Brand<"MailboxDraftId">;
1330
1835
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1331
1836
  readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1332
- readonly state: "approvalPending" | "saved" | "sent";
1837
+ readonly state: "locked" | "saved" | "sent";
1838
+ readonly lockedByActionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1333
1839
  readonly to: readonly string[];
1334
1840
  readonly subject: string | null;
1335
1841
  readonly createdAt: string;
@@ -1357,7 +1863,8 @@ export declare const createDraft: (input: {
1357
1863
  readonly id: string & import("effect/Brand").Brand<"MailboxDraftId">;
1358
1864
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1359
1865
  readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1360
- readonly state: "approvalPending" | "saved" | "sent";
1866
+ readonly state: "locked" | "saved" | "sent";
1867
+ readonly lockedByActionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1361
1868
  readonly to: readonly string[];
1362
1869
  readonly subject: string | null;
1363
1870
  readonly createdAt: string;
@@ -1382,7 +1889,8 @@ export declare const getDraft: (input: {
1382
1889
  readonly id: string & import("effect/Brand").Brand<"MailboxDraftId">;
1383
1890
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1384
1891
  readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1385
- readonly state: "approvalPending" | "saved" | "sent";
1892
+ readonly state: "locked" | "saved" | "sent";
1893
+ readonly lockedByActionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1386
1894
  readonly to: readonly string[];
1387
1895
  readonly subject: string | null;
1388
1896
  readonly createdAt: string;
@@ -1421,7 +1929,8 @@ export declare const updateDraft: (input: {
1421
1929
  readonly id: string & import("effect/Brand").Brand<"MailboxDraftId">;
1422
1930
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1423
1931
  readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1424
- readonly state: "approvalPending" | "saved" | "sent";
1932
+ readonly state: "locked" | "saved" | "sent";
1933
+ readonly lockedByActionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1425
1934
  readonly to: readonly string[];
1426
1935
  readonly subject: string | null;
1427
1936
  readonly createdAt: string;
@@ -1452,30 +1961,152 @@ export declare const sendDraft: (input: {
1452
1961
  readonly idempotencyKey?: string | undefined;
1453
1962
  }) => import("effect/Effect").Effect<{
1454
1963
  readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1964
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
1455
1965
  readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
1456
- readonly threadId: string & import("effect/Brand").Brand<"MailboxThreadId">;
1457
- readonly status: "pending_approval" | "sent";
1458
- readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "sending-paused" | "upstream-unavailable" | null;
1966
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1967
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
1968
+ readonly acceptedAt: string | null;
1969
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
1459
1970
  readonly reviewExpectedAt: string | null;
1460
1971
  readonly skippedRecipients: readonly {
1461
1972
  readonly address: string;
1462
1973
  readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
1463
1974
  readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
1464
1975
  }[];
1976
+ readonly executeUntil: string | null;
1977
+ readonly retryAt: string | null;
1978
+ readonly problem: {
1979
+ readonly code: string;
1980
+ readonly message: string;
1981
+ readonly error?: {
1982
+ readonly _tag: "SenderNotReadyError";
1983
+ readonly message: string;
1984
+ readonly sender: string;
1985
+ readonly retryAfterSeconds?: number | null;
1986
+ } | {
1987
+ readonly _tag: "RateLimitedError";
1988
+ readonly message: string;
1989
+ readonly retryAfterSeconds: number;
1990
+ } | {
1991
+ readonly _tag: "OnboardingReviewRequiredError";
1992
+ readonly message: string;
1993
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
1994
+ readonly decision: "approved" | "rejected" | "undecided";
1995
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
1996
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
1997
+ readonly identityId?: string | null;
1998
+ } | {
1999
+ readonly _tag: "PaymentRequiredError";
2000
+ readonly message: string;
2001
+ readonly resource: string;
2002
+ readonly currentUsage: number;
2003
+ readonly limit: number;
2004
+ } | {
2005
+ readonly _tag: "ValidationError";
2006
+ readonly message: string;
2007
+ readonly fields?: {
2008
+ readonly [x: string]: readonly string[];
2009
+ } | null;
2010
+ } | {
2011
+ readonly _tag: "ForbiddenError";
2012
+ readonly message: string;
2013
+ } | {
2014
+ readonly _tag: "ResourceNotFoundError";
2015
+ readonly resource: string;
2016
+ readonly id: string;
2017
+ readonly message: string;
2018
+ } | null;
2019
+ } | null;
2020
+ readonly retryEligible: boolean;
2021
+ readonly decision: {
2022
+ readonly outcome: "allow" | "deny" | "requireApproval";
2023
+ readonly reason: string | null;
2024
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2025
+ readonly source: "grant" | "installation" | "policy" | null;
2026
+ readonly decidedAt: string;
2027
+ } | null;
1465
2028
  readonly createdAt: string;
1466
- }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2029
+ readonly updatedAt: string;
2030
+ } | {
2031
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2032
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2033
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2034
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2035
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2036
+ readonly acceptedAt: string | null;
2037
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2038
+ readonly reviewExpectedAt: string | null;
2039
+ readonly skippedRecipients: readonly {
2040
+ readonly address: string;
2041
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2042
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2043
+ }[];
2044
+ readonly executeUntil: string | null;
2045
+ readonly retryAt: string | null;
2046
+ readonly problem: {
2047
+ readonly code: string;
2048
+ readonly message: string;
2049
+ readonly error?: {
2050
+ readonly _tag: "SenderNotReadyError";
2051
+ readonly message: string;
2052
+ readonly sender: string;
2053
+ readonly retryAfterSeconds?: number | null;
2054
+ } | {
2055
+ readonly _tag: "RateLimitedError";
2056
+ readonly message: string;
2057
+ readonly retryAfterSeconds: number;
2058
+ } | {
2059
+ readonly _tag: "OnboardingReviewRequiredError";
2060
+ readonly message: string;
2061
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2062
+ readonly decision: "approved" | "rejected" | "undecided";
2063
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2064
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2065
+ readonly identityId?: string | null;
2066
+ } | {
2067
+ readonly _tag: "PaymentRequiredError";
2068
+ readonly message: string;
2069
+ readonly resource: string;
2070
+ readonly currentUsage: number;
2071
+ readonly limit: number;
2072
+ } | {
2073
+ readonly _tag: "ValidationError";
2074
+ readonly message: string;
2075
+ readonly fields?: {
2076
+ readonly [x: string]: readonly string[];
2077
+ } | null;
2078
+ } | {
2079
+ readonly _tag: "ForbiddenError";
2080
+ readonly message: string;
2081
+ } | {
2082
+ readonly _tag: "ResourceNotFoundError";
2083
+ readonly resource: string;
2084
+ readonly id: string;
2085
+ readonly message: string;
2086
+ } | null;
2087
+ } | null;
2088
+ readonly retryEligible: boolean;
2089
+ readonly decision: {
2090
+ readonly outcome: "allow" | "deny" | "requireApproval";
2091
+ readonly reason: string | null;
2092
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2093
+ readonly source: "grant" | "installation" | "policy" | null;
2094
+ readonly decidedAt: string;
2095
+ } | null;
2096
+ readonly createdAt: string;
2097
+ readonly updatedAt: string;
2098
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1467
2099
  export declare const listActions: ((input: {
1468
2100
  readonly id: string;
1469
2101
  readonly limit?: string | null | undefined;
1470
2102
  readonly cursor?: string | null | undefined;
1471
- readonly state?: string | null | undefined;
2103
+ readonly threadId?: string | null | undefined;
2104
+ readonly state?: "accepted" | "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "completed" | "executed" | "executing" | "failed" | "notSent" | "policyDenied" | "proposed" | "queued" | "uncertain" | null | undefined;
1472
2105
  readonly after?: string | null | undefined;
1473
2106
  readonly before?: string | null | undefined;
1474
2107
  }) => import("effect/Effect").Effect<{
1475
- readonly items: readonly {
2108
+ readonly items: readonly ({
1476
2109
  readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
1477
- readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "reply" | "sendMessage" | "updateDraft";
1478
- readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
1479
2110
  readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
1480
2111
  readonly proposedBy: {
1481
2112
  readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
@@ -1488,55 +2119,106 @@ export declare const listActions: ((input: {
1488
2119
  readonly outcome: "allow" | "deny" | "requireApproval";
1489
2120
  readonly reason: string | null;
1490
2121
  readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2122
+ readonly source: "grant" | "installation" | "policy" | null;
1491
2123
  readonly decidedAt: string;
1492
2124
  } | null;
1493
2125
  readonly createdAt: string;
1494
2126
  readonly updatedAt: string;
1495
- }[];
1496
- readonly nextCursor: string | null;
1497
- }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>) & {
1498
- readonly pages: (input: {
1499
- readonly id: string;
1500
- readonly limit?: string | null | undefined;
1501
- readonly cursor?: string | null | undefined;
1502
- readonly state?: string | null | undefined;
1503
- readonly after?: string | null | undefined;
1504
- readonly before?: string | null | undefined;
1505
- }) => import("effect/Stream").Stream<{
1506
- readonly items: readonly {
1507
- readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
1508
- readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "reply" | "sendMessage" | "updateDraft";
1509
- readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
1510
- readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
1511
- readonly proposedBy: {
1512
- readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
1513
- readonly id: string;
1514
- readonly displayName?: string | null;
1515
- };
1516
- readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2127
+ readonly type: "reply" | "sendMessage";
2128
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2129
+ readonly send: {
2130
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
1517
2131
  readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2132
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2133
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2134
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2135
+ readonly acceptedAt: string | null;
2136
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2137
+ readonly reviewExpectedAt: string | null;
2138
+ readonly skippedRecipients: readonly {
2139
+ readonly address: string;
2140
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2141
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2142
+ }[];
2143
+ readonly executeUntil: string | null;
2144
+ readonly retryAt: string | null;
2145
+ readonly problem: {
2146
+ readonly code: string;
2147
+ readonly message: string;
2148
+ readonly error?: {
2149
+ readonly _tag: "SenderNotReadyError";
2150
+ readonly message: string;
2151
+ readonly sender: string;
2152
+ readonly retryAfterSeconds?: number | null;
2153
+ } | {
2154
+ readonly _tag: "RateLimitedError";
2155
+ readonly message: string;
2156
+ readonly retryAfterSeconds: number;
2157
+ } | {
2158
+ readonly _tag: "OnboardingReviewRequiredError";
2159
+ readonly message: string;
2160
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2161
+ readonly decision: "approved" | "rejected" | "undecided";
2162
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2163
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2164
+ readonly identityId?: string | null;
2165
+ } | {
2166
+ readonly _tag: "PaymentRequiredError";
2167
+ readonly message: string;
2168
+ readonly resource: string;
2169
+ readonly currentUsage: number;
2170
+ readonly limit: number;
2171
+ } | {
2172
+ readonly _tag: "ValidationError";
2173
+ readonly message: string;
2174
+ readonly fields?: {
2175
+ readonly [x: string]: readonly string[];
2176
+ } | null;
2177
+ } | {
2178
+ readonly _tag: "ForbiddenError";
2179
+ readonly message: string;
2180
+ } | {
2181
+ readonly _tag: "ResourceNotFoundError";
2182
+ readonly resource: string;
2183
+ readonly id: string;
2184
+ readonly message: string;
2185
+ } | null;
2186
+ } | null;
2187
+ readonly retryEligible: boolean;
1518
2188
  readonly decision: {
1519
2189
  readonly outcome: "allow" | "deny" | "requireApproval";
1520
2190
  readonly reason: string | null;
1521
2191
  readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2192
+ readonly source: "grant" | "installation" | "policy" | null;
1522
2193
  readonly decidedAt: string;
1523
2194
  } | null;
1524
2195
  readonly createdAt: string;
1525
2196
  readonly updatedAt: string;
1526
- }[];
1527
- readonly nextCursor: string | null;
1528
- }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1529
- readonly items: (input: {
1530
- readonly id: string;
1531
- readonly limit?: string | null | undefined;
1532
- readonly cursor?: string | null | undefined;
1533
- readonly state?: string | null | undefined;
1534
- readonly after?: string | null | undefined;
1535
- readonly before?: string | null | undefined;
1536
- }) => import("effect/Stream").Stream<{
2197
+ };
2198
+ readonly intent: {
2199
+ readonly draftRevision: number;
2200
+ readonly from: string;
2201
+ readonly fromName: string | null;
2202
+ readonly to: readonly [string, ...string[]];
2203
+ readonly cc: readonly string[];
2204
+ readonly bcc: readonly string[];
2205
+ readonly replyTo: readonly string[];
2206
+ readonly subject: string;
2207
+ readonly text: string | null;
2208
+ readonly html: string | null;
2209
+ readonly attachments: readonly {
2210
+ readonly filename: string;
2211
+ readonly content?: string | null;
2212
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
2213
+ readonly contentType: string;
2214
+ readonly size: number;
2215
+ }[];
2216
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2217
+ readonly conversationId: (string & import("effect/Brand").Brand<"ConversationId">) | null;
2218
+ readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2219
+ } | null;
2220
+ } | {
1537
2221
  readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
1538
- readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "reply" | "sendMessage" | "updateDraft";
1539
- readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
1540
2222
  readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
1541
2223
  readonly proposedBy: {
1542
2224
  readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
@@ -1549,22 +2231,312 @@ export declare const listActions: ((input: {
1549
2231
  readonly outcome: "allow" | "deny" | "requireApproval";
1550
2232
  readonly reason: string | null;
1551
2233
  readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2234
+ readonly source: "grant" | "installation" | "policy" | null;
1552
2235
  readonly decidedAt: string;
1553
2236
  } | null;
1554
2237
  readonly createdAt: string;
1555
2238
  readonly updatedAt: string;
1556
- }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1557
- };
1558
- export declare const approveAction: (input: {
1559
- readonly id: string;
1560
- readonly actionId: string;
1561
- }) => import("effect/Effect").Effect<{
1562
- readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
1563
- readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "reply" | "sendMessage" | "updateDraft";
1564
- readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
1565
- readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
1566
- readonly proposedBy: {
1567
- readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2239
+ readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "updateDraft";
2240
+ readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
2241
+ })[];
2242
+ readonly nextCursor: string | null;
2243
+ }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>) & {
2244
+ readonly pages: (input: {
2245
+ readonly id: string;
2246
+ readonly limit?: string | null | undefined;
2247
+ readonly cursor?: string | null | undefined;
2248
+ readonly threadId?: string | null | undefined;
2249
+ readonly state?: "accepted" | "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "completed" | "executed" | "executing" | "failed" | "notSent" | "policyDenied" | "proposed" | "queued" | "uncertain" | null | undefined;
2250
+ readonly after?: string | null | undefined;
2251
+ readonly before?: string | null | undefined;
2252
+ }) => import("effect/Stream").Stream<{
2253
+ readonly items: readonly ({
2254
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2255
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2256
+ readonly proposedBy: {
2257
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2258
+ readonly id: string;
2259
+ readonly displayName?: string | null;
2260
+ };
2261
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2262
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2263
+ readonly decision: {
2264
+ readonly outcome: "allow" | "deny" | "requireApproval";
2265
+ readonly reason: string | null;
2266
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2267
+ readonly source: "grant" | "installation" | "policy" | null;
2268
+ readonly decidedAt: string;
2269
+ } | null;
2270
+ readonly createdAt: string;
2271
+ readonly updatedAt: string;
2272
+ readonly type: "reply" | "sendMessage";
2273
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2274
+ readonly send: {
2275
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2276
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2277
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2278
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2279
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2280
+ readonly acceptedAt: string | null;
2281
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2282
+ readonly reviewExpectedAt: string | null;
2283
+ readonly skippedRecipients: readonly {
2284
+ readonly address: string;
2285
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2286
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2287
+ }[];
2288
+ readonly executeUntil: string | null;
2289
+ readonly retryAt: string | null;
2290
+ readonly problem: {
2291
+ readonly code: string;
2292
+ readonly message: string;
2293
+ readonly error?: {
2294
+ readonly _tag: "SenderNotReadyError";
2295
+ readonly message: string;
2296
+ readonly sender: string;
2297
+ readonly retryAfterSeconds?: number | null;
2298
+ } | {
2299
+ readonly _tag: "RateLimitedError";
2300
+ readonly message: string;
2301
+ readonly retryAfterSeconds: number;
2302
+ } | {
2303
+ readonly _tag: "OnboardingReviewRequiredError";
2304
+ readonly message: string;
2305
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2306
+ readonly decision: "approved" | "rejected" | "undecided";
2307
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2308
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2309
+ readonly identityId?: string | null;
2310
+ } | {
2311
+ readonly _tag: "PaymentRequiredError";
2312
+ readonly message: string;
2313
+ readonly resource: string;
2314
+ readonly currentUsage: number;
2315
+ readonly limit: number;
2316
+ } | {
2317
+ readonly _tag: "ValidationError";
2318
+ readonly message: string;
2319
+ readonly fields?: {
2320
+ readonly [x: string]: readonly string[];
2321
+ } | null;
2322
+ } | {
2323
+ readonly _tag: "ForbiddenError";
2324
+ readonly message: string;
2325
+ } | {
2326
+ readonly _tag: "ResourceNotFoundError";
2327
+ readonly resource: string;
2328
+ readonly id: string;
2329
+ readonly message: string;
2330
+ } | null;
2331
+ } | null;
2332
+ readonly retryEligible: boolean;
2333
+ readonly decision: {
2334
+ readonly outcome: "allow" | "deny" | "requireApproval";
2335
+ readonly reason: string | null;
2336
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2337
+ readonly source: "grant" | "installation" | "policy" | null;
2338
+ readonly decidedAt: string;
2339
+ } | null;
2340
+ readonly createdAt: string;
2341
+ readonly updatedAt: string;
2342
+ };
2343
+ readonly intent: {
2344
+ readonly draftRevision: number;
2345
+ readonly from: string;
2346
+ readonly fromName: string | null;
2347
+ readonly to: readonly [string, ...string[]];
2348
+ readonly cc: readonly string[];
2349
+ readonly bcc: readonly string[];
2350
+ readonly replyTo: readonly string[];
2351
+ readonly subject: string;
2352
+ readonly text: string | null;
2353
+ readonly html: string | null;
2354
+ readonly attachments: readonly {
2355
+ readonly filename: string;
2356
+ readonly content?: string | null;
2357
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
2358
+ readonly contentType: string;
2359
+ readonly size: number;
2360
+ }[];
2361
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2362
+ readonly conversationId: (string & import("effect/Brand").Brand<"ConversationId">) | null;
2363
+ readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2364
+ } | null;
2365
+ } | {
2366
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2367
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2368
+ readonly proposedBy: {
2369
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2370
+ readonly id: string;
2371
+ readonly displayName?: string | null;
2372
+ };
2373
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2374
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2375
+ readonly decision: {
2376
+ readonly outcome: "allow" | "deny" | "requireApproval";
2377
+ readonly reason: string | null;
2378
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2379
+ readonly source: "grant" | "installation" | "policy" | null;
2380
+ readonly decidedAt: string;
2381
+ } | null;
2382
+ readonly createdAt: string;
2383
+ readonly updatedAt: string;
2384
+ readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "updateDraft";
2385
+ readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
2386
+ })[];
2387
+ readonly nextCursor: string | null;
2388
+ }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2389
+ readonly items: (input: {
2390
+ readonly id: string;
2391
+ readonly limit?: string | null | undefined;
2392
+ readonly cursor?: string | null | undefined;
2393
+ readonly threadId?: string | null | undefined;
2394
+ readonly state?: "accepted" | "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "completed" | "executed" | "executing" | "failed" | "notSent" | "policyDenied" | "proposed" | "queued" | "uncertain" | null | undefined;
2395
+ readonly after?: string | null | undefined;
2396
+ readonly before?: string | null | undefined;
2397
+ }) => import("effect/Stream").Stream<{
2398
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2399
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2400
+ readonly proposedBy: {
2401
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2402
+ readonly id: string;
2403
+ readonly displayName?: string | null;
2404
+ };
2405
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2406
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2407
+ readonly decision: {
2408
+ readonly outcome: "allow" | "deny" | "requireApproval";
2409
+ readonly reason: string | null;
2410
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2411
+ readonly source: "grant" | "installation" | "policy" | null;
2412
+ readonly decidedAt: string;
2413
+ } | null;
2414
+ readonly createdAt: string;
2415
+ readonly updatedAt: string;
2416
+ readonly type: "reply" | "sendMessage";
2417
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2418
+ readonly send: {
2419
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2420
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2421
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2422
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2423
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2424
+ readonly acceptedAt: string | null;
2425
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2426
+ readonly reviewExpectedAt: string | null;
2427
+ readonly skippedRecipients: readonly {
2428
+ readonly address: string;
2429
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2430
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2431
+ }[];
2432
+ readonly executeUntil: string | null;
2433
+ readonly retryAt: string | null;
2434
+ readonly problem: {
2435
+ readonly code: string;
2436
+ readonly message: string;
2437
+ readonly error?: {
2438
+ readonly _tag: "SenderNotReadyError";
2439
+ readonly message: string;
2440
+ readonly sender: string;
2441
+ readonly retryAfterSeconds?: number | null;
2442
+ } | {
2443
+ readonly _tag: "RateLimitedError";
2444
+ readonly message: string;
2445
+ readonly retryAfterSeconds: number;
2446
+ } | {
2447
+ readonly _tag: "OnboardingReviewRequiredError";
2448
+ readonly message: string;
2449
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2450
+ readonly decision: "approved" | "rejected" | "undecided";
2451
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2452
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2453
+ readonly identityId?: string | null;
2454
+ } | {
2455
+ readonly _tag: "PaymentRequiredError";
2456
+ readonly message: string;
2457
+ readonly resource: string;
2458
+ readonly currentUsage: number;
2459
+ readonly limit: number;
2460
+ } | {
2461
+ readonly _tag: "ValidationError";
2462
+ readonly message: string;
2463
+ readonly fields?: {
2464
+ readonly [x: string]: readonly string[];
2465
+ } | null;
2466
+ } | {
2467
+ readonly _tag: "ForbiddenError";
2468
+ readonly message: string;
2469
+ } | {
2470
+ readonly _tag: "ResourceNotFoundError";
2471
+ readonly resource: string;
2472
+ readonly id: string;
2473
+ readonly message: string;
2474
+ } | null;
2475
+ } | null;
2476
+ readonly retryEligible: boolean;
2477
+ readonly decision: {
2478
+ readonly outcome: "allow" | "deny" | "requireApproval";
2479
+ readonly reason: string | null;
2480
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2481
+ readonly source: "grant" | "installation" | "policy" | null;
2482
+ readonly decidedAt: string;
2483
+ } | null;
2484
+ readonly createdAt: string;
2485
+ readonly updatedAt: string;
2486
+ };
2487
+ readonly intent: {
2488
+ readonly draftRevision: number;
2489
+ readonly from: string;
2490
+ readonly fromName: string | null;
2491
+ readonly to: readonly [string, ...string[]];
2492
+ readonly cc: readonly string[];
2493
+ readonly bcc: readonly string[];
2494
+ readonly replyTo: readonly string[];
2495
+ readonly subject: string;
2496
+ readonly text: string | null;
2497
+ readonly html: string | null;
2498
+ readonly attachments: readonly {
2499
+ readonly filename: string;
2500
+ readonly content?: string | null;
2501
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
2502
+ readonly contentType: string;
2503
+ readonly size: number;
2504
+ }[];
2505
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2506
+ readonly conversationId: (string & import("effect/Brand").Brand<"ConversationId">) | null;
2507
+ readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2508
+ } | null;
2509
+ } | {
2510
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2511
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2512
+ readonly proposedBy: {
2513
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2514
+ readonly id: string;
2515
+ readonly displayName?: string | null;
2516
+ };
2517
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2518
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2519
+ readonly decision: {
2520
+ readonly outcome: "allow" | "deny" | "requireApproval";
2521
+ readonly reason: string | null;
2522
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2523
+ readonly source: "grant" | "installation" | "policy" | null;
2524
+ readonly decidedAt: string;
2525
+ } | null;
2526
+ readonly createdAt: string;
2527
+ readonly updatedAt: string;
2528
+ readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "updateDraft";
2529
+ readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
2530
+ }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2531
+ };
2532
+ export declare const getAction: (input: {
2533
+ readonly id: string;
2534
+ readonly actionId: string;
2535
+ }) => import("effect/Effect").Effect<{
2536
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2537
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2538
+ readonly proposedBy: {
2539
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
1568
2540
  readonly id: string;
1569
2541
  readonly displayName?: string | null;
1570
2542
  };
@@ -1574,19 +2546,549 @@ export declare const approveAction: (input: {
1574
2546
  readonly outcome: "allow" | "deny" | "requireApproval";
1575
2547
  readonly reason: string | null;
1576
2548
  readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2549
+ readonly source: "grant" | "installation" | "policy" | null;
1577
2550
  readonly decidedAt: string;
1578
2551
  } | null;
1579
2552
  readonly createdAt: string;
1580
2553
  readonly updatedAt: string;
1581
- }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2554
+ readonly type: "reply" | "sendMessage";
2555
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2556
+ readonly send: {
2557
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2558
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2559
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2560
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2561
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2562
+ readonly acceptedAt: string | null;
2563
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2564
+ readonly reviewExpectedAt: string | null;
2565
+ readonly skippedRecipients: readonly {
2566
+ readonly address: string;
2567
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2568
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2569
+ }[];
2570
+ readonly executeUntil: string | null;
2571
+ readonly retryAt: string | null;
2572
+ readonly problem: {
2573
+ readonly code: string;
2574
+ readonly message: string;
2575
+ readonly error?: {
2576
+ readonly _tag: "SenderNotReadyError";
2577
+ readonly message: string;
2578
+ readonly sender: string;
2579
+ readonly retryAfterSeconds?: number | null;
2580
+ } | {
2581
+ readonly _tag: "RateLimitedError";
2582
+ readonly message: string;
2583
+ readonly retryAfterSeconds: number;
2584
+ } | {
2585
+ readonly _tag: "OnboardingReviewRequiredError";
2586
+ readonly message: string;
2587
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2588
+ readonly decision: "approved" | "rejected" | "undecided";
2589
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2590
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2591
+ readonly identityId?: string | null;
2592
+ } | {
2593
+ readonly _tag: "PaymentRequiredError";
2594
+ readonly message: string;
2595
+ readonly resource: string;
2596
+ readonly currentUsage: number;
2597
+ readonly limit: number;
2598
+ } | {
2599
+ readonly _tag: "ValidationError";
2600
+ readonly message: string;
2601
+ readonly fields?: {
2602
+ readonly [x: string]: readonly string[];
2603
+ } | null;
2604
+ } | {
2605
+ readonly _tag: "ForbiddenError";
2606
+ readonly message: string;
2607
+ } | {
2608
+ readonly _tag: "ResourceNotFoundError";
2609
+ readonly resource: string;
2610
+ readonly id: string;
2611
+ readonly message: string;
2612
+ } | null;
2613
+ } | null;
2614
+ readonly retryEligible: boolean;
2615
+ readonly decision: {
2616
+ readonly outcome: "allow" | "deny" | "requireApproval";
2617
+ readonly reason: string | null;
2618
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2619
+ readonly source: "grant" | "installation" | "policy" | null;
2620
+ readonly decidedAt: string;
2621
+ } | null;
2622
+ readonly createdAt: string;
2623
+ readonly updatedAt: string;
2624
+ };
2625
+ readonly intent: {
2626
+ readonly draftRevision: number;
2627
+ readonly from: string;
2628
+ readonly fromName: string | null;
2629
+ readonly to: readonly [string, ...string[]];
2630
+ readonly cc: readonly string[];
2631
+ readonly bcc: readonly string[];
2632
+ readonly replyTo: readonly string[];
2633
+ readonly subject: string;
2634
+ readonly text: string | null;
2635
+ readonly html: string | null;
2636
+ readonly attachments: readonly {
2637
+ readonly filename: string;
2638
+ readonly content?: string | null;
2639
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
2640
+ readonly contentType: string;
2641
+ readonly size: number;
2642
+ }[];
2643
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2644
+ readonly conversationId: (string & import("effect/Brand").Brand<"ConversationId">) | null;
2645
+ readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2646
+ } | null;
2647
+ } | {
2648
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2649
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2650
+ readonly proposedBy: {
2651
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2652
+ readonly id: string;
2653
+ readonly displayName?: string | null;
2654
+ };
2655
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2656
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2657
+ readonly decision: {
2658
+ readonly outcome: "allow" | "deny" | "requireApproval";
2659
+ readonly reason: string | null;
2660
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2661
+ readonly source: "grant" | "installation" | "policy" | null;
2662
+ readonly decidedAt: string;
2663
+ } | null;
2664
+ readonly createdAt: string;
2665
+ readonly updatedAt: string;
2666
+ readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "updateDraft";
2667
+ readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
2668
+ }, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2669
+ export declare const cancelAction: (input: {
2670
+ readonly id: string;
2671
+ readonly actionId: string;
2672
+ }) => import("effect/Effect").Effect<{
2673
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2674
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2675
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2676
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2677
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2678
+ readonly acceptedAt: string | null;
2679
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2680
+ readonly reviewExpectedAt: string | null;
2681
+ readonly skippedRecipients: readonly {
2682
+ readonly address: string;
2683
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2684
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2685
+ }[];
2686
+ readonly executeUntil: string | null;
2687
+ readonly retryAt: string | null;
2688
+ readonly problem: {
2689
+ readonly code: string;
2690
+ readonly message: string;
2691
+ readonly error?: {
2692
+ readonly _tag: "SenderNotReadyError";
2693
+ readonly message: string;
2694
+ readonly sender: string;
2695
+ readonly retryAfterSeconds?: number | null;
2696
+ } | {
2697
+ readonly _tag: "RateLimitedError";
2698
+ readonly message: string;
2699
+ readonly retryAfterSeconds: number;
2700
+ } | {
2701
+ readonly _tag: "OnboardingReviewRequiredError";
2702
+ readonly message: string;
2703
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2704
+ readonly decision: "approved" | "rejected" | "undecided";
2705
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2706
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2707
+ readonly identityId?: string | null;
2708
+ } | {
2709
+ readonly _tag: "PaymentRequiredError";
2710
+ readonly message: string;
2711
+ readonly resource: string;
2712
+ readonly currentUsage: number;
2713
+ readonly limit: number;
2714
+ } | {
2715
+ readonly _tag: "ValidationError";
2716
+ readonly message: string;
2717
+ readonly fields?: {
2718
+ readonly [x: string]: readonly string[];
2719
+ } | null;
2720
+ } | {
2721
+ readonly _tag: "ForbiddenError";
2722
+ readonly message: string;
2723
+ } | {
2724
+ readonly _tag: "ResourceNotFoundError";
2725
+ readonly resource: string;
2726
+ readonly id: string;
2727
+ readonly message: string;
2728
+ } | null;
2729
+ } | null;
2730
+ readonly retryEligible: boolean;
2731
+ readonly decision: {
2732
+ readonly outcome: "allow" | "deny" | "requireApproval";
2733
+ readonly reason: string | null;
2734
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2735
+ readonly source: "grant" | "installation" | "policy" | null;
2736
+ readonly decidedAt: string;
2737
+ } | null;
2738
+ readonly createdAt: string;
2739
+ readonly updatedAt: string;
2740
+ } | {
2741
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2742
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2743
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2744
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2745
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2746
+ readonly acceptedAt: string | null;
2747
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2748
+ readonly reviewExpectedAt: string | null;
2749
+ readonly skippedRecipients: readonly {
2750
+ readonly address: string;
2751
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2752
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2753
+ }[];
2754
+ readonly executeUntil: string | null;
2755
+ readonly retryAt: string | null;
2756
+ readonly problem: {
2757
+ readonly code: string;
2758
+ readonly message: string;
2759
+ readonly error?: {
2760
+ readonly _tag: "SenderNotReadyError";
2761
+ readonly message: string;
2762
+ readonly sender: string;
2763
+ readonly retryAfterSeconds?: number | null;
2764
+ } | {
2765
+ readonly _tag: "RateLimitedError";
2766
+ readonly message: string;
2767
+ readonly retryAfterSeconds: number;
2768
+ } | {
2769
+ readonly _tag: "OnboardingReviewRequiredError";
2770
+ readonly message: string;
2771
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2772
+ readonly decision: "approved" | "rejected" | "undecided";
2773
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2774
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2775
+ readonly identityId?: string | null;
2776
+ } | {
2777
+ readonly _tag: "PaymentRequiredError";
2778
+ readonly message: string;
2779
+ readonly resource: string;
2780
+ readonly currentUsage: number;
2781
+ readonly limit: number;
2782
+ } | {
2783
+ readonly _tag: "ValidationError";
2784
+ readonly message: string;
2785
+ readonly fields?: {
2786
+ readonly [x: string]: readonly string[];
2787
+ } | null;
2788
+ } | {
2789
+ readonly _tag: "ForbiddenError";
2790
+ readonly message: string;
2791
+ } | {
2792
+ readonly _tag: "ResourceNotFoundError";
2793
+ readonly resource: string;
2794
+ readonly id: string;
2795
+ readonly message: string;
2796
+ } | null;
2797
+ } | null;
2798
+ readonly retryEligible: boolean;
2799
+ readonly decision: {
2800
+ readonly outcome: "allow" | "deny" | "requireApproval";
2801
+ readonly reason: string | null;
2802
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2803
+ readonly source: "grant" | "installation" | "policy" | null;
2804
+ readonly decidedAt: string;
2805
+ } | null;
2806
+ readonly createdAt: string;
2807
+ readonly updatedAt: string;
2808
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2809
+ export declare const retryAction: (input: {
2810
+ readonly id: string;
2811
+ readonly actionId: string;
2812
+ }) => import("effect/Effect").Effect<{
2813
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2814
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2815
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2816
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2817
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2818
+ readonly acceptedAt: string | null;
2819
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2820
+ readonly reviewExpectedAt: string | null;
2821
+ readonly skippedRecipients: readonly {
2822
+ readonly address: string;
2823
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2824
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2825
+ }[];
2826
+ readonly executeUntil: string | null;
2827
+ readonly retryAt: string | null;
2828
+ readonly problem: {
2829
+ readonly code: string;
2830
+ readonly message: string;
2831
+ readonly error?: {
2832
+ readonly _tag: "SenderNotReadyError";
2833
+ readonly message: string;
2834
+ readonly sender: string;
2835
+ readonly retryAfterSeconds?: number | null;
2836
+ } | {
2837
+ readonly _tag: "RateLimitedError";
2838
+ readonly message: string;
2839
+ readonly retryAfterSeconds: number;
2840
+ } | {
2841
+ readonly _tag: "OnboardingReviewRequiredError";
2842
+ readonly message: string;
2843
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2844
+ readonly decision: "approved" | "rejected" | "undecided";
2845
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2846
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2847
+ readonly identityId?: string | null;
2848
+ } | {
2849
+ readonly _tag: "PaymentRequiredError";
2850
+ readonly message: string;
2851
+ readonly resource: string;
2852
+ readonly currentUsage: number;
2853
+ readonly limit: number;
2854
+ } | {
2855
+ readonly _tag: "ValidationError";
2856
+ readonly message: string;
2857
+ readonly fields?: {
2858
+ readonly [x: string]: readonly string[];
2859
+ } | null;
2860
+ } | {
2861
+ readonly _tag: "ForbiddenError";
2862
+ readonly message: string;
2863
+ } | {
2864
+ readonly _tag: "ResourceNotFoundError";
2865
+ readonly resource: string;
2866
+ readonly id: string;
2867
+ readonly message: string;
2868
+ } | null;
2869
+ } | null;
2870
+ readonly retryEligible: boolean;
2871
+ readonly decision: {
2872
+ readonly outcome: "allow" | "deny" | "requireApproval";
2873
+ readonly reason: string | null;
2874
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2875
+ readonly source: "grant" | "installation" | "policy" | null;
2876
+ readonly decidedAt: string;
2877
+ } | null;
2878
+ readonly createdAt: string;
2879
+ readonly updatedAt: string;
2880
+ } | {
2881
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2882
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2883
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2884
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2885
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2886
+ readonly acceptedAt: string | null;
2887
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2888
+ readonly reviewExpectedAt: string | null;
2889
+ readonly skippedRecipients: readonly {
2890
+ readonly address: string;
2891
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2892
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2893
+ }[];
2894
+ readonly executeUntil: string | null;
2895
+ readonly retryAt: string | null;
2896
+ readonly problem: {
2897
+ readonly code: string;
2898
+ readonly message: string;
2899
+ readonly error?: {
2900
+ readonly _tag: "SenderNotReadyError";
2901
+ readonly message: string;
2902
+ readonly sender: string;
2903
+ readonly retryAfterSeconds?: number | null;
2904
+ } | {
2905
+ readonly _tag: "RateLimitedError";
2906
+ readonly message: string;
2907
+ readonly retryAfterSeconds: number;
2908
+ } | {
2909
+ readonly _tag: "OnboardingReviewRequiredError";
2910
+ readonly message: string;
2911
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
2912
+ readonly decision: "approved" | "rejected" | "undecided";
2913
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
2914
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
2915
+ readonly identityId?: string | null;
2916
+ } | {
2917
+ readonly _tag: "PaymentRequiredError";
2918
+ readonly message: string;
2919
+ readonly resource: string;
2920
+ readonly currentUsage: number;
2921
+ readonly limit: number;
2922
+ } | {
2923
+ readonly _tag: "ValidationError";
2924
+ readonly message: string;
2925
+ readonly fields?: {
2926
+ readonly [x: string]: readonly string[];
2927
+ } | null;
2928
+ } | {
2929
+ readonly _tag: "ForbiddenError";
2930
+ readonly message: string;
2931
+ } | {
2932
+ readonly _tag: "ResourceNotFoundError";
2933
+ readonly resource: string;
2934
+ readonly id: string;
2935
+ readonly message: string;
2936
+ } | null;
2937
+ } | null;
2938
+ readonly retryEligible: boolean;
2939
+ readonly decision: {
2940
+ readonly outcome: "allow" | "deny" | "requireApproval";
2941
+ readonly reason: string | null;
2942
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2943
+ readonly source: "grant" | "installation" | "policy" | null;
2944
+ readonly decidedAt: string;
2945
+ } | null;
2946
+ readonly createdAt: string;
2947
+ readonly updatedAt: string;
2948
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
2949
+ export declare const approveAction: (input: {
2950
+ readonly id: string;
2951
+ readonly actionId: string;
2952
+ }) => import("effect/Effect").Effect<{
2953
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
2954
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
2955
+ readonly proposedBy: {
2956
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
2957
+ readonly id: string;
2958
+ readonly displayName?: string | null;
2959
+ };
2960
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2961
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2962
+ readonly decision: {
2963
+ readonly outcome: "allow" | "deny" | "requireApproval";
2964
+ readonly reason: string | null;
2965
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
2966
+ readonly source: "grant" | "installation" | "policy" | null;
2967
+ readonly decidedAt: string;
2968
+ } | null;
2969
+ readonly createdAt: string;
2970
+ readonly updatedAt: string;
2971
+ readonly type: "reply" | "sendMessage";
2972
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2973
+ readonly send: {
2974
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
2975
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
2976
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
2977
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
2978
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
2979
+ readonly acceptedAt: string | null;
2980
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
2981
+ readonly reviewExpectedAt: string | null;
2982
+ readonly skippedRecipients: readonly {
2983
+ readonly address: string;
2984
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
2985
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
2986
+ }[];
2987
+ readonly executeUntil: string | null;
2988
+ readonly retryAt: string | null;
2989
+ readonly problem: {
2990
+ readonly code: string;
2991
+ readonly message: string;
2992
+ readonly error?: {
2993
+ readonly _tag: "SenderNotReadyError";
2994
+ readonly message: string;
2995
+ readonly sender: string;
2996
+ readonly retryAfterSeconds?: number | null;
2997
+ } | {
2998
+ readonly _tag: "RateLimitedError";
2999
+ readonly message: string;
3000
+ readonly retryAfterSeconds: number;
3001
+ } | {
3002
+ readonly _tag: "OnboardingReviewRequiredError";
3003
+ readonly message: string;
3004
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
3005
+ readonly decision: "approved" | "rejected" | "undecided";
3006
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
3007
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
3008
+ readonly identityId?: string | null;
3009
+ } | {
3010
+ readonly _tag: "PaymentRequiredError";
3011
+ readonly message: string;
3012
+ readonly resource: string;
3013
+ readonly currentUsage: number;
3014
+ readonly limit: number;
3015
+ } | {
3016
+ readonly _tag: "ValidationError";
3017
+ readonly message: string;
3018
+ readonly fields?: {
3019
+ readonly [x: string]: readonly string[];
3020
+ } | null;
3021
+ } | {
3022
+ readonly _tag: "ForbiddenError";
3023
+ readonly message: string;
3024
+ } | {
3025
+ readonly _tag: "ResourceNotFoundError";
3026
+ readonly resource: string;
3027
+ readonly id: string;
3028
+ readonly message: string;
3029
+ } | null;
3030
+ } | null;
3031
+ readonly retryEligible: boolean;
3032
+ readonly decision: {
3033
+ readonly outcome: "allow" | "deny" | "requireApproval";
3034
+ readonly reason: string | null;
3035
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
3036
+ readonly source: "grant" | "installation" | "policy" | null;
3037
+ readonly decidedAt: string;
3038
+ } | null;
3039
+ readonly createdAt: string;
3040
+ readonly updatedAt: string;
3041
+ };
3042
+ readonly intent: {
3043
+ readonly draftRevision: number;
3044
+ readonly from: string;
3045
+ readonly fromName: string | null;
3046
+ readonly to: readonly [string, ...string[]];
3047
+ readonly cc: readonly string[];
3048
+ readonly bcc: readonly string[];
3049
+ readonly replyTo: readonly string[];
3050
+ readonly subject: string;
3051
+ readonly text: string | null;
3052
+ readonly html: string | null;
3053
+ readonly attachments: readonly {
3054
+ readonly filename: string;
3055
+ readonly content?: string | null;
3056
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
3057
+ readonly contentType: string;
3058
+ readonly size: number;
3059
+ }[];
3060
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
3061
+ readonly conversationId: (string & import("effect/Brand").Brand<"ConversationId">) | null;
3062
+ readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
3063
+ } | null;
3064
+ } | {
3065
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
3066
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
3067
+ readonly proposedBy: {
3068
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
3069
+ readonly id: string;
3070
+ readonly displayName?: string | null;
3071
+ };
3072
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
3073
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
3074
+ readonly decision: {
3075
+ readonly outcome: "allow" | "deny" | "requireApproval";
3076
+ readonly reason: string | null;
3077
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
3078
+ readonly source: "grant" | "installation" | "policy" | null;
3079
+ readonly decidedAt: string;
3080
+ } | null;
3081
+ readonly createdAt: string;
3082
+ readonly updatedAt: string;
3083
+ readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "updateDraft";
3084
+ readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
3085
+ }, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").MailboxSendRefusedError | import("./generated").OnboardingReviewRequiredError | import("./generated").PaymentRequiredError | import("./generated").RateLimitedError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").SenderNotReadyError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1582
3086
  export declare const denyAction: (input: {
1583
3087
  readonly id: string;
1584
3088
  readonly actionId: string;
1585
3089
  readonly reason: string;
1586
3090
  }) => import("effect/Effect").Effect<{
1587
3091
  readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
1588
- readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "reply" | "sendMessage" | "updateDraft";
1589
- readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
1590
3092
  readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
1591
3093
  readonly proposedBy: {
1592
3094
  readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
@@ -1599,11 +3101,126 @@ export declare const denyAction: (input: {
1599
3101
  readonly outcome: "allow" | "deny" | "requireApproval";
1600
3102
  readonly reason: string | null;
1601
3103
  readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
3104
+ readonly source: "grant" | "installation" | "policy" | null;
1602
3105
  readonly decidedAt: string;
1603
3106
  } | null;
1604
3107
  readonly createdAt: string;
1605
3108
  readonly updatedAt: string;
1606
- }, import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
3109
+ readonly type: "reply" | "sendMessage";
3110
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
3111
+ readonly send: {
3112
+ readonly actionId: string & import("effect/Brand").Brand<"MailboxActionId">;
3113
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
3114
+ readonly messageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
3115
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
3116
+ readonly state: "accepted" | "approvalRequired" | "completed" | "notSent" | "queued" | "uncertain";
3117
+ readonly acceptedAt: string | null;
3118
+ readonly waitReason: "campaign-paused" | "content-review" | "daily-quota" | "domain-health" | "domain-warming" | "onboarding-review" | "rate" | "retry" | "screening-unavailable" | "sending-paused" | "upstream-unavailable" | null;
3119
+ readonly reviewExpectedAt: string | null;
3120
+ readonly skippedRecipients: readonly {
3121
+ readonly address: string;
3122
+ readonly reason: "bounce" | "complaint" | "group-unsubscribe" | "manual" | "unsubscribe";
3123
+ readonly unsubscribeGroupId?: (string & import("effect/Brand").Brand<"UnsubscribeId">) | null;
3124
+ }[];
3125
+ readonly executeUntil: string | null;
3126
+ readonly retryAt: string | null;
3127
+ readonly problem: {
3128
+ readonly code: string;
3129
+ readonly message: string;
3130
+ readonly error?: {
3131
+ readonly _tag: "SenderNotReadyError";
3132
+ readonly message: string;
3133
+ readonly sender: string;
3134
+ readonly retryAfterSeconds?: number | null;
3135
+ } | {
3136
+ readonly _tag: "RateLimitedError";
3137
+ readonly message: string;
3138
+ readonly retryAfterSeconds: number;
3139
+ } | {
3140
+ readonly _tag: "OnboardingReviewRequiredError";
3141
+ readonly message: string;
3142
+ readonly code: "identity_changed" | "identity_review_rejected" | "identity_review_required" | "information_required" | "review_in_progress" | "review_rejected" | "review_required";
3143
+ readonly decision: "approved" | "rejected" | "undecided";
3144
+ readonly stage: "automated_review" | "collecting" | "complete" | "information_requested" | "manual_review";
3145
+ readonly nextAction: "contact_support" | "provide_information" | "reapply" | "verify_sending_identity" | "wait_for_review";
3146
+ readonly identityId?: string | null;
3147
+ } | {
3148
+ readonly _tag: "PaymentRequiredError";
3149
+ readonly message: string;
3150
+ readonly resource: string;
3151
+ readonly currentUsage: number;
3152
+ readonly limit: number;
3153
+ } | {
3154
+ readonly _tag: "ValidationError";
3155
+ readonly message: string;
3156
+ readonly fields?: {
3157
+ readonly [x: string]: readonly string[];
3158
+ } | null;
3159
+ } | {
3160
+ readonly _tag: "ForbiddenError";
3161
+ readonly message: string;
3162
+ } | {
3163
+ readonly _tag: "ResourceNotFoundError";
3164
+ readonly resource: string;
3165
+ readonly id: string;
3166
+ readonly message: string;
3167
+ } | null;
3168
+ } | null;
3169
+ readonly retryEligible: boolean;
3170
+ readonly decision: {
3171
+ readonly outcome: "allow" | "deny" | "requireApproval";
3172
+ readonly reason: string | null;
3173
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
3174
+ readonly source: "grant" | "installation" | "policy" | null;
3175
+ readonly decidedAt: string;
3176
+ } | null;
3177
+ readonly createdAt: string;
3178
+ readonly updatedAt: string;
3179
+ };
3180
+ readonly intent: {
3181
+ readonly draftRevision: number;
3182
+ readonly from: string;
3183
+ readonly fromName: string | null;
3184
+ readonly to: readonly [string, ...string[]];
3185
+ readonly cc: readonly string[];
3186
+ readonly bcc: readonly string[];
3187
+ readonly replyTo: readonly string[];
3188
+ readonly subject: string;
3189
+ readonly text: string | null;
3190
+ readonly html: string | null;
3191
+ readonly attachments: readonly {
3192
+ readonly filename: string;
3193
+ readonly content?: string | null;
3194
+ readonly mediaId?: (string & import("effect/Brand").Brand<"MediaId">) | null;
3195
+ readonly contentType: string;
3196
+ readonly size: number;
3197
+ }[];
3198
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
3199
+ readonly conversationId: (string & import("effect/Brand").Brand<"ConversationId">) | null;
3200
+ readonly inReplyToMessageId: (string & import("effect/Brand").Brand<"MessageId">) | null;
3201
+ } | null;
3202
+ } | {
3203
+ readonly id: string & import("effect/Brand").Brand<"MailboxActionId">;
3204
+ readonly source: "aiSdkTool" | "extension" | "externalAgent" | "externalApi" | "humanUi" | "samvaManagedAgent" | "system";
3205
+ readonly proposedBy: {
3206
+ readonly kind: "apiKey" | "extension" | "externalAgent" | "samvaAgent" | "system" | "user";
3207
+ readonly id: string;
3208
+ readonly displayName?: string | null;
3209
+ };
3210
+ readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
3211
+ readonly draftId: (string & import("effect/Brand").Brand<"MailboxDraftId">) | null;
3212
+ readonly decision: {
3213
+ readonly outcome: "allow" | "deny" | "requireApproval";
3214
+ readonly reason: string | null;
3215
+ readonly policyId: (string & import("effect/Brand").Brand<"MailboxPolicyId">) | null;
3216
+ readonly source: "grant" | "installation" | "policy" | null;
3217
+ readonly decidedAt: string;
3218
+ } | null;
3219
+ readonly createdAt: string;
3220
+ readonly updatedAt: string;
3221
+ readonly type: "assignThread" | "call" | "changeThreadState" | "createNote" | "extensionRequest" | "updateDraft";
3222
+ readonly state: "allowed" | "approvalDenied" | "approvalRequired" | "approved" | "executed" | "executing" | "failed" | "policyDenied" | "proposed";
3223
+ }, import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").MailboxSendConflictError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
1607
3224
  export declare const listEvents: ((input: {
1608
3225
  readonly id: string;
1609
3226
  readonly limit?: string | null | undefined;
@@ -1613,7 +3230,7 @@ export declare const listEvents: ((input: {
1613
3230
  }) => import("effect/Effect").Effect<{
1614
3231
  readonly items: readonly {
1615
3232
  readonly id: string & import("effect/Brand").Brand<"MailboxEventId">;
1616
- readonly type: "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "draft.created" | "draft.updated" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created" | "thread.updated";
3233
+ readonly type: "action.accepted" | "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created";
1617
3234
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1618
3235
  readonly actionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1619
3236
  readonly actor: {
@@ -1637,7 +3254,7 @@ export declare const listEvents: ((input: {
1637
3254
  }) => import("effect/Stream").Stream<{
1638
3255
  readonly items: readonly {
1639
3256
  readonly id: string & import("effect/Brand").Brand<"MailboxEventId">;
1640
- readonly type: "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "draft.created" | "draft.updated" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created" | "thread.updated";
3257
+ readonly type: "action.accepted" | "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created";
1641
3258
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1642
3259
  readonly actionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1643
3260
  readonly actor: {
@@ -1660,7 +3277,7 @@ export declare const listEvents: ((input: {
1660
3277
  readonly before?: string | null | undefined;
1661
3278
  }) => import("effect/Stream").Stream<{
1662
3279
  readonly id: string & import("effect/Brand").Brand<"MailboxEventId">;
1663
- readonly type: "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "draft.created" | "draft.updated" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created" | "thread.updated";
3280
+ readonly type: "action.accepted" | "action.approval_requested" | "action.approval_resolved" | "action.executed" | "action.failed" | "action.policy_decided" | "action.proposed" | "address.attached" | "email.received" | "email.released" | "email.sent" | "mailbox.created" | "thread.created";
1664
3281
  readonly threadId: (string & import("effect/Brand").Brand<"MailboxThreadId">) | null;
1665
3282
  readonly actionId: (string & import("effect/Brand").Brand<"MailboxActionId">) | null;
1666
3283
  readonly actor: {