sermon-js 0.0.0-stage → 0.2.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 (100) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +239 -2
  3. package/dist/api/index.cjs +174 -0
  4. package/dist/api/index.cjs.map +1 -0
  5. package/dist/api/index.d.cts +77 -0
  6. package/dist/api/index.d.ts +77 -0
  7. package/dist/api/index.js +171 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/chunk-2M4UBCDM.js +178 -0
  10. package/dist/chunk-2M4UBCDM.js.map +1 -0
  11. package/dist/chunk-AH372HLN.js +98 -0
  12. package/dist/chunk-AH372HLN.js.map +1 -0
  13. package/dist/chunk-APC2HVSI.js +154 -0
  14. package/dist/chunk-APC2HVSI.js.map +1 -0
  15. package/dist/chunk-D7BBJTYU.cjs +335 -0
  16. package/dist/chunk-D7BBJTYU.cjs.map +1 -0
  17. package/dist/chunk-ELV4ZU6G.cjs +51 -0
  18. package/dist/chunk-ELV4ZU6G.cjs.map +1 -0
  19. package/dist/chunk-EMP7XVKC.js +334 -0
  20. package/dist/chunk-EMP7XVKC.js.map +1 -0
  21. package/dist/chunk-I3346MUL.js +49 -0
  22. package/dist/chunk-I3346MUL.js.map +1 -0
  23. package/dist/chunk-NP3YYVRZ.cjs +163 -0
  24. package/dist/chunk-NP3YYVRZ.cjs.map +1 -0
  25. package/dist/chunk-PARE6EUZ.cjs +184 -0
  26. package/dist/chunk-PARE6EUZ.cjs.map +1 -0
  27. package/dist/chunk-XHXEKB3Q.cjs +241 -0
  28. package/dist/chunk-XHXEKB3Q.cjs.map +1 -0
  29. package/dist/chunk-XPXIDJUU.js +229 -0
  30. package/dist/chunk-XPXIDJUU.js.map +1 -0
  31. package/dist/chunk-ZI442ZA5.cjs +100 -0
  32. package/dist/chunk-ZI442ZA5.cjs.map +1 -0
  33. package/dist/config-BEbP-uLf.d.cts +125 -0
  34. package/dist/config-w1tm1bdu.d.ts +125 -0
  35. package/dist/generic-BJmlgtUM.d.ts +31 -0
  36. package/dist/generic-lmrGxMDC.d.cts +31 -0
  37. package/dist/index.cjs +407 -0
  38. package/dist/index.cjs.map +1 -0
  39. package/dist/index.d.cts +93 -0
  40. package/dist/index.d.ts +93 -0
  41. package/dist/index.js +330 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/presets/index.cjs +1012 -0
  44. package/dist/presets/index.cjs.map +1 -0
  45. package/dist/presets/index.d.cts +516 -0
  46. package/dist/presets/index.d.ts +516 -0
  47. package/dist/presets/index.js +971 -0
  48. package/dist/presets/index.js.map +1 -0
  49. package/dist/react/heroui/index.cjs +822 -0
  50. package/dist/react/heroui/index.cjs.map +1 -0
  51. package/dist/react/heroui/index.d.cts +122 -0
  52. package/dist/react/heroui/index.d.ts +122 -0
  53. package/dist/react/heroui/index.js +821 -0
  54. package/dist/react/heroui/index.js.map +1 -0
  55. package/dist/react/heroui/styles.css +11 -0
  56. package/dist/react/index.cjs +71 -0
  57. package/dist/react/index.cjs.map +1 -0
  58. package/dist/react/index.d.cts +53 -0
  59. package/dist/react/index.d.ts +53 -0
  60. package/dist/react/index.js +70 -0
  61. package/dist/react/index.js.map +1 -0
  62. package/dist/status-DsWzgb9Q.d.cts +146 -0
  63. package/dist/status-zd04ZQ98.d.ts +146 -0
  64. package/dist/store-DybhDphS.d.cts +77 -0
  65. package/dist/store-_GuzSP0z.d.ts +77 -0
  66. package/dist/stores/mongodb.cjs +99 -0
  67. package/dist/stores/mongodb.cjs.map +1 -0
  68. package/dist/stores/mongodb.d.cts +40 -0
  69. package/dist/stores/mongodb.d.ts +40 -0
  70. package/dist/stores/mongodb.js +97 -0
  71. package/dist/stores/mongodb.js.map +1 -0
  72. package/dist/stores/redis.cjs +23 -0
  73. package/dist/stores/redis.cjs.map +1 -0
  74. package/dist/stores/redis.d.cts +31 -0
  75. package/dist/stores/redis.d.ts +31 -0
  76. package/dist/stores/redis.js +21 -0
  77. package/dist/stores/redis.js.map +1 -0
  78. package/dist/stores/sql.cjs +164 -0
  79. package/dist/stores/sql.cjs.map +1 -0
  80. package/dist/stores/sql.d.cts +39 -0
  81. package/dist/stores/sql.d.ts +39 -0
  82. package/dist/stores/sql.js +162 -0
  83. package/dist/stores/sql.js.map +1 -0
  84. package/dist/stores/upstash.cjs +27 -0
  85. package/dist/stores/upstash.cjs.map +1 -0
  86. package/dist/stores/upstash.d.cts +19 -0
  87. package/dist/stores/upstash.d.ts +19 -0
  88. package/dist/stores/upstash.js +25 -0
  89. package/dist/stores/upstash.js.map +1 -0
  90. package/dist/testing/index.cjs +209 -0
  91. package/dist/testing/index.cjs.map +1 -0
  92. package/dist/testing/index.d.cts +66 -0
  93. package/dist/testing/index.d.ts +66 -0
  94. package/dist/testing/index.js +205 -0
  95. package/dist/testing/index.js.map +1 -0
  96. package/dist/tree-BXbXfjF1.d.cts +236 -0
  97. package/dist/tree-BXbXfjF1.d.ts +236 -0
  98. package/dist/types-CctvUAs2.d.cts +192 -0
  99. package/dist/types-CctvUAs2.d.ts +192 -0
  100. package/package.json +233 -3
