@aitlabs/namkwong 0.0.92 → 0.0.103

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 (88) hide show
  1. package/dist/admin/index.d.ts +2807 -797
  2. package/dist/app-version/admin/router.d.ts +13 -1
  3. package/dist/asset-convert-product/admin/dto.schemas.d.ts +8 -0
  4. package/dist/asset-convert-product/admin/router.d.ts +12 -12
  5. package/dist/asset-convert-product/admin/service.d.ts +12 -12
  6. package/dist/auth/better-auth.d.ts +19 -1
  7. package/dist/auth/i18n/zh.d.ts +100 -0
  8. package/dist/auth/permissions.d.ts +16 -1
  9. package/dist/auth/roles.d.ts +45 -0
  10. package/dist/check-in/admin/reward.dto.schemas.d.ts +321 -0
  11. package/dist/check-in/admin/reward.router.d.ts +1109 -0
  12. package/dist/check-in/admin/reward.service.d.ts +433 -0
  13. package/dist/check-in/admin/router.d.ts +662 -0
  14. package/dist/check-in/errors/index.d.ts +10 -0
  15. package/dist/check-in/errors/locales/zh.d.ts +10 -0
  16. package/dist/check-in/index.d.ts +5 -0
  17. package/dist/check-in/internal/reward-config.service.d.ts +97 -0
  18. package/dist/check-in/permissions.d.ts +2 -0
  19. package/dist/check-in/reward.db.schemas.d.ts +896 -0
  20. package/dist/check-in/reward.schema.d.ts +477 -0
  21. package/dist/content-video/admin/dto.schemas.d.ts +128 -0
  22. package/dist/content-video/admin/router.d.ts +861 -0
  23. package/dist/content-video/admin/service.d.ts +211 -0
  24. package/dist/content-video/db.schemas.d.ts +486 -0
  25. package/dist/content-video/errors/index.d.ts +17 -0
  26. package/dist/content-video/errors/locales/zh.d.ts +16 -0
  27. package/dist/content-video/index.d.ts +8 -0
  28. package/dist/content-video/internal/service.d.ts +106 -0
  29. package/dist/content-video/permissions.d.ts +4 -0
  30. package/dist/content-video/schema.d.ts +257 -0
  31. package/dist/content-video/user/dto.schemas.d.ts +52 -0
  32. package/dist/content-video/user/router.d.ts +482 -0
  33. package/dist/content-video/user/service.d.ts +36 -0
  34. package/dist/db/schemas.d.ts +4 -0
  35. package/dist/file-storage/admin/dto.schemas.d.ts +4 -0
  36. package/dist/file-storage/admin/router.d.ts +2 -2
  37. package/dist/file-storage/admin/service.d.ts +2 -2
  38. package/dist/file-storage/db.schemas.d.ts +4 -4
  39. package/dist/file-storage/internal/service.d.ts +1 -1
  40. package/dist/file-storage/s3.client.d.ts +22 -0
  41. package/dist/file-storage/schema.d.ts +3 -3
  42. package/dist/file-storage/share/dto.schemas.d.ts +1 -0
  43. package/dist/file-storage/share/router.d.ts +1 -1
  44. package/dist/file-storage/user/dto.schemas.d.ts +6 -4
  45. package/dist/file-storage/user/router.d.ts +3 -3
  46. package/dist/file-storage/user/service.d.ts +2 -2
  47. package/dist/index.d.ts +3131 -805
  48. package/dist/ledger/admin/dto.schemas.d.ts +8 -0
  49. package/dist/ledger/admin/router.d.ts +5 -17
  50. package/dist/ledger/db.schemas.d.ts +8 -8
  51. package/dist/ledger/schema.d.ts +6 -6
  52. package/dist/ledger/user/dto.schemas.d.ts +8 -8
  53. package/dist/ledger/user/router.d.ts +2 -2
  54. package/dist/ledger/user/service.d.ts +2 -2
  55. package/dist/lock-activity/admin/dto.schemas.d.ts +161 -0
  56. package/dist/lock-activity/admin/participation.dto.schemas.d.ts +200 -0
  57. package/dist/lock-activity/admin/participation.service.d.ts +144 -0
  58. package/dist/lock-activity/admin/reward.service.d.ts +48 -0
  59. package/dist/lock-activity/admin/router.d.ts +1399 -0
  60. package/dist/lock-activity/admin/service.d.ts +518 -0
  61. package/dist/lock-activity/constants.d.ts +2 -0
  62. package/dist/lock-activity/cron.d.ts +6 -0
  63. package/dist/lock-activity/db.schemas.d.ts +516 -0
  64. package/dist/lock-activity/errors/index.d.ts +32 -0
  65. package/dist/lock-activity/errors/locales/zh.d.ts +31 -0
  66. package/dist/lock-activity/index.d.ts +7 -0
  67. package/dist/lock-activity/internal/participation.service.d.ts +42 -0
  68. package/dist/lock-activity/internal/reward.service.d.ts +15 -0
  69. package/dist/lock-activity/internal/service.d.ts +66 -0
  70. package/dist/lock-activity/participation.db.schemas.d.ts +448 -0
  71. package/dist/lock-activity/participation.schema.d.ts +239 -0
  72. package/dist/lock-activity/permissions.d.ts +5 -0
  73. package/dist/lock-activity/schema.d.ts +273 -0
  74. package/dist/lock-activity/shared.dto.schemas.d.ts +7 -0
  75. package/dist/lock-activity/user/dto.schemas.d.ts +116 -0
  76. package/dist/lock-activity/user/participation.dto.schemas.d.ts +25 -0
  77. package/dist/lock-activity/user/participation.service.d.ts +24 -0
  78. package/dist/lock-activity/user/router.d.ts +624 -0
  79. package/dist/lock-activity/user/service.d.ts +86 -0
  80. package/dist/market-pricing/admin/router.d.ts +13 -1
  81. package/dist/news/admin/dto.schemas.d.ts +26 -26
  82. package/dist/news/admin/router.d.ts +25 -25
  83. package/dist/news/admin/service.d.ts +4 -1
  84. package/dist/news/user/service.d.ts +2 -2
  85. package/dist/referral/index.d.ts +1 -0
  86. package/dist/referral/user/router.d.ts +29 -1
  87. package/dist/wallet-type/admin/router.d.ts +1 -13
  88. package/package.json +1 -1
