@cenogram/mcp-server 0.2.0 → 0.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.
@@ -44,14 +44,39 @@ export interface Transaction {
44
44
  floor: number | null;
45
45
  district: string | null;
46
46
  street: string | null;
47
+ address_source?: "rcn" | "approx_high" | "approx_low" | "none" | null;
47
48
  building_number: string | null;
48
49
  city: string | null;
49
50
  parcel_area: number | null;
50
51
  unit_function: number | null;
52
+ is_garage?: boolean | null;
53
+ area_basis?: "unit" | "building" | null;
51
54
  parcel_id: string | null;
52
55
  parcel_number: string | null;
53
56
  county_name: string | null;
54
57
  voivodeship_name: string | null;
58
+ share_basis?: "full" | "fraction" | "ambiguous" | null;
59
+ parcel_count?: number | null;
60
+ area_is_ha_converted?: boolean | null;
61
+ property_type_inferred?: boolean | null;
62
+ property_type_reclassed?: boolean | null;
63
+ ownership_type?: number | null;
64
+ ownership_share?: string | null;
65
+ seller_type?: number | null;
66
+ buyer_type?: number | null;
67
+ land_use?: string | null;
68
+ unit_price?: number | string | null;
69
+ vat?: number | string | null;
70
+ building_count?: number | null;
71
+ footprint_area_m2?: number | null;
72
+ est_total_area_m2?: number | null;
73
+ building_storeys?: number | null;
74
+ flood_risk?: "high" | "medium" | "low" | null;
75
+ flood_assessed?: boolean | null;
76
+ heritage_status?: "listed" | "zone" | null;
77
+ heritage_assessed?: boolean | null;
78
+ landslide_risk?: "landslide" | "threatened" | null;
79
+ landslide_assessed?: boolean | null;
55
80
  centroid: {
56
81
  type: string;
57
82
  coordinates: [number, number];
@@ -86,6 +111,230 @@ export interface HistogramBin {
86
111
  range_min: number;
87
112
  range_max: number;
88
113
  }
114
+ export interface Percentiles {
115
+ p10: number | null;
116
+ p25: number | null;
117
+ p50: number | null;
118
+ p75: number | null;
119
+ p90: number | null;
120
+ }
121
+ export interface LocationRef {
122
+ name: string;
123
+ country_code: "PL";
124
+ location_type: "city" | "county";
125
+ teryt: string;
126
+ }
127
+ export interface TxWindow {
128
+ from: string | null;
129
+ to: string | null;
130
+ }
131
+ export interface RentalYieldResponse {
132
+ location: LocationRef;
133
+ metric: "indicative_gross_rental_yield";
134
+ currency: "PLN";
135
+ segment: {
136
+ market_type: "primary" | "secondary" | "all";
137
+ property_type: "apartment";
138
+ area_bucket: string | null;
139
+ };
140
+ result: {
141
+ gross_yield_pct: number | null;
142
+ calculation_method: "ratio_of_market_medians";
143
+ matched_observations: false;
144
+ };
145
+ inputs: {
146
+ rent: {
147
+ median_monthly_asking_per_m2: number | null;
148
+ annualized_per_m2: number | null;
149
+ sample_n: number | null;
150
+ snapshot_date: string | null;
151
+ };
152
+ transaction: {
153
+ median_price_per_m2: number | null;
154
+ sample_n: number | null;
155
+ window: TxWindow;
156
+ };
157
+ };
158
+ distribution: {
159
+ asking_rent_monthly_per_m2: Percentiles;
160
+ transaction_price_per_m2: Percentiles;
161
+ };
162
+ assumptions: {
163
+ vacancy_included: false;
164
+ tax_included: false;
165
+ maintenance_included: false;
166
+ transaction_costs_included: false;
167
+ };
168
+ quality: {
169
+ coverage: "full" | "low_sample" | "no_rental_data" | "suppressed" | "data_stale";
170
+ confidence: "high" | "low";
171
+ as_of: string | null;
172
+ stale: boolean;
173
+ notes: string[];
174
+ };
175
+ }
176
+ export interface RentalYieldLocation {
177
+ location: string;
178
+ county_code: string;
179
+ voivodeship: string;
180
+ type: "city" | "county";
181
+ rent_sample_n: number;
182
+ confidence: "high" | "low";
183
+ }
184
+ export interface RentalYieldLocationsResponse {
185
+ data: RentalYieldLocation[];
186
+ meta: {
187
+ total: number;
188
+ snapshot_date: string | null;
189
+ };
190
+ }
191
+ export interface PriceSpreadResponse {
192
+ location: LocationRef;
193
+ metric: "asking_to_transaction_price_spread";
194
+ currency: "PLN";
195
+ segment: {
196
+ market_type: "primary" | "secondary" | "all";
197
+ property_type: "apartment";
198
+ area_bucket: string | null;
199
+ };
200
+ result: {
201
+ spread_pct: number | null;
202
+ calculation_method: "relative_difference_of_market_medians";
203
+ matched_observations: false;
204
+ };
205
+ inputs: {
206
+ asking: {
207
+ median_price_per_m2: number | null;
208
+ sample_n: number | null;
209
+ snapshot_date: string | null;
210
+ window?: TxWindow;
211
+ };
212
+ transaction: {
213
+ median_price_per_m2: number | null;
214
+ sample_n: number | null;
215
+ window: TxWindow;
216
+ };
217
+ };
218
+ distribution: {
219
+ asking_sale_per_m2: Percentiles;
220
+ transaction_price_per_m2: Percentiles;
221
+ };
222
+ quality: {
223
+ coverage: "full" | "low_sample" | "no_asking_data" | "suppressed" | "data_stale";
224
+ confidence: "high" | "low";
225
+ as_of: string | null;
226
+ stale: boolean;
227
+ notes: string[];
228
+ };
229
+ }
230
+ export interface PriceSpreadLocation {
231
+ location: string;
232
+ county_code: string;
233
+ voivodeship: string;
234
+ type: "city" | "county";
235
+ asking_sample_n: number;
236
+ confidence: "high" | "low";
237
+ }
238
+ export interface PriceSpreadLocationsResponse {
239
+ data: PriceSpreadLocation[];
240
+ meta: {
241
+ total: number;
242
+ snapshot_date: string | null;
243
+ };
244
+ }
245
+ export interface DemographicsIndicator {
246
+ name: string;
247
+ unit: string;
248
+ variable_id: number | null;
249
+ category: string;
250
+ level: string;
251
+ values: Record<string, number>;
252
+ note?: string;
253
+ derived?: boolean;
254
+ snapshot?: boolean;
255
+ snapshot_note?: string;
256
+ }
257
+ export interface DemographicsResponse {
258
+ location: {
259
+ name: string | null;
260
+ country_code: "PL";
261
+ location_type: "city" | "county" | "municipality" | "voivodeship";
262
+ teryt: string;
263
+ level: string;
264
+ hierarchy?: Record<string, {
265
+ teryt: string | null;
266
+ name: string;
267
+ }>;
268
+ };
269
+ coverage: "full" | "no_data";
270
+ indicators: Record<string, DemographicsIndicator>;
271
+ meta: {
272
+ variables_count: number;
273
+ categories: string[];
274
+ levels_included: string[];
275
+ data_source: string;
276
+ as_of: string | null;
277
+ };
278
+ demo?: boolean;
279
+ }
280
+ export declare function getDemographics(params: {
281
+ location?: string;
282
+ teryt?: string;
283
+ year?: number;
284
+ yearFrom?: number;
285
+ yearTo?: number;
286
+ category?: string;
287
+ }, apiKey?: string): Promise<ApiResponse<DemographicsResponse>>;
288
+ export interface InfraTender {
289
+ title: string;
290
+ category: string;
291
+ notice_type: string;
292
+ published_at: string;
293
+ value_pln: number | null;
294
+ value_kind: string | null;
295
+ attribution_confidence: string | null;
296
+ bzp_url: string | null;
297
+ }
298
+ export interface InfrastructureSignalsResponse {
299
+ location: {
300
+ name: string | null;
301
+ country_code: "PL";
302
+ location_type: "city" | "county" | "municipality";
303
+ teryt: string;
304
+ level: string;
305
+ };
306
+ coverage: "full" | "partial" | "no_data";
307
+ tenders: {
308
+ window_months: number;
309
+ by_category: Record<string, number>;
310
+ recent: InfraTender[];
311
+ truncated: boolean;
312
+ };
313
+ kposk: {
314
+ in_agglomeration: boolean;
315
+ agglomerations: Array<{
316
+ name: string;
317
+ rlm: number | null;
318
+ }>;
319
+ truncated: boolean;
320
+ };
321
+ capex: {
322
+ by_year: Record<string, {
323
+ value_pln: number;
324
+ doc_category: string;
325
+ resolution_date: string | null;
326
+ gmina_count: number;
327
+ }>;
328
+ };
329
+ meta: {
330
+ coverage_note: string;
331
+ as_of: string | null;
332
+ };
333
+ }
334
+ export declare function getInfrastructureSignals(params: {
335
+ location?: string;
336
+ teryt?: string;
337
+ }, apiKey?: string): Promise<ApiResponse<InfrastructureSignalsResponse>>;
89
338
  export interface CreditInfo {
90
339
  balance: number;
91
340
  cost: number;
@@ -94,7 +343,14 @@ export interface ApiResponse<T> {
94
343
  data: T;
95
344
  creditInfo: CreditInfo | null;
96
345
  }
346
+ export declare const OAUTH_CTX_PREFIX = "\u0001";
97
347
  export declare function encodeOAuthCtx(userId: string, grantId: string): string;
348
+ export declare function decodeOAuthCtx(key: string): {
349
+ userId: string;
350
+ grantId: string;
351
+ } | null;
352
+ export declare function parseRetryAfterSeconds(headerValue: string | null | undefined): number | null;
353
+ export declare function formatRetryAfter(seconds: number): string;
98
354
  export declare function fetchApi<T>(path: string, params?: Record<string, string>, apiKey?: string): Promise<ApiResponse<T>>;
99
355
  export declare function fetchApiPost<T>(path: string, body: unknown, apiKey?: string): Promise<ApiResponse<T>>;
100
356
  export declare function getStats(apiKey?: string): Promise<ApiResponse<StatsResponse>>;
@@ -106,8 +362,9 @@ export interface TransactionParams {
106
362
  parcelId?: string;
107
363
  propertyType?: number;
108
364
  marketType?: number;
109
- unitFunction?: number;
110
- buildingType?: number;
365
+ unitFunction?: number | string;
366
+ buildingType?: number | string;
367
+ ownershipType?: number | string;
111
368
  mpzpDesignation?: string;
112
369
  minPrice?: number;
113
370
  maxPrice?: number;
@@ -116,6 +373,12 @@ export interface TransactionParams {
116
373
  minArea?: number;
117
374
  maxArea?: number;
118
375
  bbox?: string;
376
+ transactionType?: string;
377
+ rooms?: string;
378
+ floor?: string;
379
+ floodRisk?: string;
380
+ heritageStatus?: string;
381
+ landslideRisk?: string;
119
382
  limit?: number;
120
383
  page?: number;
121
384
  sort?: string;
@@ -125,6 +388,88 @@ export declare function getTransactions(p: TransactionParams, apiKey?: string):
125
388
  export declare function getTransactionsSummary(p: TransactionParams, apiKey?: string): Promise<ApiResponse<TransactionsSummary>>;
126
389
  export declare function getPricePerM2(apiKey?: string): Promise<ApiResponse<PricePerM2Row[]>>;
127
390
  export declare function getDistricts(apiKey?: string): Promise<ApiResponse<string[]>>;
391
+ export declare function getRentalYield(params: {
392
+ location?: string;
393
+ teryt?: string;
394
+ areaBucket?: string;
395
+ }, apiKey?: string): Promise<ApiResponse<RentalYieldResponse>>;
396
+ export declare function getRentalYieldLocations(params: {
397
+ search?: string;
398
+ }, apiKey?: string): Promise<ApiResponse<RentalYieldLocationsResponse>>;
399
+ export declare function getPriceSpread(params: {
400
+ location?: string;
401
+ teryt?: string;
402
+ marketType?: string;
403
+ areaBucket?: string;
404
+ }, apiKey?: string): Promise<ApiResponse<PriceSpreadResponse>>;
405
+ export declare function getPriceSpreadLocations(params: {
406
+ search?: string;
407
+ }, apiKey?: string): Promise<ApiResponse<PriceSpreadLocationsResponse>>;
408
+ export interface ValuationComparable {
409
+ distance_m: number;
410
+ transaction_date: string;
411
+ area_m2: number;
412
+ price_per_m2: number;
413
+ rooms: number | null;
414
+ floor: number | null;
415
+ market_type: "primary" | "secondary" | null;
416
+ district: string | null;
417
+ has_unit_number: boolean;
418
+ unit_number?: string | null;
419
+ }
420
+ export interface ValuationResponse {
421
+ location: {
422
+ country_code: string;
423
+ lat: number | null;
424
+ lng: number | null;
425
+ county_code: string | null;
426
+ };
427
+ metric: string;
428
+ currency: string;
429
+ segment: {
430
+ property_type: string;
431
+ market_type: "primary" | "secondary" | "all";
432
+ area_m2: number;
433
+ rooms: number | null;
434
+ };
435
+ result: {
436
+ estimated_value: number | null;
437
+ price_per_m2: number | null;
438
+ value_range_likely: {
439
+ low: number | null;
440
+ high: number | null;
441
+ };
442
+ value_range_wide: {
443
+ low: number | null;
444
+ high: number | null;
445
+ };
446
+ confidence: number | null;
447
+ confidence_band: "high" | "medium" | "low" | null;
448
+ };
449
+ inputs: {
450
+ comps_total: number;
451
+ radius_m: number | null;
452
+ window_months: number;
453
+ comparables: ValuationComparable[] | null;
454
+ };
455
+ quality: {
456
+ coverage: "covered" | "no_data" | "not_covered";
457
+ as_of: string | null;
458
+ price_basis: "apartment" | "deed";
459
+ ess: number | null;
460
+ accuracy_segment: "wwa" | "duze" | "srednie" | "male" | null;
461
+ note: string;
462
+ };
463
+ }
464
+ export declare function getValuation(params: {
465
+ lat?: number;
466
+ lng?: number;
467
+ parcelId?: string;
468
+ area: number;
469
+ rooms?: number;
470
+ market?: "primary" | "secondary";
471
+ includeComps?: boolean;
472
+ }, apiKey?: string): Promise<ApiResponse<ValuationResponse>>;
128
473
  export interface LocationItem {
129
474
  code: string;
130
475
  name: string;
@@ -134,7 +479,7 @@ export interface LocationItem {
134
479
  export declare function getLocations(parent?: string, apiKey?: string): Promise<ApiResponse<LocationItem[]>>;
135
480
  export declare function getPriceHistogram(bins?: number, max?: number, apiKey?: string): Promise<ApiResponse<HistogramBin[]>>;
136
481
  export interface ParcelSearchResult {
137
- parcel_id: string;
482
+ parcel_id?: string;
138
483
  district: string | null;
139
484
  area_m2: number | null;
140
485
  lat: number;
@@ -144,6 +489,140 @@ export interface ParcelSearchResponse {
144
489
  results: ParcelSearchResult[];
145
490
  }
146
491
  export declare function searchParcels(q: string, limit?: number, apiKey?: string): Promise<ApiResponse<ParcelSearchResponse>>;
492
+ export interface ParcelResolveMatch {
493
+ id: string;
494
+ parcel_id: string | null;
495
+ parcel_key: string | null;
496
+ district: string | null;
497
+ county_code: string | null;
498
+ parcel_number: string | null;
499
+ area_m2: number | null;
500
+ has_geometry: boolean;
501
+ centroid: {
502
+ lat: number;
503
+ lng: number;
504
+ } | null;
505
+ }
506
+ export interface ParcelResolveResponse {
507
+ query: {
508
+ mode: string;
509
+ q?: string;
510
+ parcelId?: string;
511
+ lat?: number;
512
+ lng?: number;
513
+ };
514
+ coverage: "covered" | "not_covered";
515
+ as_of: string | null;
516
+ matches: ParcelResolveMatch[];
517
+ truncated: boolean;
518
+ }
519
+ export interface ResolveParcelParams {
520
+ q?: string;
521
+ parcelId?: string;
522
+ lat?: number;
523
+ lng?: number;
524
+ }
525
+ export declare function resolveParcel(params: ResolveParcelParams, apiKey?: string): Promise<ApiResponse<ParcelResolveResponse>>;
526
+ export interface ReportMarketLevel {
527
+ coverage: string;
528
+ median_price_per_m2: number | null;
529
+ n: number;
530
+ county_code?: string | null;
531
+ district?: string | null;
532
+ }
533
+ export interface ReportMarketContext {
534
+ coverage: string;
535
+ as_of: string | null;
536
+ county: ReportMarketLevel;
537
+ locality: ReportMarketLevel;
538
+ note?: string | null;
539
+ }
540
+ export interface ReportDemographicsSection {
541
+ coverage: string;
542
+ as_of: string | null;
543
+ name: string | null;
544
+ indicators: Record<string, DemographicsIndicator>;
545
+ }
546
+ export interface ReportInfraSection {
547
+ coverage: string;
548
+ as_of: string | null;
549
+ gmina_name: string | null;
550
+ tenders: {
551
+ window_months: number;
552
+ by_category: Record<string, number>;
553
+ recent: InfraTender[];
554
+ truncated: boolean;
555
+ };
556
+ kposk: {
557
+ in_agglomeration: boolean;
558
+ agglomerations: Array<{
559
+ name: string;
560
+ rlm: number | null;
561
+ }>;
562
+ truncated: boolean;
563
+ };
564
+ capex: {
565
+ by_year: Record<string, unknown>;
566
+ };
567
+ note?: string | null;
568
+ }
569
+ export interface ReportLocationContext {
570
+ coverage: string;
571
+ as_of: string | null;
572
+ gmina_teryt: string | null;
573
+ demographics: ReportDemographicsSection;
574
+ infra_signals: ReportInfraSection;
575
+ note?: string | null;
576
+ }
577
+ export interface ReportSection {
578
+ coverage: string;
579
+ as_of: string | null;
580
+ note?: string | null;
581
+ [key: string]: unknown;
582
+ }
583
+ export interface ParcelReportResponse {
584
+ parcel: {
585
+ id: string | null;
586
+ parcel_id: string | null;
587
+ parcel_key: string | null;
588
+ district?: string | null;
589
+ county_code?: string | null;
590
+ county_name?: string | null;
591
+ voivodeship_name?: string | null;
592
+ parcel_number?: string | null;
593
+ area_m2?: number | null;
594
+ land_use?: string | null;
595
+ mpzp_designation?: string | null;
596
+ has_geometry?: boolean;
597
+ centroid?: {
598
+ lat: number;
599
+ lng: number;
600
+ } | null;
601
+ };
602
+ coverage: string;
603
+ as_of: string | null;
604
+ sections: {
605
+ transactions: ReportSection;
606
+ flood: ReportSection;
607
+ heritage: ReportSection;
608
+ landslide: ReportSection;
609
+ surroundings: ReportSection;
610
+ transit: ReportSection;
611
+ planning: ReportSection;
612
+ buildings: ReportSection;
613
+ permits: ReportSection;
614
+ farmland: ReportSection;
615
+ market_context: ReportMarketContext;
616
+ location_context: ReportLocationContext;
617
+ };
618
+ billing: {
619
+ charged: number;
620
+ refunded: number;
621
+ rule: string;
622
+ };
623
+ note?: string | null;
624
+ }
625
+ export declare function getParcelReport(parcelKey: string, apiKey?: string): Promise<ApiResponse<ParcelReportResponse>>;
147
626
  export interface SpatialSearchParams {
148
627
  polygon: {
149
628
  type: "Polygon";
@@ -151,8 +630,9 @@ export interface SpatialSearchParams {
151
630
  };
152
631
  propertyType?: number;
153
632
  marketType?: number;
154
- unitFunction?: number;
155
- buildingType?: number;
633
+ unitFunction?: number | string;
634
+ buildingType?: number | string;
635
+ ownershipType?: number | string;
156
636
  mpzpDesignation?: string;
157
637
  minPrice?: number;
158
638
  maxPrice?: number;
@@ -162,6 +642,9 @@ export interface SpatialSearchParams {
162
642
  maxArea?: number;
163
643
  district?: string;
164
644
  street?: string;
645
+ transactionType?: string;
646
+ rooms?: string;
647
+ floor?: string;
165
648
  limit?: number;
166
649
  }
167
650
  export interface SpatialFeatureProperties {
@@ -175,11 +658,30 @@ export interface SpatialFeatureProperties {
175
658
  rooms: number | null;
176
659
  floor: number | null;
177
660
  street: string | null;
661
+ address_source?: "rcn" | "approx_high" | "approx_low" | "none" | null;
178
662
  building_number: string | null;
179
663
  city: string | null;
180
664
  district: string | null;
181
665
  parcel_area: number | null;
182
666
  parcel_number: string | null;
667
+ share_basis?: "full" | "fraction" | "ambiguous" | null;
668
+ is_garage?: boolean | null;
669
+ area_basis?: "unit" | "building" | null;
670
+ parcel_count?: number | null;
671
+ area_is_ha_converted?: boolean | null;
672
+ property_type_inferred?: boolean | null;
673
+ property_type_reclassed?: boolean | null;
674
+ ownership_type?: number | null;
675
+ ownership_share?: string | null;
676
+ seller_type?: number | null;
677
+ buyer_type?: number | null;
678
+ land_use?: string | null;
679
+ unit_price?: number | string | null;
680
+ vat?: number | string | null;
681
+ building_count?: number | null;
682
+ footprint_area_m2?: number | null;
683
+ est_total_area_m2?: number | null;
684
+ building_storeys?: number | null;
183
685
  }
184
686
  export interface SpatialFeature {
185
687
  type: "Feature";
@@ -196,6 +698,14 @@ export interface SpatialSearchResponse {
196
698
  total: number;
197
699
  }
198
700
  export declare function searchByPolygon(p: SpatialSearchParams, apiKey?: string): Promise<ApiResponse<SpatialSearchResponse>>;
701
+ export interface CompareDemographicsIndicator {
702
+ value: number | null;
703
+ year: number | null;
704
+ unit: string;
705
+ derived?: boolean;
706
+ cross_source?: boolean;
707
+ note?: string;
708
+ }
199
709
  export interface CompareEntry {
200
710
  median_price_m2: number | null;
201
711
  avg_area: number | null;
@@ -203,14 +713,16 @@ export interface CompareEntry {
203
713
  max_date: string | null;
204
714
  total: number;
205
715
  suggestions?: string[];
716
+ demographics?: Record<string, CompareDemographicsIndicator>;
206
717
  }
207
718
  export type CompareResponse = Record<string, CompareEntry>;
208
719
  export interface CompareParams {
209
720
  districts: string;
210
721
  propertyType?: number;
211
722
  marketType?: number;
212
- unitFunction?: number;
213
- buildingType?: number;
723
+ unitFunction?: number | string;
724
+ buildingType?: number | string;
725
+ ownershipType?: number | string;
214
726
  mpzpDesignation?: string;
215
727
  minPrice?: number;
216
728
  maxPrice?: number;
@@ -219,5 +731,164 @@ export interface CompareParams {
219
731
  minArea?: number;
220
732
  maxArea?: number;
221
733
  street?: string;
734
+ transactionType?: string;
735
+ rooms?: string;
736
+ floor?: string;
737
+ include?: string;
222
738
  }
223
739
  export declare function compareLocations(p: CompareParams, apiKey?: string): Promise<ApiResponse<CompareResponse>>;
740
+ export interface BuildingBreakdownRow {
741
+ building_type: number | null;
742
+ footprint_area_m2: number | null;
743
+ footprint_area_alt_m2: number | null;
744
+ footprint_divergent: boolean | null;
745
+ storeys: number | null;
746
+ est_total_area_m2: number | null;
747
+ match_confidence: string | null;
748
+ }
749
+ export interface BuildingBreakdownResponse {
750
+ data: BuildingBreakdownRow[];
751
+ truncated: boolean;
752
+ }
753
+ export declare function getBuildingBreakdown(transactionId: string, apiKey?: string): Promise<ApiResponse<BuildingBreakdownResponse>>;
754
+ export interface FloodScenario {
755
+ scenario: string | null;
756
+ source: string | null;
757
+ returnPeriod: number | null;
758
+ severity: number;
759
+ isLeveeFailure: boolean;
760
+ depthClass: string | null;
761
+ }
762
+ export interface FloodBreakdownRow {
763
+ flood_risk: "high" | "medium" | "low" | null;
764
+ severity_rank: number | null;
765
+ worst_scenario: string | null;
766
+ source: string | null;
767
+ depth_class: string | null;
768
+ pct_in_zone: number | string | null;
769
+ nearest_zone_m: number | null;
770
+ scenarios: FloodScenario[] | null;
771
+ }
772
+ export interface FloodBreakdownResponse {
773
+ data: FloodBreakdownRow[];
774
+ truncated: boolean;
775
+ }
776
+ export declare function getTransactionFlood(transactionId: string, apiKey?: string): Promise<ApiResponse<FloodBreakdownResponse>>;
777
+ export interface HeritageSite {
778
+ category: string;
779
+ name?: string | null;
780
+ function: string | null;
781
+ period: string | null;
782
+ entry_date: string | null;
783
+ }
784
+ export interface HeritageBreakdownRow {
785
+ heritage_status: "listed" | "zone" | null;
786
+ severity_rank: number | null;
787
+ pct_in_zone: number | string | null;
788
+ site_count: number | null;
789
+ sites: HeritageSite[] | null;
790
+ }
791
+ export interface HeritageBreakdownResponse {
792
+ data: HeritageBreakdownRow[];
793
+ truncated: boolean;
794
+ }
795
+ export interface LandslideZone {
796
+ kind: string | null;
797
+ source_version_date: string | null;
798
+ }
799
+ export interface LandslideBreakdownRow {
800
+ landslide_risk: "landslide" | "threatened" | null;
801
+ severity_rank: number | null;
802
+ pct_in_zone: number | string | null;
803
+ zones: LandslideZone[] | null;
804
+ }
805
+ export interface LandslideBreakdownResponse {
806
+ data: LandslideBreakdownRow[];
807
+ truncated: boolean;
808
+ }
809
+ export interface TransitBreakdownRow {
810
+ rail_distance_m: number | null;
811
+ rail_stop_name: string | null;
812
+ metro_distance_m: number | null;
813
+ metro_stop_name: string | null;
814
+ tram_distance_m: number | null;
815
+ tram_stop_name: string | null;
816
+ bus_distance_m: number | null;
817
+ bus_stop_name: string | null;
818
+ }
819
+ export interface TransitBreakdownResponse {
820
+ data: TransitBreakdownRow[];
821
+ truncated: boolean;
822
+ }
823
+ export interface PermitRecord {
824
+ record_kind: "permit" | "notification";
825
+ intent_type: string | null;
826
+ object_category: string | null;
827
+ works_type: string | null;
828
+ status: string | null;
829
+ decision_date: string | null;
830
+ intake_date: string | null;
831
+ authority: string | null;
832
+ address_street: string | null;
833
+ address_number: string | null;
834
+ address_city: string | null;
835
+ volume_m3: number | null;
836
+ }
837
+ export interface PermitsResponse {
838
+ data: PermitRecord[];
839
+ truncated: boolean;
840
+ note?: string;
841
+ }
842
+ export declare function getTransactionHeritage(transactionId: string, apiKey?: string): Promise<ApiResponse<HeritageBreakdownResponse>>;
843
+ export declare function getTransactionLandslide(transactionId: string, apiKey?: string): Promise<ApiResponse<LandslideBreakdownResponse>>;
844
+ export interface SurroundingsRow {
845
+ assessed: boolean;
846
+ cemetery_distance_m: number | string | null;
847
+ landfill_distance_m: number | string | null;
848
+ sewage_treatment_distance_m: number | string | null;
849
+ industrial_area_distance_m: number | string | null;
850
+ industrial_plant_distance_m: number | string | null;
851
+ livestock_farm_distance_m: number | string | null;
852
+ }
853
+ export interface SurroundingsResponse {
854
+ data: SurroundingsRow[];
855
+ truncated?: boolean;
856
+ }
857
+ export declare function getTransactionSurroundings(transactionId: string, apiKey?: string): Promise<ApiResponse<SurroundingsResponse>>;
858
+ export declare function getTransactionTransit(transactionId: string, apiKey?: string): Promise<ApiResponse<TransitBreakdownResponse>>;
859
+ export declare function getTransactionPermits(transactionId: string, apiKey?: string): Promise<ApiResponse<PermitsResponse>>;
860
+ export interface PlanningRow {
861
+ parcel_ord: number;
862
+ kind: string;
863
+ zone_symbol: string | null;
864
+ zone_name: string | null;
865
+ pct_of_parcel: number | string | null;
866
+ max_building_height_m: number | string | null;
867
+ max_development_intensity: number | string | null;
868
+ max_built_up_coverage_pct: number | string | null;
869
+ min_bio_active_area_pct: number | string | null;
870
+ params_mixed: boolean;
871
+ effective_from: string | null;
872
+ }
873
+ export interface PlanningResponse {
874
+ data: PlanningRow[];
875
+ truncated: boolean;
876
+ coverage: "covered" | "covered_no_data" | "not_covered";
877
+ parcels_total: number;
878
+ parcels_covered: number;
879
+ note: string | null;
880
+ }
881
+ export declare function getTransactionPlanning(transactionId: string, apiKey?: string): Promise<ApiResponse<PlanningResponse>>;
882
+ export interface FarmlandRow {
883
+ eligible_area_m2: number;
884
+ pct_of_parcel: number | null;
885
+ feature_count: number;
886
+ }
887
+ export interface FarmlandResponse {
888
+ data: FarmlandRow[];
889
+ truncated: boolean;
890
+ parcels_total: number;
891
+ parcels_with_data: number;
892
+ as_of: string | null;
893
+ }
894
+ export declare function getTransactionFarmland(transactionId: string, apiKey?: string): Promise<ApiResponse<FarmlandResponse>>;