@deepintel-ltd/farmpro-contracts 1.16.3 → 1.16.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,394 @@
1
+ import { z } from 'zod';
2
+ /** Risk levels shared by terrain consumers (planner, Farm Brain, irrigation). */
3
+ export declare const terrainRiskLevelSchema: z.ZodEnum<["low", "medium", "high"]>;
4
+ export type TerrainRiskLevel = z.infer<typeof terrainRiskLevelSchema>;
5
+ export declare const wetnessClassSchema: z.ZodEnum<["low", "moderate", "high"]>;
6
+ export type WetnessClass = z.infer<typeof wetnessClassSchema>;
7
+ export declare const terrainSlopeClassSchema: z.ZodEnum<["flat", "gentle", "moderate", "steep"]>;
8
+ export type SlopeClass = z.infer<typeof terrainSlopeClassSchema>;
9
+ export declare const machineryAccessSchema: z.ZodEnum<["good", "limited", "poor"]>;
10
+ export type MachineryAccess = z.infer<typeof machineryAccessSchema>;
11
+ /**
12
+ * Stable field-scoped terrain summary. Any module may consume this without
13
+ * calling DEM APIs directly.
14
+ */
15
+ export declare const fieldTerrainProfileSchema: z.ZodObject<{
16
+ fieldId: z.ZodString;
17
+ farmId: z.ZodOptional<z.ZodString>;
18
+ source: z.ZodString;
19
+ resolutionM: z.ZodNumber;
20
+ sampledAt: z.ZodString;
21
+ interpolated: z.ZodDefault<z.ZodBoolean>;
22
+ trustNote: z.ZodString;
23
+ elevation: z.ZodObject<{
24
+ min: z.ZodNumber;
25
+ max: z.ZodNumber;
26
+ mean: z.ZodNumber;
27
+ range: z.ZodNumber;
28
+ unit: z.ZodLiteral<"meters">;
29
+ }, "strip", z.ZodTypeAny, {
30
+ min: number;
31
+ max: number;
32
+ unit: "meters";
33
+ mean: number;
34
+ range: number;
35
+ }, {
36
+ min: number;
37
+ max: number;
38
+ unit: "meters";
39
+ mean: number;
40
+ range: number;
41
+ }>;
42
+ slope: z.ZodObject<{
43
+ medianPct: z.ZodNumber;
44
+ meanPct: z.ZodNumber;
45
+ maxPct: z.ZodNumber;
46
+ percentByClass: z.ZodObject<{
47
+ flat: z.ZodNumber;
48
+ gentle: z.ZodNumber;
49
+ moderate: z.ZodNumber;
50
+ steep: z.ZodNumber;
51
+ }, "strip", z.ZodTypeAny, {
52
+ flat: number;
53
+ moderate: number;
54
+ gentle: number;
55
+ steep: number;
56
+ }, {
57
+ flat: number;
58
+ moderate: number;
59
+ gentle: number;
60
+ steep: number;
61
+ }>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ medianPct: number;
64
+ meanPct: number;
65
+ maxPct: number;
66
+ percentByClass: {
67
+ flat: number;
68
+ moderate: number;
69
+ gentle: number;
70
+ steep: number;
71
+ };
72
+ }, {
73
+ medianPct: number;
74
+ meanPct: number;
75
+ maxPct: number;
76
+ percentByClass: {
77
+ flat: number;
78
+ moderate: number;
79
+ gentle: number;
80
+ steep: number;
81
+ };
82
+ }>;
83
+ aspect: z.ZodObject<{
84
+ dominant: z.ZodString;
85
+ flatPercent: z.ZodNumber;
86
+ }, "strip", z.ZodTypeAny, {
87
+ flatPercent: number;
88
+ dominant: string;
89
+ }, {
90
+ flatPercent: number;
91
+ dominant: string;
92
+ }>;
93
+ hydrology: z.ZodObject<{
94
+ wetnessClass: z.ZodEnum<["low", "moderate", "high"]>;
95
+ lowPointCount: z.ZodNumber;
96
+ dominantFlowDirection: z.ZodOptional<z.ZodString>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ wetnessClass: "low" | "high" | "moderate";
99
+ lowPointCount: number;
100
+ dominantFlowDirection?: string | undefined;
101
+ }, {
102
+ wetnessClass: "low" | "high" | "moderate";
103
+ lowPointCount: number;
104
+ dominantFlowDirection?: string | undefined;
105
+ }>;
106
+ risks: z.ZodObject<{
107
+ waterloggingRisk: z.ZodEnum<["low", "medium", "high"]>;
108
+ erosionRisk: z.ZodEnum<["low", "medium", "high"]>;
109
+ machineryAccess: z.ZodEnum<["good", "limited", "poor"]>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ waterloggingRisk: "low" | "medium" | "high";
112
+ erosionRisk: "low" | "medium" | "high";
113
+ machineryAccess: "poor" | "good" | "limited";
114
+ }, {
115
+ waterloggingRisk: "low" | "medium" | "high";
116
+ erosionRisk: "low" | "medium" | "high";
117
+ machineryAccess: "poor" | "good" | "limited";
118
+ }>;
119
+ /** Short bullets for UI / Farm Brain */
120
+ insights: z.ZodArray<z.ZodString, "many">;
121
+ }, "strip", z.ZodTypeAny, {
122
+ source: string;
123
+ fieldId: string;
124
+ risks: {
125
+ waterloggingRisk: "low" | "medium" | "high";
126
+ erosionRisk: "low" | "medium" | "high";
127
+ machineryAccess: "poor" | "good" | "limited";
128
+ };
129
+ elevation: {
130
+ min: number;
131
+ max: number;
132
+ unit: "meters";
133
+ mean: number;
134
+ range: number;
135
+ };
136
+ resolutionM: number;
137
+ interpolated: boolean;
138
+ trustNote: string;
139
+ slope: {
140
+ medianPct: number;
141
+ meanPct: number;
142
+ maxPct: number;
143
+ percentByClass: {
144
+ flat: number;
145
+ moderate: number;
146
+ gentle: number;
147
+ steep: number;
148
+ };
149
+ };
150
+ sampledAt: string;
151
+ aspect: {
152
+ flatPercent: number;
153
+ dominant: string;
154
+ };
155
+ hydrology: {
156
+ wetnessClass: "low" | "high" | "moderate";
157
+ lowPointCount: number;
158
+ dominantFlowDirection?: string | undefined;
159
+ };
160
+ insights: string[];
161
+ farmId?: string | undefined;
162
+ }, {
163
+ source: string;
164
+ fieldId: string;
165
+ risks: {
166
+ waterloggingRisk: "low" | "medium" | "high";
167
+ erosionRisk: "low" | "medium" | "high";
168
+ machineryAccess: "poor" | "good" | "limited";
169
+ };
170
+ elevation: {
171
+ min: number;
172
+ max: number;
173
+ unit: "meters";
174
+ mean: number;
175
+ range: number;
176
+ };
177
+ resolutionM: number;
178
+ trustNote: string;
179
+ slope: {
180
+ medianPct: number;
181
+ meanPct: number;
182
+ maxPct: number;
183
+ percentByClass: {
184
+ flat: number;
185
+ moderate: number;
186
+ gentle: number;
187
+ steep: number;
188
+ };
189
+ };
190
+ sampledAt: string;
191
+ aspect: {
192
+ flatPercent: number;
193
+ dominant: string;
194
+ };
195
+ hydrology: {
196
+ wetnessClass: "low" | "high" | "moderate";
197
+ lowPointCount: number;
198
+ dominantFlowDirection?: string | undefined;
199
+ };
200
+ insights: string[];
201
+ farmId?: string | undefined;
202
+ interpolated?: boolean | undefined;
203
+ }>;
204
+ export type FieldTerrainProfile = z.infer<typeof fieldTerrainProfileSchema>;
205
+ export declare const fieldTerrainProfileResponseSchema: z.ZodObject<{
206
+ fieldId: z.ZodString;
207
+ farmId: z.ZodOptional<z.ZodString>;
208
+ source: z.ZodString;
209
+ resolutionM: z.ZodNumber;
210
+ sampledAt: z.ZodString;
211
+ interpolated: z.ZodDefault<z.ZodBoolean>;
212
+ trustNote: z.ZodString;
213
+ elevation: z.ZodObject<{
214
+ min: z.ZodNumber;
215
+ max: z.ZodNumber;
216
+ mean: z.ZodNumber;
217
+ range: z.ZodNumber;
218
+ unit: z.ZodLiteral<"meters">;
219
+ }, "strip", z.ZodTypeAny, {
220
+ min: number;
221
+ max: number;
222
+ unit: "meters";
223
+ mean: number;
224
+ range: number;
225
+ }, {
226
+ min: number;
227
+ max: number;
228
+ unit: "meters";
229
+ mean: number;
230
+ range: number;
231
+ }>;
232
+ slope: z.ZodObject<{
233
+ medianPct: z.ZodNumber;
234
+ meanPct: z.ZodNumber;
235
+ maxPct: z.ZodNumber;
236
+ percentByClass: z.ZodObject<{
237
+ flat: z.ZodNumber;
238
+ gentle: z.ZodNumber;
239
+ moderate: z.ZodNumber;
240
+ steep: z.ZodNumber;
241
+ }, "strip", z.ZodTypeAny, {
242
+ flat: number;
243
+ moderate: number;
244
+ gentle: number;
245
+ steep: number;
246
+ }, {
247
+ flat: number;
248
+ moderate: number;
249
+ gentle: number;
250
+ steep: number;
251
+ }>;
252
+ }, "strip", z.ZodTypeAny, {
253
+ medianPct: number;
254
+ meanPct: number;
255
+ maxPct: number;
256
+ percentByClass: {
257
+ flat: number;
258
+ moderate: number;
259
+ gentle: number;
260
+ steep: number;
261
+ };
262
+ }, {
263
+ medianPct: number;
264
+ meanPct: number;
265
+ maxPct: number;
266
+ percentByClass: {
267
+ flat: number;
268
+ moderate: number;
269
+ gentle: number;
270
+ steep: number;
271
+ };
272
+ }>;
273
+ aspect: z.ZodObject<{
274
+ dominant: z.ZodString;
275
+ flatPercent: z.ZodNumber;
276
+ }, "strip", z.ZodTypeAny, {
277
+ flatPercent: number;
278
+ dominant: string;
279
+ }, {
280
+ flatPercent: number;
281
+ dominant: string;
282
+ }>;
283
+ hydrology: z.ZodObject<{
284
+ wetnessClass: z.ZodEnum<["low", "moderate", "high"]>;
285
+ lowPointCount: z.ZodNumber;
286
+ dominantFlowDirection: z.ZodOptional<z.ZodString>;
287
+ }, "strip", z.ZodTypeAny, {
288
+ wetnessClass: "low" | "high" | "moderate";
289
+ lowPointCount: number;
290
+ dominantFlowDirection?: string | undefined;
291
+ }, {
292
+ wetnessClass: "low" | "high" | "moderate";
293
+ lowPointCount: number;
294
+ dominantFlowDirection?: string | undefined;
295
+ }>;
296
+ risks: z.ZodObject<{
297
+ waterloggingRisk: z.ZodEnum<["low", "medium", "high"]>;
298
+ erosionRisk: z.ZodEnum<["low", "medium", "high"]>;
299
+ machineryAccess: z.ZodEnum<["good", "limited", "poor"]>;
300
+ }, "strip", z.ZodTypeAny, {
301
+ waterloggingRisk: "low" | "medium" | "high";
302
+ erosionRisk: "low" | "medium" | "high";
303
+ machineryAccess: "poor" | "good" | "limited";
304
+ }, {
305
+ waterloggingRisk: "low" | "medium" | "high";
306
+ erosionRisk: "low" | "medium" | "high";
307
+ machineryAccess: "poor" | "good" | "limited";
308
+ }>;
309
+ /** Short bullets for UI / Farm Brain */
310
+ insights: z.ZodArray<z.ZodString, "many">;
311
+ }, "strip", z.ZodTypeAny, {
312
+ source: string;
313
+ fieldId: string;
314
+ risks: {
315
+ waterloggingRisk: "low" | "medium" | "high";
316
+ erosionRisk: "low" | "medium" | "high";
317
+ machineryAccess: "poor" | "good" | "limited";
318
+ };
319
+ elevation: {
320
+ min: number;
321
+ max: number;
322
+ unit: "meters";
323
+ mean: number;
324
+ range: number;
325
+ };
326
+ resolutionM: number;
327
+ interpolated: boolean;
328
+ trustNote: string;
329
+ slope: {
330
+ medianPct: number;
331
+ meanPct: number;
332
+ maxPct: number;
333
+ percentByClass: {
334
+ flat: number;
335
+ moderate: number;
336
+ gentle: number;
337
+ steep: number;
338
+ };
339
+ };
340
+ sampledAt: string;
341
+ aspect: {
342
+ flatPercent: number;
343
+ dominant: string;
344
+ };
345
+ hydrology: {
346
+ wetnessClass: "low" | "high" | "moderate";
347
+ lowPointCount: number;
348
+ dominantFlowDirection?: string | undefined;
349
+ };
350
+ insights: string[];
351
+ farmId?: string | undefined;
352
+ }, {
353
+ source: string;
354
+ fieldId: string;
355
+ risks: {
356
+ waterloggingRisk: "low" | "medium" | "high";
357
+ erosionRisk: "low" | "medium" | "high";
358
+ machineryAccess: "poor" | "good" | "limited";
359
+ };
360
+ elevation: {
361
+ min: number;
362
+ max: number;
363
+ unit: "meters";
364
+ mean: number;
365
+ range: number;
366
+ };
367
+ resolutionM: number;
368
+ trustNote: string;
369
+ slope: {
370
+ medianPct: number;
371
+ meanPct: number;
372
+ maxPct: number;
373
+ percentByClass: {
374
+ flat: number;
375
+ moderate: number;
376
+ gentle: number;
377
+ steep: number;
378
+ };
379
+ };
380
+ sampledAt: string;
381
+ aspect: {
382
+ flatPercent: number;
383
+ dominant: string;
384
+ };
385
+ hydrology: {
386
+ wetnessClass: "low" | "high" | "moderate";
387
+ lowPointCount: number;
388
+ dominantFlowDirection?: string | undefined;
389
+ };
390
+ insights: string[];
391
+ farmId?: string | undefined;
392
+ interpolated?: boolean | undefined;
393
+ }>;
394
+ //# sourceMappingURL=terrain-profile.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain-profile.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/terrain-profile.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,sCAAoC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,kBAAkB,wCAAsC,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,uBAAuB,oDAAkD,CAAC;AACvF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEjE,eAAO,MAAM,qBAAqB,wCAAsC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCpC,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAExC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAN5C,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMgC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ /** Risk levels shared by terrain consumers (planner, Farm Brain, irrigation). */
3
+ export const terrainRiskLevelSchema = z.enum(['low', 'medium', 'high']);
4
+ export const wetnessClassSchema = z.enum(['low', 'moderate', 'high']);
5
+ export const terrainSlopeClassSchema = z.enum(['flat', 'gentle', 'moderate', 'steep']);
6
+ export const machineryAccessSchema = z.enum(['good', 'limited', 'poor']);
7
+ /**
8
+ * Stable field-scoped terrain summary. Any module may consume this without
9
+ * calling DEM APIs directly.
10
+ */
11
+ export const fieldTerrainProfileSchema = z.object({
12
+ fieldId: z.string().uuid(),
13
+ farmId: z.string().uuid().optional(),
14
+ source: z.string(), // e.g. srtm30m
15
+ resolutionM: z.number().positive(),
16
+ sampledAt: z.string().datetime(),
17
+ interpolated: z.boolean().default(false),
18
+ trustNote: z.string(),
19
+ elevation: z.object({
20
+ min: z.number(),
21
+ max: z.number(),
22
+ mean: z.number(),
23
+ range: z.number(),
24
+ unit: z.literal('meters'),
25
+ }),
26
+ slope: z.object({
27
+ medianPct: z.number(),
28
+ meanPct: z.number(),
29
+ maxPct: z.number(),
30
+ percentByClass: z.object({
31
+ flat: z.number(),
32
+ gentle: z.number(),
33
+ moderate: z.number(),
34
+ steep: z.number(),
35
+ }),
36
+ }),
37
+ aspect: z.object({
38
+ dominant: z.string(),
39
+ flatPercent: z.number(),
40
+ }),
41
+ hydrology: z.object({
42
+ wetnessClass: wetnessClassSchema,
43
+ lowPointCount: z.number().int().nonnegative(),
44
+ dominantFlowDirection: z.string().optional(),
45
+ }),
46
+ risks: z.object({
47
+ waterloggingRisk: terrainRiskLevelSchema,
48
+ erosionRisk: terrainRiskLevelSchema,
49
+ machineryAccess: machineryAccessSchema,
50
+ }),
51
+ /** Short bullets for UI / Farm Brain */
52
+ insights: z.array(z.string()),
53
+ });
54
+ export const fieldTerrainProfileResponseSchema = fieldTerrainProfileSchema;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepintel-ltd/farmpro-contracts",
3
- "version": "1.16.3",
3
+ "version": "1.16.5",
4
4
  "description": "Type-safe API contracts for FarmPro API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",