@navios/jwt 0.5.0 → 0.7.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.
@@ -0,0 +1,936 @@
1
+ import jwt, { Secret as Secret$1 } from "jsonwebtoken";
2
+ import * as zod_v40 from "zod/v4";
3
+ import { z } from "zod/v4";
4
+ import * as zod_v4_core0 from "zod/v4/core";
5
+ import * as _navios_core0 from "@navios/core";
6
+ import { BoundInjectionToken, FactoryInjectionToken, InjectionToken } from "@navios/core";
7
+
8
+ //#region src/options/jwt-service.options.d.mts
9
+ /**
10
+ * Request type for secret or key provider functions.
11
+ *
12
+ * Used to distinguish between signing and verification operations when
13
+ * dynamically resolving secrets or keys.
14
+ */
15
+ declare enum RequestType {
16
+ /** Request is for signing a token */
17
+ Sign = "Sign",
18
+ /** Request is for verifying a token */
19
+ Verify = "Verify",
20
+ }
21
+ /**
22
+ * Supported JWT algorithms.
23
+ *
24
+ * Includes symmetric (HMAC) and asymmetric (RSA, ECDSA, EdDSA) algorithms.
25
+ */
26
+ declare const AlgorithmType: z.ZodEnum<{
27
+ HS256: "HS256";
28
+ HS384: "HS384";
29
+ HS512: "HS512";
30
+ RS256: "RS256";
31
+ RS384: "RS384";
32
+ RS512: "RS512";
33
+ ES256: "ES256";
34
+ ES384: "ES384";
35
+ ES512: "ES512";
36
+ PS256: "PS256";
37
+ PS384: "PS384";
38
+ PS512: "PS512";
39
+ none: "none";
40
+ }>;
41
+ /**
42
+ * JWT header schema.
43
+ *
44
+ * Defines the structure of the JWT header with standard claims.
45
+ */
46
+ declare const JwtHeaderSchema: z.ZodObject<{
47
+ alg: z.ZodUnion<[z.ZodEnum<{
48
+ HS256: "HS256";
49
+ HS384: "HS384";
50
+ HS512: "HS512";
51
+ RS256: "RS256";
52
+ RS384: "RS384";
53
+ RS512: "RS512";
54
+ ES256: "ES256";
55
+ ES384: "ES384";
56
+ ES512: "ES512";
57
+ PS256: "PS256";
58
+ PS384: "PS384";
59
+ PS512: "PS512";
60
+ none: "none";
61
+ }>, z.ZodString]>;
62
+ typ: z.ZodOptional<z.ZodString>;
63
+ cty: z.ZodOptional<z.ZodString>;
64
+ crit: z.ZodOptional<z.ZodArray<z.ZodString>>;
65
+ kid: z.ZodOptional<z.ZodString>;
66
+ jku: z.ZodOptional<z.ZodString>;
67
+ x5u: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
68
+ 'x5t#S256': z.ZodOptional<z.ZodString>;
69
+ x5t: z.ZodOptional<z.ZodString>;
70
+ x5c: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
71
+ }, z.core.$strip>;
72
+ /**
73
+ * JWT header type.
74
+ *
75
+ * Contains algorithm, type, and optional header claims.
76
+ */
77
+ type JwtHeader = z.infer<typeof JwtHeaderSchema>;
78
+ /**
79
+ * Schema for JWT signing options.
80
+ *
81
+ * Defines all available options for signing tokens including algorithm,
82
+ * expiration, audience, issuer, and other standard JWT claims.
83
+ */
84
+ declare const SignOptionsSchema: z.ZodObject<{
85
+ algorithm: z.ZodOptional<z.ZodEnum<{
86
+ HS256: "HS256";
87
+ HS384: "HS384";
88
+ HS512: "HS512";
89
+ RS256: "RS256";
90
+ RS384: "RS384";
91
+ RS512: "RS512";
92
+ ES256: "ES256";
93
+ ES384: "ES384";
94
+ ES512: "ES512";
95
+ PS256: "PS256";
96
+ PS384: "PS384";
97
+ PS512: "PS512";
98
+ none: "none";
99
+ }>>;
100
+ keyid: z.ZodOptional<z.ZodString>;
101
+ expiresIn: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
102
+ notBefore: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
103
+ audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>]>>;
104
+ subject: z.ZodOptional<z.ZodString>;
105
+ issuer: z.ZodOptional<z.ZodString>;
106
+ jwtid: z.ZodOptional<z.ZodString>;
107
+ mutatePayload: z.ZodOptional<z.ZodBoolean>;
108
+ noTimestamp: z.ZodOptional<z.ZodBoolean>;
109
+ header: z.ZodOptional<z.ZodObject<{
110
+ alg: z.ZodUnion<[z.ZodEnum<{
111
+ HS256: "HS256";
112
+ HS384: "HS384";
113
+ HS512: "HS512";
114
+ RS256: "RS256";
115
+ RS384: "RS384";
116
+ RS512: "RS512";
117
+ ES256: "ES256";
118
+ ES384: "ES384";
119
+ ES512: "ES512";
120
+ PS256: "PS256";
121
+ PS384: "PS384";
122
+ PS512: "PS512";
123
+ none: "none";
124
+ }>, z.ZodString]>;
125
+ typ: z.ZodOptional<z.ZodString>;
126
+ cty: z.ZodOptional<z.ZodString>;
127
+ crit: z.ZodOptional<z.ZodArray<z.ZodString>>;
128
+ kid: z.ZodOptional<z.ZodString>;
129
+ jku: z.ZodOptional<z.ZodString>;
130
+ x5u: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
131
+ 'x5t#S256': z.ZodOptional<z.ZodString>;
132
+ x5t: z.ZodOptional<z.ZodString>;
133
+ x5c: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
134
+ }, z.core.$strip>>;
135
+ encoding: z.ZodOptional<z.ZodString>;
136
+ allowInsecureKeySizes: z.ZodOptional<z.ZodBoolean>;
137
+ allowInvalidAsymmetricKeyTypes: z.ZodOptional<z.ZodBoolean>;
138
+ }, z.core.$strip>;
139
+ /**
140
+ * Options for signing JWT tokens.
141
+ *
142
+ * @see SignOptionsSchema for the complete schema definition
143
+ */
144
+ type SignOptions = z.infer<typeof SignOptionsSchema>;
145
+ /**
146
+ * Schema for JWT verification options.
147
+ *
148
+ * Defines all available options for verifying tokens including allowed
149
+ * algorithms, audience, issuer, expiration handling, and other validation rules.
150
+ */
151
+ declare const VerifyOptionsSchema: z.ZodObject<{
152
+ algorithms: z.ZodOptional<z.ZodArray<z.ZodEnum<{
153
+ HS256: "HS256";
154
+ HS384: "HS384";
155
+ HS512: "HS512";
156
+ RS256: "RS256";
157
+ RS384: "RS384";
158
+ RS512: "RS512";
159
+ ES256: "ES256";
160
+ ES384: "ES384";
161
+ ES512: "ES512";
162
+ PS256: "PS256";
163
+ PS384: "PS384";
164
+ PS512: "PS512";
165
+ none: "none";
166
+ }>>>;
167
+ audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>]>>;
168
+ clockTimestamp: z.ZodOptional<z.ZodNumber>;
169
+ clockTolerance: z.ZodOptional<z.ZodNumber>;
170
+ complete: z.ZodOptional<z.ZodBoolean>;
171
+ issuer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
172
+ ignoreExpiration: z.ZodOptional<z.ZodBoolean>;
173
+ ignoreNotBefore: z.ZodOptional<z.ZodBoolean>;
174
+ jwtid: z.ZodOptional<z.ZodString>;
175
+ nonce: z.ZodOptional<z.ZodString>;
176
+ subject: z.ZodOptional<z.ZodString>;
177
+ maxAge: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
178
+ allowInvalidAsymmetricKeyTypes: z.ZodOptional<z.ZodBoolean>;
179
+ }, z.core.$strip>;
180
+ /**
181
+ * Options for verifying JWT tokens.
182
+ *
183
+ * @see VerifyOptionsSchema for the complete schema definition
184
+ */
185
+ type VerifyOptions = z.infer<typeof VerifyOptionsSchema>;
186
+ /**
187
+ * Schema for JWT secret/key types.
188
+ *
189
+ * Supports string secrets, Buffer objects, and key objects with passphrases.
190
+ */
191
+ declare const SecretSchema: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, z.ZodObject<{
192
+ type: z.ZodString;
193
+ }, z.core.$loose>, z.ZodObject<{
194
+ key: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
195
+ passphrase: z.ZodString;
196
+ }, z.core.$strip>]>;
197
+ /**
198
+ * Secret or key type for JWT operations.
199
+ *
200
+ * Can be a string, Buffer, or an object with key and optional passphrase.
201
+ */
202
+ type Secret = z.infer<typeof SecretSchema>;
203
+ declare const JwtServiceOptionsSchema: z.ZodObject<{
204
+ signOptions: z.ZodOptional<z.ZodObject<{
205
+ algorithm: z.ZodOptional<z.ZodEnum<{
206
+ HS256: "HS256";
207
+ HS384: "HS384";
208
+ HS512: "HS512";
209
+ RS256: "RS256";
210
+ RS384: "RS384";
211
+ RS512: "RS512";
212
+ ES256: "ES256";
213
+ ES384: "ES384";
214
+ ES512: "ES512";
215
+ PS256: "PS256";
216
+ PS384: "PS384";
217
+ PS512: "PS512";
218
+ none: "none";
219
+ }>>;
220
+ keyid: z.ZodOptional<z.ZodString>;
221
+ expiresIn: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
222
+ notBefore: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
223
+ audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>]>>;
224
+ subject: z.ZodOptional<z.ZodString>;
225
+ issuer: z.ZodOptional<z.ZodString>;
226
+ jwtid: z.ZodOptional<z.ZodString>;
227
+ mutatePayload: z.ZodOptional<z.ZodBoolean>;
228
+ noTimestamp: z.ZodOptional<z.ZodBoolean>;
229
+ header: z.ZodOptional<z.ZodObject<{
230
+ alg: z.ZodUnion<[z.ZodEnum<{
231
+ HS256: "HS256";
232
+ HS384: "HS384";
233
+ HS512: "HS512";
234
+ RS256: "RS256";
235
+ RS384: "RS384";
236
+ RS512: "RS512";
237
+ ES256: "ES256";
238
+ ES384: "ES384";
239
+ ES512: "ES512";
240
+ PS256: "PS256";
241
+ PS384: "PS384";
242
+ PS512: "PS512";
243
+ none: "none";
244
+ }>, z.ZodString]>;
245
+ typ: z.ZodOptional<z.ZodString>;
246
+ cty: z.ZodOptional<z.ZodString>;
247
+ crit: z.ZodOptional<z.ZodArray<z.ZodString>>;
248
+ kid: z.ZodOptional<z.ZodString>;
249
+ jku: z.ZodOptional<z.ZodString>;
250
+ x5u: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
251
+ 'x5t#S256': z.ZodOptional<z.ZodString>;
252
+ x5t: z.ZodOptional<z.ZodString>;
253
+ x5c: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
254
+ }, z.core.$strip>>;
255
+ encoding: z.ZodOptional<z.ZodString>;
256
+ allowInsecureKeySizes: z.ZodOptional<z.ZodBoolean>;
257
+ allowInvalidAsymmetricKeyTypes: z.ZodOptional<z.ZodBoolean>;
258
+ }, z.core.$strip>>;
259
+ secret: z.ZodOptional<z.ZodString>;
260
+ publicKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>>;
261
+ privateKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, z.ZodObject<{
262
+ type: z.ZodString;
263
+ }, z.core.$loose>, z.ZodObject<{
264
+ key: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
265
+ passphrase: z.ZodString;
266
+ }, z.core.$strip>]>>;
267
+ verifyOptions: z.ZodOptional<z.ZodObject<{
268
+ algorithms: z.ZodOptional<z.ZodArray<z.ZodEnum<{
269
+ HS256: "HS256";
270
+ HS384: "HS384";
271
+ HS512: "HS512";
272
+ RS256: "RS256";
273
+ RS384: "RS384";
274
+ RS512: "RS512";
275
+ ES256: "ES256";
276
+ ES384: "ES384";
277
+ ES512: "ES512";
278
+ PS256: "PS256";
279
+ PS384: "PS384";
280
+ PS512: "PS512";
281
+ none: "none";
282
+ }>>>;
283
+ audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>]>>;
284
+ clockTimestamp: z.ZodOptional<z.ZodNumber>;
285
+ clockTolerance: z.ZodOptional<z.ZodNumber>;
286
+ complete: z.ZodOptional<z.ZodBoolean>;
287
+ issuer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
288
+ ignoreExpiration: z.ZodOptional<z.ZodBoolean>;
289
+ ignoreNotBefore: z.ZodOptional<z.ZodBoolean>;
290
+ jwtid: z.ZodOptional<z.ZodString>;
291
+ nonce: z.ZodOptional<z.ZodString>;
292
+ subject: z.ZodOptional<z.ZodString>;
293
+ maxAge: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
294
+ allowInvalidAsymmetricKeyTypes: z.ZodOptional<z.ZodBoolean>;
295
+ }, z.core.$strip>>;
296
+ secretOrKeyProvider: z.ZodOptional<z.ZodFunction<z.ZodTuple<readonly [z.ZodEnum<typeof RequestType>, z.ZodAny, z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
297
+ algorithm: z.ZodOptional<z.ZodEnum<{
298
+ HS256: "HS256";
299
+ HS384: "HS384";
300
+ HS512: "HS512";
301
+ RS256: "RS256";
302
+ RS384: "RS384";
303
+ RS512: "RS512";
304
+ ES256: "ES256";
305
+ ES384: "ES384";
306
+ ES512: "ES512";
307
+ PS256: "PS256";
308
+ PS384: "PS384";
309
+ PS512: "PS512";
310
+ none: "none";
311
+ }>>;
312
+ keyid: z.ZodOptional<z.ZodString>;
313
+ expiresIn: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
314
+ notBefore: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
315
+ audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>]>>;
316
+ subject: z.ZodOptional<z.ZodString>;
317
+ issuer: z.ZodOptional<z.ZodString>;
318
+ jwtid: z.ZodOptional<z.ZodString>;
319
+ mutatePayload: z.ZodOptional<z.ZodBoolean>;
320
+ noTimestamp: z.ZodOptional<z.ZodBoolean>;
321
+ header: z.ZodOptional<z.ZodObject<{
322
+ alg: z.ZodUnion<[z.ZodEnum<{
323
+ HS256: "HS256";
324
+ HS384: "HS384";
325
+ HS512: "HS512";
326
+ RS256: "RS256";
327
+ RS384: "RS384";
328
+ RS512: "RS512";
329
+ ES256: "ES256";
330
+ ES384: "ES384";
331
+ ES512: "ES512";
332
+ PS256: "PS256";
333
+ PS384: "PS384";
334
+ PS512: "PS512";
335
+ none: "none";
336
+ }>, z.ZodString]>;
337
+ typ: z.ZodOptional<z.ZodString>;
338
+ cty: z.ZodOptional<z.ZodString>;
339
+ crit: z.ZodOptional<z.ZodArray<z.ZodString>>;
340
+ kid: z.ZodOptional<z.ZodString>;
341
+ jku: z.ZodOptional<z.ZodString>;
342
+ x5u: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
343
+ 'x5t#S256': z.ZodOptional<z.ZodString>;
344
+ x5t: z.ZodOptional<z.ZodString>;
345
+ x5c: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
346
+ }, z.core.$strip>>;
347
+ encoding: z.ZodOptional<z.ZodString>;
348
+ allowInsecureKeySizes: z.ZodOptional<z.ZodBoolean>;
349
+ allowInvalidAsymmetricKeyTypes: z.ZodOptional<z.ZodBoolean>;
350
+ }, z.core.$strip>, z.ZodObject<{
351
+ algorithms: z.ZodOptional<z.ZodArray<z.ZodEnum<{
352
+ HS256: "HS256";
353
+ HS384: "HS384";
354
+ HS512: "HS512";
355
+ RS256: "RS256";
356
+ RS384: "RS384";
357
+ RS512: "RS512";
358
+ ES256: "ES256";
359
+ ES384: "ES384";
360
+ ES512: "ES512";
361
+ PS256: "PS256";
362
+ PS384: "PS384";
363
+ PS512: "PS512";
364
+ none: "none";
365
+ }>>>;
366
+ audience: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>]>>;
367
+ clockTimestamp: z.ZodOptional<z.ZodNumber>;
368
+ clockTolerance: z.ZodOptional<z.ZodNumber>;
369
+ complete: z.ZodOptional<z.ZodBoolean>;
370
+ issuer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
371
+ ignoreExpiration: z.ZodOptional<z.ZodBoolean>;
372
+ ignoreNotBefore: z.ZodOptional<z.ZodBoolean>;
373
+ jwtid: z.ZodOptional<z.ZodString>;
374
+ nonce: z.ZodOptional<z.ZodString>;
375
+ subject: z.ZodOptional<z.ZodString>;
376
+ maxAge: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
377
+ allowInvalidAsymmetricKeyTypes: z.ZodOptional<z.ZodBoolean>;
378
+ }, z.core.$strip>]>>], null>, z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, z.ZodObject<{
379
+ type: z.ZodString;
380
+ }, z.core.$loose>, z.ZodObject<{
381
+ key: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
382
+ passphrase: z.ZodString;
383
+ }, z.core.$strip>]>, z.ZodPromise<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, z.ZodObject<{
384
+ type: z.ZodString;
385
+ }, z.core.$loose>, z.ZodObject<{
386
+ key: z.ZodUnion<readonly [z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
387
+ passphrase: z.ZodString;
388
+ }, z.core.$strip>]>>]>>>;
389
+ }, z.core.$strip>;
390
+ /**
391
+ * Configuration options for the JWT service.
392
+ *
393
+ * @property signOptions - Default options for signing tokens
394
+ * @property secret - Default secret for symmetric algorithms (HS256, HS384, HS512)
395
+ * @property publicKey - Default public key for asymmetric algorithms (RS256, ES256, etc.)
396
+ * @property privateKey - Default private key for asymmetric algorithms
397
+ * @property verifyOptions - Default options for verifying tokens
398
+ * @property secretOrKeyProvider - Optional function to dynamically resolve secrets/keys
399
+ *
400
+ * @example
401
+ * ```ts
402
+ * const options: JwtServiceOptions = {
403
+ * secret: 'your-secret-key',
404
+ * signOptions: {
405
+ * expiresIn: '1h',
406
+ * algorithm: 'HS256',
407
+ * },
408
+ * verifyOptions: {
409
+ * algorithms: ['HS256'],
410
+ * },
411
+ * }
412
+ * ```
413
+ */
414
+ type JwtServiceOptions = z.infer<typeof JwtServiceOptionsSchema>;
415
+ /**
416
+ * Options for signing JWT tokens.
417
+ *
418
+ * Extends `SignOptions` with additional properties for specifying
419
+ * the secret or private key to use for signing.
420
+ *
421
+ * @property secret - Secret key for symmetric algorithms (overrides service default)
422
+ * @property privateKey - Private key for asymmetric algorithms (overrides service default)
423
+ */
424
+ interface JwtSignOptions extends SignOptions {
425
+ /** Secret key for symmetric algorithms */
426
+ secret?: string | Buffer;
427
+ /** Private key for asymmetric algorithms */
428
+ privateKey?: Secret;
429
+ }
430
+ /**
431
+ * Options for verifying JWT tokens.
432
+ *
433
+ * Extends `VerifyOptions` with additional properties for specifying
434
+ * the secret or public key to use for verification.
435
+ *
436
+ * @property secret - Secret key for symmetric algorithms (overrides service default)
437
+ * @property publicKey - Public key for asymmetric algorithms (overrides service default)
438
+ */
439
+ interface JwtVerifyOptions extends VerifyOptions {
440
+ /** Secret key for symmetric algorithms */
441
+ secret?: string | Buffer;
442
+ /** Public key for asymmetric algorithms */
443
+ publicKey?: string | Buffer;
444
+ }
445
+ /**
446
+ * Result type for secret/key resolution.
447
+ *
448
+ * Represents the possible return types from secret or key provider functions.
449
+ */
450
+ type GetSecretKeyResult = string | Buffer | Secret$1;
451
+ //#endregion
452
+ //#region src/jwt.service.d.mts
453
+ /**
454
+ * Injection token for JwtService.
455
+ *
456
+ * Used internally by the dependency injection system to register and resolve JwtService instances.
457
+ */
458
+ declare const JwtServiceToken: InjectionToken<unknown, zod_v40.ZodObject<{
459
+ signOptions: zod_v40.ZodOptional<zod_v40.ZodObject<{
460
+ algorithm: zod_v40.ZodOptional<zod_v40.ZodEnum<{
461
+ HS256: "HS256";
462
+ HS384: "HS384";
463
+ HS512: "HS512";
464
+ RS256: "RS256";
465
+ RS384: "RS384";
466
+ RS512: "RS512";
467
+ ES256: "ES256";
468
+ ES384: "ES384";
469
+ ES512: "ES512";
470
+ PS256: "PS256";
471
+ PS384: "PS384";
472
+ PS512: "PS512";
473
+ none: "none";
474
+ }>>;
475
+ keyid: zod_v40.ZodOptional<zod_v40.ZodString>;
476
+ expiresIn: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodNumber]>>;
477
+ notBefore: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodNumber]>>;
478
+ audience: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>, zod_v40.ZodArray<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>]>>]>>;
479
+ subject: zod_v40.ZodOptional<zod_v40.ZodString>;
480
+ issuer: zod_v40.ZodOptional<zod_v40.ZodString>;
481
+ jwtid: zod_v40.ZodOptional<zod_v40.ZodString>;
482
+ mutatePayload: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
483
+ noTimestamp: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
484
+ header: zod_v40.ZodOptional<zod_v40.ZodObject<{
485
+ alg: zod_v40.ZodUnion<[zod_v40.ZodEnum<{
486
+ HS256: "HS256";
487
+ HS384: "HS384";
488
+ HS512: "HS512";
489
+ RS256: "RS256";
490
+ RS384: "RS384";
491
+ RS512: "RS512";
492
+ ES256: "ES256";
493
+ ES384: "ES384";
494
+ ES512: "ES512";
495
+ PS256: "PS256";
496
+ PS384: "PS384";
497
+ PS512: "PS512";
498
+ none: "none";
499
+ }>, zod_v40.ZodString]>;
500
+ typ: zod_v40.ZodOptional<zod_v40.ZodString>;
501
+ cty: zod_v40.ZodOptional<zod_v40.ZodString>;
502
+ crit: zod_v40.ZodOptional<zod_v40.ZodArray<zod_v40.ZodString>>;
503
+ kid: zod_v40.ZodOptional<zod_v40.ZodString>;
504
+ jku: zod_v40.ZodOptional<zod_v40.ZodString>;
505
+ x5u: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodArray<zod_v40.ZodString>]>>;
506
+ 'x5t#S256': zod_v40.ZodOptional<zod_v40.ZodString>;
507
+ x5t: zod_v40.ZodOptional<zod_v40.ZodString>;
508
+ x5c: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodArray<zod_v40.ZodString>]>>;
509
+ }, zod_v4_core0.$strip>>;
510
+ encoding: zod_v40.ZodOptional<zod_v40.ZodString>;
511
+ allowInsecureKeySizes: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
512
+ allowInvalidAsymmetricKeyTypes: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
513
+ }, zod_v4_core0.$strip>>;
514
+ secret: zod_v40.ZodOptional<zod_v40.ZodString>;
515
+ publicKey: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>>;
516
+ privateKey: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, zod_v40.ZodObject<{
517
+ type: zod_v40.ZodString;
518
+ }, zod_v4_core0.$loose>, zod_v40.ZodObject<{
519
+ key: zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
520
+ passphrase: zod_v40.ZodString;
521
+ }, zod_v4_core0.$strip>]>>;
522
+ verifyOptions: zod_v40.ZodOptional<zod_v40.ZodObject<{
523
+ algorithms: zod_v40.ZodOptional<zod_v40.ZodArray<zod_v40.ZodEnum<{
524
+ HS256: "HS256";
525
+ HS384: "HS384";
526
+ HS512: "HS512";
527
+ RS256: "RS256";
528
+ RS384: "RS384";
529
+ RS512: "RS512";
530
+ ES256: "ES256";
531
+ ES384: "ES384";
532
+ ES512: "ES512";
533
+ PS256: "PS256";
534
+ PS384: "PS384";
535
+ PS512: "PS512";
536
+ none: "none";
537
+ }>>>;
538
+ audience: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>, zod_v40.ZodArray<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>]>>]>>;
539
+ clockTimestamp: zod_v40.ZodOptional<zod_v40.ZodNumber>;
540
+ clockTolerance: zod_v40.ZodOptional<zod_v40.ZodNumber>;
541
+ complete: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
542
+ issuer: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodArray<zod_v40.ZodString>]>>;
543
+ ignoreExpiration: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
544
+ ignoreNotBefore: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
545
+ jwtid: zod_v40.ZodOptional<zod_v40.ZodString>;
546
+ nonce: zod_v40.ZodOptional<zod_v40.ZodString>;
547
+ subject: zod_v40.ZodOptional<zod_v40.ZodString>;
548
+ maxAge: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodNumber]>>;
549
+ allowInvalidAsymmetricKeyTypes: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
550
+ }, zod_v4_core0.$strip>>;
551
+ secretOrKeyProvider: zod_v40.ZodOptional<zod_v40.ZodFunction<zod_v40.ZodTuple<readonly [zod_v40.ZodEnum<typeof RequestType>, zod_v40.ZodAny, zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodObject<{
552
+ algorithm: zod_v40.ZodOptional<zod_v40.ZodEnum<{
553
+ HS256: "HS256";
554
+ HS384: "HS384";
555
+ HS512: "HS512";
556
+ RS256: "RS256";
557
+ RS384: "RS384";
558
+ RS512: "RS512";
559
+ ES256: "ES256";
560
+ ES384: "ES384";
561
+ ES512: "ES512";
562
+ PS256: "PS256";
563
+ PS384: "PS384";
564
+ PS512: "PS512";
565
+ none: "none";
566
+ }>>;
567
+ keyid: zod_v40.ZodOptional<zod_v40.ZodString>;
568
+ expiresIn: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodNumber]>>;
569
+ notBefore: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodNumber]>>;
570
+ audience: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>, zod_v40.ZodArray<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>]>>]>>;
571
+ subject: zod_v40.ZodOptional<zod_v40.ZodString>;
572
+ issuer: zod_v40.ZodOptional<zod_v40.ZodString>;
573
+ jwtid: zod_v40.ZodOptional<zod_v40.ZodString>;
574
+ mutatePayload: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
575
+ noTimestamp: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
576
+ header: zod_v40.ZodOptional<zod_v40.ZodObject<{
577
+ alg: zod_v40.ZodUnion<[zod_v40.ZodEnum<{
578
+ HS256: "HS256";
579
+ HS384: "HS384";
580
+ HS512: "HS512";
581
+ RS256: "RS256";
582
+ RS384: "RS384";
583
+ RS512: "RS512";
584
+ ES256: "ES256";
585
+ ES384: "ES384";
586
+ ES512: "ES512";
587
+ PS256: "PS256";
588
+ PS384: "PS384";
589
+ PS512: "PS512";
590
+ none: "none";
591
+ }>, zod_v40.ZodString]>;
592
+ typ: zod_v40.ZodOptional<zod_v40.ZodString>;
593
+ cty: zod_v40.ZodOptional<zod_v40.ZodString>;
594
+ crit: zod_v40.ZodOptional<zod_v40.ZodArray<zod_v40.ZodString>>;
595
+ kid: zod_v40.ZodOptional<zod_v40.ZodString>;
596
+ jku: zod_v40.ZodOptional<zod_v40.ZodString>;
597
+ x5u: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodArray<zod_v40.ZodString>]>>;
598
+ 'x5t#S256': zod_v40.ZodOptional<zod_v40.ZodString>;
599
+ x5t: zod_v40.ZodOptional<zod_v40.ZodString>;
600
+ x5c: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodArray<zod_v40.ZodString>]>>;
601
+ }, zod_v4_core0.$strip>>;
602
+ encoding: zod_v40.ZodOptional<zod_v40.ZodString>;
603
+ allowInsecureKeySizes: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
604
+ allowInvalidAsymmetricKeyTypes: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
605
+ }, zod_v4_core0.$strip>, zod_v40.ZodObject<{
606
+ algorithms: zod_v40.ZodOptional<zod_v40.ZodArray<zod_v40.ZodEnum<{
607
+ HS256: "HS256";
608
+ HS384: "HS384";
609
+ HS512: "HS512";
610
+ RS256: "RS256";
611
+ RS384: "RS384";
612
+ RS512: "RS512";
613
+ ES256: "ES256";
614
+ ES384: "ES384";
615
+ ES512: "ES512";
616
+ PS256: "PS256";
617
+ PS384: "PS384";
618
+ PS512: "PS512";
619
+ none: "none";
620
+ }>>>;
621
+ audience: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>, zod_v40.ZodArray<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<RegExp, RegExp>]>>]>>;
622
+ clockTimestamp: zod_v40.ZodOptional<zod_v40.ZodNumber>;
623
+ clockTolerance: zod_v40.ZodOptional<zod_v40.ZodNumber>;
624
+ complete: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
625
+ issuer: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodArray<zod_v40.ZodString>]>>;
626
+ ignoreExpiration: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
627
+ ignoreNotBefore: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
628
+ jwtid: zod_v40.ZodOptional<zod_v40.ZodString>;
629
+ nonce: zod_v40.ZodOptional<zod_v40.ZodString>;
630
+ subject: zod_v40.ZodOptional<zod_v40.ZodString>;
631
+ maxAge: zod_v40.ZodOptional<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodNumber]>>;
632
+ allowInvalidAsymmetricKeyTypes: zod_v40.ZodOptional<zod_v40.ZodBoolean>;
633
+ }, zod_v4_core0.$strip>]>>], null>, zod_v40.ZodUnion<readonly [zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, zod_v40.ZodObject<{
634
+ type: zod_v40.ZodString;
635
+ }, zod_v4_core0.$loose>, zod_v40.ZodObject<{
636
+ key: zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
637
+ passphrase: zod_v40.ZodString;
638
+ }, zod_v4_core0.$strip>]>, zod_v40.ZodPromise<zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>, zod_v40.ZodObject<{
639
+ type: zod_v40.ZodString;
640
+ }, zod_v4_core0.$loose>, zod_v40.ZodObject<{
641
+ key: zod_v40.ZodUnion<readonly [zod_v40.ZodString, zod_v40.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>]>;
642
+ passphrase: zod_v40.ZodString;
643
+ }, zod_v4_core0.$strip>]>>]>>>;
644
+ }, zod_v4_core0.$strip>, true>;
645
+ /**
646
+ * Service for signing, verifying, and decoding JSON Web Tokens (JWTs).
647
+ *
648
+ * This service provides a type-safe wrapper around the `jsonwebtoken` library with
649
+ * seamless integration into Navios's dependency injection system. It supports both
650
+ * symmetric (HS256, HS384, HS512) and asymmetric (RS256, ES256, etc.) algorithms.
651
+ *
652
+ * @example
653
+ * ```ts
654
+ * import { provideJwtService } from '@navios/jwt'
655
+ * import { inject } from '@navios/core'
656
+ *
657
+ * const JwtService = provideJwtService({
658
+ * secret: 'your-secret-key',
659
+ * signOptions: { expiresIn: '1h' },
660
+ * })
661
+ *
662
+ * @Injectable()
663
+ * class AuthService {
664
+ * jwtService = inject(JwtService)
665
+ *
666
+ * async login(userId: string) {
667
+ * const token = this.jwtService.sign({ userId, role: 'user' })
668
+ * return token
669
+ * }
670
+ * }
671
+ * ```
672
+ */
673
+ declare class JwtService {
674
+ private readonly options;
675
+ logger: _navios_core0.LoggerInstance;
676
+ /**
677
+ * Creates a new JwtService instance.
678
+ *
679
+ * @param options - Configuration options for the JWT service
680
+ */
681
+ constructor(options?: JwtServiceOptions);
682
+ /**
683
+ * Signs a JWT payload synchronously.
684
+ *
685
+ * When the payload is a string, only `secret` and `privateKey` options are allowed.
686
+ * For object or Buffer payloads, all sign options are available.
687
+ *
688
+ * @param payload - The payload to sign. Can be a string, Buffer, or object.
689
+ * @param options - Signing options. When payload is a string, only `secret` and `privateKey` are allowed.
690
+ * @returns The signed JWT token as a string
691
+ * @throws {Error} If `secretOrKeyProvider` returns a Promise (use `signAsync` instead)
692
+ * @throws {Error} If payload is a string and invalid options are provided
693
+ *
694
+ * @example
695
+ * ```ts
696
+ * // Sign with object payload
697
+ * const token = jwtService.sign(
698
+ * { userId: '123', role: 'admin' },
699
+ * { expiresIn: '1h' }
700
+ * )
701
+ *
702
+ * // Sign with string payload (limited options)
703
+ * const token = jwtService.sign('payload-string', { secret: 'key' })
704
+ * ```
705
+ */
706
+ sign(payload: string, options?: Omit<JwtSignOptions, keyof SignOptions>): string;
707
+ /**
708
+ * Signs a JWT payload synchronously.
709
+ *
710
+ * @param payload - The payload to sign. Can be a Buffer or object.
711
+ * @param options - Signing options including algorithm, expiration, etc.
712
+ * @returns The signed JWT token as a string
713
+ */
714
+ sign(payload: Buffer | object, options?: JwtSignOptions): string;
715
+ /**
716
+ * Signs a JWT payload asynchronously.
717
+ *
718
+ * Use this method when `secretOrKeyProvider` returns a Promise or when you need
719
+ * to handle async key resolution. Supports the same payload types and options as `sign()`.
720
+ *
721
+ * @param payload - The payload to sign. Can be a string, Buffer, or object.
722
+ * @param options - Signing options. When payload is a string, only `secret` and `privateKey` are allowed.
723
+ * @returns A Promise that resolves to the signed JWT token as a string
724
+ * @throws {Error} If payload is a string and invalid options are provided
725
+ *
726
+ * @example
727
+ * ```ts
728
+ * // Sign with async key provider
729
+ * const token = await jwtService.signAsync(
730
+ * { userId: '123' },
731
+ * { expiresIn: '1h' }
732
+ * )
733
+ * ```
734
+ */
735
+ signAsync(payload: string, options?: Omit<JwtSignOptions, keyof jwt.SignOptions>): Promise<string>;
736
+ /**
737
+ * Signs a JWT payload asynchronously.
738
+ *
739
+ * @param payload - The payload to sign. Can be a Buffer or object.
740
+ * @param options - Signing options including algorithm, expiration, etc.
741
+ * @returns A Promise that resolves to the signed JWT token as a string
742
+ */
743
+ signAsync(payload: Buffer | object, options?: JwtSignOptions): Promise<string>;
744
+ /**
745
+ * Verifies and decodes a JWT token synchronously.
746
+ *
747
+ * This method validates the token's signature, expiration, and other claims
748
+ * according to the provided options. If verification fails, an error is thrown.
749
+ *
750
+ * @template T - The expected type of the decoded payload
751
+ * @param token - The JWT token string to verify
752
+ * @param options - Verification options including algorithms, audience, issuer, etc.
753
+ * @returns The decoded payload as type T
754
+ * @throws {TokenExpiredError} If the token has expired
755
+ * @throws {NotBeforeError} If the token is not yet valid (nbf claim)
756
+ * @throws {JsonWebTokenError} If the token is invalid or malformed
757
+ * @throws {Error} If `secretOrKeyProvider` returns a Promise (use `verifyAsync` instead)
758
+ *
759
+ * @example
760
+ * ```ts
761
+ * try {
762
+ * const payload = jwtService.verify<{ userId: string; role: string }>(token)
763
+ * console.log(payload.userId) // '123'
764
+ * } catch (error) {
765
+ * if (error instanceof TokenExpiredError) {
766
+ * console.error('Token expired')
767
+ * }
768
+ * }
769
+ * ```
770
+ */
771
+ verify<T extends object = any>(token: string, options?: JwtVerifyOptions): T;
772
+ /**
773
+ * Verifies and decodes a JWT token asynchronously.
774
+ *
775
+ * Use this method when `secretOrKeyProvider` returns a Promise or when you need
776
+ * to handle async key resolution. Provides the same validation as `verify()`.
777
+ *
778
+ * @template T - The expected type of the decoded payload
779
+ * @param token - The JWT token string to verify
780
+ * @param options - Verification options including algorithms, audience, issuer, etc.
781
+ * @returns A Promise that resolves to the decoded payload as type T
782
+ * @throws {TokenExpiredError} If the token has expired
783
+ * @throws {NotBeforeError} If the token is not yet valid (nbf claim)
784
+ * @throws {JsonWebTokenError} If the token is invalid or malformed
785
+ *
786
+ * @example
787
+ * ```ts
788
+ * try {
789
+ * const payload = await jwtService.verifyAsync<{ userId: string }>(token)
790
+ * console.log(payload.userId)
791
+ * } catch (error) {
792
+ * if (error instanceof TokenExpiredError) {
793
+ * console.error('Token expired')
794
+ * }
795
+ * }
796
+ * ```
797
+ */
798
+ verifyAsync<T extends object = any>(token: string, options?: JwtVerifyOptions): Promise<T>;
799
+ /**
800
+ * Decodes a JWT token without verification.
801
+ *
802
+ * This method decodes the token without validating its signature or claims.
803
+ * Use this only when you need to inspect the token contents without verification.
804
+ * For secure token validation, use `verify()` or `verifyAsync()` instead.
805
+ *
806
+ * @template T - The expected type of the decoded payload
807
+ * @param token - The JWT token string to decode
808
+ * @param options - Decode options (complete, json, etc.)
809
+ * @returns The decoded payload as type T, or null if decoding fails
810
+ *
811
+ * @example
812
+ * ```ts
813
+ * // Decode without verification (not recommended for production)
814
+ * const payload = jwtService.decode<{ userId: string }>(token)
815
+ * if (payload) {
816
+ * console.log(payload.userId)
817
+ * }
818
+ * ```
819
+ */
820
+ decode<T = any>(token: string, options?: jwt.DecodeOptions): T;
821
+ private mergeJwtOptions;
822
+ private getSecretKey;
823
+ }
824
+ //#endregion
825
+ //#region src/jwt-service.provider.d.mts
826
+ /**
827
+ * Creates a JWT service provider for dependency injection.
828
+ *
829
+ * This function creates an injection token that can be used to register and resolve
830
+ * `JwtService` instances in the Navios dependency injection container. It supports
831
+ * both static configuration and async factory functions for dynamic configuration.
832
+ *
833
+ * @param config - Static JWT service configuration options
834
+ * @returns A bound injection token that can be used with `inject()` or `syncInject()`
835
+ *
836
+ * @example
837
+ * ```ts
838
+ * // Static configuration
839
+ * const JwtService = provideJwtService({
840
+ * secret: 'your-secret-key',
841
+ * signOptions: { expiresIn: '1h' },
842
+ * })
843
+ *
844
+ * @Injectable()
845
+ * class AuthService {
846
+ * jwtService = inject(JwtService)
847
+ * }
848
+ * ```
849
+ */
850
+ declare function provideJwtService(config: JwtServiceOptions): BoundInjectionToken<JwtService, typeof JwtServiceOptionsSchema>;
851
+ /**
852
+ * Creates a JWT service provider with async configuration factory.
853
+ *
854
+ * Use this overload when you need to load configuration asynchronously, such as
855
+ * fetching secrets from a configuration service or environment variables.
856
+ *
857
+ * @param config - Async factory function that returns JWT service configuration
858
+ * @returns A factory injection token that resolves configuration asynchronously
859
+ *
860
+ * @example
861
+ * ```ts
862
+ * // Async configuration
863
+ * const JwtService = provideJwtService(async () => {
864
+ * const configService = await inject(ConfigService)
865
+ * return {
866
+ * secret: configService.jwt.secret,
867
+ * signOptions: { expiresIn: configService.jwt.expiresIn },
868
+ * }
869
+ * })
870
+ *
871
+ * @Injectable()
872
+ * class AuthService {
873
+ * jwtService = inject(JwtService)
874
+ * }
875
+ * ```
876
+ */
877
+ declare function provideJwtService(config: () => Promise<JwtServiceOptions>): FactoryInjectionToken<JwtService, typeof JwtServiceOptionsSchema>;
878
+ //#endregion
879
+ //#region src/index.d.mts
880
+ /**
881
+ * Error thrown when a JWT token has expired.
882
+ *
883
+ * This error is thrown by `verify()` and `verifyAsync()` when the token's
884
+ * expiration time (exp claim) has passed.
885
+ *
886
+ * @example
887
+ * ```ts
888
+ * try {
889
+ * jwtService.verify(token)
890
+ * } catch (error) {
891
+ * if (error instanceof TokenExpiredError) {
892
+ * console.error('Token expired at:', error.expiredAt)
893
+ * }
894
+ * }
895
+ * ```
896
+ */
897
+ declare const TokenExpiredError: typeof jwt.TokenExpiredError;
898
+ /**
899
+ * Error thrown when a JWT token is not yet valid.
900
+ *
901
+ * This error is thrown by `verify()` and `verifyAsync()` when the token's
902
+ * "not before" time (nbf claim) is in the future.
903
+ *
904
+ * @example
905
+ * ```ts
906
+ * try {
907
+ * jwtService.verify(token)
908
+ * } catch (error) {
909
+ * if (error instanceof NotBeforeError) {
910
+ * console.error('Token not valid until:', error.date)
911
+ * }
912
+ * }
913
+ * ```
914
+ */
915
+ declare const NotBeforeError: typeof jwt.NotBeforeError;
916
+ /**
917
+ * Base error class for JWT-related errors.
918
+ *
919
+ * This is the base class for all JWT errors including `TokenExpiredError`
920
+ * and `NotBeforeError`. It's thrown for invalid or malformed tokens.
921
+ *
922
+ * @example
923
+ * ```ts
924
+ * try {
925
+ * jwtService.verify(token)
926
+ * } catch (error) {
927
+ * if (error instanceof JsonWebTokenError) {
928
+ * console.error('JWT error:', error.message)
929
+ * }
930
+ * }
931
+ * ```
932
+ */
933
+ declare const JsonWebTokenError: typeof jwt.JsonWebTokenError;
934
+ //#endregion
935
+ export { AlgorithmType, GetSecretKeyResult, JsonWebTokenError, JwtHeader, JwtHeaderSchema, JwtService, JwtServiceOptions, JwtServiceOptionsSchema, JwtServiceToken, JwtSignOptions, JwtVerifyOptions, NotBeforeError, RequestType, Secret, SecretSchema, SignOptions, SignOptionsSchema, TokenExpiredError, VerifyOptions, VerifyOptionsSchema, provideJwtService };
936
+ //# sourceMappingURL=index.d.cts.map