@deepintel-ltd/buildlink-api-contracts 0.2.25 → 0.2.27

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 (179) hide show
  1. package/README.md +1 -1
  2. package/contracts/auth.d.ts +32 -32
  3. package/contracts/boq.d.ts +117 -0
  4. package/contracts/boq.d.ts.map +1 -1
  5. package/contracts/boq.js +33 -5
  6. package/contracts/boq.js.map +1 -1
  7. package/contracts/client-progress.d.ts +493 -0
  8. package/contracts/client-progress.d.ts.map +1 -0
  9. package/contracts/client-progress.js +20 -0
  10. package/contracts/client-progress.js.map +1 -0
  11. package/contracts/commercial.d.ts +309 -310
  12. package/contracts/commercial.d.ts.map +1 -1
  13. package/contracts/commercial.js +44 -14
  14. package/contracts/commercial.js.map +1 -1
  15. package/contracts/communication.d.ts +64 -64
  16. package/contracts/contractor-ledger.d.ts +525 -8
  17. package/contracts/contractor-ledger.d.ts.map +1 -1
  18. package/contracts/contractor-ledger.js +61 -12
  19. package/contracts/contractor-ledger.js.map +1 -1
  20. package/contracts/daily-logs.d.ts +1288 -0
  21. package/contracts/daily-logs.d.ts.map +1 -1
  22. package/contracts/daily-logs.js.map +1 -1
  23. package/contracts/dashboard.d.ts +411 -0
  24. package/contracts/dashboard.d.ts.map +1 -0
  25. package/contracts/dashboard.js +16 -0
  26. package/contracts/dashboard.js.map +1 -0
  27. package/contracts/deficiencies.d.ts +110 -110
  28. package/contracts/documents.d.ts +600 -1
  29. package/contracts/documents.d.ts.map +1 -1
  30. package/contracts/documents.js +37 -2
  31. package/contracts/documents.js.map +1 -1
  32. package/contracts/drawings.d.ts +532 -532
  33. package/contracts/hub.d.ts.map +1 -1
  34. package/contracts/hub.js +37 -12
  35. package/contracts/hub.js.map +1 -1
  36. package/contracts/index.d.ts +25 -10
  37. package/contracts/index.d.ts.map +1 -1
  38. package/contracts/index.js +23 -8
  39. package/contracts/index.js.map +1 -1
  40. package/contracts/material-index.d.ts +560 -0
  41. package/contracts/material-index.d.ts.map +1 -0
  42. package/contracts/material-index.js +31 -0
  43. package/contracts/material-index.js.map +1 -0
  44. package/contracts/meetings.d.ts +136 -136
  45. package/contracts/projects.d.ts +141 -93
  46. package/contracts/projects.d.ts.map +1 -1
  47. package/contracts/proof.d.ts +24 -24
  48. package/contracts/proof.d.ts.map +1 -1
  49. package/contracts/proof.js +29 -10
  50. package/contracts/proof.js.map +1 -1
  51. package/contracts/qaqc.d.ts +18 -18
  52. package/contracts/qaqc.d.ts.map +1 -1
  53. package/contracts/qaqc.js +37 -11
  54. package/contracts/qaqc.js.map +1 -1
  55. package/contracts/rbac.d.ts +49 -49
  56. package/contracts/reports.d.ts +72 -624
  57. package/contracts/reports.d.ts.map +1 -1
  58. package/contracts/reports.js.map +1 -1
  59. package/contracts/resources.d.ts +10 -10
  60. package/contracts/safety.d.ts +164 -164
  61. package/contracts/schedule.d.ts +68 -68
  62. package/contracts/site-links.d.ts +641 -0
  63. package/contracts/site-links.d.ts.map +1 -0
  64. package/contracts/site-links.js +48 -0
  65. package/contracts/site-links.js.map +1 -0
  66. package/contracts/spec-equal.d.ts.map +1 -1
  67. package/contracts/spec-equal.js +23 -8
  68. package/contracts/spec-equal.js.map +1 -1
  69. package/contracts/specifications.d.ts +296 -296
  70. package/contracts/tasks.d.ts +110 -110
  71. package/contracts/tours.d.ts +503 -0
  72. package/contracts/tours.d.ts.map +1 -0
  73. package/contracts/tours.js +39 -0
  74. package/contracts/tours.js.map +1 -0
  75. package/contracts/transmittals.d.ts +64 -64
  76. package/contracts/valuations-extras.d.ts +758 -0
  77. package/contracts/valuations-extras.d.ts.map +1 -0
  78. package/contracts/valuations-extras.js +61 -0
  79. package/contracts/valuations-extras.js.map +1 -0
  80. package/contracts/valuations.d.ts +4425 -559
  81. package/contracts/valuations.d.ts.map +1 -1
  82. package/contracts/valuations.js +93 -2
  83. package/contracts/valuations.js.map +1 -1
  84. package/package.json +31 -1
  85. package/schemas/auth.d.ts +13 -13
  86. package/schemas/boq.d.ts +23 -0
  87. package/schemas/boq.d.ts.map +1 -1
  88. package/schemas/boq.js +2 -0
  89. package/schemas/boq.js.map +1 -1
  90. package/schemas/cash-flow.d.ts +99 -0
  91. package/schemas/cash-flow.d.ts.map +1 -0
  92. package/schemas/cash-flow.js +21 -0
  93. package/schemas/cash-flow.js.map +1 -0
  94. package/schemas/client-progress.d.ts +436 -0
  95. package/schemas/client-progress.d.ts.map +1 -0
  96. package/schemas/client-progress.js +45 -0
  97. package/schemas/client-progress.js.map +1 -0
  98. package/schemas/commercial.d.ts.map +1 -1
  99. package/schemas/commercial.js +56 -19
  100. package/schemas/commercial.js.map +1 -1
  101. package/schemas/common.d.ts +3 -3
  102. package/schemas/common.d.ts.map +1 -1
  103. package/schemas/common.js +8 -7
  104. package/schemas/common.js.map +1 -1
  105. package/schemas/communication.d.ts +10 -10
  106. package/schemas/contractor-ledger.d.ts +245 -8
  107. package/schemas/contractor-ledger.d.ts.map +1 -1
  108. package/schemas/contractor-ledger.js +108 -19
  109. package/schemas/contractor-ledger.js.map +1 -1
  110. package/schemas/cursor-pagination.d.ts +2 -2
  111. package/schemas/daily-logs.d.ts +420 -0
  112. package/schemas/daily-logs.d.ts.map +1 -1
  113. package/schemas/daily-logs.js +9 -0
  114. package/schemas/daily-logs.js.map +1 -1
  115. package/schemas/dashboard.d.ts +455 -0
  116. package/schemas/dashboard.d.ts.map +1 -0
  117. package/schemas/dashboard.js +47 -0
  118. package/schemas/dashboard.js.map +1 -0
  119. package/schemas/deficiencies.d.ts +22 -22
  120. package/schemas/documents.d.ts +86 -0
  121. package/schemas/documents.d.ts.map +1 -1
  122. package/schemas/documents.js +30 -0
  123. package/schemas/documents.js.map +1 -1
  124. package/schemas/drawings.d.ts +133 -133
  125. package/schemas/evidence.d.ts +75 -0
  126. package/schemas/evidence.d.ts.map +1 -0
  127. package/schemas/evidence.js +79 -0
  128. package/schemas/evidence.js.map +1 -0
  129. package/schemas/hub.d.ts.map +1 -1
  130. package/schemas/hub.js +52 -15
  131. package/schemas/hub.js.map +1 -1
  132. package/schemas/maps.d.ts.map +1 -1
  133. package/schemas/maps.js.map +1 -1
  134. package/schemas/material-index.d.ts +256 -0
  135. package/schemas/material-index.d.ts.map +1 -0
  136. package/schemas/material-index.js +47 -0
  137. package/schemas/material-index.js.map +1 -0
  138. package/schemas/meetings.d.ts +32 -32
  139. package/schemas/projects.d.ts +27 -16
  140. package/schemas/projects.d.ts.map +1 -1
  141. package/schemas/projects.js +4 -0
  142. package/schemas/projects.js.map +1 -1
  143. package/schemas/proof.d.ts +12 -12
  144. package/schemas/proof.d.ts.map +1 -1
  145. package/schemas/proof.js +30 -11
  146. package/schemas/proof.js.map +1 -1
  147. package/schemas/qaqc.d.ts +11 -6
  148. package/schemas/qaqc.d.ts.map +1 -1
  149. package/schemas/qaqc.js +5 -0
  150. package/schemas/qaqc.js.map +1 -1
  151. package/schemas/rbac.d.ts +28 -28
  152. package/schemas/rbac.d.ts.map +1 -1
  153. package/schemas/rbac.js +3 -0
  154. package/schemas/rbac.js.map +1 -1
  155. package/schemas/reports.d.ts +56 -236
  156. package/schemas/reports.d.ts.map +1 -1
  157. package/schemas/reports.js +0 -20
  158. package/schemas/reports.js.map +1 -1
  159. package/schemas/resources.d.ts +18 -18
  160. package/schemas/safety.d.ts +34 -34
  161. package/schemas/schedule.d.ts +48 -48
  162. package/schemas/site-links.d.ts +183 -0
  163. package/schemas/site-links.d.ts.map +1 -0
  164. package/schemas/site-links.js +40 -0
  165. package/schemas/site-links.js.map +1 -0
  166. package/schemas/spec-equal.d.ts.map +1 -1
  167. package/schemas/spec-equal.js +10 -4
  168. package/schemas/spec-equal.js.map +1 -1
  169. package/schemas/specifications.d.ts +108 -108
  170. package/schemas/tasks.d.ts +12 -12
  171. package/schemas/tours.d.ts +114 -0
  172. package/schemas/tours.d.ts.map +1 -0
  173. package/schemas/tours.js +29 -0
  174. package/schemas/tours.js.map +1 -0
  175. package/schemas/transmittals.d.ts +22 -22
  176. package/schemas/valuations.d.ts +556 -58
  177. package/schemas/valuations.d.ts.map +1 -1
  178. package/schemas/valuations.js +44 -3
  179. package/schemas/valuations.js.map +1 -1
