@vestcards/server-types 1.3.0 → 1.5.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 (94) hide show
  1. package/dist/apps/server/src/app.d.ts +382 -20
  2. package/dist/apps/server/src/config/env.d.ts +9 -1
  3. package/dist/apps/server/src/lib/metrics.d.ts +4 -0
  4. package/dist/apps/server/src/lib/posthog.d.ts +2 -0
  5. package/dist/apps/server/src/middleware/errorHandler.d.ts +1 -1
  6. package/dist/apps/server/src/middleware/logger.d.ts +14 -29
  7. package/dist/apps/server/src/middleware/logger.test.d.ts +1 -0
  8. package/dist/apps/server/src/modules/auth/index.d.ts +4 -4
  9. package/dist/apps/server/src/modules/auth/lib.d.ts +30 -3
  10. package/dist/apps/server/src/modules/auth/profile.d.ts +5 -0
  11. package/dist/apps/server/src/modules/auth/tracing.d.ts +18 -0
  12. package/dist/apps/server/src/modules/auth/tracing.test.d.ts +1 -0
  13. package/dist/apps/server/src/modules/auth/utils.d.ts +1 -0
  14. package/dist/apps/server/src/modules/card/index.d.ts +4 -4
  15. package/dist/apps/server/src/modules/cron/cron.test.d.ts +1 -0
  16. package/dist/apps/server/src/modules/cron/index.d.ts +53 -0
  17. package/dist/apps/server/src/modules/cron/jobs/expire-memberships.d.ts +1 -0
  18. package/dist/apps/server/src/modules/cron/jobs/payment-expiry-reminder.d.ts +1 -0
  19. package/dist/apps/server/src/modules/deck/access.d.ts +5 -0
  20. package/dist/apps/server/src/modules/deck/index.d.ts +23 -5
  21. package/dist/apps/server/src/modules/deck/model.d.ts +4 -0
  22. package/dist/apps/server/src/modules/deck/service.d.ts +5 -1
  23. package/dist/apps/server/src/modules/exam/exam.test.d.ts +1 -0
  24. package/dist/apps/server/src/modules/exam/index.d.ts +457 -0
  25. package/dist/apps/server/src/modules/exam/model.d.ts +18 -0
  26. package/dist/apps/server/src/modules/exam/service.d.ts +43 -0
  27. package/dist/apps/server/src/modules/library/index.d.ts +4 -4
  28. package/dist/apps/server/src/modules/ranking/cache.d.ts +6 -0
  29. package/dist/apps/server/src/modules/ranking/helpers.d.ts +9 -0
  30. package/dist/apps/server/src/modules/ranking/index.d.ts +412 -0
  31. package/dist/apps/server/src/modules/ranking/model.d.ts +28 -0
  32. package/dist/apps/server/src/modules/ranking/ranking.test.d.ts +1 -0
  33. package/dist/apps/server/src/modules/ranking/repository.d.ts +10 -0
  34. package/dist/apps/server/src/modules/ranking/service.d.ts +4 -0
  35. package/dist/apps/server/src/modules/stats/index.d.ts +446 -0
  36. package/dist/apps/server/src/modules/stats/model.d.ts +85 -0
  37. package/dist/apps/server/src/modules/stats/service.d.ts +27 -0
  38. package/dist/apps/server/src/modules/stats/stats.test.d.ts +1 -0
  39. package/dist/apps/server/src/modules/study/index.d.ts +4 -4
  40. package/dist/apps/server/src/modules/study/service.d.ts +4 -4
  41. package/dist/apps/server/src/modules/topic/index.d.ts +4 -4
  42. package/dist/apps/server/src/modules/user/index.d.ts +36 -19
  43. package/dist/apps/server/src/modules/user/model.d.ts +11 -1
  44. package/dist/apps/server/src/modules/user/service.d.ts +13 -29
  45. package/dist/apps/server/src/modules/vesty/index.d.ts +473 -0
  46. package/dist/apps/server/src/modules/vesty/model.d.ts +35 -0
  47. package/dist/apps/server/src/modules/vesty/resilience.d.ts +40 -0
  48. package/dist/apps/server/src/modules/vesty/resilience.test.d.ts +1 -0
  49. package/dist/apps/server/src/modules/vesty/service.d.ts +6 -0
  50. package/dist/apps/server/src/modules/vesty/services/generate-deck.d.ts +2 -0
  51. package/dist/apps/server/src/modules/vesty/services/insights.d.ts +3 -0
  52. package/dist/apps/server/src/modules/vesty/tools.d.ts +11 -0
  53. package/dist/apps/server/src/modules/vesty/utils.d.ts +62 -0
  54. package/dist/apps/server/src/modules/vesty/vesty.test.d.ts +1 -0
  55. package/dist/apps/server/src/server.d.ts +1 -0
  56. package/dist/apps/server/src/tests/helpers/fixtures.d.ts +8 -6
  57. package/dist/apps/server/src/tests/helpers/index.d.ts +1 -0
  58. package/dist/apps/server/src/tests/helpers/redis-mock.d.ts +33 -0
  59. package/dist/apps/server/src/tests/preload/redis-mock.d.ts +1 -0
  60. package/dist/apps/server/src/tests/preload/vesty-mock.d.ts +1 -0
  61. package/dist/packages/db-core/src/db.d.ts +1 -2
  62. package/dist/packages/db-core/src/index.d.ts +1 -1
  63. package/dist/packages/db-core/src/queries/decks.d.ts +2 -0
  64. package/dist/packages/db-core/src/queries/index.d.ts +1 -0
  65. package/dist/packages/db-core/src/schema/auth.d.ts +34 -0
  66. package/dist/packages/db-core/src/schema/exams.d.ts +721 -0
  67. package/dist/packages/db-core/src/schema/index.d.ts +1 -1
  68. package/dist/packages/db-core/src/schema/payment.d.ts +37 -1
  69. package/dist/packages/db-core/src/tracing.d.ts +2 -0
  70. package/dist/packages/email-core/src/templates/index.d.ts +2 -0
  71. package/dist/packages/email-core/src/templates/paymentExpiryReminder.d.ts +9 -0
  72. package/dist/packages/shared/src/constants.d.ts +2 -0
  73. package/dist/packages/shared/src/date/index.d.ts +1 -0
  74. package/dist/packages/shared/src/date/timezone.d.ts +29 -0
  75. package/dist/packages/shared/src/index.d.ts +1 -0
  76. package/dist/packages/shared/src/spaced-repetition/config.d.ts +17 -2
  77. package/dist/packages/shared/src/spaced-repetition/index.d.ts +1 -0
  78. package/dist/packages/shared/src/spaced-repetition/retention.d.ts +2 -0
  79. package/dist/packages/shared/src/spaced-repetition/session-manager.d.ts +3 -0
  80. package/dist/packages/shared/src/theme/tokens/colors.d.ts +27 -27
  81. package/dist/packages/shared/src/types/index.d.ts +1 -0
  82. package/dist/packages/shared/src/types/permissions.d.ts +6 -0
  83. package/dist/packages/shared/src/types/user.d.ts +20 -0
  84. package/dist/packages/shared/src/types/vesty.d.ts +7 -0
  85. package/dist/packages/utils/src/logger/config.d.ts +12 -0
  86. package/dist/packages/utils/src/logger/index.d.ts +5 -1
  87. package/dist/packages/utils/src/logger/pino.d.ts +7 -0
  88. package/dist/packages/utils/src/logger/posthog.d.ts +16 -0
  89. package/dist/packages/utils/src/logger/timeout.d.ts +4 -0
  90. package/dist/packages/utils/src/logger/tracing.d.ts +34 -0
  91. package/package.json +1 -1
  92. package/dist/apps/server/src/modules/study/constants.d.ts +0 -5
  93. package/dist/packages/db-core/src/views/deck.d.ts +0 -79
  94. /package/dist/apps/server/src/{libs → lib}/mappers.d.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  import { UserRole } from '@vestcards/shared';