@@ -0,0 +1,516 @@
1
+ export { G as GenericHttpOptions, g as generic } from '../generic-BJmlgtUM.js';
2
+ import { b as PresetOptions, S as ServiceDefinition } from '../config-w1tm1bdu.js';
3
+ import { P as ProbeHelpers, h as CommonOptions } from '../types-CctvUAs2.js';
4
+
5
+ type FlyAppOptions = PresetOptions & {
6
+ /** The Fly app name, e.g. "my-api" */
7
+ app: string;
8
+ secrets: {
9
+ /** A Fly API token. A read-only one is enough: `fly tokens create readonly` */
10
+ token: string | undefined;
11
+ };
12
+ track?: {
13
+ /**
14
+ * Health path probed on each machine that is already running (default "/").
15
+ * Pass `false` to only read machine states. `anyStatus` accepts any HTTP answer,
16
+ * e.g. for servers that answer 404 on their root.
17
+ */
18
+ health?: string | false | {
19
+ path?: string;
20
+ anyStatus?: boolean;
21
+ };
22
+ /** Report every machine individually (default true) */
23
+ machines?: boolean;
24
+ };
25
+ };
26
+ type FlyMachineEvent = {
27
+ type?: string;
28
+ timestamp?: number;
29
+ request?: {
30
+ exit_event?: {
31
+ exit_code?: number;
32
+ oom_killed?: boolean;
33
+ requested_stop?: boolean;
34
+ };
35
+ };
36
+ };
37
+ /** Last exit of a stopped machine, if it was a crash rather than a scale-to-zero stop */
38
+ declare function crashReason(machine: {
39
+ events?: FlyMachineEvent[];
40
+ }): string | undefined;
41
+ /** Presets for Fly.io */
42
+ declare const fly: {
43
+ app: (options: FlyAppOptions) => ServiceDefinition;
44
+ };
45
+
46
+ type GoogleServiceAccount = {
47
+ client_email: string;
48
+ private_key: string;
49
+ project_id?: string;
50
+ };
51
+ /** Parse a service-account JSON key; undefined when it isn't one */
52
+ declare function parseServiceAccount(json: string | undefined): GoogleServiceAccount | undefined;
53
+ /** A signed JWT assertion for Google's OAuth token endpoint (RS256, Web Crypto) */
54
+ declare function signGoogleAssertion({ account, scope, now, }: {
55
+ account: GoogleServiceAccount;
56
+ scope: string;
57
+ now?: number;
58
+ }): Promise<string>;
59
+ /** Forget cached tokens (for tests) */
60
+ declare function clearGoogleTokens(): void;
61
+ /**
62
+ * An OAuth access token for a Google service account, without any Google library: it only
63
+ * needs `fetch` and Web Crypto, so it works on edge runtimes. Tokens are kept in memory until
64
+ * shortly before they expire.
65
+ */
66
+ declare function googleServiceAccountToken({ account, scope, http, now, }: {
67
+ account: GoogleServiceAccount;
68
+ scope: string;
69
+ http: ProbeHelpers["http"];
70
+ now?: number;
71
+ }): Promise<string>;
72
+
73
+ type GcpInstanceOptions = PresetOptions & {
74
+ /** The Compute Engine instance name */
75
+ instance: string | undefined;
76
+ /** Its zone, e.g. "europe-west1-b" */
77
+ zone: string | undefined;
78
+ /** The project ID (default: the one in the service-account key) */
79
+ project?: string;
80
+ secrets: {
81
+ /** Service-account JSON key allowed to read instances (e.g. Compute Viewer) */
82
+ serviceAccount: string | undefined;
83
+ };
84
+ track?: {
85
+ /** URL probed only while the VM is RUNNING. Any HTTP answer counts as healthy. */
86
+ health?: string | false;
87
+ };
88
+ };
89
+ /** Presets for Google Cloud */
90
+ declare const gcp: {
91
+ instance: (options: GcpInstanceOptions) => ServiceDefinition;
92
+ };
93
+
94
+ type AwsSecrets = {
95
+ accessKeyId: string | undefined;
96
+ secretAccessKey: string | undefined;
97
+ };
98
+ type AwsCredentialsOptions = PresetOptions & {
99
+ /** How to call it: these credentials usually belong to one AWS service you use */
100
+ name: string;
101
+ secrets: AwsSecrets;
102
+ };
103
+ type S3BucketOptions = PresetOptions & {
104
+ bucket: string | undefined;
105
+ /** S3-compatible endpoint (Tigris, R2, MinIO…). Default: AWS S3 in `region`. */
106
+ endpoint?: string;
107
+ /** Region (default "us-east-1"; S3-compatible services often use "auto") */
108
+ region?: string;
109
+ secrets: AwsSecrets;
110
+ };
111
+ /** Presets for AWS and S3-compatible storage */
112
+ declare const aws: {
113
+ credentials: (options: AwsCredentialsOptions) => ServiceDefinition;
114
+ s3Bucket: (options: S3BucketOptions) => ServiceDefinition;
115
+ };
116
+
117
+ type MongoDatabase = {
118
+ command(command: Record<string, unknown>): Promise<unknown>;
119
+ };
120
+ type MongoLike = MongoDatabase | {
121
+ db(name?: string): MongoDatabase;
122
+ };
123
+ type MongoPingOptions = PresetOptions & {
124
+ /**
125
+ * Your `MongoClient` (or a `Db`). The driver connects on first use, so there is nothing to
126
+ * await. When undefined the service is "not configured".
127
+ */
128
+ client: MongoLike | undefined;
129
+ /** Optional: the connection string, only so it is redacted from public errors */
130
+ secrets?: {
131
+ url?: string;
132
+ };
133
+ };
134
+ /** Presets for MongoDB */
135
+ declare const mongodb: {
136
+ ping: (options: MongoPingOptions) => ServiceDefinition;
137
+ };
138
+ type RedisLike = {
139
+ ping: () => Promise<unknown>;
140
+ } | {
141
+ call: (command: string, ...args: string[]) => Promise<unknown>;
142
+ } | {
143
+ sendCommand: (args: string[]) => Promise<unknown>;
144
+ };
145
+ type RedisPingOptions = PresetOptions & {
146
+ /** A connected ioredis or node-redis client. When undefined the service is "not configured". */
147
+ client: RedisLike | undefined;
148
+ };
149
+ /** Presets for Redis servers reached with a client library */
150
+ declare const redis: {
151
+ ping: (options: RedisPingOptions) => ServiceDefinition;
152
+ };
153
+ type PostgresPingOptions = PresetOptions & {
154
+ /**
155
+ * Runs one statement with the driver you already use (pg, postgres.js, Neon…). When
156
+ * undefined the service is "not configured".
157
+ */
158
+ query: ((sql: string) => Promise<unknown>) | undefined;
159
+ /** Optional: the connection string, only so it is redacted from public errors */
160
+ secrets?: {
161
+ url?: string;
162
+ };
163
+ };
164
+ /** Presets for PostgreSQL servers reached with a client library */
165
+ declare const postgres: {
166
+ ping: (options: PostgresPingOptions) => ServiceDefinition;
167
+ };
168
+
169
+ type ApiKey = {
170
+ secrets: {
171
+ apiKey: string | undefined;
172
+ };
173
+ };
174
+ type DeepgramOptions = PresetOptions & ApiKey & {
175
+ track?: {
176
+ /** Warn when the prepaid balance drops below this amount (default 20). `false` skips the balance. */
177
+ balance?: {
178
+ warnBelow?: number;
179
+ } | false;
180
+ };
181
+ };
182
+ /**
183
+ * Deepgram. Lists projects, then reads the balance of the first one.
184
+ * - up: the key works
185
+ * - degraded: balance below `track.balance.warnBelow`, or the key sees no project
186
+ * - down: the API rejects the key or errors
187
+ *
188
+ * Reports `metrics.balance`. Keys without billing scope still count as up.
189
+ */
190
+ declare const deepgram: (options: DeepgramOptions) => ServiceDefinition;
191
+ /** Gladia. Lists live sessions (limit 1). up when the key works; down when rejected. */
192
+ declare const gladia: (options: CommonOptions & ApiKey) => ServiceDefinition;
193
+ type SpeechmaticsOptions = PresetOptions & ApiKey & {
194
+ /** API base URL, e.g. the EU endpoint (default "https://asr.api.speechmatics.com") */
195
+ baseUrl?: string;
196
+ };
197
+ /** Speechmatics. Lists batch jobs (limit 1), which validates the API key. */
198
+ declare const speechmatics: (options: SpeechmaticsOptions) => ServiceDefinition;
199
+ type OpenAIOptions = PresetOptions & ApiKey & {
200
+ /** Sent as the `OpenAI-Organization` header */
201
+ organization?: string;
202
+ track?: {
203
+ /** Also check that the key can use this model (`GET /v1/models/{model}`) */
204
+ model?: string;
205
+ };
206
+ };
207
+ /**
208
+ * OpenAI. Lists models, or reads one model when `track.model` is set (both free).
209
+ * It proves the key works; it can't see billing problems, which only show on real requests.
210
+ */
211
+ declare const openai: (options: OpenAIOptions) => ServiceDefinition;
212
+ /** Anthropic. Lists models (limit 1). up when the key works; down when rejected. */
213
+ declare const anthropic: (options: CommonOptions & ApiKey) => ServiceDefinition;
214
+ /** Google Gemini. Lists models (page size 1). */
215
+ declare const gemini: (options: CommonOptions & ApiKey) => ServiceDefinition;
216
+ /** CAMB.AI. Lists source languages. */
217
+ declare const cambai: (options: CommonOptions & ApiKey) => ServiceDefinition;
218
+ type ElevenLabsOptions = PresetOptions & ApiKey & {
219
+ track?: {
220
+ /** Warn when less than this share of the period's credits is left (default 10) */
221
+ quota?: {
222
+ warnBelowPct?: number;
223
+ };
224
+ };
225
+ };
226
+ /**
227
+ * ElevenLabs. Reads the subscription, which validates the API key.
228
+ * - up: the key works. A key without the user scope is refused with `missing_permissions`,
229
+ * which still proves it is valid.
230
+ * - degraded: less than `track.quota.warnBelowPct` of the credits left
231
+ * - down: the API rejects the key or errors
232
+ *
233
+ * Reports a `usage` bar (credits used this period, with the reset time) and `metrics.tier`.
234
+ */
235
+ declare const elevenlabs: (options: ElevenLabsOptions) => ServiceDefinition;
236
+
237
+ type DeepLOptions = PresetOptions & {
238
+ secrets: {
239
+ apiKey: string | undefined;
240
+ };
241
+ track?: {
242
+ /** Warn when this share of the character quota is used (default 90) */
243
+ quota?: {
244
+ warnAbovePct?: number;
245
+ };
246
+ };
247
+ };
248
+ /**
249
+ * DeepL. Reads `/v2/usage` (free and paid keys are detected from the key).
250
+ * - up: quota available
251
+ * - degraded: usage at or above `track.quota.warnAbovePct`
252
+ * - down: the API rejects the key or errors
253
+ *
254
+ * Reports a `usage` bar: characters used of the limit.
255
+ */
256
+ declare const deepl: (options: DeepLOptions) => ServiceDefinition;
257
+ type AzureTranslatorOptions = PresetOptions & {
258
+ secrets: {
259
+ apiKey: string | undefined;
260
+ };
261
+ /** Region of the Translator resource (default "westeurope") */
262
+ region?: string;
263
+ };
264
+ /** Azure Translator. Translates a single character, which proves the key and region work. */
265
+ declare const azureTranslator: (options: AzureTranslatorOptions) => ServiceDefinition;
266
+ type GoogleTranslateOptions = PresetOptions & {
267
+ secrets: {
268
+ /** The service-account JSON key (the whole file content), not an API key */
269
+ serviceAccount: string | undefined;
270
+ };
271
+ /** Translation location (default "global") */
272
+ location?: string;
273
+ };
274
+ /**
275
+ * Google Cloud Translation v3, with a service account. Gets a token, then lists supported
276
+ * languages (free: Google bills by characters translated).
277
+ * - up: languages returned
278
+ * - down: the key isn't valid JSON, or auth or the API fails
279
+ *
280
+ * Reports `metrics.languages`.
281
+ */
282
+ declare const googleTranslate: (options: GoogleTranslateOptions) => ServiceDefinition;
283
+
284
+ type MuxOptions = PresetOptions & {
285
+ secrets: {
286
+ tokenId: string | undefined;
287
+ tokenSecret: string | undefined;
288
+ };
289
+ };
290
+ /** Mux Video. Lists live streams (limit 1). up when the token works; down when rejected. */
291
+ declare const mux: (options: MuxOptions) => ServiceDefinition;
292
+ type CloudflareStreamOptions = PresetOptions & {
293
+ /** The Cloudflare account ID */
294
+ accountId: string | undefined;
295
+ secrets: {
296
+ token: string | undefined;
297
+ };
298
+ track?: {
299
+ /** Warn when this share of the storage plan is used (default 90). `false` skips storage. */
300
+ storage?: {
301
+ warnAbovePct?: number;
302
+ } | false;
303
+ };
304
+ };
305
+ /**
306
+ * Cloudflare Stream. Lists videos (limit 1) and reads storage usage, in parallel.
307
+ * - up: both calls work
308
+ * - degraded: storage at or above `track.storage.warnAbovePct`
309
+ * - down: either call fails
310
+ *
311
+ * Reports a `usage` bar (storage minutes) and `metrics.videos`.
312
+ */
313
+ declare const cloudflareStream: (options: CloudflareStreamOptions) => ServiceDefinition;
314
+
315
+ type MailerSendOptions = PresetOptions & {
316
+ secrets: {
317
+ apiKey: string | undefined;
318
+ };
319
+ track?: {
320
+ /** Warn when less than this share of the API quota is left (default 10) */
321
+ quota?: {
322
+ warnBelowPct?: number;
323
+ };
324
+ };
325
+ };
326
+ /**
327
+ * MailerSend. Reads `/v1/api-quota`.
328
+ * - up: quota available
329
+ * - degraded: less than `track.quota.warnBelowPct` of the requests left
330
+ * - down: the API rejects the key or errors
331
+ *
332
+ * Reports a `usage` bar: API requests used, with the reset time.
333
+ */
334
+ declare const mailersend: (options: MailerSendOptions) => ServiceDefinition;
335
+ type GitHubOptions = PresetOptions & {
336
+ secrets: {
337
+ token: string | undefined;
338
+ };
339
+ track?: {
340
+ /** Also check that the token can read this repository's releases, e.g. "owner/name" */
341
+ repo?: string;
342
+ /** Warn when less than this share of the hourly rate limit is left (default 10) */
343
+ rateLimit?: {
344
+ warnBelowPct?: number;
345
+ };
346
+ };
347
+ };
348
+ /**
349
+ * GitHub. Reads `/rate_limit` (free: it doesn't count against the limit), and optionally
350
+ * checks access to a repository's releases.
351
+ * - up: the token works (and can read the repository)
352
+ * - degraded: less than `track.rateLimit.warnBelowPct` of the hourly requests left
353
+ * - down: bad credentials, or the repository can't be read
354
+ *
355
+ * Reports a `usage` bar: requests this hour, with the reset time.
356
+ */
357
+ declare const github: (options: GitHubOptions) => ServiceDefinition;
358
+ type RevolutOptions = PresetOptions & {
359
+ secrets: {
360
+ apiKey: string | undefined;
361
+ };
362
+ /** Which Merchant API to call (default "production") */
363
+ environment?: "production" | "sandbox";
364
+ };
365
+ /** Revolut Merchant. Lists orders (limit 1). up when the secret key works; down when rejected. */
366
+ declare const revolut: (options: RevolutOptions) => ServiceDefinition;
367
+ type AttendeeOptions = PresetOptions & {
368
+ secrets: {
369
+ apiKey: string | undefined;
370
+ };
371
+ /** API base URL (default "https://app.attendee.dev") */
372
+ baseUrl?: string;
373
+ };
374
+ /** Attendee (meeting bots). Lists bots (page size 1). */
375
+ declare const attendee: (options: AttendeeOptions) => ServiceDefinition;
376
+ type AxiomOptions = PresetOptions & {
377
+ /** The dataset logs are sent to */
378
+ dataset: string | undefined;
379
+ /** Regional edge domain for ingestion, e.g. "eu-central-1.aws.edge.axiom.co" */
380
+ edge?: string;
381
+ secrets: {
382
+ token: string | undefined;
383
+ };
384
+ };
385
+ /** Axiom. Ingests an empty batch into the dataset: it writes nothing and proves token and dataset. */
386
+ declare const axiom: (options: AxiomOptions) => ServiceDefinition;
387
+ type UpstashRedisOptions = PresetOptions & {
388
+ /** REST URL of the database */
389
+ url: string | undefined;
390
+ secrets: {
391
+ token: string | undefined;
392
+ };
393
+ };
394
+ /**
395
+ * Upstash Redis / Vercel KV, over REST. Sends `PING` as a regular command (which compatible
396
+ * servers such as serverless-redis-http also accept). up on PONG.
397
+ */
398
+ declare const upstashRedis: (options: UpstashRedisOptions) => ServiceDefinition;
399
+ type StatuspageOptions = PresetOptions & {
400
+ /** The status page, e.g. "https://status.flyio.net" */
401
+ url: string;
402
+ };
403
+ /**
404
+ * Any provider that publishes an Atlassian Statuspage (Fly.io, Vercel, Cloudflare, GitHub…).
405
+ * Reads `/api/v2/status.json`.
406
+ * - up: the provider reports no incident
407
+ * - degraded: a minor incident
408
+ * - down: a major or critical incident
409
+ *
410
+ * The provider's own description becomes the error text.
411
+ */
412
+ declare const statuspage: (options: StatuspageOptions) => ServiceDefinition;
413
+ type ResendOptions = PresetOptions & {
414
+ secrets: {
415
+ apiKey: string | undefined;
416
+ };
417
+ };
418
+ /**
419
+ * Resend. Lists domains, which validates the API key.
420
+ * - up: the key works. A sending-only key is refused with `restricted_api_key`, which still
421
+ * proves it is valid.
422
+ * - degraded: domains exist, but none is verified
423
+ * - down: the API rejects the key or errors
424
+ *
425
+ * Reports `metrics.domains` and `metrics.verified` for full-access keys.
426
+ */
427
+ declare const resend: (options: ResendOptions) => ServiceDefinition;
428
+ type MeilisearchOptions = PresetOptions & {
429
+ /** The server, e.g. "https://search.example.com" */
430
+ host: string | undefined;
431
+ /** Also require this index, and report its document count */
432
+ index?: string;
433
+ secrets: {
434
+ apiKey: string | undefined;
435
+ };
436
+ };
437
+ /**
438
+ * Meilisearch. Reads `/health`, then the index (or the list of indexes), which validates the key.
439
+ * - up: the server is available and the key works
440
+ * - degraded: the index does not exist
441
+ * - down: the server is unavailable, or rejects the key
442
+ *
443
+ * Reports `metrics.documents`, and `metrics.indexing` while a batch is running, when the key
444
+ * may read statistics; scoped keys often may not, and that is not held against them.
445
+ */
446
+ declare const meilisearch: (options: MeilisearchOptions) => ServiceDefinition;
447
+
448
+ type PusherOptions = PresetOptions & {
449
+ appId: string | undefined;
450
+ /** Pusher cluster, e.g. "eu" (default "mt1"). Ignored when `host` is set. */
451
+ cluster?: string;
452
+ /** Custom host, for Pusher-compatible servers such as Soketi */
453
+ host?: string;
454
+ port?: string | number;
455
+ /** Use HTTPS (default: true unless a non-443 port is given) */
456
+ tls?: boolean;
457
+ secrets: {
458
+ key: string | undefined;
459
+ secret: string | undefined;
460
+ };
461
+ track?: {
462
+ connections?: {
463
+ /** Your plan's maximum concurrent connections: turns the counts into usage bars */
464
+ max?: number;
465
+ /** Warn when today's peak reaches this share of `max` (default 90) */
466
+ warnAbovePct?: number;
467
+ };
468
+ };
469
+ };
470
+ /** Path and signed query of a GET to the Pusher HTTP API */
471
+ declare function signPusherRequest({ appId, key, secret, path, params, timestamp, }: {
472
+ appId: string;
473
+ key: string;
474
+ secret: string;
475
+ path: string;
476
+ params?: Record<string, string>;
477
+ timestamp?: number;
478
+ }): Promise<string>;
479
+ /**
480
+ * Pusher Channels (and compatible servers). Lists occupied channels, then reads each one's
481
+ * `subscription_count` to estimate concurrent connections. Pusher has no usage API, so this is
482
+ * an estimate: clients subscribed to several channels make it run slightly high.
483
+ * Requires "subscription counting" enabled in the app settings.
484
+ * - up: the API answers
485
+ * - degraded: today's peak at or above `warnAbovePct` of `track.connections.max`, or subscription counting is off
486
+ * - down: the API rejects the credentials or errors
487
+ *
488
+ * Reports `metrics.channels` and `metrics.signedInUsers`; with `max`, two `usage` bars
489
+ * (connections now, peak today), otherwise the counts as metrics. The daily peak (UTC) is kept
490
+ * in the store's cache.
491
+ */
492
+ declare const pusher: (options: PusherOptions) => ServiceDefinition;
493
+
494
+ type VercelAiGatewayOptions = PresetOptions & {
495
+ secrets: {
496
+ apiKey: string | undefined;
497
+ };
498
+ track?: {
499
+ /** Warn when the credit balance drops below this amount in USD (default 5). `false` skips the balance. */
500
+ credits?: {
501
+ warnBelow?: number;
502
+ } | false;
503
+ };
504
+ };
505
+ type VercelBlobOptions = PresetOptions & {
506
+ secrets: {
507
+ token: string | undefined;
508
+ };
509
+ };
510
+ /** Presets for Vercel products */
511
+ declare const vercel: {
512
+ aiGateway: (options: VercelAiGatewayOptions) => ServiceDefinition;
513
+ blob: (options: VercelBlobOptions) => ServiceDefinition;
514
+ };
515
+
516
+ export { type AttendeeOptions, type AwsCredentialsOptions, type AxiomOptions, type AzureTranslatorOptions, type CloudflareStreamOptions, type DeepLOptions, type DeepgramOptions, type ElevenLabsOptions, type FlyAppOptions, type GcpInstanceOptions, type GitHubOptions, type GoogleServiceAccount, type GoogleTranslateOptions, type MailerSendOptions, type MeilisearchOptions, type MongoPingOptions, type MuxOptions, type OpenAIOptions, type PostgresPingOptions, type PusherOptions, type RedisPingOptions, type ResendOptions, type RevolutOptions, type S3BucketOptions, type SpeechmaticsOptions, type StatuspageOptions, type UpstashRedisOptions, type VercelAiGatewayOptions, type VercelBlobOptions, anthropic, attendee, aws, axiom, azureTranslator, cambai, clearGoogleTokens, cloudflareStream, crashReason, deepgram, deepl, elevenlabs, fly, gcp, gemini, github, gladia, googleServiceAccountToken, googleTranslate, mailersend, meilisearch, mongodb, mux, openai, parseServiceAccount, postgres, pusher, redis, resend, revolut, signGoogleAssertion, signPusherRequest, speechmatics, statuspage, upstashRedis, vercel };