@fivenet-app/gen 2026.3.0 → 2026.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 (68) hide show
  1. package/clients.ts +66 -6
  2. package/codegen/perms/perms.ts +104 -1
  3. package/package.json +1 -1
  4. package/perms.ts +16 -5
  5. package/resources/centrum/settings/settings.ts +1 -1
  6. package/resources/centrum/units/units.ts +1 -1
  7. package/resources/citizens/labels/access.ts +216 -0
  8. package/resources/citizens/labels/labels.ts +320 -0
  9. package/resources/{users → citizens}/licenses/licenses.ts +17 -17
  10. package/resources/clientconfig/clientconfig.ts +32 -289
  11. package/resources/cron/cron.ts +2 -2
  12. package/resources/documents/access/access.ts +0 -23
  13. package/resources/documents/category/category.ts +1 -1
  14. package/resources/documents/templates/templates.ts +2 -2
  15. package/resources/jobs/labels/labels.ts +16 -5
  16. package/resources/livemap/markers/marker_marker.ts +1 -1
  17. package/resources/settings/banner.ts +1 -1
  18. package/resources/settings/config.ts +16 -14
  19. package/resources/sync/data/data.ts +9 -9
  20. package/resources/users/activity/activity.ts +132 -12
  21. package/resources/users/props/props.ts +4 -4
  22. package/resources/users/user.ts +4 -4
  23. package/services/calendar/calendar.client.ts +2 -106
  24. package/services/calendar/calendar.ts +0 -1018
  25. package/services/calendar/entries.client.ts +129 -0
  26. package/services/calendar/entries.ts +1040 -0
  27. package/services/centrum/centrum.client.ts +23 -244
  28. package/services/centrum/centrum.ts +246 -2383
  29. package/services/centrum/dispatches.client.ts +155 -0
  30. package/services/centrum/dispatches.ts +1305 -0
  31. package/services/centrum/units.client.ts +116 -0
  32. package/services/centrum/units.ts +876 -0
  33. package/services/citizens/citizens.client.ts +0 -13
  34. package/services/citizens/citizens.ts +1 -115
  35. package/services/citizens/labels.client.ts +77 -0
  36. package/services/citizens/labels.ts +455 -0
  37. package/services/completor/completor.ts +5 -5
  38. package/services/documents/categories.client.ts +64 -0
  39. package/services/documents/categories.ts +331 -0
  40. package/services/documents/comments.client.ts +77 -0
  41. package/services/documents/comments.ts +479 -0
  42. package/services/documents/documents.client.ts +26 -182
  43. package/services/documents/documents.ts +335 -1682
  44. package/services/documents/templates.client.ts +90 -0
  45. package/services/documents/templates.ts +591 -0
  46. package/services/jobs/colleagues.client.ts +129 -0
  47. package/services/jobs/colleagues.ts +1129 -0
  48. package/services/jobs/jobs.client.ts +3 -107
  49. package/services/jobs/jobs.ts +1 -1113
  50. package/services/mailer/mailer.client.ts +0 -208
  51. package/services/mailer/mailer.ts +1 -2010
  52. package/services/mailer/settings.client.ts +103 -0
  53. package/services/mailer/settings.ts +708 -0
  54. package/services/mailer/thread.client.ts +155 -0
  55. package/services/mailer/thread.ts +1343 -0
  56. package/services/qualifications/exam.client.ts +77 -0
  57. package/services/qualifications/exam.ts +609 -0
  58. package/services/qualifications/qualifications.client.ts +1 -53
  59. package/services/qualifications/qualifications.ts +0 -591
  60. package/services/settings/cron.client.ts +13 -0
  61. package/services/settings/cron.ts +114 -1
  62. package/services/sync/sync.client.ts +271 -37
  63. package/services/sync/sync.ts +1463 -383
  64. package/svcs.ts +182 -94
  65. package/resources/sync/data/v2/data.ts +0 -220
  66. package/resources/users/labels/labels.ts +0 -160
  67. package/services/sync/v2/sync.client.ts +0 -331
  68. package/services/sync/v2/sync.ts +0 -1766
