@sendbird/cli 0.0.0-stage → 0.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/.claude-plugin/plugin.json +11 -0
  2. package/.codex-plugin/plugin.json +33 -0
  3. package/LICENSE +13 -0
  4. package/NOTICE.md +1105 -0
  5. package/PROVENANCE.md +15 -0
  6. package/README.md +457 -2
  7. package/dist/acl.d.ts +2 -0
  8. package/dist/acl.js +12 -0
  9. package/dist/acl.js.map +1 -0
  10. package/dist/billing-plan.d.ts +68 -0
  11. package/dist/billing-plan.js +235 -0
  12. package/dist/billing-plan.js.map +1 -0
  13. package/dist/browser.d.ts +1 -0
  14. package/dist/browser.js +20 -0
  15. package/dist/browser.js.map +1 -0
  16. package/dist/calls-catalog.d.ts +79 -0
  17. package/dist/calls-catalog.js +322 -0
  18. package/dist/calls-catalog.js.map +1 -0
  19. package/dist/calls-credits.d.ts +31 -0
  20. package/dist/calls-credits.js +224 -0
  21. package/dist/calls-credits.js.map +1 -0
  22. package/dist/calls-trial.d.ts +45 -0
  23. package/dist/calls-trial.js +77 -0
  24. package/dist/calls-trial.js.map +1 -0
  25. package/dist/calls.d.ts +10 -0
  26. package/dist/calls.js +470 -0
  27. package/dist/calls.js.map +1 -0
  28. package/dist/catalog.d.ts +67 -0
  29. package/dist/catalog.js +784 -0
  30. package/dist/catalog.js.map +1 -0
  31. package/dist/cli.d.ts +6 -0
  32. package/dist/cli.js +502 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/core.d.ts +86 -0
  35. package/dist/core.js +531 -0
  36. package/dist/core.js.map +1 -0
  37. package/dist/diagnostics.d.ts +206 -0
  38. package/dist/diagnostics.js +664 -0
  39. package/dist/diagnostics.js.map +1 -0
  40. package/dist/discovery.d.ts +700 -0
  41. package/dist/discovery.js +838 -0
  42. package/dist/discovery.js.map +1 -0
  43. package/dist/docs.d.ts +31 -0
  44. package/dist/docs.js +137 -0
  45. package/dist/docs.js.map +1 -0
  46. package/dist/features.d.ts +131 -0
  47. package/dist/features.js +227 -0
  48. package/dist/features.js.map +1 -0
  49. package/dist/generated-api.d.ts +116 -0
  50. package/dist/generated-api.js +118 -0
  51. package/dist/generated-api.js.map +1 -0
  52. package/dist/human-format.d.ts +40 -0
  53. package/dist/human-format.js +205 -0
  54. package/dist/human-format.js.map +1 -0
  55. package/dist/human-list.d.ts +2 -0
  56. package/dist/human-list.js +368 -0
  57. package/dist/human-list.js.map +1 -0
  58. package/dist/human-output.d.ts +10 -0
  59. package/dist/human-output.js +1351 -0
  60. package/dist/human-output.js.map +1 -0
  61. package/dist/human-pro.d.ts +3 -0
  62. package/dist/human-pro.js +201 -0
  63. package/dist/human-pro.js.map +1 -0
  64. package/dist/human-progress.d.ts +5 -0
  65. package/dist/human-progress.js +49 -0
  66. package/dist/human-progress.js.map +1 -0
  67. package/dist/local.d.ts +42 -0
  68. package/dist/local.js +707 -0
  69. package/dist/local.js.map +1 -0
  70. package/dist/oauth-callback.d.ts +3 -0
  71. package/dist/oauth-callback.js +66 -0
  72. package/dist/oauth-callback.js.map +1 -0
  73. package/dist/oauth-lock.d.ts +6 -0
  74. package/dist/oauth-lock.js +212 -0
  75. package/dist/oauth-lock.js.map +1 -0
  76. package/dist/oauth.d.ts +32 -0
  77. package/dist/oauth.js +493 -0
  78. package/dist/oauth.js.map +1 -0
  79. package/dist/presentation.d.ts +208 -0
  80. package/dist/presentation.js +156 -0
  81. package/dist/presentation.js.map +1 -0
  82. package/dist/pro-api-catalog.d.ts +24 -0
  83. package/dist/pro-api-catalog.js +619 -0
  84. package/dist/pro-api-catalog.js.map +1 -0
  85. package/dist/pro-api.d.ts +10 -0
  86. package/dist/pro-api.js +338 -0
  87. package/dist/pro-api.js.map +1 -0
  88. package/dist/project.d.ts +34 -0
  89. package/dist/project.js +62 -0
  90. package/dist/project.js.map +1 -0
  91. package/dist/recovery.d.ts +41 -0
  92. package/dist/recovery.js +417 -0
  93. package/dist/recovery.js.map +1 -0
  94. package/dist/runner.d.ts +47 -0
  95. package/dist/runner.js +603 -0
  96. package/dist/runner.js.map +1 -0
  97. package/dist/sdk-catalog.d.ts +69 -0
  98. package/dist/sdk-catalog.js +527 -0
  99. package/dist/sdk-catalog.js.map +1 -0
  100. package/dist/sdk-config.d.ts +19 -0
  101. package/dist/sdk-config.js +85 -0
  102. package/dist/sdk-config.js.map +1 -0
  103. package/dist/sdk-dto.d.ts +244 -0
  104. package/dist/sdk-dto.js +98 -0
  105. package/dist/sdk-dto.js.map +1 -0
  106. package/dist/sdk-limits.d.ts +2 -0
  107. package/dist/sdk-limits.js +3 -0
  108. package/dist/sdk-limits.js.map +1 -0
  109. package/dist/sdk-node-file-reader.d.ts +6 -0
  110. package/dist/sdk-node-file-reader.js +38 -0
  111. package/dist/sdk-node-file-reader.js.map +1 -0
  112. package/dist/sdk-pro-catalog.d.ts +22 -0
  113. package/dist/sdk-pro-catalog.js +234 -0
  114. package/dist/sdk-pro-catalog.js.map +1 -0
  115. package/dist/sdk-pro-runtime.d.ts +31 -0
  116. package/dist/sdk-pro-runtime.js +293 -0
  117. package/dist/sdk-pro-runtime.js.map +1 -0
  118. package/dist/sdk-query.d.ts +10 -0
  119. package/dist/sdk-query.js +29 -0
  120. package/dist/sdk-query.js.map +1 -0
  121. package/dist/sdk-runtime.d.ts +15 -0
  122. package/dist/sdk-runtime.js +685 -0
  123. package/dist/sdk-runtime.js.map +1 -0
  124. package/dist/sdk-worker.d.ts +1 -0
  125. package/dist/sdk-worker.js +26 -0
  126. package/dist/sdk-worker.js.map +1 -0
  127. package/dist/sdk.d.ts +29 -0
  128. package/dist/sdk.js +346 -0
  129. package/dist/sdk.js.map +1 -0
  130. package/dist/search-engine.d.ts +17 -0
  131. package/dist/search-engine.js +54 -0
  132. package/dist/search-engine.js.map +1 -0
  133. package/dist/search-intents.d.ts +2 -0
  134. package/dist/search-intents.js +98 -0
  135. package/dist/search-intents.js.map +1 -0
  136. package/dist/search.d.ts +7 -0
  137. package/dist/search.js +58 -0
  138. package/dist/search.js.map +1 -0
  139. package/dist/secret-output.d.ts +2 -0
  140. package/dist/secret-output.js +108 -0
  141. package/dist/secret-output.js.map +1 -0
  142. package/dist/shell.d.ts +3 -0
  143. package/dist/shell.js +14 -0
  144. package/dist/shell.js.map +1 -0
  145. package/dist/skills.d.ts +210 -0
  146. package/dist/skills.js +374 -0
  147. package/dist/skills.js.map +1 -0
  148. package/dist/value-semantics.d.ts +70 -0
  149. package/dist/value-semantics.js +173 -0
  150. package/dist/value-semantics.js.map +1 -0
  151. package/dist/version.d.ts +1 -0
  152. package/dist/version.js +3 -0
  153. package/dist/version.js.map +1 -0
  154. package/dist/windows.d.ts +4 -0
  155. package/dist/windows.js +136 -0
  156. package/dist/windows.js.map +1 -0
  157. package/dist/workflows.d.ts +228 -0
  158. package/dist/workflows.js +1207 -0
  159. package/dist/workflows.js.map +1 -0
  160. package/package.json +86 -4
  161. package/plugin.json +22 -0
  162. package/references/agent-guide.json +196 -0
  163. package/references/commands.md +247 -0
  164. package/references/dashboard-inventory.json +14796 -0
  165. package/references/docs-index.json +2709 -0
  166. package/references/sdk-commands.json +15065 -0
  167. package/references/workflows.json +1246 -0
  168. package/skills/sendbird/SKILL.md +96 -0
  169. package/skills/sendbird/agents/openai.yaml +4 -0
  170. package/skills/sendbird/references/build-chat-app.md +49 -0
  171. package/skills/sendbird/references/client-guide.md +34 -0
  172. package/skills/sendbird/references/client-plugin-bridge.md +77 -0
  173. package/skills/sendbird/references/client-plugin-install.md +39 -0
  174. package/skills/sendbird/references/operational-checks.md +35 -0
  175. package/skills/sendbird/references/pro-capabilities.md +52 -0
  176. package/skills/sendbird/scripts/client-guide.mjs +283 -0
  177. package/skills/sendbird/scripts/client-plugin-bridge.mjs +703 -0
  178. package/skills/sendbird-setup/SKILL.md +18 -0
  179. package/skills/sendbird-setup/agents/openai.yaml +4 -0
  180. package/skills/sendbird-setup/references/onboarding.md +73 -0
  181. package/skills/sendbird-setup/scripts/install-cli.mjs +447 -0
  182. package/skills/sendbird-setup/scripts/npm-run.mjs +34 -0