@@ -0,0 +1,560 @@
1
+ import { z } from 'zod';
2
+ export declare const materialIndexContract: {
3
+ importRates: {
4
+ summary: "Admin CSV-shaped import of material rate index rows";
5
+ method: "POST";
6
+ body: z.ZodObject<{
7
+ projectId: z.ZodOptional<z.ZodString>;
8
+ rows: z.ZodArray<z.ZodObject<{
9
+ materialKey: z.ZodString;
10
+ name: z.ZodString;
11
+ unit: z.ZodString;
12
+ priceNgn: z.ZodNumber;
13
+ asOfDate: z.ZodString;
14
+ source: z.ZodOptional<z.ZodString>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ name: string;
17
+ unit: string;
18
+ materialKey: string;
19
+ priceNgn: number;
20
+ asOfDate: string;
21
+ source?: string | undefined;
22
+ }, {
23
+ name: string;
24
+ unit: string;
25
+ materialKey: string;
26
+ priceNgn: number;
27
+ asOfDate: string;
28
+ source?: string | undefined;
29
+ }>, "many">;
30
+ }, "strip", z.ZodTypeAny, {
31
+ rows: {
32
+ name: string;
33
+ unit: string;
34
+ materialKey: string;
35
+ priceNgn: number;
36
+ asOfDate: string;
37
+ source?: string | undefined;
38
+ }[];
39
+ projectId?: string | undefined;
40
+ }, {
41
+ rows: {
42
+ name: string;
43
+ unit: string;
44
+ materialKey: string;
45
+ priceNgn: number;
46
+ asOfDate: string;
47
+ source?: string | undefined;
48
+ }[];
49
+ projectId?: string | undefined;
50
+ }>;
51
+ path: "/admin/material-rates/import";
52
+ responses: {
53
+ 201: z.ZodObject<{
54
+ data: z.ZodArray<z.ZodObject<{
55
+ type: z.ZodLiteral<"material-rate-indexes">;
56
+ id: z.ZodString;
57
+ attributes: z.ZodObject<Omit<{
58
+ id: z.ZodString;
59
+ companyId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
60
+ projectId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
+ materialKey: z.ZodString;
62
+ name: z.ZodString;
63
+ unit: z.ZodString;
64
+ priceNgn: z.ZodNumber;
65
+ asOfDate: z.ZodString;
66
+ source: z.ZodOptional<z.ZodNullable<z.ZodString>>;
67
+ createdAt: z.ZodString;
68
+ updatedAt: z.ZodString;
69
+ }, "id">, "strip", z.ZodTypeAny, {
70
+ createdAt: string;
71
+ updatedAt: string;
72
+ name: string;
73
+ unit: string;
74
+ materialKey: string;
75
+ priceNgn: number;
76
+ asOfDate: string;
77
+ companyId?: string | null | undefined;
78
+ projectId?: string | null | undefined;
79
+ source?: string | null | undefined;
80
+ }, {
81
+ createdAt: string;
82
+ updatedAt: string;
83
+ name: string;
84
+ unit: string;
85
+ materialKey: string;
86
+ priceNgn: number;
87
+ asOfDate: string;
88
+ companyId?: string | null | undefined;
89
+ projectId?: string | null | undefined;
90
+ source?: string | null | undefined;
91
+ }>;
92
+ }, "strip", z.ZodTypeAny, {
93
+ id: string;
94
+ type: "material-rate-indexes";
95
+ attributes: {
96
+ createdAt: string;
97
+ updatedAt: string;
98
+ name: string;
99
+ unit: string;
100
+ materialKey: string;
101
+ priceNgn: number;
102
+ asOfDate: string;
103
+ companyId?: string | null | undefined;
104
+ projectId?: string | null | undefined;
105
+ source?: string | null | undefined;
106
+ };
107
+ }, {
108
+ id: string;
109
+ type: "material-rate-indexes";
110
+ attributes: {
111
+ createdAt: string;
112
+ updatedAt: string;
113
+ name: string;
114
+ unit: string;
115
+ materialKey: string;
116
+ priceNgn: number;
117
+ asOfDate: string;
118
+ companyId?: string | null | undefined;
119
+ projectId?: string | null | undefined;
120
+ source?: string | null | undefined;
121
+ };
122
+ }>, "many">;
123
+ meta: z.ZodOptional<z.ZodObject<{
124
+ total: z.ZodOptional<z.ZodNumber>;
125
+ page: z.ZodOptional<z.ZodNumber>;
126
+ size: z.ZodOptional<z.ZodNumber>;
127
+ pages: z.ZodOptional<z.ZodNumber>;
128
+ hasNextPage: z.ZodOptional<z.ZodBoolean>;
129
+ hasPreviousPage: z.ZodOptional<z.ZodBoolean>;
130
+ }, "strip", z.ZodTypeAny, {
131
+ page?: number | undefined;
132
+ total?: number | undefined;
133
+ size?: number | undefined;
134
+ pages?: number | undefined;
135
+ hasNextPage?: boolean | undefined;
136
+ hasPreviousPage?: boolean | undefined;
137
+ }, {
138
+ page?: number | undefined;
139
+ total?: number | undefined;
140
+ size?: number | undefined;
141
+ pages?: number | undefined;
142
+ hasNextPage?: boolean | undefined;
143
+ hasPreviousPage?: boolean | undefined;
144
+ }>>;
145
+ links: z.ZodOptional<z.ZodObject<{
146
+ self: z.ZodString;
147
+ first: z.ZodOptional<z.ZodString>;
148
+ last: z.ZodOptional<z.ZodString>;
149
+ prev: z.ZodOptional<z.ZodString>;
150
+ next: z.ZodOptional<z.ZodString>;
151
+ }, "strip", z.ZodTypeAny, {
152
+ self: string;
153
+ first?: string | undefined;
154
+ last?: string | undefined;
155
+ prev?: string | undefined;
156
+ next?: string | undefined;
157
+ }, {
158
+ self: string;
159
+ first?: string | undefined;
160
+ last?: string | undefined;
161
+ prev?: string | undefined;
162
+ next?: string | undefined;
163
+ }>>;
164
+ }, "strip", z.ZodTypeAny, {
165
+ data: {
166
+ id: string;
167
+ type: "material-rate-indexes";
168
+ attributes: {
169
+ createdAt: string;
170
+ updatedAt: string;
171
+ name: string;
172
+ unit: string;
173
+ materialKey: string;
174
+ priceNgn: number;
175
+ asOfDate: string;
176
+ companyId?: string | null | undefined;
177
+ projectId?: string | null | undefined;
178
+ source?: string | null | undefined;
179
+ };
180
+ }[];
181
+ meta?: {
182
+ page?: number | undefined;
183
+ total?: number | undefined;
184
+ size?: number | undefined;
185
+ pages?: number | undefined;
186
+ hasNextPage?: boolean | undefined;
187
+ hasPreviousPage?: boolean | undefined;
188
+ } | undefined;
189
+ links?: {
190
+ self: string;
191
+ first?: string | undefined;
192
+ last?: string | undefined;
193
+ prev?: string | undefined;
194
+ next?: string | undefined;
195
+ } | undefined;
196
+ }, {
197
+ data: {
198
+ id: string;
199
+ type: "material-rate-indexes";
200
+ attributes: {
201
+ createdAt: string;
202
+ updatedAt: string;
203
+ name: string;
204
+ unit: string;
205
+ materialKey: string;
206
+ priceNgn: number;
207
+ asOfDate: string;
208
+ companyId?: string | null | undefined;
209
+ projectId?: string | null | undefined;
210
+ source?: string | null | undefined;
211
+ };
212
+ }[];
213
+ meta?: {
214
+ page?: number | undefined;
215
+ total?: number | undefined;
216
+ size?: number | undefined;
217
+ pages?: number | undefined;
218
+ hasNextPage?: boolean | undefined;
219
+ hasPreviousPage?: boolean | undefined;
220
+ } | undefined;
221
+ links?: {
222
+ self: string;
223
+ first?: string | undefined;
224
+ last?: string | undefined;
225
+ prev?: string | undefined;
226
+ next?: string | undefined;
227
+ } | undefined;
228
+ }>;
229
+ 400: z.ZodObject<{
230
+ errors: z.ZodArray<z.ZodObject<{
231
+ status: z.ZodString;
232
+ title: z.ZodString;
233
+ detail: z.ZodOptional<z.ZodString>;
234
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
235
+ }, "strip", z.ZodTypeAny, {
236
+ status: string;
237
+ title: string;
238
+ detail?: string | undefined;
239
+ meta?: Record<string, unknown> | undefined;
240
+ }, {
241
+ status: string;
242
+ title: string;
243
+ detail?: string | undefined;
244
+ meta?: Record<string, unknown> | undefined;
245
+ }>, "many">;
246
+ }, "strip", z.ZodTypeAny, {
247
+ errors: {
248
+ status: string;
249
+ title: string;
250
+ detail?: string | undefined;
251
+ meta?: Record<string, unknown> | undefined;
252
+ }[];
253
+ }, {
254
+ errors: {
255
+ status: string;
256
+ title: string;
257
+ detail?: string | undefined;
258
+ meta?: Record<string, unknown> | undefined;
259
+ }[];
260
+ }>;
261
+ 401: z.ZodObject<{
262
+ errors: z.ZodArray<z.ZodObject<{
263
+ status: z.ZodString;
264
+ title: z.ZodString;
265
+ detail: z.ZodOptional<z.ZodString>;
266
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
267
+ }, "strip", z.ZodTypeAny, {
268
+ status: string;
269
+ title: string;
270
+ detail?: string | undefined;
271
+ meta?: Record<string, unknown> | undefined;
272
+ }, {
273
+ status: string;
274
+ title: string;
275
+ detail?: string | undefined;
276
+ meta?: Record<string, unknown> | undefined;
277
+ }>, "many">;
278
+ }, "strip", z.ZodTypeAny, {
279
+ errors: {
280
+ status: string;
281
+ title: string;
282
+ detail?: string | undefined;
283
+ meta?: Record<string, unknown> | undefined;
284
+ }[];
285
+ }, {
286
+ errors: {
287
+ status: string;
288
+ title: string;
289
+ detail?: string | undefined;
290
+ meta?: Record<string, unknown> | undefined;
291
+ }[];
292
+ }>;
293
+ 403: z.ZodObject<{
294
+ errors: z.ZodArray<z.ZodObject<{
295
+ status: z.ZodString;
296
+ title: z.ZodString;
297
+ detail: z.ZodOptional<z.ZodString>;
298
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
299
+ }, "strip", z.ZodTypeAny, {
300
+ status: string;
301
+ title: string;
302
+ detail?: string | undefined;
303
+ meta?: Record<string, unknown> | undefined;
304
+ }, {
305
+ status: string;
306
+ title: string;
307
+ detail?: string | undefined;
308
+ meta?: Record<string, unknown> | undefined;
309
+ }>, "many">;
310
+ }, "strip", z.ZodTypeAny, {
311
+ errors: {
312
+ status: string;
313
+ title: string;
314
+ detail?: string | undefined;
315
+ meta?: Record<string, unknown> | undefined;
316
+ }[];
317
+ }, {
318
+ errors: {
319
+ status: string;
320
+ title: string;
321
+ detail?: string | undefined;
322
+ meta?: Record<string, unknown> | undefined;
323
+ }[];
324
+ }>;
325
+ };
326
+ };
327
+ listAlerts: {
328
+ pathParams: z.ZodObject<{
329
+ projectId: z.ZodString;
330
+ }, "strip", z.ZodTypeAny, {
331
+ projectId: string;
332
+ }, {
333
+ projectId: string;
334
+ }>;
335
+ summary: "BOQ lines where index variance exceeds contingency";
336
+ method: "GET";
337
+ path: "/projects/:projectId/material-rate-alerts";
338
+ responses: {
339
+ 200: z.ZodObject<{
340
+ data: z.ZodArray<z.ZodObject<{
341
+ type: z.ZodLiteral<"material-rate-alerts">;
342
+ id: z.ZodString;
343
+ attributes: z.ZodObject<{
344
+ boqLineId: z.ZodString;
345
+ itemCode: z.ZodString;
346
+ materialKey: z.ZodString;
347
+ boqRate: z.ZodNumber;
348
+ indexRate: z.ZodNumber;
349
+ variancePct: z.ZodNumber;
350
+ contingencyPct: z.ZodNumber;
351
+ }, "strip", z.ZodTypeAny, {
352
+ itemCode: string;
353
+ materialKey: string;
354
+ boqLineId: string;
355
+ boqRate: number;
356
+ indexRate: number;
357
+ variancePct: number;
358
+ contingencyPct: number;
359
+ }, {
360
+ itemCode: string;
361
+ materialKey: string;
362
+ boqLineId: string;
363
+ boqRate: number;
364
+ indexRate: number;
365
+ variancePct: number;
366
+ contingencyPct: number;
367
+ }>;
368
+ }, "strip", z.ZodTypeAny, {
369
+ id: string;
370
+ type: "material-rate-alerts";
371
+ attributes: {
372
+ itemCode: string;
373
+ materialKey: string;
374
+ boqLineId: string;
375
+ boqRate: number;
376
+ indexRate: number;
377
+ variancePct: number;
378
+ contingencyPct: number;
379
+ };
380
+ }, {
381
+ id: string;
382
+ type: "material-rate-alerts";
383
+ attributes: {
384
+ itemCode: string;
385
+ materialKey: string;
386
+ boqLineId: string;
387
+ boqRate: number;
388
+ indexRate: number;
389
+ variancePct: number;
390
+ contingencyPct: number;
391
+ };
392
+ }>, "many">;
393
+ meta: z.ZodOptional<z.ZodObject<{
394
+ total: z.ZodOptional<z.ZodNumber>;
395
+ page: z.ZodOptional<z.ZodNumber>;
396
+ size: z.ZodOptional<z.ZodNumber>;
397
+ pages: z.ZodOptional<z.ZodNumber>;
398
+ hasNextPage: z.ZodOptional<z.ZodBoolean>;
399
+ hasPreviousPage: z.ZodOptional<z.ZodBoolean>;
400
+ }, "strip", z.ZodTypeAny, {
401
+ page?: number | undefined;
402
+ total?: number | undefined;
403
+ size?: number | undefined;
404
+ pages?: number | undefined;
405
+ hasNextPage?: boolean | undefined;
406
+ hasPreviousPage?: boolean | undefined;
407
+ }, {
408
+ page?: number | undefined;
409
+ total?: number | undefined;
410
+ size?: number | undefined;
411
+ pages?: number | undefined;
412
+ hasNextPage?: boolean | undefined;
413
+ hasPreviousPage?: boolean | undefined;
414
+ }>>;
415
+ links: z.ZodOptional<z.ZodObject<{
416
+ self: z.ZodString;
417
+ first: z.ZodOptional<z.ZodString>;
418
+ last: z.ZodOptional<z.ZodString>;
419
+ prev: z.ZodOptional<z.ZodString>;
420
+ next: z.ZodOptional<z.ZodString>;
421
+ }, "strip", z.ZodTypeAny, {
422
+ self: string;
423
+ first?: string | undefined;
424
+ last?: string | undefined;
425
+ prev?: string | undefined;
426
+ next?: string | undefined;
427
+ }, {
428
+ self: string;
429
+ first?: string | undefined;
430
+ last?: string | undefined;
431
+ prev?: string | undefined;
432
+ next?: string | undefined;
433
+ }>>;
434
+ }, "strip", z.ZodTypeAny, {
435
+ data: {
436
+ id: string;
437
+ type: "material-rate-alerts";
438
+ attributes: {
439
+ itemCode: string;
440
+ materialKey: string;
441
+ boqLineId: string;
442
+ boqRate: number;
443
+ indexRate: number;
444
+ variancePct: number;
445
+ contingencyPct: number;
446
+ };
447
+ }[];
448
+ meta?: {
449
+ page?: number | undefined;
450
+ total?: number | undefined;
451
+ size?: number | undefined;
452
+ pages?: number | undefined;
453
+ hasNextPage?: boolean | undefined;
454
+ hasPreviousPage?: boolean | undefined;
455
+ } | undefined;
456
+ links?: {
457
+ self: string;
458
+ first?: string | undefined;
459
+ last?: string | undefined;
460
+ prev?: string | undefined;
461
+ next?: string | undefined;
462
+ } | undefined;
463
+ }, {
464
+ data: {
465
+ id: string;
466
+ type: "material-rate-alerts";
467
+ attributes: {
468
+ itemCode: string;
469
+ materialKey: string;
470
+ boqLineId: string;
471
+ boqRate: number;
472
+ indexRate: number;
473
+ variancePct: number;
474
+ contingencyPct: number;
475
+ };
476
+ }[];
477
+ meta?: {
478
+ page?: number | undefined;
479
+ total?: number | undefined;
480
+ size?: number | undefined;
481
+ pages?: number | undefined;
482
+ hasNextPage?: boolean | undefined;
483
+ hasPreviousPage?: boolean | undefined;
484
+ } | undefined;
485
+ links?: {
486
+ self: string;
487
+ first?: string | undefined;
488
+ last?: string | undefined;
489
+ prev?: string | undefined;
490
+ next?: string | undefined;
491
+ } | undefined;
492
+ }>;
493
+ 401: z.ZodObject<{
494
+ errors: z.ZodArray<z.ZodObject<{
495
+ status: z.ZodString;
496
+ title: z.ZodString;
497
+ detail: z.ZodOptional<z.ZodString>;
498
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
499
+ }, "strip", z.ZodTypeAny, {
500
+ status: string;
501
+ title: string;
502
+ detail?: string | undefined;
503
+ meta?: Record<string, unknown> | undefined;
504
+ }, {
505
+ status: string;
506
+ title: string;
507
+ detail?: string | undefined;
508
+ meta?: Record<string, unknown> | undefined;
509
+ }>, "many">;
510
+ }, "strip", z.ZodTypeAny, {
511
+ errors: {
512
+ status: string;
513
+ title: string;
514
+ detail?: string | undefined;
515
+ meta?: Record<string, unknown> | undefined;
516
+ }[];
517
+ }, {
518
+ errors: {
519
+ status: string;
520
+ title: string;
521
+ detail?: string | undefined;
522
+ meta?: Record<string, unknown> | undefined;
523
+ }[];
524
+ }>;
525
+ 403: z.ZodObject<{
526
+ errors: z.ZodArray<z.ZodObject<{
527
+ status: z.ZodString;
528
+ title: z.ZodString;
529
+ detail: z.ZodOptional<z.ZodString>;
530
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
531
+ }, "strip", z.ZodTypeAny, {
532
+ status: string;
533
+ title: string;
534
+ detail?: string | undefined;
535
+ meta?: Record<string, unknown> | undefined;
536
+ }, {
537
+ status: string;
538
+ title: string;
539
+ detail?: string | undefined;
540
+ meta?: Record<string, unknown> | undefined;
541
+ }>, "many">;
542
+ }, "strip", z.ZodTypeAny, {
543
+ errors: {
544
+ status: string;
545
+ title: string;
546
+ detail?: string | undefined;
547
+ meta?: Record<string, unknown> | undefined;
548
+ }[];
549
+ }, {
550
+ errors: {
551
+ status: string;
552
+ title: string;
553
+ detail?: string | undefined;
554
+ meta?: Record<string, unknown> | undefined;
555
+ }[];
556
+ }>;
557
+ };
558
+ };
559
+ };
560
+ //# sourceMappingURL=material-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-index.d.ts","sourceRoot":"","sources":["../../../src/contracts/material-index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBhC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { CuidSchema, JsonApiCollectionResponseSchema, JsonApiErrorResponseSchema, } from '../schemas/common';
4
+ import { ImportMaterialRatesRequestSchema, MaterialRateAlertResourceSchema, MaterialRateIndexResourceSchema, } from '../schemas/material-index';
5
+ const c = initContract();
6
+ export const materialIndexContract = c.router({
7
+ importRates: {
8
+ method: 'POST',
9
+ path: '/admin/material-rates/import',
10
+ body: ImportMaterialRatesRequestSchema,
11
+ responses: {
12
+ 201: JsonApiCollectionResponseSchema(MaterialRateIndexResourceSchema),
13
+ 400: JsonApiErrorResponseSchema,
14
+ 401: JsonApiErrorResponseSchema,
15
+ 403: JsonApiErrorResponseSchema,
16
+ },
17
+ summary: 'Admin CSV-shaped import of material rate index rows',
18
+ },
19
+ listAlerts: {
20
+ method: 'GET',
21
+ path: '/projects/:projectId/material-rate-alerts',
22
+ pathParams: z.object({ projectId: CuidSchema }),
23
+ responses: {
24
+ 200: JsonApiCollectionResponseSchema(MaterialRateAlertResourceSchema),
25
+ 401: JsonApiErrorResponseSchema,
26
+ 403: JsonApiErrorResponseSchema,
27
+ },
28
+ summary: 'BOQ lines where index variance exceeds contingency',
29
+ },
30
+ });
31
+ //# sourceMappingURL=material-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-index.js","sourceRoot":"","sources":["../../../src/contracts/material-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,UAAU,EACV,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE;QACX,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,gCAAgC;QACtC,SAAS,EAAE;YACT,GAAG,EAAE,+BAA+B,CAAC,+BAA+B,CAAC;YACrE,GAAG,EAAE,0BAA0B;YAC/B,GAAG,EAAE,0BAA0B;YAC/B,GAAG,EAAE,0BAA0B;SAChC;QACD,OAAO,EAAE,qDAAqD;KAC/D;IACD,UAAU,EAAE;QACV,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,2CAA2C;QACjD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAC/C,SAAS,EAAE;YACT,GAAG,EAAE,+BAA+B,CAAC,+BAA+B,CAAC;YACrE,GAAG,EAAE,0BAA0B;YAC/B,GAAG,EAAE,0BAA0B;SAChC;QACD,OAAO,EAAE,oDAAoD;KAC9D;CACF,CAAC,CAAC"}