2
2
  import { type BetterAuthOptions } from 'better-auth';
3
+ import { mapAppleProfileToUser } from './profile';
3
4
  export declare const auth: import("better-auth").Auth<{
4
5
  plugins: ({
5
6
  id: "open-api";
@@ -239,6 +240,9 @@ export declare const auth: import("better-auth").Auth<{
239
240
  basePath: string;
240
241
  database: (options: BetterAuthOptions) => import("better-auth").DBAdapter<BetterAuthOptions>;
241
242
  secondaryStorage: import("better-auth").SecondaryStorage | undefined;
243
+ verification: {
244
+ storeInDatabase: true;
245
+ };
242
246
  emailAndPassword: {
243
247
  enabled: true;
244
248
  autoSignIn: true;
@@ -297,6 +301,8 @@ export declare const auth: import("better-auth").Auth<{
297
301
  apple: {
298
302
  clientId: string;
299
303
  clientSecret: string;
304
+ appBundleIdentifier: string;
305
+ mapProfileToUser: typeof mapAppleProfileToUser;
300
306
  };
301
307
  };
302
308
  user: {
@@ -331,17 +337,38 @@ export declare const auth: import("better-auth").Auth<{
331
337
  image?: string | null | undefined;
332
338
  } & Record<string, unknown>) => Promise<{
333
339
  data: {
340
+ email: string;
334
341
  entityId: string;
335
342
  id: string;
336
343
  createdAt: Date;
337
344
  updatedAt: Date;
338
- email: string;
339
345
  emailVerified: boolean;
340
346
  name: string;
341
347
  image?: string | null | undefined;
342
348
  };
343
349
  }>;
344
350
  };
351
+ update: {
352
+ before: (userData: Partial<{
353
+ id: string;
354
+ createdAt: Date;
355
+ updatedAt: Date;
356
+ email: string;
357
+ emailVerified: boolean;
358
+ name: string;
359
+ image?: string | null | undefined;
360
+ }> & Record<string, unknown>) => Promise<{
361
+ data: Partial<{
362
+ id: string;
363
+ createdAt: Date;
364
+ updatedAt: Date;
365
+ email: string;
366
+ emailVerified: boolean;
367
+ name: string;
368
+ image?: string | null | undefined;
369
+ }> & Record<string, unknown>;
370
+ }>;
371
+ };
345
372
  };
346
373
  session: {
347
374
  create: {
@@ -370,14 +397,14 @@ export declare const auth: import("better-auth").Auth<{
370
397
  };
371
398
  };
372
399
  logger: {
373
- log(level: "error" | "warn" | "info" | "debug", message: string, ...args: any[]): void;
400
+ log(level: "debug" | "info" | "warn" | "error", message: string, ...args: any[]): void;
374
401
  };
375
402
  advanced: {
376
403
  useSecureCookies: boolean;
377
404
  disableOriginCheck: true;
378
405
  cookiePrefix: string;
379
406
  defaultCookieAttributes: {
380
- sameSite: "lax" | "none";
407
+ sameSite: "none" | "lax";
381
408
  secure: boolean;
382
409
  };
383
410
  database: {
@@ -0,0 +1,5 @@
1
+ import type { AppleProfile } from 'better-auth/social-providers';
2
+ export declare function mapAppleProfileToUser(profile: AppleProfile): {
3
+ name: string;
4
+ surname: string;
5
+ };
@@ -0,0 +1,18 @@
1
+ import { Entitlement } from '@vestcards/shared';
2
+ import type { TraceAttributes } from '@vestcards/utils/logger';
3
+ interface AuthTraceUser {
4
+ email?: string | null;
5
+ entityId?: string | null;
6
+ id: string;
7
+ role?: string | null;
8
+ }
9
+ interface AuthTraceContext {
10
+ completedProfile?: boolean;
11
+ entitlements?: Entitlement[];
12
+ user: AuthTraceUser;
13
+ }
14
+ export declare function getAuthTraceAttributes({ completedProfile, entitlements, user }: AuthTraceContext): Promise<TraceAttributes>;
15
+ export declare function getTraceSpanFromStore(store: {
16
+ traceSpan?: unknown;
17
+ }): unknown;
18
+ export {};
@@ -1,4 +1,5 @@
1
1
  import type { BetterAuthOptions } from 'better-auth';
2
+ export declare function generateAppleClientSecret(clientId: string, teamId: string, keyId: string, privateKey: string): Promise<string>;
2
3
  export declare function assertCredentialAccount(userId: string): Promise<void>;
3
4
  type SendVerificationEmail = NonNullable<BetterAuthOptions['emailVerification']>['sendVerificationEmail'];
4
5
  export declare const sendVerificationEmail: SendVerificationEmail;
@@ -24,7 +24,7 @@ export declare const cardModule: Elysia<"/v1/card", {
24
24
  }>;
25
25
  macroFn: {
26
26
  readonly auth: {
27
- readonly resolve: ({ request: { headers } }: {
27
+ readonly resolve: ({ request: { headers }, store }: {
28
28
  body: unknown;
29
29
  query: Record<string, string>;
30
30
  params: {};
@@ -42,7 +42,7 @@ export declare const cardModule: Elysia<"/v1/card", {
42
42
  route: string;
43
43
  request: Request;
44
44
  store: {};
45
- status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 400 | 401 | 403 | 404 | 409 | 429 | 500 | 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
45
+ status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 200 | 500 | 400 | 401 | 403 | 404 | 409 | 429 | 100 | 101 | 102 | 103 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
46
46
  readonly 100: "Continue";
47
47
  readonly 101: "Switching Protocols";
48
48
  readonly 102: "Processing";
@@ -198,7 +198,7 @@ export declare const cardModule: Elysia<"/v1/card", {
198
198
  };
199
199
  } & {
200
200
  readonly permission: (permission?: import("@vestcards/shared").Permission) => {
201
- readonly resolve: ({ request: { headers } }: {
201
+ readonly resolve: ({ request: { headers }, store }: {
202
202
  body: unknown;
203
203
  query: Record<string, string>;
204
204
  params: {};
@@ -216,7 +216,7 @@ export declare const cardModule: Elysia<"/v1/card", {
216
216
  route: string;
217
217
  request: Request;
218
218
  store: {};
219
- status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 400 | 401 | 403 | 404 | 409 | 429 | 500 | 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
219
+ status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 200 | 500 | 400 | 401 | 403 | 404 | 409 | 429 | 100 | 101 | 102 | 103 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
220
220
  readonly 100: "Continue";
221
221
  readonly 101: "Switching Protocols";
222
222
  readonly 102: "Processing";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ import Elysia from 'elysia';
2
+ export declare const cronModule: Elysia<"", {
3
+ decorator: {};
4
+ store: {
5
+ cron: Record<"expire-memberships", import("croner").Cron> & Record<"payment-expiry-reminder", import("croner").Cron>;
6
+ };
7
+ derive: {};
8
+ resolve: {};
9
+ }, {
10
+ typebox: {};
11
+ error: {};
12
+ } & {
13
+ typebox: {};
14
+ error: {};
15
+ }, {
16
+ schema: {};
17
+ standaloneSchema: {};
18
+ macro: {};
19
+ macroFn: {};
20
+ parser: {};
21
+ response: {};
22
+ } & {
23
+ schema: {};
24
+ standaloneSchema: {};
25
+ macro: {};
26
+ macroFn: {};
27
+ parser: {};
28
+ response: {};
29
+ }, {}, {
30
+ derive: {};
31
+ resolve: {};
32
+ schema: {};
33
+ standaloneSchema: {};
34
+ response: {};
35
+ } & {
36
+ derive: {};
37
+ resolve: {};
38
+ schema: {};
39
+ standaloneSchema: {};
40
+ response: {};
41
+ }, {
42
+ derive: {};
43
+ resolve: {};
44
+ schema: {};
45
+ standaloneSchema: {};
46
+ response: {};
47
+ } & {
48
+ derive: {};
49
+ resolve: {};
50
+ schema: {};
51
+ standaloneSchema: {};
52
+ response: {};
53
+ }>;
@@ -0,0 +1 @@
1
+ export declare function expireMemberships(): Promise<void>;
@@ -0,0 +1 @@
1
+ export declare function sendPaymentExpiryReminders(): Promise<void>;
@@ -0,0 +1,5 @@
1
+ import type { IDeckDetail } from '@vestcards/shared';
2
+ export declare function assertDeckIsOfficialOrOwned(deck: IDeckDetail, entityId: string | null | undefined): {
3
+ isOwner: boolean;
4
+ };
5
+ export declare function requiresPremiumDeckAccess(deck: IDeckDetail): boolean;
@@ -24,7 +24,7 @@ export declare const deckModule: Elysia<"/v1/decks", {
24
24
  }>;
25
25
  macroFn: {
26
26
  readonly auth: {
27
- readonly resolve: ({ request: { headers } }: {
27
+ readonly resolve: ({ request: { headers }, store }: {
28
28
  body: unknown;
29
29
  query: Record<string, string>;
30
30
  params: {};
@@ -42,7 +42,7 @@ export declare const deckModule: Elysia<"/v1/decks", {
42
42
  route: string;
43
43
  request: Request;
44
44
  store: {};
45
- status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 400 | 401 | 403 | 404 | 409 | 429 | 500 | 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
45
+ status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 200 | 500 | 400 | 401 | 403 | 404 | 409 | 429 | 100 | 101 | 102 | 103 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
46
46
  readonly 100: "Continue";
47
47
  readonly 101: "Switching Protocols";
48
48
  readonly 102: "Processing";
@@ -198,7 +198,7 @@ export declare const deckModule: Elysia<"/v1/decks", {
198
198
  };
199
199
  } & {
200
200
  readonly permission: (permission?: import("@vestcards/shared").Permission) => {
201
- readonly resolve: ({ request: { headers } }: {
201
+ readonly resolve: ({ request: { headers }, store }: {
202
202
  body: unknown;
203
203
  query: Record<string, string>;
204
204
  params: {};
@@ -216,7 +216,7 @@ export declare const deckModule: Elysia<"/v1/decks", {
216
216
  route: string;
217
217
  request: Request;
218
218
  store: {};
219
- status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 400 | 401 | 403 | 404 | 409 | 429 | 500 | 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
219
+ status: <const Code extends number | keyof import("elysia").StatusMap, const T = Code extends 200 | 500 | 400 | 401 | 403 | 404 | 409 | 429 | 100 | 101 | 102 | 103 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 300 | 301 | 302 | 303 | 304 | 307 | 308 | 402 | 405 | 406 | 407 | 408 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 431 | 451 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 ? {
220
220
  readonly 100: "Continue";
221
221
  readonly 101: "Switching Protocols";
222
222
  readonly 102: "Processing";
@@ -417,6 +417,22 @@ export declare const deckModule: Elysia<"/v1/decks", {
417
417
  };
418
418
  };
419
419
  };
420
+ } & {
421
+ v1: {
422
+ decks: {
423
+ recommended: {
424
+ get: {
425
+ body: {};
426
+ params: {};
427
+ query: {};
428
+ headers: {};
429
+ response: {
430
+ 200: import("@vestcards/shared").IDeck[];
431
+ };
432
+ };
433
+ };
434
+ };
435
+ };
420
436
  } & {
421
437
  v1: {
422
438
  decks: {
@@ -426,7 +442,9 @@ export declare const deckModule: Elysia<"/v1/decks", {
426
442
  params: {
427
443
  deckId: string;
428
444
  };
429
- query: {};
445
+ query: {
446
+ preview?: boolean | undefined;
447
+ };
430
448
  headers: {};
431
449
  response: {
432
450
  200: import("@vestcards/shared").IDeckDetail;
@@ -19,6 +19,10 @@ export declare namespace DeckModel {
19
19
  deckId: import("@sinclair/typebox").TString;
20
20
  }>;
21
21
  type DeckIdParams = typeof deckIdParams.static;
22
+ const deckDetailQuery: import("@sinclair/typebox").TObject<{
23
+ preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
24
+ }>;
25
+ type DeckDetailQuery = typeof deckDetailQuery.static;
22
26
  const topicSubjectParams: import("@sinclair/typebox").TObject<{
23
27
  subject: import("@sinclair/typebox").TString;
24
28
  }>;
@@ -3,6 +3,10 @@ import { type Paginated } from '../../utils/api';
3
3
  import { DeckModel } from './model';
4
4
  export declare abstract class DeckService {
5
5
  static getAllDecks(filters: DeckModel.DeckListFilters, loggedUserId?: string): Promise<Paginated<IDeck>>;
6
- static getDeck(deckId: string): Promise<IDeckDetail>;
6
+ static getDeck(deckId: string, options?: {
7
+ cardLimit?: number;
8
+ }): Promise<IDeckDetail>;
9
+ static getRecommendedDecks(_userId: string, canReadPremiumDecks: boolean): Promise<IDeck[]>;
10
+ private static mapDeckOwnerInfo;
7
11
  static getOwnerInfoById(ownerId: string): Promise<IOwnerInfo>;
8
12
  }
@@ -0,0 +1 @@
1
+ export {};