@@ -0,0 +1,609 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter force_server_none,long_type_number,optimize_speed,ts_nocheck
2
+ // @generated from protobuf file "services/qualifications/exam.proto" (package "services.qualifications", syntax proto3)
3
+ // tslint:disable
4
+ // @ts-nocheck
5
+ import { ServiceType } from "@protobuf-ts/runtime-rpc";
6
+ import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
7
+ import type { IBinaryWriter } from "@protobuf-ts/runtime";
8
+ import { WireType } from "@protobuf-ts/runtime";
9
+ import type { BinaryReadOptions } from "@protobuf-ts/runtime";
10
+ import type { IBinaryReader } from "@protobuf-ts/runtime";
11
+ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
12
+ import type { PartialMessage } from "@protobuf-ts/runtime";
13
+ import { reflectionMergePartial } from "@protobuf-ts/runtime";
14
+ import { MessageType } from "@protobuf-ts/runtime";
15
+ import { ExamGrading } from "../../resources/qualifications/exam/exam";
16
+ import { Duration } from "../../google/protobuf/duration";
17
+ import { ExamResponses } from "../../resources/qualifications/exam/exam";
18
+ import { ExamQuestions } from "../../resources/qualifications/exam/exam";
19
+ import { ExamUser } from "../../resources/qualifications/exam/exam";
20
+ import { QualificationShort } from "../../resources/qualifications/qualifications";
21
+ /**
22
+ * @generated from protobuf message services.qualifications.GetExamInfoRequest
23
+ */
24
+ export interface GetExamInfoRequest {
25
+ /**
26
+ * @generated from protobuf field: int64 qualification_id = 1
27
+ */
28
+ qualificationId: number;
29
+ }
30
+ /**
31
+ * @generated from protobuf message services.qualifications.GetExamInfoResponse
32
+ */
33
+ export interface GetExamInfoResponse {
34
+ /**
35
+ * @generated from protobuf field: resources.qualifications.QualificationShort qualification = 1
36
+ */
37
+ qualification?: QualificationShort;
38
+ /**
39
+ * @generated from protobuf field: int64 question_count = 2
40
+ */
41
+ questionCount: number;
42
+ /**
43
+ * @generated from protobuf field: optional resources.qualifications.exam.ExamUser exam_user = 3
44
+ */
45
+ examUser?: ExamUser;
46
+ }
47
+ /**
48
+ * @generated from protobuf message services.qualifications.TakeExamRequest
49
+ */
50
+ export interface TakeExamRequest {
51
+ /**
52
+ * @generated from protobuf field: int64 qualification_id = 1
53
+ */
54
+ qualificationId: number;
55
+ /**
56
+ * @generated from protobuf field: optional bool cancel = 2
57
+ */
58
+ cancel?: boolean;
59
+ }
60
+ /**
61
+ * @generated from protobuf message services.qualifications.TakeExamResponse
62
+ */
63
+ export interface TakeExamResponse {
64
+ /**
65
+ * @generated from protobuf field: resources.qualifications.exam.ExamQuestions exam = 1
66
+ */
67
+ exam?: ExamQuestions;
68
+ /**
69
+ * @generated from protobuf field: resources.qualifications.exam.ExamUser exam_user = 2
70
+ */
71
+ examUser?: ExamUser;
72
+ /**
73
+ * @generated from protobuf field: resources.qualifications.exam.ExamResponses responses = 3
74
+ */
75
+ responses?: ExamResponses;
76
+ /**
77
+ * @generated from protobuf field: bool times_up = 4
78
+ */
79
+ timesUp: boolean;
80
+ }
81
+ /**
82
+ * @generated from protobuf message services.qualifications.SubmitExamRequest
83
+ */
84
+ export interface SubmitExamRequest {
85
+ /**
86
+ * @generated from protobuf field: int64 qualification_id = 1
87
+ */
88
+ qualificationId: number;
89
+ /**
90
+ * @generated from protobuf field: resources.qualifications.exam.ExamResponses responses = 2
91
+ */
92
+ responses?: ExamResponses;
93
+ /**
94
+ * @generated from protobuf field: bool partial = 3
95
+ */
96
+ partial: boolean;
97
+ }
98
+ /**
99
+ * @generated from protobuf message services.qualifications.SubmitExamResponse
100
+ */
101
+ export interface SubmitExamResponse {
102
+ /**
103
+ * @generated from protobuf field: google.protobuf.Duration duration = 1
104
+ */
105
+ duration?: Duration;
106
+ }
107
+ /**
108
+ * @generated from protobuf message services.qualifications.GetUserExamRequest
109
+ */
110
+ export interface GetUserExamRequest {
111
+ /**
112
+ * @generated from protobuf field: int64 qualification_id = 1
113
+ */
114
+ qualificationId: number;
115
+ /**
116
+ * @generated from protobuf field: int32 user_id = 2
117
+ */
118
+ userId: number;
119
+ }
120
+ /**
121
+ * @generated from protobuf message services.qualifications.GetUserExamResponse
122
+ */
123
+ export interface GetUserExamResponse {
124
+ /**
125
+ * @generated from protobuf field: resources.qualifications.exam.ExamQuestions exam = 1
126
+ */
127
+ exam?: ExamQuestions;
128
+ /**
129
+ * @generated from protobuf field: resources.qualifications.exam.ExamUser exam_user = 2
130
+ */
131
+ examUser?: ExamUser;
132
+ /**
133
+ * @generated from protobuf field: resources.qualifications.exam.ExamResponses responses = 3
134
+ */
135
+ responses?: ExamResponses;
136
+ /**
137
+ * @generated from protobuf field: resources.qualifications.exam.ExamGrading grading = 4
138
+ */
139
+ grading?: ExamGrading;
140
+ }
141
+ // @generated message type with reflection information, may provide speed optimized methods
142
+ class GetExamInfoRequest$Type extends MessageType<GetExamInfoRequest> {
143
+ constructor() {
144
+ super("services.qualifications.GetExamInfoRequest", [
145
+ { no: 1, name: "qualification_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ }
146
+ ]);
147
+ }
148
+ create(value?: PartialMessage<GetExamInfoRequest>): GetExamInfoRequest {
149
+ const message = globalThis.Object.create((this.messagePrototype!));
150
+ message.qualificationId = 0;
151
+ if (value !== undefined)
152
+ reflectionMergePartial<GetExamInfoRequest>(this, message, value);
153
+ return message;
154
+ }
155
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetExamInfoRequest): GetExamInfoRequest {
156
+ let message = target ?? this.create(), end = reader.pos + length;
157
+ while (reader.pos < end) {
158
+ let [fieldNo, wireType] = reader.tag();
159
+ switch (fieldNo) {
160
+ case /* int64 qualification_id */ 1:
161
+ message.qualificationId = reader.int64().toNumber();
162
+ break;
163
+ default:
164
+ let u = options.readUnknownField;
165
+ if (u === "throw")
166
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
167
+ let d = reader.skip(wireType);
168
+ if (u !== false)
169
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
170
+ }
171
+ }
172
+ return message;
173
+ }
174
+ internalBinaryWrite(message: GetExamInfoRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
175
+ /* int64 qualification_id = 1; */
176
+ if (message.qualificationId !== 0)
177
+ writer.tag(1, WireType.Varint).int64(message.qualificationId);
178
+ let u = options.writeUnknownFields;
179
+ if (u !== false)
180
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
181
+ return writer;
182
+ }
183
+ }
184
+ /**
185
+ * @generated MessageType for protobuf message services.qualifications.GetExamInfoRequest
186
+ */
187
+ export const GetExamInfoRequest = new GetExamInfoRequest$Type();
188
+ // @generated message type with reflection information, may provide speed optimized methods
189
+ class GetExamInfoResponse$Type extends MessageType<GetExamInfoResponse> {
190
+ constructor() {
191
+ super("services.qualifications.GetExamInfoResponse", [
192
+ { no: 1, name: "qualification", kind: "message", T: () => QualificationShort },
193
+ { no: 2, name: "question_count", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
194
+ { no: 3, name: "exam_user", kind: "message", T: () => ExamUser }
195
+ ]);
196
+ }
197
+ create(value?: PartialMessage<GetExamInfoResponse>): GetExamInfoResponse {
198
+ const message = globalThis.Object.create((this.messagePrototype!));
199
+ message.questionCount = 0;
200
+ if (value !== undefined)
201
+ reflectionMergePartial<GetExamInfoResponse>(this, message, value);
202
+ return message;
203
+ }
204
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetExamInfoResponse): GetExamInfoResponse {
205
+ let message = target ?? this.create(), end = reader.pos + length;
206
+ while (reader.pos < end) {
207
+ let [fieldNo, wireType] = reader.tag();
208
+ switch (fieldNo) {
209
+ case /* resources.qualifications.QualificationShort qualification */ 1:
210
+ message.qualification = QualificationShort.internalBinaryRead(reader, reader.uint32(), options, message.qualification);
211
+ break;
212
+ case /* int64 question_count */ 2:
213
+ message.questionCount = reader.int64().toNumber();
214
+ break;
215
+ case /* optional resources.qualifications.exam.ExamUser exam_user */ 3:
216
+ message.examUser = ExamUser.internalBinaryRead(reader, reader.uint32(), options, message.examUser);
217
+ break;
218
+ default:
219
+ let u = options.readUnknownField;
220
+ if (u === "throw")
221
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
222
+ let d = reader.skip(wireType);
223
+ if (u !== false)
224
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
225
+ }
226
+ }
227
+ return message;
228
+ }
229
+ internalBinaryWrite(message: GetExamInfoResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
230
+ /* resources.qualifications.QualificationShort qualification = 1; */
231
+ if (message.qualification)
232
+ QualificationShort.internalBinaryWrite(message.qualification, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
233
+ /* int64 question_count = 2; */
234
+ if (message.questionCount !== 0)
235
+ writer.tag(2, WireType.Varint).int64(message.questionCount);
236
+ /* optional resources.qualifications.exam.ExamUser exam_user = 3; */
237
+ if (message.examUser)
238
+ ExamUser.internalBinaryWrite(message.examUser, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
239
+ let u = options.writeUnknownFields;
240
+ if (u !== false)
241
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
242
+ return writer;
243
+ }
244
+ }
245
+ /**
246
+ * @generated MessageType for protobuf message services.qualifications.GetExamInfoResponse
247
+ */
248
+ export const GetExamInfoResponse = new GetExamInfoResponse$Type();
249
+ // @generated message type with reflection information, may provide speed optimized methods
250
+ class TakeExamRequest$Type extends MessageType<TakeExamRequest> {
251
+ constructor() {
252
+ super("services.qualifications.TakeExamRequest", [
253
+ { no: 1, name: "qualification_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
254
+ { no: 2, name: "cancel", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ }
255
+ ]);
256
+ }
257
+ create(value?: PartialMessage<TakeExamRequest>): TakeExamRequest {
258
+ const message = globalThis.Object.create((this.messagePrototype!));
259
+ message.qualificationId = 0;
260
+ if (value !== undefined)
261
+ reflectionMergePartial<TakeExamRequest>(this, message, value);
262
+ return message;
263
+ }
264
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TakeExamRequest): TakeExamRequest {
265
+ let message = target ?? this.create(), end = reader.pos + length;
266
+ while (reader.pos < end) {
267
+ let [fieldNo, wireType] = reader.tag();
268
+ switch (fieldNo) {
269
+ case /* int64 qualification_id */ 1:
270
+ message.qualificationId = reader.int64().toNumber();
271
+ break;
272
+ case /* optional bool cancel */ 2:
273
+ message.cancel = reader.bool();
274
+ break;
275
+ default:
276
+ let u = options.readUnknownField;
277
+ if (u === "throw")
278
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
279
+ let d = reader.skip(wireType);
280
+ if (u !== false)
281
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
282
+ }
283
+ }
284
+ return message;
285
+ }
286
+ internalBinaryWrite(message: TakeExamRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
287
+ /* int64 qualification_id = 1; */
288
+ if (message.qualificationId !== 0)
289
+ writer.tag(1, WireType.Varint).int64(message.qualificationId);
290
+ /* optional bool cancel = 2; */
291
+ if (message.cancel !== undefined)
292
+ writer.tag(2, WireType.Varint).bool(message.cancel);
293
+ let u = options.writeUnknownFields;
294
+ if (u !== false)
295
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
296
+ return writer;
297
+ }
298
+ }
299
+ /**
300
+ * @generated MessageType for protobuf message services.qualifications.TakeExamRequest
301
+ */
302
+ export const TakeExamRequest = new TakeExamRequest$Type();
303
+ // @generated message type with reflection information, may provide speed optimized methods
304
+ class TakeExamResponse$Type extends MessageType<TakeExamResponse> {
305
+ constructor() {
306
+ super("services.qualifications.TakeExamResponse", [
307
+ { no: 1, name: "exam", kind: "message", T: () => ExamQuestions },
308
+ { no: 2, name: "exam_user", kind: "message", T: () => ExamUser },
309
+ { no: 3, name: "responses", kind: "message", T: () => ExamResponses },
310
+ { no: 4, name: "times_up", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
311
+ ]);
312
+ }
313
+ create(value?: PartialMessage<TakeExamResponse>): TakeExamResponse {
314
+ const message = globalThis.Object.create((this.messagePrototype!));
315
+ message.timesUp = false;
316
+ if (value !== undefined)
317
+ reflectionMergePartial<TakeExamResponse>(this, message, value);
318
+ return message;
319
+ }
320
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TakeExamResponse): TakeExamResponse {
321
+ let message = target ?? this.create(), end = reader.pos + length;
322
+ while (reader.pos < end) {
323
+ let [fieldNo, wireType] = reader.tag();
324
+ switch (fieldNo) {
325
+ case /* resources.qualifications.exam.ExamQuestions exam */ 1:
326
+ message.exam = ExamQuestions.internalBinaryRead(reader, reader.uint32(), options, message.exam);
327
+ break;
328
+ case /* resources.qualifications.exam.ExamUser exam_user */ 2:
329
+ message.examUser = ExamUser.internalBinaryRead(reader, reader.uint32(), options, message.examUser);
330
+ break;
331
+ case /* resources.qualifications.exam.ExamResponses responses */ 3:
332
+ message.responses = ExamResponses.internalBinaryRead(reader, reader.uint32(), options, message.responses);
333
+ break;
334
+ case /* bool times_up */ 4:
335
+ message.timesUp = reader.bool();
336
+ break;
337
+ default:
338
+ let u = options.readUnknownField;
339
+ if (u === "throw")
340
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
341
+ let d = reader.skip(wireType);
342
+ if (u !== false)
343
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
344
+ }
345
+ }
346
+ return message;
347
+ }
348
+ internalBinaryWrite(message: TakeExamResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
349
+ /* resources.qualifications.exam.ExamQuestions exam = 1; */
350
+ if (message.exam)
351
+ ExamQuestions.internalBinaryWrite(message.exam, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
352
+ /* resources.qualifications.exam.ExamUser exam_user = 2; */
353
+ if (message.examUser)
354
+ ExamUser.internalBinaryWrite(message.examUser, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
355
+ /* resources.qualifications.exam.ExamResponses responses = 3; */
356
+ if (message.responses)
357
+ ExamResponses.internalBinaryWrite(message.responses, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
358
+ /* bool times_up = 4; */
359
+ if (message.timesUp !== false)
360
+ writer.tag(4, WireType.Varint).bool(message.timesUp);
361
+ let u = options.writeUnknownFields;
362
+ if (u !== false)
363
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
364
+ return writer;
365
+ }
366
+ }
367
+ /**
368
+ * @generated MessageType for protobuf message services.qualifications.TakeExamResponse
369
+ */
370
+ export const TakeExamResponse = new TakeExamResponse$Type();
371
+ // @generated message type with reflection information, may provide speed optimized methods
372
+ class SubmitExamRequest$Type extends MessageType<SubmitExamRequest> {
373
+ constructor() {
374
+ super("services.qualifications.SubmitExamRequest", [
375
+ { no: 1, name: "qualification_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
376
+ { no: 2, name: "responses", kind: "message", T: () => ExamResponses },
377
+ { no: 3, name: "partial", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
378
+ ]);
379
+ }
380
+ create(value?: PartialMessage<SubmitExamRequest>): SubmitExamRequest {
381
+ const message = globalThis.Object.create((this.messagePrototype!));
382
+ message.qualificationId = 0;
383
+ message.partial = false;
384
+ if (value !== undefined)
385
+ reflectionMergePartial<SubmitExamRequest>(this, message, value);
386
+ return message;
387
+ }
388
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SubmitExamRequest): SubmitExamRequest {
389
+ let message = target ?? this.create(), end = reader.pos + length;
390
+ while (reader.pos < end) {
391
+ let [fieldNo, wireType] = reader.tag();
392
+ switch (fieldNo) {
393
+ case /* int64 qualification_id */ 1:
394
+ message.qualificationId = reader.int64().toNumber();
395
+ break;
396
+ case /* resources.qualifications.exam.ExamResponses responses */ 2:
397
+ message.responses = ExamResponses.internalBinaryRead(reader, reader.uint32(), options, message.responses);
398
+ break;
399
+ case /* bool partial */ 3:
400
+ message.partial = reader.bool();
401
+ break;
402
+ default:
403
+ let u = options.readUnknownField;
404
+ if (u === "throw")
405
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
406
+ let d = reader.skip(wireType);
407
+ if (u !== false)
408
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
409
+ }
410
+ }
411
+ return message;
412
+ }
413
+ internalBinaryWrite(message: SubmitExamRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
414
+ /* int64 qualification_id = 1; */
415
+ if (message.qualificationId !== 0)
416
+ writer.tag(1, WireType.Varint).int64(message.qualificationId);
417
+ /* resources.qualifications.exam.ExamResponses responses = 2; */
418
+ if (message.responses)
419
+ ExamResponses.internalBinaryWrite(message.responses, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
420
+ /* bool partial = 3; */
421
+ if (message.partial !== false)
422
+ writer.tag(3, WireType.Varint).bool(message.partial);
423
+ let u = options.writeUnknownFields;
424
+ if (u !== false)
425
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
426
+ return writer;
427
+ }
428
+ }
429
+ /**
430
+ * @generated MessageType for protobuf message services.qualifications.SubmitExamRequest
431
+ */
432
+ export const SubmitExamRequest = new SubmitExamRequest$Type();
433
+ // @generated message type with reflection information, may provide speed optimized methods
434
+ class SubmitExamResponse$Type extends MessageType<SubmitExamResponse> {
435
+ constructor() {
436
+ super("services.qualifications.SubmitExamResponse", [
437
+ { no: 1, name: "duration", kind: "message", T: () => Duration, options: { "buf.validate.field": { duration: { gte: {} } } } }
438
+ ]);
439
+ }
440
+ create(value?: PartialMessage<SubmitExamResponse>): SubmitExamResponse {
441
+ const message = globalThis.Object.create((this.messagePrototype!));
442
+ if (value !== undefined)
443
+ reflectionMergePartial<SubmitExamResponse>(this, message, value);
444
+ return message;
445
+ }
446
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SubmitExamResponse): SubmitExamResponse {
447
+ let message = target ?? this.create(), end = reader.pos + length;
448
+ while (reader.pos < end) {
449
+ let [fieldNo, wireType] = reader.tag();
450
+ switch (fieldNo) {
451
+ case /* google.protobuf.Duration duration */ 1:
452
+ message.duration = Duration.internalBinaryRead(reader, reader.uint32(), options, message.duration);
453
+ break;
454
+ default:
455
+ let u = options.readUnknownField;
456
+ if (u === "throw")
457
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
458
+ let d = reader.skip(wireType);
459
+ if (u !== false)
460
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
461
+ }
462
+ }
463
+ return message;
464
+ }
465
+ internalBinaryWrite(message: SubmitExamResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
466
+ /* google.protobuf.Duration duration = 1; */
467
+ if (message.duration)
468
+ Duration.internalBinaryWrite(message.duration, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
469
+ let u = options.writeUnknownFields;
470
+ if (u !== false)
471
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
472
+ return writer;
473
+ }
474
+ }
475
+ /**
476
+ * @generated MessageType for protobuf message services.qualifications.SubmitExamResponse
477
+ */
478
+ export const SubmitExamResponse = new SubmitExamResponse$Type();
479
+ // @generated message type with reflection information, may provide speed optimized methods
480
+ class GetUserExamRequest$Type extends MessageType<GetUserExamRequest> {
481
+ constructor() {
482
+ super("services.qualifications.GetUserExamRequest", [
483
+ { no: 1, name: "qualification_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
484
+ { no: 2, name: "user_id", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gte: 0 } } } }
485
+ ]);
486
+ }
487
+ create(value?: PartialMessage<GetUserExamRequest>): GetUserExamRequest {
488
+ const message = globalThis.Object.create((this.messagePrototype!));
489
+ message.qualificationId = 0;
490
+ message.userId = 0;
491
+ if (value !== undefined)
492
+ reflectionMergePartial<GetUserExamRequest>(this, message, value);
493
+ return message;
494
+ }
495
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetUserExamRequest): GetUserExamRequest {
496
+ let message = target ?? this.create(), end = reader.pos + length;
497
+ while (reader.pos < end) {
498
+ let [fieldNo, wireType] = reader.tag();
499
+ switch (fieldNo) {
500
+ case /* int64 qualification_id */ 1:
501
+ message.qualificationId = reader.int64().toNumber();
502
+ break;
503
+ case /* int32 user_id */ 2:
504
+ message.userId = reader.int32();
505
+ break;
506
+ default:
507
+ let u = options.readUnknownField;
508
+ if (u === "throw")
509
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
510
+ let d = reader.skip(wireType);
511
+ if (u !== false)
512
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
513
+ }
514
+ }
515
+ return message;
516
+ }
517
+ internalBinaryWrite(message: GetUserExamRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
518
+ /* int64 qualification_id = 1; */
519
+ if (message.qualificationId !== 0)
520
+ writer.tag(1, WireType.Varint).int64(message.qualificationId);
521
+ /* int32 user_id = 2; */
522
+ if (message.userId !== 0)
523
+ writer.tag(2, WireType.Varint).int32(message.userId);
524
+ let u = options.writeUnknownFields;
525
+ if (u !== false)
526
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
527
+ return writer;
528
+ }
529
+ }
530
+ /**
531
+ * @generated MessageType for protobuf message services.qualifications.GetUserExamRequest
532
+ */
533
+ export const GetUserExamRequest = new GetUserExamRequest$Type();
534
+ // @generated message type with reflection information, may provide speed optimized methods
535
+ class GetUserExamResponse$Type extends MessageType<GetUserExamResponse> {
536
+ constructor() {
537
+ super("services.qualifications.GetUserExamResponse", [
538
+ { no: 1, name: "exam", kind: "message", T: () => ExamQuestions },
539
+ { no: 2, name: "exam_user", kind: "message", T: () => ExamUser },
540
+ { no: 3, name: "responses", kind: "message", T: () => ExamResponses },
541
+ { no: 4, name: "grading", kind: "message", T: () => ExamGrading }
542
+ ]);
543
+ }
544
+ create(value?: PartialMessage<GetUserExamResponse>): GetUserExamResponse {
545
+ const message = globalThis.Object.create((this.messagePrototype!));
546
+ if (value !== undefined)
547
+ reflectionMergePartial<GetUserExamResponse>(this, message, value);
548
+ return message;
549
+ }
550
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetUserExamResponse): GetUserExamResponse {
551
+ let message = target ?? this.create(), end = reader.pos + length;
552
+ while (reader.pos < end) {
553
+ let [fieldNo, wireType] = reader.tag();
554
+ switch (fieldNo) {
555
+ case /* resources.qualifications.exam.ExamQuestions exam */ 1:
556
+ message.exam = ExamQuestions.internalBinaryRead(reader, reader.uint32(), options, message.exam);
557
+ break;
558
+ case /* resources.qualifications.exam.ExamUser exam_user */ 2:
559
+ message.examUser = ExamUser.internalBinaryRead(reader, reader.uint32(), options, message.examUser);
560
+ break;
561
+ case /* resources.qualifications.exam.ExamResponses responses */ 3:
562
+ message.responses = ExamResponses.internalBinaryRead(reader, reader.uint32(), options, message.responses);
563
+ break;
564
+ case /* resources.qualifications.exam.ExamGrading grading */ 4:
565
+ message.grading = ExamGrading.internalBinaryRead(reader, reader.uint32(), options, message.grading);
566
+ break;
567
+ default:
568
+ let u = options.readUnknownField;
569
+ if (u === "throw")
570
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
571
+ let d = reader.skip(wireType);
572
+ if (u !== false)
573
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
574
+ }
575
+ }
576
+ return message;
577
+ }
578
+ internalBinaryWrite(message: GetUserExamResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
579
+ /* resources.qualifications.exam.ExamQuestions exam = 1; */
580
+ if (message.exam)
581
+ ExamQuestions.internalBinaryWrite(message.exam, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
582
+ /* resources.qualifications.exam.ExamUser exam_user = 2; */
583
+ if (message.examUser)
584
+ ExamUser.internalBinaryWrite(message.examUser, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
585
+ /* resources.qualifications.exam.ExamResponses responses = 3; */
586
+ if (message.responses)
587
+ ExamResponses.internalBinaryWrite(message.responses, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
588
+ /* resources.qualifications.exam.ExamGrading grading = 4; */
589
+ if (message.grading)
590
+ ExamGrading.internalBinaryWrite(message.grading, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
591
+ let u = options.writeUnknownFields;
592
+ if (u !== false)
593
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
594
+ return writer;
595
+ }
596
+ }
597
+ /**
598
+ * @generated MessageType for protobuf message services.qualifications.GetUserExamResponse
599
+ */
600
+ export const GetUserExamResponse = new GetUserExamResponse$Type();
601
+ /**
602
+ * @generated ServiceType for protobuf service services.qualifications.ExamService
603
+ */
604
+ export const ExamService = new ServiceType("services.qualifications.ExamService", [
605
+ { name: "GetExamInfo", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: GetExamInfoRequest, O: GetExamInfoResponse },
606
+ { name: "TakeExam", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: TakeExamRequest, O: TakeExamResponse },
607
+ { name: "SubmitExam", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: SubmitExamRequest, O: SubmitExamResponse },
608
+ { name: "GetUserExam", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: GetUserExamRequest, O: GetUserExamResponse }
609
+ ], { "codegen.perms.perms_svc": { name: "qualifications.QualificationsService" } });