@deepintel-ltd/farmpro-contracts 1.7.8 → 1.7.9

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 (31) hide show
  1. package/dist/index.d.ts +11 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -0
  4. package/dist/routes/crop-profile.routes.d.ts +556 -0
  5. package/dist/routes/crop-profile.routes.d.ts.map +1 -0
  6. package/dist/routes/crop-profile.routes.js +55 -0
  7. package/dist/routes/index.d.ts +6 -0
  8. package/dist/routes/index.d.ts.map +1 -1
  9. package/dist/routes/index.js +4 -0
  10. package/dist/routes/measurements.routes.d.ts +1081 -0
  11. package/dist/routes/measurements.routes.d.ts.map +1 -0
  12. package/dist/routes/measurements.routes.js +69 -0
  13. package/dist/routes/monitoring-visualization.routes.d.ts +1637 -0
  14. package/dist/routes/monitoring-visualization.routes.d.ts.map +1 -1
  15. package/dist/routes/monitoring-visualization.routes.js +153 -0
  16. package/dist/routes/prescription-maps.routes.d.ts +1611 -40
  17. package/dist/routes/prescription-maps.routes.d.ts.map +1 -1
  18. package/dist/routes/prescription-maps.routes.js +75 -1
  19. package/dist/schemas/crop-profile.schemas.d.ts +724 -0
  20. package/dist/schemas/crop-profile.schemas.d.ts.map +1 -0
  21. package/dist/schemas/crop-profile.schemas.js +84 -0
  22. package/dist/schemas/measurements.schemas.d.ts +234 -0
  23. package/dist/schemas/measurements.schemas.d.ts.map +1 -0
  24. package/dist/schemas/measurements.schemas.js +57 -0
  25. package/dist/schemas/monitoring-visualization.schemas.d.ts +1703 -0
  26. package/dist/schemas/monitoring-visualization.schemas.d.ts.map +1 -1
  27. package/dist/schemas/monitoring-visualization.schemas.js +338 -0
  28. package/dist/schemas/prescription-maps.schemas.d.ts +400 -41
  29. package/dist/schemas/prescription-maps.schemas.d.ts.map +1 -1
  30. package/dist/schemas/prescription-maps.schemas.js +95 -2
  31. package/package.json +1 -1
@@ -2875,6 +2875,1643 @@ export declare const monitoringVisualizationRouter: {
2875
2875
  }>;
2876
2876
  };
2877
2877
  };