@@ -0,0 +1,200 @@
1
+ export declare const lockActivityParticipationIdParamsSchema: import("@sinclair/typebox").TObject<{
2
+ id: import("@sinclair/typebox").TString;
3
+ }>;
4
+ export type LockActivityParticipationIdParamsType = typeof lockActivityParticipationIdParamsSchema.static;
5
+ export declare const lockActivityParticipationCreateSchema: import("@sinclair/typebox").TObject<{
6
+ activityId: import("@sinclair/typebox").TString;
7
+ userId: import("@sinclair/typebox").TString;
8
+ inviteCode: import("@sinclair/typebox").TString;
9
+ }>;
10
+ export type LockActivityParticipationCreateInputType = typeof lockActivityParticipationCreateSchema.static;
11
+ export declare const lockActivityParticipationUpdateSchema: import("@sinclair/typebox").TObject<{
12
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TEnum<{
13
+ rejected: "rejected";
14
+ reward_issued: "reward_issued";
15
+ submitted: "submitted";
16
+ under_review: "under_review";
17
+ }>>;
18
+ rejectReason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
19
+ adminRemark: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
20
+ }>;
21
+ export type LockActivityParticipationUpdateInputType = typeof lockActivityParticipationUpdateSchema.static;
22
+ export declare const lockActivityParticipationListQuerySchema: import("@sinclair/typebox").TObject<{
23
+ activityId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ activityKeyword: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
+ inviteCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
+ inviterMatched: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
27
+ keyword: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
28
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
29
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
30
+ pageIndex: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
31
+ pageSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
32
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TEnum<{
33
+ rejected: "rejected";
34
+ reward_issued: "reward_issued";
35
+ submitted: "submitted";
36
+ under_review: "under_review";
37
+ }>>;
38
+ submittedAtFrom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
39
+ submittedAtTo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
40
+ userId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
41
+ }>;
42
+ export type LockActivityParticipationListQueryType = typeof lockActivityParticipationListQuerySchema.static;
43
+ export declare const lockActivityParticipationResponseSchema: import("@sinclair/typebox").TObject<{
44
+ activity: import("@sinclair/typebox").TObject<{
45
+ id: import("@sinclair/typebox").TString;
46
+ title: import("@sinclair/typebox").TString;
47
+ startAt: import("@sinclair/typebox").TDate;
48
+ endAt: import("@sinclair/typebox").TDate;
49
+ status: import("@sinclair/typebox").TEnum<{
50
+ active: "active";
51
+ cancelled: "cancelled";
52
+ draft: "draft";
53
+ ended: "ended";
54
+ }>;
55
+ }>;
56
+ activityId: import("@sinclair/typebox").TString;
57
+ adminRemark: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
58
+ createdAt: import("@sinclair/typebox").TDate;
59
+ id: import("@sinclair/typebox").TString;
60
+ inviteCode: import("@sinclair/typebox").TString;
61
+ inviter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
62
+ id: import("@sinclair/typebox").TString;
63
+ email: import("@sinclair/typebox").TString;
64
+ username: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
65
+ }>>;
66
+ inviterMatched: import("@sinclair/typebox").TBoolean;
67
+ inviterUserId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
68
+ rejectReason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
69
+ reviewedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>;
70
+ rewardIssuedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>;
71
+ status: import("@sinclair/typebox").TEnum<{
72
+ rejected: "rejected";
73
+ reward_issued: "reward_issued";
74
+ submitted: "submitted";
75
+ under_review: "under_review";
76
+ }>;
77
+ submittedAt: import("@sinclair/typebox").TDate;
78
+ updatedAt: import("@sinclair/typebox").TDate;
79
+ user: import("@sinclair/typebox").TObject<{
80
+ id: import("@sinclair/typebox").TString;
81
+ email: import("@sinclair/typebox").TString;
82
+ username: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
83
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
84
+ uid: import("@sinclair/typebox").TString;
85
+ country: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
86
+ referralCode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
87
+ }>>;
88
+ }>;
89
+ userId: import("@sinclair/typebox").TString;
90
+ }>;
91
+ export type LockActivityParticipationResponseType = typeof lockActivityParticipationResponseSchema.static;
92
+ export declare const lockActivityParticipationListResponseSchema: import("@sinclair/typebox").TObject<{
93
+ data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
94
+ activity: import("@sinclair/typebox").TObject<{
95
+ id: import("@sinclair/typebox").TString;
96
+ title: import("@sinclair/typebox").TString;
97
+ startAt: import("@sinclair/typebox").TDate;
98
+ endAt: import("@sinclair/typebox").TDate;
99
+ status: import("@sinclair/typebox").TEnum<{
100
+ active: "active";
101
+ cancelled: "cancelled";
102
+ draft: "draft";
103
+ ended: "ended";
104
+ }>;
105
+ }>;
106
+ activityId: import("@sinclair/typebox").TString;
107
+ adminRemark: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
108
+ createdAt: import("@sinclair/typebox").TDate;
109
+ id: import("@sinclair/typebox").TString;
110
+ inviteCode: import("@sinclair/typebox").TString;
111
+ inviter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
112
+ id: import("@sinclair/typebox").TString;
113
+ email: import("@sinclair/typebox").TString;
114
+ username: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
115
+ }>>;
116
+ inviterMatched: import("@sinclair/typebox").TBoolean;
117
+ inviterUserId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
118
+ rejectReason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
119
+ reviewedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>;
120
+ rewardIssuedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>;
121
+ status: import("@sinclair/typebox").TEnum<{
122
+ rejected: "rejected";
123
+ reward_issued: "reward_issued";
124
+ submitted: "submitted";
125
+ under_review: "under_review";
126
+ }>;
127
+ submittedAt: import("@sinclair/typebox").TDate;
128
+ updatedAt: import("@sinclair/typebox").TDate;
129
+ user: import("@sinclair/typebox").TObject<{
130
+ id: import("@sinclair/typebox").TString;
131
+ email: import("@sinclair/typebox").TString;
132
+ username: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
133
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
134
+ uid: import("@sinclair/typebox").TString;
135
+ country: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
136
+ referralCode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
137
+ }>>;
138
+ }>;
139
+ userId: import("@sinclair/typebox").TString;
140
+ }>>;
141
+ pagination: import("@sinclair/typebox").TObject<{
142
+ pageSize: import("@sinclair/typebox").TNumber;
143
+ pageIndex: import("@sinclair/typebox").TNumber;
144
+ total: import("@sinclair/typebox").TNumber;
145
+ totalPages: import("@sinclair/typebox").TNumber;
146
+ hasNextPage: import("@sinclair/typebox").TBoolean;
147
+ }>;
148
+ }>;
149
+ export declare const lockActivityParticipationIssueRewardResponseSchema: import("@sinclair/typebox").TObject<{
150
+ activity: import("@sinclair/typebox").TObject<{
151
+ id: import("@sinclair/typebox").TString;
152
+ title: import("@sinclair/typebox").TString;
153
+ startAt: import("@sinclair/typebox").TDate;
154
+ endAt: import("@sinclair/typebox").TDate;
155
+ status: import("@sinclair/typebox").TEnum<{
156
+ active: "active";
157
+ cancelled: "cancelled";
158
+ draft: "draft";
159
+ ended: "ended";
160
+ }>;
161
+ }>;
162
+ activityId: import("@sinclair/typebox").TString;
163
+ adminRemark: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
164
+ createdAt: import("@sinclair/typebox").TDate;
165
+ id: import("@sinclair/typebox").TString;
166
+ inviteCode: import("@sinclair/typebox").TString;
167
+ inviter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
168
+ id: import("@sinclair/typebox").TString;
169
+ email: import("@sinclair/typebox").TString;
170
+ username: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
171
+ }>>;
172
+ inviterMatched: import("@sinclair/typebox").TBoolean;
173
+ inviterUserId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
174
+ isIdempotent: import("@sinclair/typebox").TBoolean;
175
+ ledgerEntryId: import("@sinclair/typebox").TString;
176
+ rejectReason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
177
+ reviewedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>;
178
+ rewardAmount: import("@sinclair/typebox").TString;
179
+ rewardIssuedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>;
180
+ status: import("@sinclair/typebox").TEnum<{
181
+ rejected: "rejected";
182
+ reward_issued: "reward_issued";
183
+ submitted: "submitted";
184
+ under_review: "under_review";
185
+ }>;
186
+ submittedAt: import("@sinclair/typebox").TDate;
187
+ updatedAt: import("@sinclair/typebox").TDate;
188
+ user: import("@sinclair/typebox").TObject<{
189
+ id: import("@sinclair/typebox").TString;
190
+ email: import("@sinclair/typebox").TString;
191
+ username: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
192
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
193
+ uid: import("@sinclair/typebox").TString;
194
+ country: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
195
+ referralCode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
196
+ }>>;
197
+ }>;
198
+ userId: import("@sinclair/typebox").TString;
199
+ }>;
200
+ export type LockActivityParticipationIssueRewardResponseType = typeof lockActivityParticipationIssueRewardResponseSchema.static;
@@ -0,0 +1,144 @@
1
+ import type { LockActivityParticipationCreateInputType, LockActivityParticipationListQueryType, LockActivityParticipationUpdateInputType } from './participation.dto.schemas';
2
+ import { lockActivity } from '../schema';
3
+ export declare abstract class AdminLockActivityParticipationService {
4
+ private static formatParticipationRow;
5
+ private static loadParticipationDetail;
6
+ private static buildStatusTimestamps;
7
+ static createParticipation(input: LockActivityParticipationCreateInputType): Promise<{
8
+ activity: Pick<typeof lockActivity.$inferSelect, 'id' | 'title' | 'status' | 'startAt' | 'endAt'>;
9
+ inviterMatched: boolean;
10
+ user: {
11
+ id: string;
12
+ email: string;
13
+ username: string | null;
14
+ profile: {
15
+ uid: string;
16
+ referralCode: string | null;
17
+ country: string | null;
18
+ } | undefined;
19
+ };
20
+ inviter: {
21
+ id: string;
22
+ email: string;
23
+ username: string | null;
24
+ } | undefined;
25
+ activityId: string;
26
+ adminRemark: string | null;
27
+ createdAt: Date;
28
+ id: string;
29
+ inviteCode: string;
30
+ inviterUserId: string | null;
31
+ rejectReason: string | null;
32
+ reviewedAt: Date | null;
33
+ rewardIssuedAt: Date | null;
34
+ status: "rejected" | "reward_issued" | "submitted" | "under_review";
35
+ submittedAt: Date;
36
+ updatedAt: Date;
37
+ userId: string;
38
+ }>;
39
+ static updateParticipation(participationId: string, input: LockActivityParticipationUpdateInputType): Promise<{
40
+ activity: Pick<typeof lockActivity.$inferSelect, 'id' | 'title' | 'status' | 'startAt' | 'endAt'>;
41
+ inviterMatched: boolean;
42
+ user: {
43
+ id: string;
44
+ email: string;
45
+ username: string | null;
46
+ profile: {
47
+ uid: string;
48
+ referralCode: string | null;
49
+ country: string | null;
50
+ } | undefined;
51
+ };
52
+ inviter: {
53
+ id: string;
54
+ email: string;
55
+ username: string | null;
56
+ } | undefined;
57
+ activityId: string;
58
+ adminRemark: string | null;
59
+ createdAt: Date;
60
+ id: string;
61
+ inviteCode: string;
62
+ inviterUserId: string | null;
63
+ rejectReason: string | null;
64
+ reviewedAt: Date | null;
65
+ rewardIssuedAt: Date | null;
66
+ status: "rejected" | "reward_issued" | "submitted" | "under_review";
67
+ submittedAt: Date;
68
+ updatedAt: Date;
69
+ userId: string;
70
+ }>;
71
+ static getParticipation(participationId: string): Promise<{
72
+ activity: Pick<typeof lockActivity.$inferSelect, 'id' | 'title' | 'status' | 'startAt' | 'endAt'>;
73
+ inviterMatched: boolean;
74
+ user: {
75
+ id: string;
76
+ email: string;
77
+ username: string | null;
78
+ profile: {
79
+ uid: string;
80
+ referralCode: string | null;
81
+ country: string | null;
82
+ } | undefined;
83
+ };
84
+ inviter: {
85
+ id: string;
86
+ email: string;
87
+ username: string | null;
88
+ } | undefined;
89
+ activityId: string;
90
+ adminRemark: string | null;
91
+ createdAt: Date;
92
+ id: string;
93
+ inviteCode: string;
94
+ inviterUserId: string | null;
95
+ rejectReason: string | null;
96
+ reviewedAt: Date | null;
97
+ rewardIssuedAt: Date | null;
98
+ status: "rejected" | "reward_issued" | "submitted" | "under_review";
99
+ submittedAt: Date;
100
+ updatedAt: Date;
101
+ userId: string;
102
+ }>;
103
+ static listParticipations(filters: LockActivityParticipationListQueryType): Promise<{
104
+ data: {
105
+ activity: Pick<typeof lockActivity.$inferSelect, 'id' | 'title' | 'status' | 'startAt' | 'endAt'>;
106
+ inviterMatched: boolean;
107
+ user: {
108
+ id: string;
109
+ email: string;
110
+ username: string | null;
111
+ profile: {
112
+ uid: string;
113
+ referralCode: string | null;
114
+ country: string | null;
115
+ } | undefined;
116
+ };
117
+ inviter: {
118
+ id: string;
119
+ email: string;
120
+ username: string | null;
121
+ } | undefined;
122
+ activityId: string;
123
+ adminRemark: string | null;
124
+ createdAt: Date;
125
+ id: string;
126
+ inviteCode: string;
127
+ inviterUserId: string | null;
128
+ rejectReason: string | null;
129
+ reviewedAt: Date | null;
130
+ rewardIssuedAt: Date | null;
131
+ status: "rejected" | "reward_issued" | "submitted" | "under_review";
132
+ submittedAt: Date;
133
+ updatedAt: Date;
134
+ userId: string;
135
+ }[];
136
+ pagination: {
137
+ pageSize: number;
138
+ pageIndex: number;
139
+ total: number;
140
+ totalPages: number;
141
+ hasNextPage: boolean;
142
+ };
143
+ }>;
144
+ }
@@ -0,0 +1,48 @@
1
+ import { lockActivity } from '../schema';
2
+ export type LockActivityRunRewardPayoutInput = {
3
+ participationIds?: string[];
4
+ activityId?: string;
5
+ limit?: number;
6
+ };
7
+ export declare abstract class AdminLockActivityRewardService {
8
+ static issueParticipationReward(participationId: string, operatorId: string): Promise<{
9
+ activity: Pick<typeof lockActivity.$inferSelect, 'id' | 'title' | 'status' | 'startAt' | 'endAt'>;
10
+ inviterMatched: boolean;
11
+ user: {
12
+ id: string;
13
+ email: string;
14
+ username: string | null;
15
+ profile: {
16
+ uid: string;
17
+ referralCode: string | null;
18
+ country: string | null;
19
+ } | undefined;
20
+ };
21
+ inviter: {
22
+ id: string;
23
+ email: string;
24
+ username: string | null;
25
+ } | undefined;
26
+ rewardAmount: string;
27
+ ledgerEntryId: string;
28
+ isIdempotent: boolean;
29
+ activityId: string;
30
+ adminRemark: string | null;
31
+ createdAt: Date;
32
+ id: string;
33
+ inviteCode: string;
34
+ inviterUserId: string | null;
35
+ rejectReason: string | null;
36
+ reviewedAt: Date | null;
37
+ rewardIssuedAt: Date | null;
38
+ status: "rejected" | "reward_issued" | "submitted" | "under_review";
39
+ submittedAt: Date;
40
+ updatedAt: Date;
41
+ userId: string;
42
+ }>;
43
+ static runRewardPayouts(operatorId: string, input?: LockActivityRunRewardPayoutInput): Promise<{
44
+ successCount: number;
45
+ processedIds: string[];
46
+ failedIds: string[];
47
+ }>;
48
+ }