@@ -0,0 +1,235 @@
1
+ import { shellCommand } from "./shell.js";
2
+ import { z } from "zod";
3
+ import { CliError, encodeSegment, redact, request, } from "./core.js";
4
+ function response(schema, value) {
5
+ const parsed = schema.safeParse(value);
6
+ if (!parsed.success)
7
+ throw new CliError("E_SCHEMA", "Billing response lacks required identity or policy fields; inspect Dashboard", 8);
8
+ return parsed.data;
9
+ }
10
+ const subscriptionSummary = z
11
+ .object({
12
+ subscription_name: z.string(),
13
+ apply_date: z.string().nullable(),
14
+ next_billing_date: z.string().nullable(),
15
+ end_date: z.string().nullable(),
16
+ })
17
+ .nullable();
18
+ const sharedResult = {
19
+ product: z.literal("CHAT"),
20
+ requested_plan: z.string(),
21
+ mutation_sent: z.literal(false),
22
+ current_subscription: subscriptionSummary,
23
+ future_subscription: subscriptionSummary,
24
+ next: z.string(),
25
+ next_argv: z.array(z.string()),
26
+ };
27
+ export const billingVerificationSchema = z.object({
28
+ ...sharedResult,
29
+ change_state: z.enum(["current", "scheduled", "not_reflected"]),
30
+ });
31
+ export const billingHandoffSchema = z.object({
32
+ ...sharedResult,
33
+ organization: z.object({ uid: z.string(), name: z.string() }),
34
+ selection_state: z.enum(["requires_dashboard_review", "catalog_candidate"]),
35
+ reasons: z.array(z.string()),
36
+ payment_method: z.string(),
37
+ card_present: z.boolean().nullable(),
38
+ quote: z.null(),
39
+ effective_at: z.null(),
40
+ change_completed: z.literal(false),
41
+ handoff: z.object({
42
+ url: z.string().url(),
43
+ required: z.literal(true),
44
+ instruction: z.string(),
45
+ }),
46
+ });
47
+ const subscription = z
48
+ .object({
49
+ subscription_name: z.string().min(1),
50
+ subscription_type: z.string().min(1),
51
+ product: z.literal("CHAT").optional(),
52
+ is_aws_marketplace: z.boolean().optional(),
53
+ apply_date: z.string().nullable().optional(),
54
+ next_billing_date: z.string().nullable().optional(),
55
+ end_date: z.string().nullable().optional(),
56
+ })
57
+ .passthrough();
58
+ const infoSchema = z.object({
59
+ current_subscription: subscription.nullable(),
60
+ future_subscription: subscription.nullable(),
61
+ });
62
+ const orgSchema = z.object({
63
+ uid: z.string().min(1),
64
+ name: z.string().min(1),
65
+ payment_method: z.enum(["CARD", "WIRE", "MANUAL", "SHOPIFY"]),
66
+ is_self_serve: z.boolean(),
67
+ status: z.enum(["ACTIVE", "INACTIVE", "ARCHIVED"]),
68
+ });
69
+ const catalogSchema = z.record(z.string(), z.object({
70
+ plan: z.object({}).passthrough(),
71
+ product: z.string().optional(),
72
+ subscription_name: z.string().optional(),
73
+ subscription_type: z.string().optional(),
74
+ billing_cycle_months: z.number().int().nonnegative().optional(),
75
+ }));
76
+ /** No quote contract exists in Gate. These commands prepare a web handoff;
77
+ * they never submit subscribe, start a trial, or collect payment credentials.
78
+ * runner.ts verifies the authenticated organization and role before calling. */
79
+ export async function billingPlan(command, input, orgId, t, profileName) {
80
+ const read = (path, query, allowEmpty = false) => request(t, { method: "GET", path, query, allowEmpty });
81
+ const info = response(infoSchema, await read("/dashboard_api/billing/subscriptions/info/", {
82
+ product: "CHAT",
83
+ }));
84
+ const plan = String(input.plan);
85
+ const prefix = [
86
+ "sendbird",
87
+ ...(profileName ? ["--profile", profileName] : []),
88
+ "--org-id",
89
+ orgId,
90
+ ];
91
+ const nextArgv = command === "billing plan verify"
92
+ ? [...prefix, "billing", "plan", "current"]
93
+ : [...prefix, "billing", "plan", "verify", "--plan", plan];
94
+ const nextCommand = shellCommand(nextArgv, /^[a-zA-Z0-9_./:-]+$/);
95
+ if (command === "billing plan verify") {
96
+ const state = info.current_subscription?.subscription_name === plan
97
+ ? "current"
98
+ : info.future_subscription?.subscription_name === plan
99
+ ? "scheduled"
100
+ : "not_reflected";
101
+ return {
102
+ product: "CHAT",
103
+ requested_plan: plan,
104
+ change_state: state,
105
+ current_subscription: summary(info.current_subscription),
106
+ future_subscription: summary(info.future_subscription),
107
+ // Observing a matching plan is not proof that this CLI caused a change.
108
+ mutation_sent: false,
109
+ next: nextCommand,
110
+ next_argv: nextArgv,
111
+ };
112
+ }
113
+ const org = response(orgSchema, await read(`/dashboard_api/organizations/${encodeSegment(orgId)}/`));
114
+ if (org.uid !== orgId)
115
+ throw new CliError("E_CONTEXT", "Billing organization identity does not match the selected organization", 5);
116
+ if (command === "billing plan change" && input.confirm_org_name !== org.name)
117
+ throw new CliError("E_CONFIRMATION", "--confirm-org-name must exactly match the organization's current name; inspect billing plan check first", 2);
118
+ const catalog = response(catalogSchema, await read("/dashboard_api/billing/plans/", { organization_uid: orgId }));
119
+ if (!Object.hasOwn(catalog, plan))
120
+ throw new CliError("E_VALIDATION", "Requested plan is not in this organization's catalog; use billing plan list", 2);
121
+ const selected = catalog[plan];
122
+ if (selected.subscription_name && selected.subscription_name !== plan)
123
+ throw new CliError("E_SCHEMA", "Plan catalog identity does not match the requested plan", 8);
124
+ if (selected.product && selected.product !== "CHAT")
125
+ throw new CliError("E_VALIDATION", "Requested catalog entry is not a Chat product", 2);
126
+ const reasons = [];
127
+ const current = info.current_subscription;
128
+ if (current?.subscription_type === "SALES_CUSTOM")
129
+ reasons.push("sales_contract");
130
+ if (current &&
131
+ !["SALES_CUSTOM", "SELF_SERVE"].includes(current.subscription_type))
132
+ reasons.push("subscription_type_requires_review");
133
+ if (selected.subscription_type === "SALES_CUSTOM")
134
+ reasons.push("sales_plan");
135
+ if (current?.is_aws_marketplace)
136
+ reasons.push("aws_marketplace");
137
+ // Fail closed on an inconsistent Shopify tuple, rather than bypassing its
138
+ // external billing path when shop information happens to be absent.
139
+ if (org.payment_method === "SHOPIFY")
140
+ reasons.push("shopify_billing");
141
+ if (org.status !== "ACTIVE")
142
+ reasons.push("organization_inactive");
143
+ if (!org.is_self_serve)
144
+ reasons.push("legacy_organization");
145
+ if (org.payment_method === "WIRE" || org.payment_method === "MANUAL")
146
+ reasons.push("managed_payment");
147
+ if (info.future_subscription)
148
+ reasons.push("scheduled_subscription");
149
+ if (current?.end_date && current.subscription_name !== "free_trial")
150
+ reasons.push("cancellation_scheduled");
151
+ if (current?.subscription_name === plan)
152
+ reasons.push("already_current");
153
+ // Dashboard's picker exposes Starter/Pro families; catalog also contains
154
+ // support and sales-only entries. A catalog entry alone is not eligibility.
155
+ // Match Dashboard's TALK_TO_SALES_PLAN_NAMES, including 50K monthly/annual.
156
+ const salesPlan = [
157
+ "enterprise",
158
+ "plan_a_50k",
159
+ "plan_a_50k_annual",
160
+ "plan_a_100k",
161
+ "plan_b_50k",
162
+ "plan_b_50k_annual",
163
+ "plan_b_100k",
164
+ ].includes(plan);
165
+ if (salesPlan && !reasons.includes("sales_plan"))
166
+ reasons.push("sales_plan");
167
+ const selfServePlan = /^(?:plan_a_1k|plan_[ab]_(?:5|10|25)k(?:_annual)?)$/.test(plan);
168
+ if (!selfServePlan && !salesPlan)
169
+ reasons.push("dashboard_selection_required");
170
+ let cardPresent = null;
171
+ if (org.payment_method === "CARD" && reasons.length === 0) {
172
+ const card = response(z.union([
173
+ z.object({}).strict(),
174
+ z
175
+ .object({
176
+ brand: z.string().min(1),
177
+ last4: z.string().regex(/^\d{4}$/),
178
+ })
179
+ .passthrough(),
180
+ z.null(),
181
+ ]), await read(`/dashboard_api/organizations/${encodeSegment(orgId)}/card/`, undefined, true));
182
+ cardPresent = card !== null && "brand" in card;
183
+ if (!cardPresent)
184
+ reasons.push("payment_method_required");
185
+ }
186
+ // Never copy Shopify URLs or other untrusted server links into an agent
187
+ // handoff. Dashboard performs channel-specific navigation after login.
188
+ const dashboard = t.env === "staging"
189
+ ? "https://dashboard-dev.sendbird.com"
190
+ : "https://dashboard.sendbird.com";
191
+ const destination = reasons.some((r) => ["sales_contract", "sales_plan", "aws_marketplace"].includes(r))
192
+ ? "/settings/contact_us"
193
+ : reasons.includes("shopify_billing")
194
+ ? "/settings/general"
195
+ : "/settings/general/plans/chat";
196
+ return redact({
197
+ product: "CHAT",
198
+ requested_plan: plan,
199
+ organization: { uid: org.uid, name: org.name },
200
+ current_subscription: summary(current),
201
+ future_subscription: summary(info.future_subscription),
202
+ selection_state: reasons.length
203
+ ? "requires_dashboard_review"
204
+ : "catalog_candidate",
205
+ reasons,
206
+ payment_method: org.payment_method,
207
+ card_present: cardPresent,
208
+ quote: null,
209
+ effective_at: null,
210
+ handoff: {
211
+ url: `${dashboard}${destination}`,
212
+ required: true,
213
+ instruction: destination === "/settings/contact_us"
214
+ ? "Sign in to the same organization and request a plan review through Dashboard. This contract or target plan requires Sales or marketplace handling."
215
+ : destination === "/settings/general"
216
+ ? "Sign in to the same organization and follow Dashboard's Shopify billing link. Review and confirm in the external billing channel."
217
+ : "Sign in to the same organization, select the requested Chat plan, review the price and effective date, and confirm in Dashboard.",
218
+ },
219
+ mutation_sent: false,
220
+ change_completed: false,
221
+ next: nextCommand,
222
+ next_argv: nextArgv,
223
+ });
224
+ }
225
+ function summary(value) {
226
+ if (!value)
227
+ return null;
228
+ return {
229
+ subscription_name: value.subscription_name,
230
+ apply_date: value.apply_date ?? null,
231
+ next_billing_date: value.next_billing_date ?? null,
232
+ end_date: value.end_date ?? null,
233
+ };
234
+ }
235
+ //# sourceMappingURL=billing-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-plan.js","sourceRoot":"","sources":["../src/billing-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function openBrowser(url: string): void;
@@ -0,0 +1,20 @@
1
+ /** Browser launch is best effort: the caller always prints the same URL. */
2
+ import { spawn } from "node:child_process";
3
+ import { powershell } from "./windows.js";
4
+ export function openBrowser(url) {
5
+ if (new URL(url).protocol !== "https:")
6
+ return;
7
+ if (process.platform === "win32") {
8
+ try {
9
+ powershell(`$u=[Uri]$r.url; if($u.Scheme -ne 'https'){throw 'Expected HTTPS'}; $p=New-Object Diagnostics.ProcessStartInfo; $p.FileName=$u.AbsoluteUri; $p.UseShellExecute=$true; [Diagnostics.Process]::Start($p) | Out-Null`, { url });
10
+ }
11
+ catch {
12
+ /* The printed URL remains available for manual opening. */
13
+ }
14
+ return;
15
+ }
16
+ const child = spawn(process.platform === "darwin" ? "open" : "xdg-open", [url], { stdio: "ignore" });
17
+ child.on("error", () => { });
18
+ child.unref();
19
+ }
20
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,UAAU,CACR,kNAAkN,EAClN,EAAE,GAAG,EAAE,CACR,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EACnD,CAAC,GAAG,CAAC,EACL,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ import type { Definition } from "./catalog.js";
3
+ export declare const pushTypes: readonly ["apns_voip", "calls_apns_remote", "fcm_voip", "huawei_voip"];
4
+ export declare const relayMethodDescription = "Direct calls: stun&turn tries direct P2P/STUN first and falls back to TURN relay; turn uses TURN server relay only. Direct-call cloud recording prevents relay changes.";
5
+ export declare const callsActivationStateSchema: z.ZodObject<{
6
+ app_id: z.ZodString;
7
+ is_calls_enabled: z.ZodNullable<z.ZodBoolean>;
8
+ calls_flag_source: z.ZodEnum<{
9
+ unknown: "unknown";
10
+ is_calls_enabled: "is_calls_enabled";
11
+ "attrs.sendbird_calls.enabled": "attrs.sendbird_calls.enabled";
12
+ conflict: "conflict";
13
+ }>;
14
+ push_enabled: z.ZodNullable<z.ZodBoolean>;
15
+ region: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>;
17
+ export declare const callsDefinitions: Definition[];
18
+ export declare const pushRecord: z.ZodObject<{
19
+ id: z.ZodString;
20
+ push_type: z.ZodOptional<z.ZodString>;
21
+ is_sandbox: z.ZodOptional<z.ZodBoolean>;
22
+ apns_env_cert_type: z.ZodOptional<z.ZodString>;
23
+ apns_expiration: z.ZodOptional<z.ZodNumber>;
24
+ apns_name: z.ZodOptional<z.ZodString>;
25
+ apns_type: z.ZodOptional<z.ZodString>;
26
+ apns_key_id: z.ZodOptional<z.ZodString>;
27
+ apns_team_id: z.ZodOptional<z.ZodString>;
28
+ content_available: z.ZodOptional<z.ZodBoolean>;
29
+ mutable_content: z.ZodOptional<z.ZodBoolean>;
30
+ has_unread_count_badge: z.ZodOptional<z.ZodNumber>;
31
+ push_sound: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
+ project_id: z.ZodOptional<z.ZodString>;
33
+ private_key_id: z.ZodOptional<z.ZodString>;
34
+ use_v1_api: z.ZodOptional<z.ZodBoolean>;
35
+ created_at: z.ZodOptional<z.ZodNumber>;
36
+ huawei_app_id: z.ZodOptional<z.ZodString>;
37
+ }, z.core.$strip>;
38
+ export declare const callsPushListSchema: z.ZodObject<{
39
+ push_configurations: z.ZodArray<z.ZodObject<{
40
+ id: z.ZodString;
41
+ push_type: z.ZodOptional<z.ZodString>;
42
+ is_sandbox: z.ZodOptional<z.ZodBoolean>;
43
+ apns_env_cert_type: z.ZodOptional<z.ZodString>;
44
+ apns_expiration: z.ZodOptional<z.ZodNumber>;
45
+ apns_name: z.ZodOptional<z.ZodString>;
46
+ apns_type: z.ZodOptional<z.ZodString>;
47
+ apns_key_id: z.ZodOptional<z.ZodString>;
48
+ apns_team_id: z.ZodOptional<z.ZodString>;
49
+ content_available: z.ZodOptional<z.ZodBoolean>;
50
+ mutable_content: z.ZodOptional<z.ZodBoolean>;
51
+ has_unread_count_badge: z.ZodOptional<z.ZodNumber>;
52
+ push_sound: z.ZodOptional<z.ZodNullable<z.ZodString>>;
53
+ project_id: z.ZodOptional<z.ZodString>;
54
+ private_key_id: z.ZodOptional<z.ZodString>;
55
+ use_v1_api: z.ZodOptional<z.ZodBoolean>;
56
+ created_at: z.ZodOptional<z.ZodNumber>;
57
+ huawei_app_id: z.ZodOptional<z.ZodString>;
58
+ }, z.core.$strip>>;
59
+ total_count: z.ZodOptional<z.ZodNumber>;
60
+ next: z.ZodOptional<z.ZodString>;
61
+ prev: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>;
63
+ export declare const pushBody: z.ZodObject<{
64
+ format: z.ZodOptional<z.ZodEnum<{
65
+ p8: "p8";
66
+ p12: "p12";
67
+ }>>;
68
+ environment: z.ZodOptional<z.ZodEnum<{
69
+ production: "production";
70
+ development: "development";
71
+ }>>;
72
+ apns_bundle_id: z.ZodOptional<z.ZodString>;
73
+ apns_key_id: z.ZodOptional<z.ZodString>;
74
+ apns_team_id: z.ZodOptional<z.ZodString>;
75
+ apns_cert_password: z.ZodOptional<z.ZodString>;
76
+ huawei_app_id: z.ZodOptional<z.ZodString>;
77
+ huawei_app_secret: z.ZodOptional<z.ZodString>;
78
+ push_sound: z.ZodOptional<z.ZodNullable<z.ZodString>>;
79
+ }, z.core.$strict>;