2878
+ getElevationHeatmap: {
2879
+ query: z.ZodObject<{
2880
+ resolution: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
2881
+ palette: z.ZodDefault<z.ZodEnum<["terrain", "viridis", "grayscale", "rainbow"]>>;
2882
+ }, "strip", z.ZodTypeAny, {
2883
+ resolution: "low" | "medium" | "high";
2884
+ palette: "grayscale" | "terrain" | "viridis" | "rainbow";
2885
+ }, {
2886
+ resolution?: "low" | "medium" | "high" | undefined;
2887
+ palette?: "grayscale" | "terrain" | "viridis" | "rainbow" | undefined;
2888
+ }>;
2889
+ summary: "Get elevation heatmap for field";
2890
+ method: "GET";
2891
+ path: "/farms/:farmId/fields/:fieldId/visualization/terrain/elevation";
2892
+ responses: {
2893
+ 200: z.ZodObject<{
2894
+ fieldId: z.ZodString;
2895
+ imageUrl: z.ZodNullable<z.ZodString>;
2896
+ bounds: z.ZodObject<{
2897
+ north: z.ZodNumber;
2898
+ south: z.ZodNumber;
2899
+ east: z.ZodNumber;
2900
+ west: z.ZodNumber;
2901
+ }, "strip", z.ZodTypeAny, {
2902
+ north: number;
2903
+ south: number;
2904
+ east: number;
2905
+ west: number;
2906
+ }, {
2907
+ north: number;
2908
+ south: number;
2909
+ east: number;
2910
+ west: number;
2911
+ }>;
2912
+ statistics: z.ZodObject<{
2913
+ min: z.ZodNumber;
2914
+ max: z.ZodNumber;
2915
+ mean: z.ZodNumber;
2916
+ range: z.ZodNumber;
2917
+ unit: z.ZodLiteral<"meters">;
2918
+ }, "strip", z.ZodTypeAny, {
2919
+ min: number;
2920
+ max: number;
2921
+ unit: "meters";
2922
+ mean: number;
2923
+ range: number;
2924
+ }, {
2925
+ min: number;
2926
+ max: number;
2927
+ unit: "meters";
2928
+ mean: number;
2929
+ range: number;
2930
+ }>;
2931
+ colorScale: z.ZodArray<z.ZodObject<{
2932
+ value: z.ZodNumber;
2933
+ color: z.ZodString;
2934
+ label: z.ZodString;
2935
+ }, "strip", z.ZodTypeAny, {
2936
+ value: number;
2937
+ color: string;
2938
+ label: string;
2939
+ }, {
2940
+ value: number;
2941
+ color: string;
2942
+ label: string;
2943
+ }>, "many">;
2944
+ dataSource: z.ZodString;
2945
+ }, "strip", z.ZodTypeAny, {
2946
+ fieldId: string;
2947
+ imageUrl: string | null;
2948
+ bounds: {
2949
+ north: number;
2950
+ south: number;
2951
+ east: number;
2952
+ west: number;
2953
+ };
2954
+ statistics: {
2955
+ min: number;
2956
+ max: number;
2957
+ unit: "meters";
2958
+ mean: number;
2959
+ range: number;
2960
+ };
2961
+ colorScale: {
2962
+ value: number;
2963
+ color: string;
2964
+ label: string;
2965
+ }[];
2966
+ dataSource: string;
2967
+ }, {
2968
+ fieldId: string;
2969
+ imageUrl: string | null;
2970
+ bounds: {
2971
+ north: number;
2972
+ south: number;
2973
+ east: number;
2974
+ west: number;
2975
+ };
2976
+ statistics: {
2977
+ min: number;
2978
+ max: number;
2979
+ unit: "meters";
2980
+ mean: number;
2981
+ range: number;
2982
+ };
2983
+ colorScale: {
2984
+ value: number;
2985
+ color: string;
2986
+ label: string;
2987
+ }[];
2988
+ dataSource: string;
2989
+ }>;
2990
+ 404: z.ZodObject<{
2991
+ message: z.ZodString;
2992
+ code: z.ZodString;
2993
+ }, "strip", z.ZodTypeAny, {
2994
+ code: string;
2995
+ message: string;
2996
+ }, {
2997
+ code: string;
2998
+ message: string;
2999
+ }>;
3000
+ 503: z.ZodObject<{
3001
+ message: z.ZodString;
3002
+ code: z.ZodString;
3003
+ }, "strip", z.ZodTypeAny, {
3004
+ code: string;
3005
+ message: string;
3006
+ }, {
3007
+ code: string;
3008
+ message: string;
3009
+ }>;
3010
+ };
3011
+ };
3012
+ getContours: {
3013
+ query: z.ZodObject<{
3014
+ interval: z.ZodDefault<z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>>;
3015
+ minElevation: z.ZodOptional<z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>>;
3016
+ maxElevation: z.ZodOptional<z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>>;
3017
+ }, "strip", z.ZodTypeAny, {
3018
+ interval: number;
3019
+ minElevation?: number | undefined;
3020
+ maxElevation?: number | undefined;
3021
+ }, {
3022
+ interval?: string | undefined;
3023
+ minElevation?: string | undefined;
3024
+ maxElevation?: string | undefined;
3025
+ }>;
3026
+ summary: "Get contour lines for field terrain";
3027
+ method: "GET";
3028
+ path: "/farms/:farmId/fields/:fieldId/visualization/terrain/contours";
3029
+ responses: {
3030
+ 200: z.ZodObject<{
3031
+ fieldId: z.ZodString;
3032
+ interval: z.ZodNumber;
3033
+ contours: z.ZodArray<z.ZodObject<{
3034
+ elevation: z.ZodNumber;
3035
+ geometry: z.ZodObject<{
3036
+ type: z.ZodLiteral<"LineString">;
3037
+ coordinates: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
3038
+ }, "strip", z.ZodTypeAny, {
3039
+ type: "LineString";
3040
+ coordinates: [number, number][];
3041
+ }, {
3042
+ type: "LineString";
3043
+ coordinates: [number, number][];
3044
+ }>;
3045
+ isMajor: z.ZodBoolean;
3046
+ length: z.ZodNumber;
3047
+ }, "strip", z.ZodTypeAny, {
3048
+ length: number;
3049
+ geometry: {
3050
+ type: "LineString";
3051
+ coordinates: [number, number][];
3052
+ };
3053
+ elevation: number;
3054
+ isMajor: boolean;
3055
+ }, {
3056
+ length: number;
3057
+ geometry: {
3058
+ type: "LineString";
3059
+ coordinates: [number, number][];
3060
+ };
3061
+ elevation: number;
3062
+ isMajor: boolean;
3063
+ }>, "many">;
3064
+ statistics: z.ZodObject<{
3065
+ minElevation: z.ZodNumber;
3066
+ maxElevation: z.ZodNumber;
3067
+ totalContours: z.ZodNumber;
3068
+ majorContours: z.ZodNumber;
3069
+ }, "strip", z.ZodTypeAny, {
3070
+ minElevation: number;
3071
+ maxElevation: number;
3072
+ totalContours: number;
3073
+ majorContours: number;
3074
+ }, {
3075
+ minElevation: number;
3076
+ maxElevation: number;
3077
+ totalContours: number;
3078
+ majorContours: number;
3079
+ }>;
3080
+ geojson: z.ZodObject<{
3081
+ type: z.ZodLiteral<"FeatureCollection">;
3082
+ features: z.ZodArray<z.ZodObject<{
3083
+ type: z.ZodLiteral<"Feature">;
3084
+ geometry: z.ZodObject<{
3085
+ type: z.ZodLiteral<"LineString">;
3086
+ coordinates: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">;
3087
+ }, "strip", z.ZodTypeAny, {
3088
+ type: "LineString";
3089
+ coordinates: [number, number][];
3090
+ }, {
3091
+ type: "LineString";
3092
+ coordinates: [number, number][];
3093
+ }>;
3094
+ properties: z.ZodObject<{
3095
+ elevation: z.ZodNumber;
3096
+ isMajor: z.ZodBoolean;
3097
+ }, "strip", z.ZodTypeAny, {
3098
+ elevation: number;
3099
+ isMajor: boolean;
3100
+ }, {
3101
+ elevation: number;
3102
+ isMajor: boolean;
3103
+ }>;
3104
+ }, "strip", z.ZodTypeAny, {
3105
+ type: "Feature";
3106
+ geometry: {
3107
+ type: "LineString";
3108
+ coordinates: [number, number][];
3109
+ };
3110
+ properties: {
3111
+ elevation: number;
3112
+ isMajor: boolean;
3113
+ };
3114
+ }, {
3115
+ type: "Feature";
3116
+ geometry: {
3117
+ type: "LineString";
3118
+ coordinates: [number, number][];
3119
+ };
3120
+ properties: {
3121
+ elevation: number;
3122
+ isMajor: boolean;
3123
+ };
3124
+ }>, "many">;
3125
+ }, "strip", z.ZodTypeAny, {
3126
+ type: "FeatureCollection";
3127
+ features: {
3128
+ type: "Feature";
3129
+ geometry: {
3130
+ type: "LineString";
3131
+ coordinates: [number, number][];
3132
+ };
3133
+ properties: {
3134
+ elevation: number;
3135
+ isMajor: boolean;
3136
+ };
3137
+ }[];
3138
+ }, {
3139
+ type: "FeatureCollection";
3140
+ features: {
3141
+ type: "Feature";
3142
+ geometry: {
3143
+ type: "LineString";
3144
+ coordinates: [number, number][];
3145
+ };
3146
+ properties: {
3147
+ elevation: number;
3148
+ isMajor: boolean;
3149
+ };
3150
+ }[];
3151
+ }>;
3152
+ }, "strip", z.ZodTypeAny, {
3153
+ fieldId: string;
3154
+ geojson: {
3155
+ type: "FeatureCollection";
3156
+ features: {
3157
+ type: "Feature";
3158
+ geometry: {
3159
+ type: "LineString";
3160
+ coordinates: [number, number][];
3161
+ };
3162
+ properties: {
3163
+ elevation: number;
3164
+ isMajor: boolean;
3165
+ };
3166
+ }[];
3167
+ };
3168
+ interval: number;
3169
+ statistics: {
3170
+ minElevation: number;
3171
+ maxElevation: number;
3172
+ totalContours: number;
3173
+ majorContours: number;
3174
+ };
3175
+ contours: {
3176
+ length: number;
3177
+ geometry: {
3178
+ type: "LineString";
3179
+ coordinates: [number, number][];
3180
+ };
3181
+ elevation: number;
3182
+ isMajor: boolean;
3183
+ }[];
3184
+ }, {
3185
+ fieldId: string;
3186
+ geojson: {
3187
+ type: "FeatureCollection";
3188
+ features: {
3189
+ type: "Feature";
3190
+ geometry: {
3191
+ type: "LineString";
3192
+ coordinates: [number, number][];
3193
+ };
3194
+ properties: {
3195
+ elevation: number;
3196
+ isMajor: boolean;
3197
+ };
3198
+ }[];
3199
+ };
3200
+ interval: number;
3201
+ statistics: {
3202
+ minElevation: number;
3203
+ maxElevation: number;
3204
+ totalContours: number;
3205
+ majorContours: number;
3206
+ };
3207
+ contours: {
3208
+ length: number;
3209
+ geometry: {
3210
+ type: "LineString";
3211
+ coordinates: [number, number][];
3212
+ };
3213
+ elevation: number;
3214
+ isMajor: boolean;
3215
+ }[];
3216
+ }>;
3217
+ 404: z.ZodObject<{
3218
+ message: z.ZodString;
3219
+ code: z.ZodString;
3220
+ }, "strip", z.ZodTypeAny, {
3221
+ code: string;
3222
+ message: string;
3223
+ }, {
3224
+ code: string;
3225
+ message: string;
3226
+ }>;
3227
+ 503: z.ZodObject<{
3228
+ message: z.ZodString;
3229
+ code: z.ZodString;
3230
+ }, "strip", z.ZodTypeAny, {
3231
+ code: string;
3232
+ message: string;
3233
+ }, {
3234
+ code: string;
3235
+ message: string;
3236
+ }>;
3237
+ };
3238
+ };
3239
+ getSlope: {
3240
+ query: z.ZodObject<{
3241
+ unit: z.ZodDefault<z.ZodEnum<["percent", "degrees"]>>;
3242
+ resolution: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
3243
+ }, "strip", z.ZodTypeAny, {
3244
+ unit: "percent" | "degrees";
3245
+ resolution: "low" | "medium" | "high";
3246
+ }, {
3247
+ unit?: "percent" | "degrees" | undefined;
3248
+ resolution?: "low" | "medium" | "high" | undefined;
3249
+ }>;
3250
+ summary: "Get slope analysis for field";
3251
+ method: "GET";
3252
+ path: "/farms/:farmId/fields/:fieldId/visualization/terrain/slope";
3253
+ responses: {
3254
+ 200: z.ZodObject<{
3255
+ fieldId: z.ZodString;
3256
+ unit: z.ZodEnum<["percent", "degrees"]>;
3257
+ imageUrl: z.ZodNullable<z.ZodString>;
3258
+ bounds: z.ZodObject<{
3259
+ north: z.ZodNumber;
3260
+ south: z.ZodNumber;
3261
+ east: z.ZodNumber;
3262
+ west: z.ZodNumber;
3263
+ }, "strip", z.ZodTypeAny, {
3264
+ north: number;
3265
+ south: number;
3266
+ east: number;
3267
+ west: number;
3268
+ }, {
3269
+ north: number;
3270
+ south: number;
3271
+ east: number;
3272
+ west: number;
3273
+ }>;
3274
+ statistics: z.ZodObject<{
3275
+ min: z.ZodNumber;
3276
+ max: z.ZodNumber;
3277
+ mean: z.ZodNumber;
3278
+ stdDev: z.ZodNumber;
3279
+ }, "strip", z.ZodTypeAny, {
3280
+ min: number;
3281
+ max: number;
3282
+ mean: number;
3283
+ stdDev: number;
3284
+ }, {
3285
+ min: number;
3286
+ max: number;
3287
+ mean: number;
3288
+ stdDev: number;
3289
+ }>;
3290
+ classification: z.ZodArray<z.ZodObject<{
3291
+ class: z.ZodEnum<["flat", "gentle", "moderate", "steep", "very_steep"]>;
3292
+ minSlope: z.ZodNumber;
3293
+ maxSlope: z.ZodNumber;
3294
+ areaHectares: z.ZodNumber;
3295
+ areaPercent: z.ZodNumber;
3296
+ color: z.ZodString;
3297
+ description: z.ZodString;
3298
+ }, "strip", z.ZodTypeAny, {
3299
+ description: string;
3300
+ color: string;
3301
+ class: "flat" | "moderate" | "gentle" | "steep" | "very_steep";
3302
+ minSlope: number;
3303
+ maxSlope: number;
3304
+ areaHectares: number;
3305
+ areaPercent: number;
3306
+ }, {
3307
+ description: string;
3308
+ color: string;
3309
+ class: "flat" | "moderate" | "gentle" | "steep" | "very_steep";
3310
+ minSlope: number;
3311
+ maxSlope: number;
3312
+ areaHectares: number;
3313
+ areaPercent: number;
3314
+ }>, "many">;
3315
+ colorScale: z.ZodArray<z.ZodObject<{
3316
+ value: z.ZodNumber;
3317
+ color: z.ZodString;
3318
+ label: z.ZodString;
3319
+ }, "strip", z.ZodTypeAny, {
3320
+ value: number;
3321
+ color: string;
3322
+ label: string;
3323
+ }, {
3324
+ value: number;
3325
+ color: string;
3326
+ label: string;
3327
+ }>, "many">;
3328
+ recommendations: z.ZodOptional<z.ZodArray<z.ZodObject<{
3329
+ slopeClass: z.ZodString;
3330
+ recommendation: z.ZodString;
3331
+ risk: z.ZodEnum<["low", "medium", "high"]>;
3332
+ }, "strip", z.ZodTypeAny, {
3333
+ recommendation: string;
3334
+ slopeClass: string;
3335
+ risk: "low" | "medium" | "high";
3336
+ }, {
3337
+ recommendation: string;
3338
+ slopeClass: string;
3339
+ risk: "low" | "medium" | "high";
3340
+ }>, "many">>;
3341
+ }, "strip", z.ZodTypeAny, {
3342
+ fieldId: string;
3343
+ unit: "percent" | "degrees";
3344
+ classification: {
3345
+ description: string;
3346
+ color: string;
3347
+ class: "flat" | "moderate" | "gentle" | "steep" | "very_steep";
3348
+ minSlope: number;
3349
+ maxSlope: number;
3350
+ areaHectares: number;
3351
+ areaPercent: number;
3352
+ }[];
3353
+ imageUrl: string | null;
3354
+ bounds: {
3355
+ north: number;
3356
+ south: number;
3357
+ east: number;
3358
+ west: number;
3359
+ };
3360
+ statistics: {
3361
+ min: number;
3362
+ max: number;
3363
+ mean: number;
3364
+ stdDev: number;
3365
+ };
3366
+ colorScale: {
3367
+ value: number;
3368
+ color: string;
3369
+ label: string;
3370
+ }[];
3371
+ recommendations?: {
3372
+ recommendation: string;
3373
+ slopeClass: string;
3374
+ risk: "low" | "medium" | "high";
3375
+ }[] | undefined;
3376
+ }, {
3377
+ fieldId: string;
3378
+ unit: "percent" | "degrees";
3379
+ classification: {
3380
+ description: string;
3381
+ color: string;
3382
+ class: "flat" | "moderate" | "gentle" | "steep" | "very_steep";
3383
+ minSlope: number;
3384
+ maxSlope: number;
3385
+ areaHectares: number;
3386
+ areaPercent: number;
3387
+ }[];
3388
+ imageUrl: string | null;
3389
+ bounds: {
3390
+ north: number;
3391
+ south: number;
3392
+ east: number;
3393
+ west: number;
3394
+ };
3395
+ statistics: {
3396
+ min: number;
3397
+ max: number;
3398
+ mean: number;
3399
+ stdDev: number;
3400
+ };
3401
+ colorScale: {
3402
+ value: number;
3403
+ color: string;
3404
+ label: string;
3405
+ }[];
3406
+ recommendations?: {
3407
+ recommendation: string;
3408
+ slopeClass: string;
3409
+ risk: "low" | "medium" | "high";
3410
+ }[] | undefined;
3411
+ }>;
3412
+ 404: z.ZodObject<{
3413
+ message: z.ZodString;
3414
+ code: z.ZodString;
3415
+ }, "strip", z.ZodTypeAny, {
3416
+ code: string;
3417
+ message: string;
3418
+ }, {
3419
+ code: string;
3420
+ message: string;
3421
+ }>;
3422
+ 503: z.ZodObject<{
3423
+ message: z.ZodString;
3424
+ code: z.ZodString;
3425
+ }, "strip", z.ZodTypeAny, {
3426
+ code: string;
3427
+ message: string;
3428
+ }, {
3429
+ code: string;
3430
+ message: string;
3431
+ }>;
3432
+ };
3433
+ };
3434
+ getAspect: {
3435
+ query: z.ZodObject<{
3436
+ resolution: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
3437
+ }, "strip", z.ZodTypeAny, {
3438
+ resolution: "low" | "medium" | "high";
3439
+ }, {
3440
+ resolution?: "low" | "medium" | "high" | undefined;
3441
+ }>;
3442
+ summary: "Get aspect (slope direction) analysis for field";
3443
+ method: "GET";
3444
+ path: "/farms/:farmId/fields/:fieldId/visualization/terrain/aspect";
3445
+ responses: {
3446
+ 200: z.ZodObject<{
3447
+ fieldId: z.ZodString;
3448
+ imageUrl: z.ZodNullable<z.ZodString>;
3449
+ bounds: z.ZodObject<{
3450
+ north: z.ZodNumber;
3451
+ south: z.ZodNumber;
3452
+ east: z.ZodNumber;
3453
+ west: z.ZodNumber;
3454
+ }, "strip", z.ZodTypeAny, {
3455
+ north: number;
3456
+ south: number;
3457
+ east: number;
3458
+ west: number;
3459
+ }, {
3460
+ north: number;
3461
+ south: number;
3462
+ east: number;
3463
+ west: number;
3464
+ }>;
3465
+ statistics: z.ZodObject<{
3466
+ dominantDirection: z.ZodEnum<["N", "NE", "E", "SE", "S", "SW", "W", "NW", "flat"]>;
3467
+ dominantPercent: z.ZodNumber;
3468
+ flatPercent: z.ZodNumber;
3469
+ }, "strip", z.ZodTypeAny, {
3470
+ dominantDirection: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3471
+ dominantPercent: number;
3472
+ flatPercent: number;
3473
+ }, {
3474
+ dominantDirection: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3475
+ dominantPercent: number;
3476
+ flatPercent: number;
3477
+ }>;
3478
+ classification: z.ZodArray<z.ZodObject<{
3479
+ direction: z.ZodEnum<["N", "NE", "E", "SE", "S", "SW", "W", "NW", "flat"]>;
3480
+ minDegrees: z.ZodNumber;
3481
+ maxDegrees: z.ZodNumber;
3482
+ areaHectares: z.ZodNumber;
3483
+ areaPercent: z.ZodNumber;
3484
+ color: z.ZodString;
3485
+ sunExposure: z.ZodEnum<["high", "medium", "low"]>;
3486
+ }, "strip", z.ZodTypeAny, {
3487
+ direction: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3488
+ color: string;
3489
+ areaHectares: number;
3490
+ areaPercent: number;
3491
+ minDegrees: number;
3492
+ maxDegrees: number;
3493
+ sunExposure: "low" | "medium" | "high";
3494
+ }, {
3495
+ direction: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3496
+ color: string;
3497
+ areaHectares: number;
3498
+ areaPercent: number;
3499
+ minDegrees: number;
3500
+ maxDegrees: number;
3501
+ sunExposure: "low" | "medium" | "high";
3502
+ }>, "many">;
3503
+ colorWheel: z.ZodArray<z.ZodObject<{
3504
+ direction: z.ZodString;
3505
+ degrees: z.ZodNumber;
3506
+ color: z.ZodString;
3507
+ }, "strip", z.ZodTypeAny, {
3508
+ direction: string;
3509
+ color: string;
3510
+ degrees: number;
3511
+ }, {
3512
+ direction: string;
3513
+ color: string;
3514
+ degrees: number;
3515
+ }>, "many">;
3516
+ recommendations: z.ZodOptional<z.ZodObject<{
3517
+ bestForCrops: z.ZodArray<z.ZodString, "many">;
3518
+ irrigationConsiderations: z.ZodOptional<z.ZodString>;
3519
+ frostRiskAreas: z.ZodOptional<z.ZodString>;
3520
+ }, "strip", z.ZodTypeAny, {
3521
+ bestForCrops: string[];
3522
+ irrigationConsiderations?: string | undefined;
3523
+ frostRiskAreas?: string | undefined;
3524
+ }, {
3525
+ bestForCrops: string[];
3526
+ irrigationConsiderations?: string | undefined;
3527
+ frostRiskAreas?: string | undefined;
3528
+ }>>;
3529
+ }, "strip", z.ZodTypeAny, {
3530
+ fieldId: string;
3531
+ classification: {
3532
+ direction: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3533
+ color: string;
3534
+ areaHectares: number;
3535
+ areaPercent: number;
3536
+ minDegrees: number;
3537
+ maxDegrees: number;
3538
+ sunExposure: "low" | "medium" | "high";
3539
+ }[];
3540
+ imageUrl: string | null;
3541
+ bounds: {
3542
+ north: number;
3543
+ south: number;
3544
+ east: number;
3545
+ west: number;
3546
+ };
3547
+ statistics: {
3548
+ dominantDirection: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3549
+ dominantPercent: number;
3550
+ flatPercent: number;
3551
+ };
3552
+ colorWheel: {
3553
+ direction: string;
3554
+ color: string;
3555
+ degrees: number;
3556
+ }[];
3557
+ recommendations?: {
3558
+ bestForCrops: string[];
3559
+ irrigationConsiderations?: string | undefined;
3560
+ frostRiskAreas?: string | undefined;
3561
+ } | undefined;
3562
+ }, {
3563
+ fieldId: string;
3564
+ classification: {
3565
+ direction: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3566
+ color: string;
3567
+ areaHectares: number;
3568
+ areaPercent: number;
3569
+ minDegrees: number;
3570
+ maxDegrees: number;
3571
+ sunExposure: "low" | "medium" | "high";
3572
+ }[];
3573
+ imageUrl: string | null;
3574
+ bounds: {
3575
+ north: number;
3576
+ south: number;
3577
+ east: number;
3578
+ west: number;
3579
+ };
3580
+ statistics: {
3581
+ dominantDirection: "flat" | "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3582
+ dominantPercent: number;
3583
+ flatPercent: number;
3584
+ };
3585
+ colorWheel: {
3586
+ direction: string;
3587
+ color: string;
3588
+ degrees: number;
3589
+ }[];
3590
+ recommendations?: {
3591
+ bestForCrops: string[];
3592
+ irrigationConsiderations?: string | undefined;
3593
+ frostRiskAreas?: string | undefined;
3594
+ } | undefined;
3595
+ }>;
3596
+ 404: z.ZodObject<{
3597
+ message: z.ZodString;
3598
+ code: z.ZodString;
3599
+ }, "strip", z.ZodTypeAny, {
3600
+ code: string;
3601
+ message: string;
3602
+ }, {
3603
+ code: string;
3604
+ message: string;
3605
+ }>;
3606
+ 503: z.ZodObject<{
3607
+ message: z.ZodString;
3608
+ code: z.ZodString;
3609
+ }, "strip", z.ZodTypeAny, {
3610
+ code: string;
3611
+ message: string;
3612
+ }, {
3613
+ code: string;
3614
+ message: string;
3615
+ }>;
3616
+ };
3617
+ };
3618
+ getDrainage: {
3619
+ query: z.ZodObject<{
3620
+ resolution: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
3621
+ includeWatersheds: z.ZodDefault<z.ZodEffects<z.ZodString, boolean, string>>;
3622
+ includeFlowAccumulation: z.ZodDefault<z.ZodEffects<z.ZodString, boolean, string>>;
3623
+ }, "strip", z.ZodTypeAny, {
3624
+ resolution: "low" | "medium" | "high";
3625
+ includeWatersheds: boolean;
3626
+ includeFlowAccumulation: boolean;
3627
+ }, {
3628
+ resolution?: "low" | "medium" | "high" | undefined;
3629
+ includeWatersheds?: string | undefined;
3630
+ includeFlowAccumulation?: string | undefined;
3631
+ }>;
3632
+ summary: "Get drainage flow analysis for field";
3633
+ method: "GET";
3634
+ path: "/farms/:farmId/fields/:fieldId/visualization/terrain/drainage";
3635
+ responses: {
3636
+ 200: z.ZodObject<{
3637
+ fieldId: z.ZodString;
3638
+ bounds: z.ZodObject<{
3639
+ north: z.ZodNumber;
3640
+ south: z.ZodNumber;
3641
+ east: z.ZodNumber;
3642
+ west: z.ZodNumber;
3643
+ }, "strip", z.ZodTypeAny, {
3644
+ north: number;
3645
+ south: number;
3646
+ east: number;
3647
+ west: number;
3648
+ }, {
3649
+ north: number;
3650
+ south: number;
3651
+ east: number;
3652
+ west: number;
3653
+ }>;
3654
+ flowArrows: z.ZodArray<z.ZodObject<{
3655
+ startPoint: z.ZodObject<{
3656
+ lat: z.ZodNumber;
3657
+ lng: z.ZodNumber;
3658
+ }, "strip", z.ZodTypeAny, {
3659
+ lat: number;
3660
+ lng: number;
3661
+ }, {
3662
+ lat: number;
3663
+ lng: number;
3664
+ }>;
3665
+ endPoint: z.ZodObject<{
3666
+ lat: z.ZodNumber;
3667
+ lng: z.ZodNumber;
3668
+ }, "strip", z.ZodTypeAny, {
3669
+ lat: number;
3670
+ lng: number;
3671
+ }, {
3672
+ lat: number;
3673
+ lng: number;
3674
+ }>;
3675
+ flowIntensity: z.ZodEnum<["low", "medium", "high"]>;
3676
+ bearing: z.ZodNumber;
3677
+ }, "strip", z.ZodTypeAny, {
3678
+ startPoint: {
3679
+ lat: number;
3680
+ lng: number;
3681
+ };
3682
+ endPoint: {
3683
+ lat: number;
3684
+ lng: number;
3685
+ };
3686
+ flowIntensity: "low" | "medium" | "high";
3687
+ bearing: number;
3688
+ }, {
3689
+ startPoint: {
3690
+ lat: number;
3691
+ lng: number;
3692
+ };
3693
+ endPoint: {
3694
+ lat: number;
3695
+ lng: number;
3696
+ };
3697
+ flowIntensity: "low" | "medium" | "high";
3698
+ bearing: number;
3699
+ }>, "many">;
3700
+ lowPoints: z.ZodArray<z.ZodObject<{
3701
+ id: z.ZodString;
3702
+ location: z.ZodObject<{
3703
+ lat: z.ZodNumber;
3704
+ lng: z.ZodNumber;
3705
+ }, "strip", z.ZodTypeAny, {
3706
+ lat: number;
3707
+ lng: number;
3708
+ }, {
3709
+ lat: number;
3710
+ lng: number;
3711
+ }>;
3712
+ elevation: z.ZodNumber;
3713
+ contributingArea: z.ZodNumber;
3714
+ riskLevel: z.ZodEnum<["low", "medium", "high"]>;
3715
+ description: z.ZodString;
3716
+ }, "strip", z.ZodTypeAny, {
3717
+ id: string;
3718
+ description: string;
3719
+ location: {
3720
+ lat: number;
3721
+ lng: number;
3722
+ };
3723
+ riskLevel: "low" | "medium" | "high";
3724
+ elevation: number;
3725
+ contributingArea: number;
3726
+ }, {
3727
+ id: string;
3728
+ description: string;
3729
+ location: {
3730
+ lat: number;
3731
+ lng: number;
3732
+ };
3733
+ riskLevel: "low" | "medium" | "high";
3734
+ elevation: number;
3735
+ contributingArea: number;
3736
+ }>, "many">;
3737
+ watersheds: z.ZodOptional<z.ZodArray<z.ZodObject<{
3738
+ id: z.ZodString;
3739
+ geometry: z.ZodObject<{
3740
+ type: z.ZodLiteral<"Polygon">;
3741
+ coordinates: z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">;
3742
+ }, "strip", z.ZodTypeAny, {
3743
+ type: "Polygon";
3744
+ coordinates: [number, number][][];
3745
+ }, {
3746
+ type: "Polygon";
3747
+ coordinates: [number, number][][];
3748
+ }>;
3749
+ areaHectares: z.ZodNumber;
3750
+ outletPoint: z.ZodObject<{
3751
+ lat: z.ZodNumber;
3752
+ lng: z.ZodNumber;
3753
+ }, "strip", z.ZodTypeAny, {
3754
+ lat: number;
3755
+ lng: number;
3756
+ }, {
3757
+ lat: number;
3758
+ lng: number;
3759
+ }>;
3760
+ flowDirection: z.ZodEnum<["N", "NE", "E", "SE", "S", "SW", "W", "NW"]>;
3761
+ color: z.ZodString;
3762
+ }, "strip", z.ZodTypeAny, {
3763
+ id: string;
3764
+ geometry: {
3765
+ type: "Polygon";
3766
+ coordinates: [number, number][][];
3767
+ };
3768
+ color: string;
3769
+ flowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3770
+ areaHectares: number;
3771
+ outletPoint: {
3772
+ lat: number;
3773
+ lng: number;
3774
+ };
3775
+ }, {
3776
+ id: string;
3777
+ geometry: {
3778
+ type: "Polygon";
3779
+ coordinates: [number, number][][];
3780
+ };
3781
+ color: string;
3782
+ flowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3783
+ areaHectares: number;
3784
+ outletPoint: {
3785
+ lat: number;
3786
+ lng: number;
3787
+ };
3788
+ }>, "many">>;
3789
+ flowAccumulationImageUrl: z.ZodNullable<z.ZodString>;
3790
+ statistics: z.ZodObject<{
3791
+ totalLowPoints: z.ZodNumber;
3792
+ highRiskLowPoints: z.ZodNumber;
3793
+ dominantFlowDirection: z.ZodEnum<["N", "NE", "E", "SE", "S", "SW", "W", "NW"]>;
3794
+ estimatedWaterloggingRisk: z.ZodEnum<["low", "medium", "high"]>;
3795
+ }, "strip", z.ZodTypeAny, {
3796
+ totalLowPoints: number;
3797
+ highRiskLowPoints: number;
3798
+ dominantFlowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3799
+ estimatedWaterloggingRisk: "low" | "medium" | "high";
3800
+ }, {
3801
+ totalLowPoints: number;
3802
+ highRiskLowPoints: number;
3803
+ dominantFlowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3804
+ estimatedWaterloggingRisk: "low" | "medium" | "high";
3805
+ }>;
3806
+ recommendations: z.ZodArray<z.ZodObject<{
3807
+ type: z.ZodEnum<["drainage_channel", "pond", "berm", "terrace", "general"]>;
3808
+ location: z.ZodOptional<z.ZodObject<{
3809
+ lat: z.ZodNumber;
3810
+ lng: z.ZodNumber;
3811
+ }, "strip", z.ZodTypeAny, {
3812
+ lat: number;
3813
+ lng: number;
3814
+ }, {
3815
+ lat: number;
3816
+ lng: number;
3817
+ }>>;
3818
+ description: z.ZodString;
3819
+ priority: z.ZodEnum<["low", "medium", "high"]>;
3820
+ }, "strip", z.ZodTypeAny, {
3821
+ type: "general" | "drainage_channel" | "pond" | "berm" | "terrace";
3822
+ description: string;
3823
+ priority: "low" | "medium" | "high";
3824
+ location?: {
3825
+ lat: number;
3826
+ lng: number;
3827
+ } | undefined;
3828
+ }, {
3829
+ type: "general" | "drainage_channel" | "pond" | "berm" | "terrace";
3830
+ description: string;
3831
+ priority: "low" | "medium" | "high";
3832
+ location?: {
3833
+ lat: number;
3834
+ lng: number;
3835
+ } | undefined;
3836
+ }>, "many">;
3837
+ }, "strip", z.ZodTypeAny, {
3838
+ fieldId: string;
3839
+ recommendations: {
3840
+ type: "general" | "drainage_channel" | "pond" | "berm" | "terrace";
3841
+ description: string;
3842
+ priority: "low" | "medium" | "high";
3843
+ location?: {
3844
+ lat: number;
3845
+ lng: number;
3846
+ } | undefined;
3847
+ }[];
3848
+ bounds: {
3849
+ north: number;
3850
+ south: number;
3851
+ east: number;
3852
+ west: number;
3853
+ };
3854
+ statistics: {
3855
+ totalLowPoints: number;
3856
+ highRiskLowPoints: number;
3857
+ dominantFlowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3858
+ estimatedWaterloggingRisk: "low" | "medium" | "high";
3859
+ };
3860
+ lowPoints: {
3861
+ id: string;
3862
+ description: string;
3863
+ location: {
3864
+ lat: number;
3865
+ lng: number;
3866
+ };
3867
+ riskLevel: "low" | "medium" | "high";
3868
+ elevation: number;
3869
+ contributingArea: number;
3870
+ }[];
3871
+ flowArrows: {
3872
+ startPoint: {
3873
+ lat: number;
3874
+ lng: number;
3875
+ };
3876
+ endPoint: {
3877
+ lat: number;
3878
+ lng: number;
3879
+ };
3880
+ flowIntensity: "low" | "medium" | "high";
3881
+ bearing: number;
3882
+ }[];
3883
+ flowAccumulationImageUrl: string | null;
3884
+ watersheds?: {
3885
+ id: string;
3886
+ geometry: {
3887
+ type: "Polygon";
3888
+ coordinates: [number, number][][];
3889
+ };
3890
+ color: string;
3891
+ flowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3892
+ areaHectares: number;
3893
+ outletPoint: {
3894
+ lat: number;
3895
+ lng: number;
3896
+ };
3897
+ }[] | undefined;
3898
+ }, {
3899
+ fieldId: string;
3900
+ recommendations: {
3901
+ type: "general" | "drainage_channel" | "pond" | "berm" | "terrace";
3902
+ description: string;
3903
+ priority: "low" | "medium" | "high";
3904
+ location?: {
3905
+ lat: number;
3906
+ lng: number;
3907
+ } | undefined;
3908
+ }[];
3909
+ bounds: {
3910
+ north: number;
3911
+ south: number;
3912
+ east: number;
3913
+ west: number;
3914
+ };
3915
+ statistics: {
3916
+ totalLowPoints: number;
3917
+ highRiskLowPoints: number;
3918
+ dominantFlowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3919
+ estimatedWaterloggingRisk: "low" | "medium" | "high";
3920
+ };
3921
+ lowPoints: {
3922
+ id: string;
3923
+ description: string;
3924
+ location: {
3925
+ lat: number;
3926
+ lng: number;
3927
+ };
3928
+ riskLevel: "low" | "medium" | "high";
3929
+ elevation: number;
3930
+ contributingArea: number;
3931
+ }[];
3932
+ flowArrows: {
3933
+ startPoint: {
3934
+ lat: number;
3935
+ lng: number;
3936
+ };
3937
+ endPoint: {
3938
+ lat: number;
3939
+ lng: number;
3940
+ };
3941
+ flowIntensity: "low" | "medium" | "high";
3942
+ bearing: number;
3943
+ }[];
3944
+ flowAccumulationImageUrl: string | null;
3945
+ watersheds?: {
3946
+ id: string;
3947
+ geometry: {
3948
+ type: "Polygon";
3949
+ coordinates: [number, number][][];
3950
+ };
3951
+ color: string;
3952
+ flowDirection: "N" | "S" | "NE" | "E" | "SE" | "SW" | "W" | "NW";
3953
+ areaHectares: number;
3954
+ outletPoint: {
3955
+ lat: number;
3956
+ lng: number;
3957
+ };
3958
+ }[] | undefined;
3959
+ }>;
3960
+ 404: z.ZodObject<{
3961
+ message: z.ZodString;
3962
+ code: z.ZodString;
3963
+ }, "strip", z.ZodTypeAny, {
3964
+ code: string;
3965
+ message: string;
3966
+ }, {
3967
+ code: string;
3968
+ message: string;
3969
+ }>;
3970
+ 503: z.ZodObject<{
3971
+ message: z.ZodString;
3972
+ code: z.ZodString;
3973
+ }, "strip", z.ZodTypeAny, {
3974
+ code: string;
3975
+ message: string;
3976
+ }, {
3977
+ code: string;
3978
+ message: string;
3979
+ }>;
3980
+ };
3981
+ };
3982
+ getElevationProfile: {
3983
+ query: z.ZodObject<{
3984
+ startLat: z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>;
3985
+ startLng: z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>;
3986
+ endLat: z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>;
3987
+ endLng: z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>;
3988
+ samplePoints: z.ZodDefault<z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>>;
3989
+ }, "strip", z.ZodTypeAny, {
3990
+ startLat: number;
3991
+ startLng: number;
3992
+ endLat: number;
3993
+ endLng: number;
3994
+ samplePoints: number;
3995
+ }, {
3996
+ startLat: string;
3997
+ startLng: string;
3998
+ endLat: string;
3999
+ endLng: string;
4000
+ samplePoints?: string | undefined;
4001
+ }>;
4002
+ summary: "Get elevation profile between two points";
4003
+ method: "GET";
4004
+ path: "/farms/:farmId/fields/:fieldId/visualization/terrain/profile";
4005
+ responses: {
4006
+ 200: z.ZodObject<{
4007
+ fieldId: z.ZodString;
4008
+ profile: z.ZodArray<z.ZodObject<{
4009
+ distance: z.ZodNumber;
4010
+ elevation: z.ZodNumber;
4011
+ lat: z.ZodNumber;
4012
+ lng: z.ZodNumber;
4013
+ slope: z.ZodNumber;
4014
+ }, "strip", z.ZodTypeAny, {
4015
+ lat: number;
4016
+ lng: number;
4017
+ elevation: number;
4018
+ distance: number;
4019
+ slope: number;
4020
+ }, {
4021
+ lat: number;
4022
+ lng: number;
4023
+ elevation: number;
4024
+ distance: number;
4025
+ slope: number;
4026
+ }>, "many">;
4027
+ statistics: z.ZodObject<{
4028
+ totalDistance: z.ZodNumber;
4029
+ elevationGain: z.ZodNumber;
4030
+ elevationLoss: z.ZodNumber;
4031
+ netElevationChange: z.ZodNumber;
4032
+ maxElevation: z.ZodNumber;
4033
+ minElevation: z.ZodNumber;
4034
+ averageSlope: z.ZodNumber;
4035
+ }, "strip", z.ZodTypeAny, {
4036
+ minElevation: number;
4037
+ maxElevation: number;
4038
+ totalDistance: number;
4039
+ elevationGain: number;
4040
+ elevationLoss: number;
4041
+ netElevationChange: number;
4042
+ averageSlope: number;
4043
+ }, {
4044
+ minElevation: number;
4045
+ maxElevation: number;
4046
+ totalDistance: number;
4047
+ elevationGain: number;
4048
+ elevationLoss: number;
4049
+ netElevationChange: number;
4050
+ averageSlope: number;
4051
+ }>;
4052
+ keyPoints: z.ZodArray<z.ZodObject<{
4053
+ type: z.ZodEnum<["high_point", "low_point", "steep_section", "flat_section"]>;
4054
+ location: z.ZodObject<{
4055
+ lat: z.ZodNumber;
4056
+ lng: z.ZodNumber;
4057
+ }, "strip", z.ZodTypeAny, {
4058
+ lat: number;
4059
+ lng: number;
4060
+ }, {
4061
+ lat: number;
4062
+ lng: number;
4063
+ }>;
4064
+ distance: z.ZodNumber;
4065
+ elevation: z.ZodNumber;
4066
+ description: z.ZodString;
4067
+ }, "strip", z.ZodTypeAny, {
4068
+ type: "high_point" | "low_point" | "steep_section" | "flat_section";
4069
+ description: string;
4070
+ location: {
4071
+ lat: number;
4072
+ lng: number;
4073
+ };
4074
+ elevation: number;
4075
+ distance: number;
4076
+ }, {
4077
+ type: "high_point" | "low_point" | "steep_section" | "flat_section";
4078
+ description: string;
4079
+ location: {
4080
+ lat: number;
4081
+ lng: number;
4082
+ };
4083
+ elevation: number;
4084
+ distance: number;
4085
+ }>, "many">;
4086
+ }, "strip", z.ZodTypeAny, {
4087
+ fieldId: string;
4088
+ statistics: {
4089
+ minElevation: number;
4090
+ maxElevation: number;
4091
+ totalDistance: number;
4092
+ elevationGain: number;
4093
+ elevationLoss: number;
4094
+ netElevationChange: number;
4095
+ averageSlope: number;
4096
+ };
4097
+ profile: {
4098
+ lat: number;
4099
+ lng: number;
4100
+ elevation: number;
4101
+ distance: number;
4102
+ slope: number;
4103
+ }[];
4104
+ keyPoints: {
4105
+ type: "high_point" | "low_point" | "steep_section" | "flat_section";
4106
+ description: string;
4107
+ location: {
4108
+ lat: number;
4109
+ lng: number;
4110
+ };
4111
+ elevation: number;
4112
+ distance: number;
4113
+ }[];
4114
+ }, {
4115
+ fieldId: string;
4116
+ statistics: {
4117
+ minElevation: number;
4118
+ maxElevation: number;
4119
+ totalDistance: number;
4120
+ elevationGain: number;
4121
+ elevationLoss: number;
4122
+ netElevationChange: number;
4123
+ averageSlope: number;
4124
+ };
4125
+ profile: {
4126
+ lat: number;
4127
+ lng: number;
4128
+ elevation: number;
4129
+ distance: number;
4130
+ slope: number;
4131
+ }[];
4132
+ keyPoints: {
4133
+ type: "high_point" | "low_point" | "steep_section" | "flat_section";
4134
+ description: string;
4135
+ location: {
4136
+ lat: number;
4137
+ lng: number;
4138
+ };
4139
+ elevation: number;
4140
+ distance: number;
4141
+ }[];
4142
+ }>;
4143
+ 404: z.ZodObject<{
4144
+ message: z.ZodString;
4145
+ code: z.ZodString;
4146
+ }, "strip", z.ZodTypeAny, {
4147
+ code: string;
4148
+ message: string;
4149
+ }, {
4150
+ code: string;
4151
+ message: string;
4152
+ }>;
4153
+ 400: z.ZodObject<{
4154
+ message: z.ZodString;
4155
+ code: z.ZodString;
4156
+ }, "strip", z.ZodTypeAny, {
4157
+ code: string;
4158
+ message: string;
4159
+ }, {
4160
+ code: string;
4161
+ message: string;
4162
+ }>;
4163
+ };
4164
+ };
4165
+ getChangeDetection: {
4166
+ summary: "Detect NDVI changes between two dates";
4167
+ method: "POST";
4168
+ body: z.ZodObject<{
4169
+ dateA: z.ZodString;
4170
+ dateB: z.ZodString;
4171
+ threshold: z.ZodDefault<z.ZodNumber>;
4172
+ }, "strip", z.ZodTypeAny, {
4173
+ threshold: number;
4174
+ dateA: string;
4175
+ dateB: string;
4176
+ }, {
4177
+ dateA: string;
4178
+ dateB: string;
4179
+ threshold?: number | undefined;
4180
+ }>;
4181
+ path: "/farms/:farmId/fields/:fieldId/visualization/change-detection";
4182
+ responses: {
4183
+ 200: z.ZodObject<{
4184
+ overallChange: z.ZodNumber;
4185
+ affectedArea: z.ZodNumber;
4186
+ totalArea: z.ZodNumber;
4187
+ classification: z.ZodEnum<["improvement", "decline", "stable"]>;
4188
+ hotspots: z.ZodArray<z.ZodObject<{
4189
+ geometry: z.ZodObject<{
4190
+ type: z.ZodLiteral<"Polygon">;
4191
+ coordinates: z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, "many">, "many">;
4192
+ }, "strip", z.ZodTypeAny, {
4193
+ type: "Polygon";
4194
+ coordinates: [number, number][][];
4195
+ }, {
4196
+ type: "Polygon";
4197
+ coordinates: [number, number][][];
4198
+ }>;
4199
+ changePercent: z.ZodNumber;
4200
+ previousValue: z.ZodNumber;
4201
+ currentValue: z.ZodNumber;
4202
+ areaHectares: z.ZodNumber;
4203
+ suggestedAction: z.ZodOptional<z.ZodString>;
4204
+ }, "strip", z.ZodTypeAny, {
4205
+ geometry: {
4206
+ type: "Polygon";
4207
+ coordinates: [number, number][][];
4208
+ };
4209
+ currentValue: number;
4210
+ areaHectares: number;
4211
+ changePercent: number;
4212
+ previousValue: number;
4213
+ suggestedAction?: string | undefined;
4214
+ }, {
4215
+ geometry: {
4216
+ type: "Polygon";
4217
+ coordinates: [number, number][][];
4218
+ };
4219
+ currentValue: number;
4220
+ areaHectares: number;
4221
+ changePercent: number;
4222
+ previousValue: number;
4223
+ suggestedAction?: string | undefined;
4224
+ }>, "many">;
4225
+ dateA: z.ZodString;
4226
+ dateB: z.ZodString;
4227
+ }, "strip", z.ZodTypeAny, {
4228
+ classification: "stable" | "improvement" | "decline";
4229
+ affectedArea: number;
4230
+ dateA: string;
4231
+ dateB: string;
4232
+ overallChange: number;
4233
+ totalArea: number;
4234
+ hotspots: {
4235
+ geometry: {
4236
+ type: "Polygon";
4237
+ coordinates: [number, number][][];
4238
+ };
4239
+ currentValue: number;
4240
+ areaHectares: number;
4241
+ changePercent: number;
4242
+ previousValue: number;
4243
+ suggestedAction?: string | undefined;
4244
+ }[];
4245
+ }, {
4246
+ classification: "stable" | "improvement" | "decline";
4247
+ affectedArea: number;
4248
+ dateA: string;
4249
+ dateB: string;
4250
+ overallChange: number;
4251
+ totalArea: number;
4252
+ hotspots: {
4253
+ geometry: {
4254
+ type: "Polygon";
4255
+ coordinates: [number, number][][];
4256
+ };
4257
+ currentValue: number;
4258
+ areaHectares: number;
4259
+ changePercent: number;
4260
+ previousValue: number;
4261
+ suggestedAction?: string | undefined;
4262
+ }[];
4263
+ }>;
4264
+ 404: z.ZodObject<{
4265
+ message: z.ZodString;
4266
+ code: z.ZodString;
4267
+ }, "strip", z.ZodTypeAny, {
4268
+ code: string;
4269
+ message: string;
4270
+ }, {
4271
+ code: string;
4272
+ message: string;
4273
+ }>;
4274
+ 400: z.ZodObject<{
4275
+ message: z.ZodString;
4276
+ code: z.ZodString;
4277
+ }, "strip", z.ZodTypeAny, {
4278
+ code: string;
4279
+ message: string;
4280
+ }, {
4281
+ code: string;
4282
+ message: string;
4283
+ }>;
4284
+ };
4285
+ };
4286
+ getVegetationIndex: {
4287
+ pathParams: z.ZodObject<{
4288
+ farmId: z.ZodString;
4289
+ fieldId: z.ZodString;
4290
+ indexType: z.ZodEnum<["ndvi", "ndre", "msavi", "savi", "evi", "gndvi", "lai", "ndwi"]>;
4291
+ }, "strip", z.ZodTypeAny, {
4292
+ farmId: string;
4293
+ fieldId: string;
4294
+ indexType: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4295
+ }, {
4296
+ farmId: string;
4297
+ fieldId: string;
4298
+ indexType: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4299
+ }>;
4300
+ query: z.ZodObject<{
4301
+ date: z.ZodOptional<z.ZodString>;
4302
+ palette: z.ZodDefault<z.ZodEnum<["standard", "contrasting", "viridis", "grayscale"]>>;
4303
+ }, "strip", z.ZodTypeAny, {
4304
+ palette: "standard" | "grayscale" | "viridis" | "contrasting";
4305
+ date?: string | undefined;
4306
+ }, {
4307
+ date?: string | undefined;
4308
+ palette?: "standard" | "grayscale" | "viridis" | "contrasting" | undefined;
4309
+ }>;
4310
+ summary: "Get specific vegetation index heatmap";
4311
+ method: "GET";
4312
+ path: "/farms/:farmId/fields/:fieldId/visualization/imagery/indices/:indexType";
4313
+ responses: {
4314
+ 200: z.ZodObject<{
4315
+ index: z.ZodEnum<["ndvi", "ndre", "msavi", "savi", "evi", "gndvi", "lai", "ndwi"]>;
4316
+ imageUrl: z.ZodNullable<z.ZodString>;
4317
+ bounds: z.ZodObject<{
4318
+ north: z.ZodNumber;
4319
+ south: z.ZodNumber;
4320
+ east: z.ZodNumber;
4321
+ west: z.ZodNumber;
4322
+ }, "strip", z.ZodTypeAny, {
4323
+ north: number;
4324
+ south: number;
4325
+ east: number;
4326
+ west: number;
4327
+ }, {
4328
+ north: number;
4329
+ south: number;
4330
+ east: number;
4331
+ west: number;
4332
+ }>;
4333
+ statistics: z.ZodObject<{
4334
+ min: z.ZodNumber;
4335
+ max: z.ZodNumber;
4336
+ mean: z.ZodNumber;
4337
+ median: z.ZodNullable<z.ZodNumber>;
4338
+ stdDev: z.ZodNullable<z.ZodNumber>;
4339
+ histogram: z.ZodOptional<z.ZodArray<z.ZodObject<{
4340
+ bin: z.ZodNumber;
4341
+ count: z.ZodNumber;
4342
+ }, "strip", z.ZodTypeAny, {
4343
+ count: number;
4344
+ bin: number;
4345
+ }, {
4346
+ count: number;
4347
+ bin: number;
4348
+ }>, "many">>;
4349
+ }, "strip", z.ZodTypeAny, {
4350
+ min: number;
4351
+ max: number;
4352
+ mean: number;
4353
+ median: number | null;
4354
+ stdDev: number | null;
4355
+ histogram?: {
4356
+ count: number;
4357
+ bin: number;
4358
+ }[] | undefined;
4359
+ }, {
4360
+ min: number;
4361
+ max: number;
4362
+ mean: number;
4363
+ median: number | null;
4364
+ stdDev: number | null;
4365
+ histogram?: {
4366
+ count: number;
4367
+ bin: number;
4368
+ }[] | undefined;
4369
+ }>;
4370
+ colorPalette: z.ZodArray<z.ZodString, "many">;
4371
+ valueRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
4372
+ date: z.ZodString;
4373
+ dataSource: z.ZodString;
4374
+ }, "strip", z.ZodTypeAny, {
4375
+ date: string;
4376
+ imageUrl: string | null;
4377
+ bounds: {
4378
+ north: number;
4379
+ south: number;
4380
+ east: number;
4381
+ west: number;
4382
+ };
4383
+ colorPalette: string[];
4384
+ statistics: {
4385
+ min: number;
4386
+ max: number;
4387
+ mean: number;
4388
+ median: number | null;
4389
+ stdDev: number | null;
4390
+ histogram?: {
4391
+ count: number;
4392
+ bin: number;
4393
+ }[] | undefined;
4394
+ };
4395
+ dataSource: string;
4396
+ index: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4397
+ valueRange: [number, number];
4398
+ }, {
4399
+ date: string;
4400
+ imageUrl: string | null;
4401
+ bounds: {
4402
+ north: number;
4403
+ south: number;
4404
+ east: number;
4405
+ west: number;
4406
+ };
4407
+ colorPalette: string[];
4408
+ statistics: {
4409
+ min: number;
4410
+ max: number;
4411
+ mean: number;
4412
+ median: number | null;
4413
+ stdDev: number | null;
4414
+ histogram?: {
4415
+ count: number;
4416
+ bin: number;
4417
+ }[] | undefined;
4418
+ };
4419
+ dataSource: string;
4420
+ index: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4421
+ valueRange: [number, number];
4422
+ }>;
4423
+ 404: z.ZodObject<{
4424
+ message: z.ZodString;
4425
+ code: z.ZodString;
4426
+ }, "strip", z.ZodTypeAny, {
4427
+ code: string;
4428
+ message: string;
4429
+ }, {
4430
+ code: string;
4431
+ message: string;
4432
+ }>;
4433
+ 400: z.ZodObject<{
4434
+ message: z.ZodString;
4435
+ code: z.ZodString;
4436
+ }, "strip", z.ZodTypeAny, {
4437
+ code: string;
4438
+ message: string;
4439
+ }, {
4440
+ code: string;
4441
+ message: string;
4442
+ }>;
4443
+ };
4444
+ };
4445
+ getAvailableIndices: {
4446
+ summary: "Get available vegetation indices with recommendations";
4447
+ method: "GET";
4448
+ path: "/farms/:farmId/fields/:fieldId/visualization/indices/available";
4449
+ responses: {
4450
+ 200: z.ZodObject<{
4451
+ indices: z.ZodArray<z.ZodObject<{
4452
+ type: z.ZodEnum<["ndvi", "ndre", "msavi", "savi", "evi", "gndvi", "lai", "ndwi"]>;
4453
+ name: z.ZodString;
4454
+ description: z.ZodString;
4455
+ bestUseCase: z.ZodString;
4456
+ recommendedGrowthStage: z.ZodString;
4457
+ available: z.ZodBoolean;
4458
+ formula: z.ZodOptional<z.ZodString>;
4459
+ }, "strip", z.ZodTypeAny, {
4460
+ type: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4461
+ name: string;
4462
+ description: string;
4463
+ available: boolean;
4464
+ bestUseCase: string;
4465
+ recommendedGrowthStage: string;
4466
+ formula?: string | undefined;
4467
+ }, {
4468
+ type: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4469
+ name: string;
4470
+ description: string;
4471
+ available: boolean;
4472
+ bestUseCase: string;
4473
+ recommendedGrowthStage: string;
4474
+ formula?: string | undefined;
4475
+ }>, "many">;
4476
+ recommendedIndex: z.ZodNullable<z.ZodEnum<["ndvi", "ndre", "msavi", "savi", "evi", "gndvi", "lai", "ndwi"]>>;
4477
+ recommendationReason: z.ZodNullable<z.ZodString>;
4478
+ }, "strip", z.ZodTypeAny, {
4479
+ indices: {
4480
+ type: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4481
+ name: string;
4482
+ description: string;
4483
+ available: boolean;
4484
+ bestUseCase: string;
4485
+ recommendedGrowthStage: string;
4486
+ formula?: string | undefined;
4487
+ }[];
4488
+ recommendedIndex: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi" | null;
4489
+ recommendationReason: string | null;
4490
+ }, {
4491
+ indices: {
4492
+ type: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi";
4493
+ name: string;
4494
+ description: string;
4495
+ available: boolean;
4496
+ bestUseCase: string;
4497
+ recommendedGrowthStage: string;
4498
+ formula?: string | undefined;
4499
+ }[];
4500
+ recommendedIndex: "ndvi" | "ndre" | "msavi" | "savi" | "evi" | "gndvi" | "lai" | "ndwi" | null;
4501
+ recommendationReason: string | null;
4502
+ }>;
4503
+ 404: z.ZodObject<{
4504
+ message: z.ZodString;
4505
+ code: z.ZodString;
4506
+ }, "strip", z.ZodTypeAny, {
4507
+ code: string;
4508
+ message: string;
4509
+ }, {
4510
+ code: string;
4511
+ message: string;
4512
+ }>;
4513
+ };
4514
+ };
2878
4515
  };
2879
4516
  export type MonitoringVisualizationRouter = typeof monitoringVisualizationRouter;
2880
4517
  //# sourceMappingURL=monitoring-visualization.routes.d.ts.map