@land-catalyst/batch-data-sdk 1.1.12

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,2622 @@
1
+ "use strict";
2
+ /**
3
+ * BatchData.io Query Builders
4
+ *
5
+ * Fluent query builder API for constructing BatchData property subscription requests
6
+ *
7
+ * Usage example:
8
+ * ```typescript
9
+ * const searchQuery = new SearchCriteriaBuilder("Maricopa County, AZ")
10
+ * .address(new AddressSearchCriteriaBuilder()
11
+ * .city(new StringFilterBuilder().equals("Phoenix").build())
12
+ * .state(new StringFilterBuilder().equals("AZ").build())
13
+ * .build())
14
+ * .building(new BuildingSearchCriteriaBuilder()
15
+ * .yearBuilt(new NumericRangeFilterBuilder().min(1990).max(2020).build())
16
+ * .build())
17
+ * .build();
18
+ * ```
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.PropertyPermitRequestBuilder = exports.PropertyLookupAsyncRequestBuilder = exports.PropertySearchAsyncRequestBuilder = exports.PropertySearchRequestBuilder = exports.PropertyLookupRequestBuilder = exports.AsyncPropertyLookupOptionsBuilder = exports.PropertyLookupOptionsBuilder = exports.PropertyLookupRequestItemBuilder = exports.PropertySubscriptionBuilder = exports.DeliveryConfigBuilder = exports.SearchCriteriaBuilder = exports.OrSearchCriteriaBuilder = exports.ValuationSearchCriteriaBuilder = exports.TaxSearchCriteriaBuilder = exports.SaleSearchCriteriaBuilder = exports.PropertyOwnerProfileSearchCriteriaBuilder = exports.PermitSearchCriteriaBuilder = exports.OwnerSearchCriteriaBuilder = exports.OpenLienSearchCriteriaBuilder = exports.LotSearchCriteriaBuilder = exports.ListingSearchCriteriaBuilder = exports.LegalSearchCriteriaBuilder = exports.InvoluntaryLienSearchCriteriaBuilder = exports.IntelSearchCriteriaBuilder = exports.IdsSearchCriteriaBuilder = exports.GeneralSearchCriteriaBuilder = exports.ForeclosureSearchCriteriaBuilder = exports.DemographicsSearchCriteriaBuilder = exports.CompAddressSearchCriteriaBuilder = exports.BuildingSearchCriteriaBuilder = exports.AssessmentSearchCriteriaBuilder = exports.AddressSearchCriteriaBuilder = exports.GeoLocationFactory = exports.DateRangeFilterBuilder = exports.NumericRangeFilterBuilder = exports.StringFilterBuilder = void 0;
22
+ /**
23
+ * Abstract base class for builders that store nested builders
24
+ * Handles the common pattern of storing builder instances and building them all at once
25
+ */
26
+ class BaseBuilder {
27
+ constructor() {
28
+ this.criteria = {};
29
+ this.builders = {};
30
+ }
31
+ /**
32
+ * Helper method to set a property either directly or via a builder configurator.
33
+ * This extracts the common pattern of checking if a configurator function is provided,
34
+ * creating/reusing a builder instance, and either calling the configurator or setting
35
+ * the value directly.
36
+ *
37
+ * @param key - The property key to set
38
+ * @param valueOrConfigurator - Either the direct value or a configurator function
39
+ * @param builderFactory - Factory function to create a new builder instance if needed
40
+ * @returns This builder instance for method chaining
41
+ */
42
+ setPropertyWithBuilder(key, valueOrConfigurator, builderFactory) {
43
+ if (typeof valueOrConfigurator === "function") {
44
+ if (!this.builders[key]) {
45
+ this.builders[key] = builderFactory();
46
+ }
47
+ // Type assertion needed because TypeScript can't narrow the union type properly
48
+ valueOrConfigurator(this.builders[key]);
49
+ }
50
+ else {
51
+ this.criteria[key] = valueOrConfigurator;
52
+ this.builders[key] = undefined;
53
+ }
54
+ return this;
55
+ }
56
+ /**
57
+ * Helper method that accepts a builder class constructor and infers types from it.
58
+ * This allows you to pass the builder class directly instead of a factory function.
59
+ *
60
+ * @param key - The property key to set
61
+ * @param valueOrConfigurator - Either the direct value or a configurator function
62
+ * @param BuilderClass - The builder class constructor (e.g., NumericRangeFilterBuilder)
63
+ * @returns This builder instance for method chaining
64
+ */
65
+ setPropertyWithBuilderClass(key, valueOrConfigurator, BuilderClass) {
66
+ return this.setPropertyWithBuilder(key, valueOrConfigurator, () => new BuilderClass());
67
+ }
68
+ build() {
69
+ const result = { ...this.criteria };
70
+ for (const key in this.builders) {
71
+ const builder = this.builders[key];
72
+ if (builder) {
73
+ result[key] = builder.build();
74
+ }
75
+ }
76
+ return result;
77
+ }
78
+ }
79
+ /**
80
+ * Base builder for string filters
81
+ */
82
+ class StringFilterBuilder {
83
+ constructor() {
84
+ this.filter = {};
85
+ }
86
+ static from(filter) {
87
+ const builder = new StringFilterBuilder();
88
+ builder.filter = { ...filter };
89
+ return builder;
90
+ }
91
+ equals(value) {
92
+ this.filter.equals = value;
93
+ return this;
94
+ }
95
+ contains(value) {
96
+ this.filter.contains = value;
97
+ return this;
98
+ }
99
+ startsWith(value) {
100
+ this.filter.startsWith = value;
101
+ return this;
102
+ }
103
+ endsWith(value) {
104
+ this.filter.endsWith = value;
105
+ return this;
106
+ }
107
+ inList(values) {
108
+ this.filter.inList = values;
109
+ return this;
110
+ }
111
+ notInList(values) {
112
+ this.filter.notInList = values;
113
+ return this;
114
+ }
115
+ matches(patterns) {
116
+ this.filter.matches = patterns;
117
+ return this;
118
+ }
119
+ build() {
120
+ return this.filter;
121
+ }
122
+ }
123
+ exports.StringFilterBuilder = StringFilterBuilder;
124
+ /**
125
+ * Base builder for numeric range filters
126
+ */
127
+ class NumericRangeFilterBuilder {
128
+ constructor() {
129
+ this.filter = {};
130
+ }
131
+ static from(filter) {
132
+ const builder = new NumericRangeFilterBuilder();
133
+ builder.filter = { ...filter };
134
+ return builder;
135
+ }
136
+ min(value) {
137
+ this.filter.min = value;
138
+ return this;
139
+ }
140
+ max(value) {
141
+ this.filter.max = value;
142
+ return this;
143
+ }
144
+ range(min, max) {
145
+ this.filter.min = min;
146
+ this.filter.max = max;
147
+ return this;
148
+ }
149
+ build() {
150
+ return this.filter;
151
+ }
152
+ }
153
+ exports.NumericRangeFilterBuilder = NumericRangeFilterBuilder;
154
+ /**
155
+ * Base builder for date range filters
156
+ */
157
+ class DateRangeFilterBuilder {
158
+ constructor() {
159
+ this.filter = {};
160
+ }
161
+ static from(filter) {
162
+ const builder = new DateRangeFilterBuilder();
163
+ builder.filter = { ...filter };
164
+ return builder;
165
+ }
166
+ minDate(date) {
167
+ this.filter.minDate = date;
168
+ return this;
169
+ }
170
+ maxDate(date) {
171
+ this.filter.maxDate = date;
172
+ return this;
173
+ }
174
+ range(minDate, maxDate) {
175
+ this.filter.minDate = minDate;
176
+ this.filter.maxDate = maxDate;
177
+ return this;
178
+ }
179
+ build() {
180
+ return this.filter;
181
+ }
182
+ }
183
+ exports.DateRangeFilterBuilder = DateRangeFilterBuilder;
184
+ /**
185
+ * Helper class for creating geographic location filters
186
+ * This is not a builder in the traditional sense - it's a factory that creates
187
+ * different geo location objects (distance, bounding box, polygon)
188
+ */
189
+ class GeoLocationFactory {
190
+ /**
191
+ * Create a distance-based filter
192
+ */
193
+ static distance(latitude, longitude, options) {
194
+ const distance = {
195
+ geoPoint: { latitude, longitude },
196
+ };
197
+ if (options?.meters)
198
+ distance.distanceMeters = options.meters;
199
+ if (options?.kilometers)
200
+ distance.distanceKilometers = options.kilometers;
201
+ if (options?.feet)
202
+ distance.distanceFeet = options.feet;
203
+ if (options?.yards)
204
+ distance.distanceYards = options.yards;
205
+ if (options?.miles)
206
+ distance.distanceMiles = options.miles;
207
+ return distance;
208
+ }
209
+ /**
210
+ * Create a bounding box filter
211
+ */
212
+ static boundingBox(nwLatitude, nwLongitude, seLatitude, seLongitude) {
213
+ return {
214
+ nwGeoPoint: { latitude: nwLatitude, longitude: nwLongitude },
215
+ seGeoPoint: { latitude: seLatitude, longitude: seLongitude },
216
+ };
217
+ }
218
+ /**
219
+ * Create a polygon filter
220
+ */
221
+ static polygon(points) {
222
+ return {
223
+ geoPoints: points.map((p) => ({
224
+ latitude: p.latitude,
225
+ longitude: p.longitude,
226
+ })),
227
+ };
228
+ }
229
+ }
230
+ exports.GeoLocationFactory = GeoLocationFactory;
231
+ /**
232
+ * Builder for address search criteria
233
+ */
234
+ class AddressSearchCriteriaBuilder extends BaseBuilder {
235
+ constructor() {
236
+ super(...arguments);
237
+ this.criteria = {};
238
+ }
239
+ static from(criteria) {
240
+ const builder = new AddressSearchCriteriaBuilder();
241
+ builder.criteria = { ...criteria };
242
+ return builder;
243
+ }
244
+ street(filterOrConfigurator) {
245
+ return this.setPropertyWithBuilderClass("street", filterOrConfigurator, StringFilterBuilder);
246
+ }
247
+ city(filterOrConfigurator) {
248
+ return this.setPropertyWithBuilderClass("city", filterOrConfigurator, StringFilterBuilder);
249
+ }
250
+ locality(filterOrConfigurator) {
251
+ return this.setPropertyWithBuilderClass("locality", filterOrConfigurator, StringFilterBuilder);
252
+ }
253
+ county(filterOrConfigurator) {
254
+ return this.setPropertyWithBuilderClass("county", filterOrConfigurator, StringFilterBuilder);
255
+ }
256
+ countyFipsCode(filterOrConfigurator) {
257
+ return this.setPropertyWithBuilderClass("countyFipsCode", filterOrConfigurator, StringFilterBuilder);
258
+ }
259
+ state(filterOrConfigurator) {
260
+ return this.setPropertyWithBuilderClass("state", filterOrConfigurator, StringFilterBuilder);
261
+ }
262
+ zip(filterOrConfigurator) {
263
+ return this.setPropertyWithBuilderClass("zip", filterOrConfigurator, StringFilterBuilder);
264
+ }
265
+ unitType(filterOrConfigurator) {
266
+ return this.setPropertyWithBuilderClass("unitType", filterOrConfigurator, StringFilterBuilder);
267
+ }
268
+ formattedStreet(filterOrConfigurator) {
269
+ return this.setPropertyWithBuilderClass("formattedStreet", filterOrConfigurator, StringFilterBuilder);
270
+ }
271
+ streetNoUnit(filterOrConfigurator) {
272
+ return this.setPropertyWithBuilderClass("streetNoUnit", filterOrConfigurator, StringFilterBuilder);
273
+ }
274
+ geoLocationDistance(latitude, longitude, options) {
275
+ this.criteria.geoLocationDistance = GeoLocationFactory.distance(latitude, longitude, options);
276
+ return this;
277
+ }
278
+ geoLocationBoundingBox(nwLatitude, nwLongitude, seLatitude, seLongitude) {
279
+ this.criteria.geoLocationBoundingBox = GeoLocationFactory.boundingBox(nwLatitude, nwLongitude, seLatitude, seLongitude);
280
+ return this;
281
+ }
282
+ geoLocationPolygon(points) {
283
+ this.criteria.geoLocationPolygon = GeoLocationFactory.polygon(points);
284
+ return this;
285
+ }
286
+ initialGeoStatus(filterOrConfigurator) {
287
+ return this.setPropertyWithBuilderClass("initialGeoStatus", filterOrConfigurator, StringFilterBuilder);
288
+ }
289
+ geoStatus(filterOrConfigurator) {
290
+ return this.setPropertyWithBuilderClass("geoStatus", filterOrConfigurator, StringFilterBuilder);
291
+ }
292
+ cityState(filterOrConfigurator) {
293
+ return this.setPropertyWithBuilderClass("cityState", filterOrConfigurator, StringFilterBuilder);
294
+ }
295
+ countyState(filterOrConfigurator) {
296
+ return this.setPropertyWithBuilderClass("countyState", filterOrConfigurator, StringFilterBuilder);
297
+ }
298
+ }
299
+ exports.AddressSearchCriteriaBuilder = AddressSearchCriteriaBuilder;
300
+ /**
301
+ * Builder for assessment search criteria
302
+ */
303
+ class AssessmentSearchCriteriaBuilder extends BaseBuilder {
304
+ constructor() {
305
+ super(...arguments);
306
+ this.criteria = {};
307
+ }
308
+ static from(criteria) {
309
+ const builder = new AssessmentSearchCriteriaBuilder();
310
+ builder.criteria = { ...criteria };
311
+ return builder;
312
+ }
313
+ assessmentYear(filterOrConfigurator) {
314
+ return this.setPropertyWithBuilderClass("assessmentYear", filterOrConfigurator, NumericRangeFilterBuilder);
315
+ }
316
+ totalAssessedValue(filterOrConfigurator) {
317
+ return this.setPropertyWithBuilderClass("totalAssessedValue", filterOrConfigurator, NumericRangeFilterBuilder);
318
+ }
319
+ assessedImprovementValue(filterOrConfigurator) {
320
+ return this.setPropertyWithBuilderClass("assessedImprovementValue", filterOrConfigurator, NumericRangeFilterBuilder);
321
+ }
322
+ assessedLandValue(filterOrConfigurator) {
323
+ return this.setPropertyWithBuilderClass("assessedLandValue", filterOrConfigurator, NumericRangeFilterBuilder);
324
+ }
325
+ marketValueYear(filterOrConfigurator) {
326
+ return this.setPropertyWithBuilderClass("marketValueYear", filterOrConfigurator, NumericRangeFilterBuilder);
327
+ }
328
+ landMarketValue(filterOrConfigurator) {
329
+ return this.setPropertyWithBuilderClass("landMarketValue", filterOrConfigurator, NumericRangeFilterBuilder);
330
+ }
331
+ improvementMarketValue(filterOrConfigurator) {
332
+ return this.setPropertyWithBuilderClass("improvementMarketValue", filterOrConfigurator, NumericRangeFilterBuilder);
333
+ }
334
+ totalMarketValue(filterOrConfigurator) {
335
+ return this.setPropertyWithBuilderClass("totalMarketValue", filterOrConfigurator, NumericRangeFilterBuilder);
336
+ }
337
+ }
338
+ exports.AssessmentSearchCriteriaBuilder = AssessmentSearchCriteriaBuilder;
339
+ /**
340
+ * Builder for building search criteria
341
+ */
342
+ class BuildingSearchCriteriaBuilder extends BaseBuilder {
343
+ constructor() {
344
+ super(...arguments);
345
+ this.criteria = {};
346
+ }
347
+ static from(criteria) {
348
+ const builder = new BuildingSearchCriteriaBuilder();
349
+ builder.criteria = { ...criteria };
350
+ return builder;
351
+ }
352
+ airConditioningSource(filterOrConfigurator) {
353
+ return this.setPropertyWithBuilderClass("airConditioningSource", filterOrConfigurator, StringFilterBuilder);
354
+ }
355
+ basementType(filterOrConfigurator) {
356
+ return this.setPropertyWithBuilderClass("basementType", filterOrConfigurator, StringFilterBuilder);
357
+ }
358
+ totalBuildingAreaSquareFeet(filterOrConfigurator) {
359
+ return this.setPropertyWithBuilderClass("totalBuildingAreaSquareFeet", filterOrConfigurator, NumericRangeFilterBuilder);
360
+ }
361
+ buildingClass(filterOrConfigurator) {
362
+ if (typeof filterOrConfigurator === "function") {
363
+ const builder = new StringFilterBuilder();
364
+ filterOrConfigurator(builder);
365
+ this.criteria.buildingClass = builder.build();
366
+ }
367
+ else {
368
+ this.criteria.buildingClass = filterOrConfigurator;
369
+ }
370
+ return this;
371
+ }
372
+ buildingCondition(filterOrConfigurator) {
373
+ if (typeof filterOrConfigurator === "function") {
374
+ const builder = new StringFilterBuilder();
375
+ filterOrConfigurator(builder);
376
+ this.criteria.buildingCondition = builder.build();
377
+ }
378
+ else {
379
+ this.criteria.buildingCondition = filterOrConfigurator;
380
+ }
381
+ return this;
382
+ }
383
+ buildingQuality(filterOrConfigurator) {
384
+ if (typeof filterOrConfigurator === "function") {
385
+ const builder = new StringFilterBuilder();
386
+ filterOrConfigurator(builder);
387
+ this.criteria.buildingQuality = builder.build();
388
+ }
389
+ else {
390
+ this.criteria.buildingQuality = filterOrConfigurator;
391
+ }
392
+ return this;
393
+ }
394
+ buildingType(filterOrConfigurator) {
395
+ if (typeof filterOrConfigurator === "function") {
396
+ const builder = new StringFilterBuilder();
397
+ filterOrConfigurator(builder);
398
+ this.criteria.buildingType = builder.build();
399
+ }
400
+ else {
401
+ this.criteria.buildingType = filterOrConfigurator;
402
+ }
403
+ return this;
404
+ }
405
+ driveway(filterOrConfigurator) {
406
+ if (typeof filterOrConfigurator === "function") {
407
+ const builder = new StringFilterBuilder();
408
+ filterOrConfigurator(builder);
409
+ this.criteria.driveway = builder.build();
410
+ }
411
+ else {
412
+ this.criteria.driveway = filterOrConfigurator;
413
+ }
414
+ return this;
415
+ }
416
+ exteriorWalls(filterOrConfigurator) {
417
+ if (typeof filterOrConfigurator === "function") {
418
+ const builder = new StringFilterBuilder();
419
+ filterOrConfigurator(builder);
420
+ this.criteria.exteriorWalls = builder.build();
421
+ }
422
+ else {
423
+ this.criteria.exteriorWalls = filterOrConfigurator;
424
+ }
425
+ return this;
426
+ }
427
+ floorCover(filterOrConfigurator) {
428
+ if (typeof filterOrConfigurator === "function") {
429
+ const builder = new StringFilterBuilder();
430
+ filterOrConfigurator(builder);
431
+ this.criteria.floorCover = builder.build();
432
+ }
433
+ else {
434
+ this.criteria.floorCover = filterOrConfigurator;
435
+ }
436
+ return this;
437
+ }
438
+ garageParkingSpaceCount(filterOrConfigurator) {
439
+ return this.setPropertyWithBuilderClass("garageParkingSpaceCount", filterOrConfigurator, NumericRangeFilterBuilder);
440
+ }
441
+ garage(filterOrConfigurator) {
442
+ if (typeof filterOrConfigurator === "function") {
443
+ const builder = new StringFilterBuilder();
444
+ filterOrConfigurator(builder);
445
+ this.criteria.garage = builder.build();
446
+ }
447
+ else {
448
+ this.criteria.garage = filterOrConfigurator;
449
+ }
450
+ return this;
451
+ }
452
+ heatSource(filterOrConfigurator) {
453
+ if (typeof filterOrConfigurator === "function") {
454
+ const builder = new StringFilterBuilder();
455
+ filterOrConfigurator(builder);
456
+ this.criteria.heatSource = builder.build();
457
+ }
458
+ else {
459
+ this.criteria.heatSource = filterOrConfigurator;
460
+ }
461
+ return this;
462
+ }
463
+ heatingFuelType(filterOrConfigurator) {
464
+ if (typeof filterOrConfigurator === "function") {
465
+ const builder = new StringFilterBuilder();
466
+ filterOrConfigurator(builder);
467
+ this.criteria.heatingFuelType = builder.build();
468
+ }
469
+ else {
470
+ this.criteria.heatingFuelType = filterOrConfigurator;
471
+ }
472
+ return this;
473
+ }
474
+ interiorWalls(filterOrConfigurator) {
475
+ if (typeof filterOrConfigurator === "function") {
476
+ const builder = new StringFilterBuilder();
477
+ filterOrConfigurator(builder);
478
+ this.criteria.interiorWalls = builder.build();
479
+ }
480
+ else {
481
+ this.criteria.interiorWalls = filterOrConfigurator;
482
+ }
483
+ return this;
484
+ }
485
+ buildingCount(filterOrConfigurator) {
486
+ return this.setPropertyWithBuilderClass("buildingCount", filterOrConfigurator, NumericRangeFilterBuilder);
487
+ }
488
+ bathroomCount(filterOrConfigurator) {
489
+ return this.setPropertyWithBuilderClass("bathroomCount", filterOrConfigurator, NumericRangeFilterBuilder);
490
+ }
491
+ calculatedBathroomCount(filterOrConfigurator) {
492
+ return this.setPropertyWithBuilderClass("calculatedBathroomCount", filterOrConfigurator, NumericRangeFilterBuilder);
493
+ }
494
+ bedroomCount(filterOrConfigurator) {
495
+ return this.setPropertyWithBuilderClass("bedroomCount", filterOrConfigurator, NumericRangeFilterBuilder);
496
+ }
497
+ patio(filterOrConfigurator) {
498
+ if (typeof filterOrConfigurator === "function") {
499
+ const builder = new StringFilterBuilder();
500
+ filterOrConfigurator(builder);
501
+ this.criteria.patio = builder.build();
502
+ }
503
+ else {
504
+ this.criteria.patio = filterOrConfigurator;
505
+ }
506
+ return this;
507
+ }
508
+ storyCount(filterOrConfigurator) {
509
+ return this.setPropertyWithBuilderClass("storyCount", filterOrConfigurator, NumericRangeFilterBuilder);
510
+ }
511
+ features(filterOrConfigurator) {
512
+ if (typeof filterOrConfigurator === "function") {
513
+ const builder = new StringFilterBuilder();
514
+ filterOrConfigurator(builder);
515
+ this.criteria.features = builder.build();
516
+ }
517
+ else {
518
+ this.criteria.features = filterOrConfigurator;
519
+ }
520
+ return this;
521
+ }
522
+ residentialUnitCount(filterOrConfigurator) {
523
+ return this.setPropertyWithBuilderClass("residentialUnitCount", filterOrConfigurator, NumericRangeFilterBuilder);
524
+ }
525
+ pool(filterOrConfigurator) {
526
+ if (typeof filterOrConfigurator === "function") {
527
+ const builder = new StringFilterBuilder();
528
+ filterOrConfigurator(builder);
529
+ this.criteria.pool = builder.build();
530
+ }
531
+ else {
532
+ this.criteria.pool = filterOrConfigurator;
533
+ }
534
+ return this;
535
+ }
536
+ porch(filterOrConfigurator) {
537
+ if (typeof filterOrConfigurator === "function") {
538
+ const builder = new StringFilterBuilder();
539
+ filterOrConfigurator(builder);
540
+ this.criteria.porch = builder.build();
541
+ }
542
+ else {
543
+ this.criteria.porch = filterOrConfigurator;
544
+ }
545
+ return this;
546
+ }
547
+ roofCover(filterOrConfigurator) {
548
+ if (typeof filterOrConfigurator === "function") {
549
+ const builder = new StringFilterBuilder();
550
+ filterOrConfigurator(builder);
551
+ this.criteria.roofCover = builder.build();
552
+ }
553
+ else {
554
+ this.criteria.roofCover = filterOrConfigurator;
555
+ }
556
+ return this;
557
+ }
558
+ roofType(filterOrConfigurator) {
559
+ if (typeof filterOrConfigurator === "function") {
560
+ const builder = new StringFilterBuilder();
561
+ filterOrConfigurator(builder);
562
+ this.criteria.roofType = builder.build();
563
+ }
564
+ else {
565
+ this.criteria.roofType = filterOrConfigurator;
566
+ }
567
+ return this;
568
+ }
569
+ sewer(filterOrConfigurator) {
570
+ if (typeof filterOrConfigurator === "function") {
571
+ const builder = new StringFilterBuilder();
572
+ filterOrConfigurator(builder);
573
+ this.criteria.sewer = builder.build();
574
+ }
575
+ else {
576
+ this.criteria.sewer = filterOrConfigurator;
577
+ }
578
+ return this;
579
+ }
580
+ style(filterOrConfigurator) {
581
+ if (typeof filterOrConfigurator === "function") {
582
+ const builder = new StringFilterBuilder();
583
+ filterOrConfigurator(builder);
584
+ this.criteria.style = builder.build();
585
+ }
586
+ else {
587
+ this.criteria.style = filterOrConfigurator;
588
+ }
589
+ return this;
590
+ }
591
+ roomCount(filterOrConfigurator) {
592
+ return this.setPropertyWithBuilderClass("roomCount", filterOrConfigurator, NumericRangeFilterBuilder);
593
+ }
594
+ unitCount(filterOrConfigurator) {
595
+ return this.setPropertyWithBuilderClass("unitCount", filterOrConfigurator, NumericRangeFilterBuilder);
596
+ }
597
+ constructionType(filterOrConfigurator) {
598
+ if (typeof filterOrConfigurator === "function") {
599
+ const builder = new StringFilterBuilder();
600
+ filterOrConfigurator(builder);
601
+ this.criteria.constructionType = builder.build();
602
+ }
603
+ else {
604
+ this.criteria.constructionType = filterOrConfigurator;
605
+ }
606
+ return this;
607
+ }
608
+ waterService(filterOrConfigurator) {
609
+ if (typeof filterOrConfigurator === "function") {
610
+ const builder = new StringFilterBuilder();
611
+ filterOrConfigurator(builder);
612
+ this.criteria.waterService = builder.build();
613
+ }
614
+ else {
615
+ this.criteria.waterService = filterOrConfigurator;
616
+ }
617
+ return this;
618
+ }
619
+ yearBuilt(filterOrConfigurator) {
620
+ return this.setPropertyWithBuilderClass("yearBuilt", filterOrConfigurator, NumericRangeFilterBuilder);
621
+ }
622
+ build() {
623
+ const result = { ...this.criteria };
624
+ if (this.builders.airConditioningSource) {
625
+ result.airConditioningSource =
626
+ this.builders.airConditioningSource.build();
627
+ }
628
+ if (this.builders.basementType) {
629
+ result.basementType = this.builders.basementType.build();
630
+ }
631
+ if (this.builders.totalBuildingAreaSquareFeet) {
632
+ result.totalBuildingAreaSquareFeet =
633
+ this.builders.totalBuildingAreaSquareFeet.build();
634
+ }
635
+ if (this.builders.buildingClass) {
636
+ result.buildingClass = this.builders.buildingClass.build();
637
+ }
638
+ if (this.builders.buildingCondition) {
639
+ result.buildingCondition = this.builders.buildingCondition.build();
640
+ }
641
+ if (this.builders.buildingQuality) {
642
+ result.buildingQuality = this.builders.buildingQuality.build();
643
+ }
644
+ if (this.builders.buildingType) {
645
+ result.buildingType = this.builders.buildingType.build();
646
+ }
647
+ if (this.builders.driveway) {
648
+ result.driveway = this.builders.driveway.build();
649
+ }
650
+ if (this.builders.exteriorWalls) {
651
+ result.exteriorWalls = this.builders.exteriorWalls.build();
652
+ }
653
+ if (this.builders.floorCover) {
654
+ result.floorCover = this.builders.floorCover.build();
655
+ }
656
+ if (this.builders.garageParkingSpaceCount) {
657
+ result.garageParkingSpaceCount =
658
+ this.builders.garageParkingSpaceCount.build();
659
+ }
660
+ if (this.builders.garage) {
661
+ result.garage = this.builders.garage.build();
662
+ }
663
+ if (this.builders.heatSource) {
664
+ result.heatSource = this.builders.heatSource.build();
665
+ }
666
+ if (this.builders.heatingFuelType) {
667
+ result.heatingFuelType = this.builders.heatingFuelType.build();
668
+ }
669
+ if (this.builders.interiorWalls) {
670
+ result.interiorWalls = this.builders.interiorWalls.build();
671
+ }
672
+ if (this.builders.buildingCount) {
673
+ result.buildingCount = this.builders.buildingCount.build();
674
+ }
675
+ if (this.builders.bathroomCount) {
676
+ result.bathroomCount = this.builders.bathroomCount.build();
677
+ }
678
+ if (this.builders.calculatedBathroomCount) {
679
+ result.calculatedBathroomCount =
680
+ this.builders.calculatedBathroomCount.build();
681
+ }
682
+ if (this.builders.bedroomCount) {
683
+ result.bedroomCount = this.builders.bedroomCount.build();
684
+ }
685
+ if (this.builders.patio) {
686
+ result.patio = this.builders.patio.build();
687
+ }
688
+ if (this.builders.storyCount) {
689
+ result.storyCount = this.builders.storyCount.build();
690
+ }
691
+ if (this.builders.features) {
692
+ result.features = this.builders.features.build();
693
+ }
694
+ if (this.builders.residentialUnitCount) {
695
+ result.residentialUnitCount = this.builders.residentialUnitCount.build();
696
+ }
697
+ if (this.builders.pool) {
698
+ result.pool = this.builders.pool.build();
699
+ }
700
+ if (this.builders.porch) {
701
+ result.porch = this.builders.porch.build();
702
+ }
703
+ if (this.builders.roofCover) {
704
+ result.roofCover = this.builders.roofCover.build();
705
+ }
706
+ if (this.builders.roofType) {
707
+ result.roofType = this.builders.roofType.build();
708
+ }
709
+ if (this.builders.sewer) {
710
+ result.sewer = this.builders.sewer.build();
711
+ }
712
+ if (this.builders.style) {
713
+ result.style = this.builders.style.build();
714
+ }
715
+ if (this.builders.roomCount) {
716
+ result.roomCount = this.builders.roomCount.build();
717
+ }
718
+ if (this.builders.unitCount) {
719
+ result.unitCount = this.builders.unitCount.build();
720
+ }
721
+ if (this.builders.constructionType) {
722
+ result.constructionType = this.builders.constructionType.build();
723
+ }
724
+ if (this.builders.waterService) {
725
+ result.waterService = this.builders.waterService.build();
726
+ }
727
+ if (this.builders.yearBuilt) {
728
+ result.yearBuilt = this.builders.yearBuilt.build();
729
+ }
730
+ return result;
731
+ }
732
+ }
733
+ exports.BuildingSearchCriteriaBuilder = BuildingSearchCriteriaBuilder;
734
+ /**
735
+ * Builder for comp address search criteria
736
+ */
737
+ class CompAddressSearchCriteriaBuilder {
738
+ constructor() {
739
+ this.criteria = {};
740
+ }
741
+ static from(criteria) {
742
+ const builder = new CompAddressSearchCriteriaBuilder();
743
+ builder.criteria = { ...criteria };
744
+ return builder;
745
+ }
746
+ street(value) {
747
+ this.criteria.street = value;
748
+ return this;
749
+ }
750
+ city(value) {
751
+ this.criteria.city = value;
752
+ return this;
753
+ }
754
+ state(value) {
755
+ this.criteria.state = value;
756
+ return this;
757
+ }
758
+ zip(value) {
759
+ this.criteria.zip = value;
760
+ return this;
761
+ }
762
+ hash(value) {
763
+ this.criteria.hash = value;
764
+ return this;
765
+ }
766
+ build() {
767
+ return this.criteria;
768
+ }
769
+ }
770
+ exports.CompAddressSearchCriteriaBuilder = CompAddressSearchCriteriaBuilder;
771
+ /**
772
+ * Builder for demographics search criteria
773
+ */
774
+ class DemographicsSearchCriteriaBuilder extends BaseBuilder {
775
+ constructor() {
776
+ super(...arguments);
777
+ this.criteria = {};
778
+ }
779
+ static from(criteria) {
780
+ const builder = new DemographicsSearchCriteriaBuilder();
781
+ builder.criteria = { ...criteria };
782
+ return builder;
783
+ }
784
+ age(filterOrConfigurator) {
785
+ return this.setPropertyWithBuilderClass("age", filterOrConfigurator, NumericRangeFilterBuilder);
786
+ }
787
+ householdSize(filterOrConfigurator) {
788
+ return this.setPropertyWithBuilderClass("householdSize", filterOrConfigurator, NumericRangeFilterBuilder);
789
+ }
790
+ income(filterOrConfigurator) {
791
+ return this.setPropertyWithBuilderClass("income", filterOrConfigurator, NumericRangeFilterBuilder);
792
+ }
793
+ netWorth(filterOrConfigurator) {
794
+ return this.setPropertyWithBuilderClass("netWorth", filterOrConfigurator, NumericRangeFilterBuilder);
795
+ }
796
+ discretionaryIncome(filterOrConfigurator) {
797
+ return this.setPropertyWithBuilderClass("discretionaryIncome", filterOrConfigurator, NumericRangeFilterBuilder);
798
+ }
799
+ homeownerRenter(filterOrConfigurator) {
800
+ return this.setPropertyWithBuilderClass("homeownerRenter", filterOrConfigurator, StringFilterBuilder);
801
+ }
802
+ businessOwner(filterOrConfigurator) {
803
+ return this.setPropertyWithBuilderClass("businessOwner", filterOrConfigurator, StringFilterBuilder);
804
+ }
805
+ gender(filterOrConfigurator) {
806
+ return this.setPropertyWithBuilderClass("gender", filterOrConfigurator, StringFilterBuilder);
807
+ }
808
+ hasChildren(value) {
809
+ this.criteria.hasChildren = { equals: value };
810
+ return this;
811
+ }
812
+ investments(filterOrConfigurator) {
813
+ return this.setPropertyWithBuilderClass("investments", filterOrConfigurator, StringFilterBuilder);
814
+ }
815
+ demographics(filterOrConfigurator) {
816
+ return this.setPropertyWithBuilderClass("demographics", filterOrConfigurator, StringFilterBuilder);
817
+ }
818
+ religiousAffiliation(filterOrConfigurator) {
819
+ return this.setPropertyWithBuilderClass("religiousAffiliation", filterOrConfigurator, StringFilterBuilder);
820
+ }
821
+ }
822
+ exports.DemographicsSearchCriteriaBuilder = DemographicsSearchCriteriaBuilder;
823
+ /**
824
+ * Builder for foreclosure search criteria
825
+ */
826
+ class ForeclosureSearchCriteriaBuilder {
827
+ constructor() {
828
+ this.criteria = {};
829
+ }
830
+ static from(criteria) {
831
+ const builder = new ForeclosureSearchCriteriaBuilder();
832
+ builder.criteria = { ...criteria };
833
+ return builder;
834
+ }
835
+ status(filterOrConfigurator) {
836
+ if (typeof filterOrConfigurator === "function") {
837
+ const builder = new StringFilterBuilder();
838
+ filterOrConfigurator(builder);
839
+ this.criteria.status = builder.build();
840
+ }
841
+ else {
842
+ this.criteria.status = filterOrConfigurator;
843
+ }
844
+ return this;
845
+ }
846
+ recordingDate(filterOrConfigurator) {
847
+ if (typeof filterOrConfigurator === "function") {
848
+ const builder = new DateRangeFilterBuilder();
849
+ filterOrConfigurator(builder);
850
+ this.criteria.recordingDate = builder.build();
851
+ }
852
+ else {
853
+ this.criteria.recordingDate = filterOrConfigurator;
854
+ }
855
+ return this;
856
+ }
857
+ auctionDate(filterOrConfigurator) {
858
+ if (typeof filterOrConfigurator === "function") {
859
+ const builder = new DateRangeFilterBuilder();
860
+ filterOrConfigurator(builder);
861
+ this.criteria.auctionDate = builder.build();
862
+ }
863
+ else {
864
+ this.criteria.auctionDate = filterOrConfigurator;
865
+ }
866
+ return this;
867
+ }
868
+ releaseDate(filterOrConfigurator) {
869
+ if (typeof filterOrConfigurator === "function") {
870
+ const builder = new DateRangeFilterBuilder();
871
+ filterOrConfigurator(builder);
872
+ this.criteria.releaseDate = builder.build();
873
+ }
874
+ else {
875
+ this.criteria.releaseDate = filterOrConfigurator;
876
+ }
877
+ return this;
878
+ }
879
+ auctionMinimumBidAmount(filterOrConfigurator) {
880
+ if (typeof filterOrConfigurator === "function") {
881
+ const builder = new NumericRangeFilterBuilder();
882
+ filterOrConfigurator(builder);
883
+ this.criteria.auctionMinimumBidAmount = builder.build();
884
+ }
885
+ else {
886
+ this.criteria.auctionMinimumBidAmount = filterOrConfigurator;
887
+ }
888
+ return this;
889
+ }
890
+ pastDueAmount(filterOrConfigurator) {
891
+ if (typeof filterOrConfigurator === "function") {
892
+ const builder = new NumericRangeFilterBuilder();
893
+ filterOrConfigurator(builder);
894
+ this.criteria.pastDueAmount = builder.build();
895
+ }
896
+ else {
897
+ this.criteria.pastDueAmount = filterOrConfigurator;
898
+ }
899
+ return this;
900
+ }
901
+ build() {
902
+ return this.criteria;
903
+ }
904
+ }
905
+ exports.ForeclosureSearchCriteriaBuilder = ForeclosureSearchCriteriaBuilder;
906
+ /**
907
+ * Builder for general search criteria
908
+ */
909
+ class GeneralSearchCriteriaBuilder {
910
+ constructor() {
911
+ this.criteria = {};
912
+ }
913
+ static from(criteria) {
914
+ const builder = new GeneralSearchCriteriaBuilder();
915
+ builder.criteria = { ...criteria };
916
+ return builder;
917
+ }
918
+ propertyTypeCategory(filterOrConfigurator) {
919
+ if (typeof filterOrConfigurator === "function") {
920
+ const builder = new StringFilterBuilder();
921
+ filterOrConfigurator(builder);
922
+ this.criteria.propertyTypeCategory = builder.build();
923
+ }
924
+ else {
925
+ this.criteria.propertyTypeCategory = filterOrConfigurator;
926
+ }
927
+ return this;
928
+ }
929
+ propertyTypeDetail(filterOrConfigurator) {
930
+ if (typeof filterOrConfigurator === "function") {
931
+ const builder = new StringFilterBuilder();
932
+ filterOrConfigurator(builder);
933
+ this.criteria.propertyTypeDetail = builder.build();
934
+ }
935
+ else {
936
+ this.criteria.propertyTypeDetail = filterOrConfigurator;
937
+ }
938
+ return this;
939
+ }
940
+ build() {
941
+ return this.criteria;
942
+ }
943
+ }
944
+ exports.GeneralSearchCriteriaBuilder = GeneralSearchCriteriaBuilder;
945
+ /**
946
+ * Builder for IDs search criteria
947
+ */
948
+ class IdsSearchCriteriaBuilder {
949
+ constructor() {
950
+ this.criteria = {};
951
+ }
952
+ static from(criteria) {
953
+ const builder = new IdsSearchCriteriaBuilder();
954
+ builder.criteria = { ...criteria };
955
+ return builder;
956
+ }
957
+ addressHash(filterOrConfigurator) {
958
+ if (typeof filterOrConfigurator === "function") {
959
+ const builder = new StringFilterBuilder();
960
+ filterOrConfigurator(builder);
961
+ this.criteria.addressHash = builder.build();
962
+ }
963
+ else {
964
+ this.criteria.addressHash = filterOrConfigurator;
965
+ }
966
+ return this;
967
+ }
968
+ mailingAddressHash(filterOrConfigurator) {
969
+ if (typeof filterOrConfigurator === "function") {
970
+ const builder = new StringFilterBuilder();
971
+ filterOrConfigurator(builder);
972
+ this.criteria.mailingAddressHash = builder.build();
973
+ }
974
+ else {
975
+ this.criteria.mailingAddressHash = filterOrConfigurator;
976
+ }
977
+ return this;
978
+ }
979
+ fipsCode(filterOrConfigurator) {
980
+ if (typeof filterOrConfigurator === "function") {
981
+ const builder = new StringFilterBuilder();
982
+ filterOrConfigurator(builder);
983
+ this.criteria.fipsCode = builder.build();
984
+ }
985
+ else {
986
+ this.criteria.fipsCode = filterOrConfigurator;
987
+ }
988
+ return this;
989
+ }
990
+ apn(filterOrConfigurator) {
991
+ if (typeof filterOrConfigurator === "function") {
992
+ const builder = new StringFilterBuilder();
993
+ filterOrConfigurator(builder);
994
+ this.criteria.apn = builder.build();
995
+ }
996
+ else {
997
+ this.criteria.apn = filterOrConfigurator;
998
+ }
999
+ return this;
1000
+ }
1001
+ taxId(filterOrConfigurator) {
1002
+ if (typeof filterOrConfigurator === "function") {
1003
+ const builder = new StringFilterBuilder();
1004
+ filterOrConfigurator(builder);
1005
+ this.criteria.taxId = builder.build();
1006
+ }
1007
+ else {
1008
+ this.criteria.taxId = filterOrConfigurator;
1009
+ }
1010
+ return this;
1011
+ }
1012
+ build() {
1013
+ return this.criteria;
1014
+ }
1015
+ }
1016
+ exports.IdsSearchCriteriaBuilder = IdsSearchCriteriaBuilder;
1017
+ /**
1018
+ * Builder for intel search criteria
1019
+ */
1020
+ class IntelSearchCriteriaBuilder {
1021
+ constructor() {
1022
+ this.criteria = {};
1023
+ }
1024
+ static from(criteria) {
1025
+ const builder = new IntelSearchCriteriaBuilder();
1026
+ builder.criteria = { ...criteria };
1027
+ return builder;
1028
+ }
1029
+ lastSoldDate(filterOrConfigurator) {
1030
+ if (typeof filterOrConfigurator === "function") {
1031
+ const builder = new DateRangeFilterBuilder();
1032
+ filterOrConfigurator(builder);
1033
+ this.criteria.lastSoldDate = builder.build();
1034
+ }
1035
+ else {
1036
+ this.criteria.lastSoldDate = filterOrConfigurator;
1037
+ }
1038
+ return this;
1039
+ }
1040
+ lastSoldPrice(filterOrConfigurator) {
1041
+ if (typeof filterOrConfigurator === "function") {
1042
+ const builder = new NumericRangeFilterBuilder();
1043
+ filterOrConfigurator(builder);
1044
+ this.criteria.lastSoldPrice = builder.build();
1045
+ }
1046
+ else {
1047
+ this.criteria.lastSoldPrice = filterOrConfigurator;
1048
+ }
1049
+ return this;
1050
+ }
1051
+ salePropensity(filterOrConfigurator) {
1052
+ if (typeof filterOrConfigurator === "function") {
1053
+ const builder = new NumericRangeFilterBuilder();
1054
+ filterOrConfigurator(builder);
1055
+ this.criteria.salePropensity = builder.build();
1056
+ }
1057
+ else {
1058
+ this.criteria.salePropensity = filterOrConfigurator;
1059
+ }
1060
+ return this;
1061
+ }
1062
+ build() {
1063
+ return this.criteria;
1064
+ }
1065
+ }
1066
+ exports.IntelSearchCriteriaBuilder = IntelSearchCriteriaBuilder;
1067
+ /**
1068
+ * Builder for involuntary lien search criteria
1069
+ */
1070
+ class InvoluntaryLienSearchCriteriaBuilder {
1071
+ constructor() {
1072
+ this.criteria = {};
1073
+ }
1074
+ static from(criteria) {
1075
+ const builder = new InvoluntaryLienSearchCriteriaBuilder();
1076
+ builder.criteria = { ...criteria };
1077
+ return builder;
1078
+ }
1079
+ lienType(filterOrConfigurator) {
1080
+ if (typeof filterOrConfigurator === "function") {
1081
+ const builder = new StringFilterBuilder();
1082
+ filterOrConfigurator(builder);
1083
+ this.criteria.lienType = builder.build();
1084
+ }
1085
+ else {
1086
+ this.criteria.lienType = filterOrConfigurator;
1087
+ }
1088
+ return this;
1089
+ }
1090
+ lienTypeCode(filterOrConfigurator) {
1091
+ if (typeof filterOrConfigurator === "function") {
1092
+ const builder = new StringFilterBuilder();
1093
+ filterOrConfigurator(builder);
1094
+ this.criteria.lienTypeCode = builder.build();
1095
+ }
1096
+ else {
1097
+ this.criteria.lienTypeCode = filterOrConfigurator;
1098
+ }
1099
+ return this;
1100
+ }
1101
+ documentType(filterOrConfigurator) {
1102
+ if (typeof filterOrConfigurator === "function") {
1103
+ const builder = new StringFilterBuilder();
1104
+ filterOrConfigurator(builder);
1105
+ this.criteria.documentType = builder.build();
1106
+ }
1107
+ else {
1108
+ this.criteria.documentType = filterOrConfigurator;
1109
+ }
1110
+ return this;
1111
+ }
1112
+ documentTypeCode(filterOrConfigurator) {
1113
+ if (typeof filterOrConfigurator === "function") {
1114
+ const builder = new StringFilterBuilder();
1115
+ filterOrConfigurator(builder);
1116
+ this.criteria.documentTypeCode = builder.build();
1117
+ }
1118
+ else {
1119
+ this.criteria.documentTypeCode = filterOrConfigurator;
1120
+ }
1121
+ return this;
1122
+ }
1123
+ recordingDate(filterOrConfigurator) {
1124
+ if (typeof filterOrConfigurator === "function") {
1125
+ const builder = new DateRangeFilterBuilder();
1126
+ filterOrConfigurator(builder);
1127
+ this.criteria.recordingDate = builder.build();
1128
+ }
1129
+ else {
1130
+ this.criteria.recordingDate = filterOrConfigurator;
1131
+ }
1132
+ return this;
1133
+ }
1134
+ filingDate(filterOrConfigurator) {
1135
+ if (typeof filterOrConfigurator === "function") {
1136
+ const builder = new DateRangeFilterBuilder();
1137
+ filterOrConfigurator(builder);
1138
+ this.criteria.filingDate = builder.build();
1139
+ }
1140
+ else {
1141
+ this.criteria.filingDate = filterOrConfigurator;
1142
+ }
1143
+ return this;
1144
+ }
1145
+ lienAmount(filterOrConfigurator) {
1146
+ if (typeof filterOrConfigurator === "function") {
1147
+ const builder = new NumericRangeFilterBuilder();
1148
+ filterOrConfigurator(builder);
1149
+ this.criteria.lienAmount = builder.build();
1150
+ }
1151
+ else {
1152
+ this.criteria.lienAmount = filterOrConfigurator;
1153
+ }
1154
+ return this;
1155
+ }
1156
+ build() {
1157
+ return this.criteria;
1158
+ }
1159
+ }
1160
+ exports.InvoluntaryLienSearchCriteriaBuilder = InvoluntaryLienSearchCriteriaBuilder;
1161
+ /**
1162
+ * Builder for legal search criteria
1163
+ */
1164
+ class LegalSearchCriteriaBuilder {
1165
+ constructor() {
1166
+ this.criteria = {};
1167
+ }
1168
+ static from(criteria) {
1169
+ const builder = new LegalSearchCriteriaBuilder();
1170
+ builder.criteria = { ...criteria };
1171
+ return builder;
1172
+ }
1173
+ subdivisionName(filterOrConfigurator) {
1174
+ if (typeof filterOrConfigurator === "function") {
1175
+ const builder = new StringFilterBuilder();
1176
+ filterOrConfigurator(builder);
1177
+ this.criteria.subdivisionName = builder.build();
1178
+ }
1179
+ else {
1180
+ this.criteria.subdivisionName = filterOrConfigurator;
1181
+ }
1182
+ return this;
1183
+ }
1184
+ build() {
1185
+ return this.criteria;
1186
+ }
1187
+ }
1188
+ exports.LegalSearchCriteriaBuilder = LegalSearchCriteriaBuilder;
1189
+ /**
1190
+ * Builder for listing search criteria
1191
+ */
1192
+ class ListingSearchCriteriaBuilder {
1193
+ constructor() {
1194
+ this.criteria = {};
1195
+ }
1196
+ static from(criteria) {
1197
+ const builder = new ListingSearchCriteriaBuilder();
1198
+ builder.criteria = { ...criteria };
1199
+ return builder;
1200
+ }
1201
+ description(filterOrConfigurator) {
1202
+ if (typeof filterOrConfigurator === "function") {
1203
+ const builder = new StringFilterBuilder();
1204
+ filterOrConfigurator(builder);
1205
+ this.criteria.description = builder.build();
1206
+ }
1207
+ else {
1208
+ this.criteria.description = filterOrConfigurator;
1209
+ }
1210
+ return this;
1211
+ }
1212
+ price(filterOrConfigurator) {
1213
+ if (typeof filterOrConfigurator === "function") {
1214
+ const builder = new NumericRangeFilterBuilder();
1215
+ filterOrConfigurator(builder);
1216
+ this.criteria.price = builder.build();
1217
+ }
1218
+ else {
1219
+ this.criteria.price = filterOrConfigurator;
1220
+ }
1221
+ return this;
1222
+ }
1223
+ daysOnMarket(filterOrConfigurator) {
1224
+ if (typeof filterOrConfigurator === "function") {
1225
+ const builder = new NumericRangeFilterBuilder();
1226
+ filterOrConfigurator(builder);
1227
+ this.criteria.daysOnMarket = builder.build();
1228
+ }
1229
+ else {
1230
+ this.criteria.daysOnMarket = filterOrConfigurator;
1231
+ }
1232
+ return this;
1233
+ }
1234
+ status(filterOrConfigurator) {
1235
+ if (typeof filterOrConfigurator === "function") {
1236
+ const builder = new StringFilterBuilder();
1237
+ filterOrConfigurator(builder);
1238
+ this.criteria.status = builder.build();
1239
+ }
1240
+ else {
1241
+ this.criteria.status = filterOrConfigurator;
1242
+ }
1243
+ return this;
1244
+ }
1245
+ statusCategory(filterOrConfigurator) {
1246
+ if (typeof filterOrConfigurator === "function") {
1247
+ const builder = new StringFilterBuilder();
1248
+ filterOrConfigurator(builder);
1249
+ this.criteria.statusCategory = builder.build();
1250
+ }
1251
+ else {
1252
+ this.criteria.statusCategory = filterOrConfigurator;
1253
+ }
1254
+ return this;
1255
+ }
1256
+ failedListingDate(filterOrConfigurator) {
1257
+ if (typeof filterOrConfigurator === "function") {
1258
+ const builder = new DateRangeFilterBuilder();
1259
+ filterOrConfigurator(builder);
1260
+ this.criteria.failedListingDate = builder.build();
1261
+ }
1262
+ else {
1263
+ this.criteria.failedListingDate = filterOrConfigurator;
1264
+ }
1265
+ return this;
1266
+ }
1267
+ soldDate(filterOrConfigurator) {
1268
+ if (typeof filterOrConfigurator === "function") {
1269
+ const builder = new DateRangeFilterBuilder();
1270
+ filterOrConfigurator(builder);
1271
+ this.criteria.soldDate = builder.build();
1272
+ }
1273
+ else {
1274
+ this.criteria.soldDate = filterOrConfigurator;
1275
+ }
1276
+ return this;
1277
+ }
1278
+ build() {
1279
+ return this.criteria;
1280
+ }
1281
+ }
1282
+ exports.ListingSearchCriteriaBuilder = ListingSearchCriteriaBuilder;
1283
+ /**
1284
+ * Builder for lot search criteria
1285
+ */
1286
+ class LotSearchCriteriaBuilder {
1287
+ constructor() {
1288
+ this.criteria = {};
1289
+ }
1290
+ static from(criteria) {
1291
+ const builder = new LotSearchCriteriaBuilder();
1292
+ builder.criteria = { ...criteria };
1293
+ return builder;
1294
+ }
1295
+ lotSizeAcres(filterOrConfigurator) {
1296
+ if (typeof filterOrConfigurator === "function") {
1297
+ const builder = new NumericRangeFilterBuilder();
1298
+ filterOrConfigurator(builder);
1299
+ this.criteria.lotSizeAcres = builder.build();
1300
+ }
1301
+ else {
1302
+ this.criteria.lotSizeAcres = filterOrConfigurator;
1303
+ }
1304
+ return this;
1305
+ }
1306
+ lotDepthFeet(filterOrConfigurator) {
1307
+ if (typeof filterOrConfigurator === "function") {
1308
+ const builder = new NumericRangeFilterBuilder();
1309
+ filterOrConfigurator(builder);
1310
+ this.criteria.lotDepthFeet = builder.build();
1311
+ }
1312
+ else {
1313
+ this.criteria.lotDepthFeet = filterOrConfigurator;
1314
+ }
1315
+ return this;
1316
+ }
1317
+ lotFrontageFeet(filterOrConfigurator) {
1318
+ if (typeof filterOrConfigurator === "function") {
1319
+ const builder = new NumericRangeFilterBuilder();
1320
+ filterOrConfigurator(builder);
1321
+ this.criteria.lotFrontageFeet = builder.build();
1322
+ }
1323
+ else {
1324
+ this.criteria.lotFrontageFeet = filterOrConfigurator;
1325
+ }
1326
+ return this;
1327
+ }
1328
+ lotSizeSquareFeet(filterOrConfigurator) {
1329
+ if (typeof filterOrConfigurator === "function") {
1330
+ const builder = new NumericRangeFilterBuilder();
1331
+ filterOrConfigurator(builder);
1332
+ this.criteria.lotSizeSquareFeet = builder.build();
1333
+ }
1334
+ else {
1335
+ this.criteria.lotSizeSquareFeet = filterOrConfigurator;
1336
+ }
1337
+ return this;
1338
+ }
1339
+ zoningCode(filterOrConfigurator) {
1340
+ if (typeof filterOrConfigurator === "function") {
1341
+ const builder = new StringFilterBuilder();
1342
+ filterOrConfigurator(builder);
1343
+ this.criteria.zoningCode = builder.build();
1344
+ }
1345
+ else {
1346
+ this.criteria.zoningCode = filterOrConfigurator;
1347
+ }
1348
+ return this;
1349
+ }
1350
+ build() {
1351
+ return this.criteria;
1352
+ }
1353
+ }
1354
+ exports.LotSearchCriteriaBuilder = LotSearchCriteriaBuilder;
1355
+ /**
1356
+ * Builder for open lien search criteria
1357
+ */
1358
+ class OpenLienSearchCriteriaBuilder {
1359
+ constructor() {
1360
+ this.criteria = {};
1361
+ }
1362
+ static from(criteria) {
1363
+ const builder = new OpenLienSearchCriteriaBuilder();
1364
+ builder.criteria = { ...criteria };
1365
+ return builder;
1366
+ }
1367
+ allLoanTypes(filter) {
1368
+ this.criteria.allLoanTypes = filter;
1369
+ return this;
1370
+ }
1371
+ juniorLoanTypes(filter) {
1372
+ this.criteria.juniorLoanTypes = filter;
1373
+ return this;
1374
+ }
1375
+ totalOpenLienCount(filter) {
1376
+ this.criteria.totalOpenLienCount = filter;
1377
+ return this;
1378
+ }
1379
+ totalOpenLienBalance(filter) {
1380
+ this.criteria.totalOpenLienBalance = filter;
1381
+ return this;
1382
+ }
1383
+ firstLoanLtv(filter) {
1384
+ this.criteria.firstLoanLtv = filter;
1385
+ return this;
1386
+ }
1387
+ firstLoanInterestRate(filter) {
1388
+ this.criteria.firstLoanInterestRate = filter;
1389
+ return this;
1390
+ }
1391
+ secondLoanInterestRate(filter) {
1392
+ this.criteria.secondLoanInterestRate = filter;
1393
+ return this;
1394
+ }
1395
+ thirdLoanInterestRate(filter) {
1396
+ this.criteria.thirdLoanInterestRate = filter;
1397
+ return this;
1398
+ }
1399
+ fourthLoanInterestRate(filter) {
1400
+ this.criteria.fourthLoanInterestRate = filter;
1401
+ return this;
1402
+ }
1403
+ firstLoanType(filter) {
1404
+ this.criteria.firstLoanType = filter;
1405
+ return this;
1406
+ }
1407
+ secondLoanType(filter) {
1408
+ this.criteria.secondLoanType = filter;
1409
+ return this;
1410
+ }
1411
+ thirdLoanType(filter) {
1412
+ this.criteria.thirdLoanType = filter;
1413
+ return this;
1414
+ }
1415
+ fourthLoanType(filter) {
1416
+ this.criteria.fourthLoanType = filter;
1417
+ return this;
1418
+ }
1419
+ firstLoanRecordingDate(filter) {
1420
+ this.criteria.firstLoanRecordingDate = filter;
1421
+ return this;
1422
+ }
1423
+ lastLoanRecordingDate(filter) {
1424
+ this.criteria.lastLoanRecordingDate = filter;
1425
+ return this;
1426
+ }
1427
+ build() {
1428
+ return this.criteria;
1429
+ }
1430
+ }
1431
+ exports.OpenLienSearchCriteriaBuilder = OpenLienSearchCriteriaBuilder;
1432
+ /**
1433
+ * Builder for owner search criteria
1434
+ */
1435
+ class OwnerSearchCriteriaBuilder {
1436
+ constructor() {
1437
+ this.criteria = {};
1438
+ }
1439
+ static from(criteria) {
1440
+ const builder = new OwnerSearchCriteriaBuilder();
1441
+ builder.criteria = { ...criteria };
1442
+ return builder;
1443
+ }
1444
+ firstName(filter) {
1445
+ this.criteria.firstName = filter;
1446
+ return this;
1447
+ }
1448
+ lastName(filter) {
1449
+ this.criteria.lastName = filter;
1450
+ return this;
1451
+ }
1452
+ ownerOccupied(value) {
1453
+ this.criteria.ownerOccupied = { equals: value };
1454
+ return this;
1455
+ }
1456
+ mailingStreet(filter) {
1457
+ this.criteria.mailingStreet = filter;
1458
+ return this;
1459
+ }
1460
+ mailingCity(filter) {
1461
+ this.criteria.mailingCity = filter;
1462
+ return this;
1463
+ }
1464
+ mailingState(filter) {
1465
+ this.criteria.mailingState = filter;
1466
+ return this;
1467
+ }
1468
+ mailingZip(filter) {
1469
+ this.criteria.mailingZip = filter;
1470
+ return this;
1471
+ }
1472
+ ownerStatusType(filter) {
1473
+ this.criteria.ownerStatusType = filter;
1474
+ return this;
1475
+ }
1476
+ lengthOfResidenceMonths(filter) {
1477
+ this.criteria.lengthOfResidenceMonths = filter;
1478
+ return this;
1479
+ }
1480
+ lengthOfResidenceYears(filter) {
1481
+ this.criteria.lengthOfResidenceYears = filter;
1482
+ return this;
1483
+ }
1484
+ ownershipStartDate(filter) {
1485
+ this.criteria.ownershipStartDate = filter;
1486
+ return this;
1487
+ }
1488
+ mailingAddressHash(filter) {
1489
+ this.criteria.mailingAddressHash = filter;
1490
+ return this;
1491
+ }
1492
+ build() {
1493
+ return this.criteria;
1494
+ }
1495
+ }
1496
+ exports.OwnerSearchCriteriaBuilder = OwnerSearchCriteriaBuilder;
1497
+ /**
1498
+ * Builder for permit search criteria
1499
+ */
1500
+ class PermitSearchCriteriaBuilder {
1501
+ constructor() {
1502
+ this.criteria = {};
1503
+ }
1504
+ static from(criteria) {
1505
+ const builder = new PermitSearchCriteriaBuilder();
1506
+ builder.criteria = { ...criteria };
1507
+ return builder;
1508
+ }
1509
+ permitCount(filter) {
1510
+ this.criteria.permitCount = filter;
1511
+ return this;
1512
+ }
1513
+ latestDate(filter) {
1514
+ this.criteria.latestDate = filter;
1515
+ return this;
1516
+ }
1517
+ earliestDate(filter) {
1518
+ this.criteria.earliestDate = filter;
1519
+ return this;
1520
+ }
1521
+ totalJobValue(filter) {
1522
+ this.criteria.totalJobValue = filter;
1523
+ return this;
1524
+ }
1525
+ allTags(filter) {
1526
+ this.criteria.allTags = filter;
1527
+ return this;
1528
+ }
1529
+ build() {
1530
+ return this.criteria;
1531
+ }
1532
+ }
1533
+ exports.PermitSearchCriteriaBuilder = PermitSearchCriteriaBuilder;
1534
+ /**
1535
+ * Builder for property owner profile search criteria
1536
+ */
1537
+ class PropertyOwnerProfileSearchCriteriaBuilder {
1538
+ constructor() {
1539
+ this.criteria = {};
1540
+ }
1541
+ static from(criteria) {
1542
+ const builder = new PropertyOwnerProfileSearchCriteriaBuilder();
1543
+ builder.criteria = { ...criteria };
1544
+ return builder;
1545
+ }
1546
+ propertiesCount(filter) {
1547
+ this.criteria.propertiesCount = filter;
1548
+ return this;
1549
+ }
1550
+ propertiesTotalEquity(filter) {
1551
+ this.criteria.propertiesTotalEquity = filter;
1552
+ return this;
1553
+ }
1554
+ propertiesTotalEstimatedValue(filter) {
1555
+ this.criteria.propertiesTotalEstimatedValue = filter;
1556
+ return this;
1557
+ }
1558
+ mortgagesTotalBalance(filter) {
1559
+ this.criteria.mortgagesTotalBalance = filter;
1560
+ return this;
1561
+ }
1562
+ mortgagesCount(filter) {
1563
+ this.criteria.mortgagesCount = filter;
1564
+ return this;
1565
+ }
1566
+ mortgagesAverageBalance(filter) {
1567
+ this.criteria.mortgagesAverageBalance = filter;
1568
+ return this;
1569
+ }
1570
+ build() {
1571
+ return this.criteria;
1572
+ }
1573
+ }
1574
+ exports.PropertyOwnerProfileSearchCriteriaBuilder = PropertyOwnerProfileSearchCriteriaBuilder;
1575
+ /**
1576
+ * Builder for sale search criteria
1577
+ */
1578
+ class SaleSearchCriteriaBuilder {
1579
+ constructor() {
1580
+ this.criteria = {};
1581
+ }
1582
+ static from(criteria) {
1583
+ const builder = new SaleSearchCriteriaBuilder();
1584
+ builder.criteria = { ...criteria };
1585
+ return builder;
1586
+ }
1587
+ lastSalePrice(filter) {
1588
+ this.criteria.lastSalePrice = filter;
1589
+ return this;
1590
+ }
1591
+ lastSaleDate(filter) {
1592
+ this.criteria.lastSaleDate = filter;
1593
+ return this;
1594
+ }
1595
+ lastSaleDocumentType(filter) {
1596
+ this.criteria.lastSaleDocumentType = filter;
1597
+ return this;
1598
+ }
1599
+ lastSalePricePerSquareFoot(filter) {
1600
+ this.criteria.lastSalePricePerSquareFoot = filter;
1601
+ return this;
1602
+ }
1603
+ flipLength(filter) {
1604
+ this.criteria.flipLength = filter;
1605
+ return this;
1606
+ }
1607
+ flipLengthCategory(filter) {
1608
+ this.criteria.flipLengthCategory = filter;
1609
+ return this;
1610
+ }
1611
+ flipProfit(filter) {
1612
+ this.criteria.flipProfit = filter;
1613
+ return this;
1614
+ }
1615
+ build() {
1616
+ return this.criteria;
1617
+ }
1618
+ }
1619
+ exports.SaleSearchCriteriaBuilder = SaleSearchCriteriaBuilder;
1620
+ /**
1621
+ * Builder for tax search criteria
1622
+ */
1623
+ class TaxSearchCriteriaBuilder {
1624
+ constructor() {
1625
+ this.criteria = {};
1626
+ }
1627
+ static from(criteria) {
1628
+ const builder = new TaxSearchCriteriaBuilder();
1629
+ builder.criteria = { ...criteria };
1630
+ return builder;
1631
+ }
1632
+ taxDelinquentYear(filter) {
1633
+ this.criteria.taxDelinquentYear = filter;
1634
+ return this;
1635
+ }
1636
+ build() {
1637
+ return this.criteria;
1638
+ }
1639
+ }
1640
+ exports.TaxSearchCriteriaBuilder = TaxSearchCriteriaBuilder;
1641
+ /**
1642
+ * Builder for valuation search criteria
1643
+ */
1644
+ class ValuationSearchCriteriaBuilder {
1645
+ constructor() {
1646
+ this.criteria = {};
1647
+ }
1648
+ static from(criteria) {
1649
+ const builder = new ValuationSearchCriteriaBuilder();
1650
+ builder.criteria = { ...criteria };
1651
+ return builder;
1652
+ }
1653
+ estimatedValue(filter) {
1654
+ this.criteria.estimatedValue = filter;
1655
+ return this;
1656
+ }
1657
+ ltv(filter) {
1658
+ this.criteria.ltv = filter;
1659
+ return this;
1660
+ }
1661
+ equityPercent(filter) {
1662
+ this.criteria.equityPercent = filter;
1663
+ return this;
1664
+ }
1665
+ build() {
1666
+ return this.criteria;
1667
+ }
1668
+ }
1669
+ exports.ValuationSearchCriteriaBuilder = ValuationSearchCriteriaBuilder;
1670
+ /**
1671
+ * Builder for OR search criteria
1672
+ */
1673
+ class OrSearchCriteriaBuilder {
1674
+ constructor() {
1675
+ this.criteria = {};
1676
+ }
1677
+ static from(criteria) {
1678
+ const builder = new OrSearchCriteriaBuilder();
1679
+ builder.criteria = { ...criteria };
1680
+ return builder;
1681
+ }
1682
+ listing() {
1683
+ return {
1684
+ status: (filter) => {
1685
+ if (!this.criteria.listing) {
1686
+ this.criteria.listing = {};
1687
+ }
1688
+ this.criteria.listing.status = filter;
1689
+ return this.criteria.listing.status;
1690
+ },
1691
+ };
1692
+ }
1693
+ sale() {
1694
+ return {
1695
+ lastSaleDate: (filter) => {
1696
+ if (!this.criteria.sale) {
1697
+ this.criteria.sale = {};
1698
+ }
1699
+ this.criteria.sale.lastSaleDate = filter;
1700
+ return this.criteria.sale.lastSaleDate;
1701
+ },
1702
+ };
1703
+ }
1704
+ build() {
1705
+ return this.criteria;
1706
+ }
1707
+ }
1708
+ exports.OrSearchCriteriaBuilder = OrSearchCriteriaBuilder;
1709
+ /**
1710
+ * Main builder for search criteria
1711
+ *
1712
+ * Note: The API requires a query field (returns 400 without it), even when
1713
+ * address filters are provided. Query appears to be a geographic scope string
1714
+ * (e.g., "US", "AZ", "Maricopa County, AZ"). You can set it via constructor
1715
+ * or using the query() method.
1716
+ */
1717
+ class SearchCriteriaBuilder extends BaseBuilder {
1718
+ /**
1719
+ * Creates a new SearchCriteriaBuilder
1720
+ *
1721
+ * @param query - Geographic scope for the search (e.g., "US", "AZ", "Maricopa County, AZ").
1722
+ * This is required by the API even when address filters are provided.
1723
+ * The query defines the geographic boundary/scope for property searches.
1724
+ */
1725
+ constructor(query) {
1726
+ super();
1727
+ this.criteria = {};
1728
+ this.criteria.query = query;
1729
+ }
1730
+ static from(criteria) {
1731
+ const builder = new SearchCriteriaBuilder(criteria.query);
1732
+ builder.criteria = { ...criteria };
1733
+ return builder;
1734
+ }
1735
+ /**
1736
+ * Sets the geographic scope for the search
1737
+ *
1738
+ * @param value - Geographic scope string (e.g., "US", "AZ", "Maricopa County, AZ").
1739
+ * This defines the geographic boundary/scope for property searches.
1740
+ * Required by the API even when address filters are provided.
1741
+ * @returns This builder instance for method chaining
1742
+ */
1743
+ query(value) {
1744
+ this.criteria.query = value;
1745
+ return this;
1746
+ }
1747
+ quickList(value) {
1748
+ this.criteria.quickList = value;
1749
+ return this;
1750
+ }
1751
+ quickLists(values) {
1752
+ this.criteria.quickLists = values;
1753
+ return this;
1754
+ }
1755
+ orQuickLists(values) {
1756
+ this.criteria.orQuickLists = values;
1757
+ return this;
1758
+ }
1759
+ address(criteriaOrConfigurator) {
1760
+ return this.setPropertyWithBuilderClass("address", criteriaOrConfigurator, AddressSearchCriteriaBuilder);
1761
+ }
1762
+ assessment(criteriaOrConfigurator) {
1763
+ if (typeof criteriaOrConfigurator === "function") {
1764
+ const builder = new AssessmentSearchCriteriaBuilder();
1765
+ criteriaOrConfigurator(builder);
1766
+ this.criteria.assessment = builder.build();
1767
+ }
1768
+ else {
1769
+ this.criteria.assessment = criteriaOrConfigurator;
1770
+ }
1771
+ return this;
1772
+ }
1773
+ building(criteriaOrConfigurator) {
1774
+ if (typeof criteriaOrConfigurator === "function") {
1775
+ const builder = new BuildingSearchCriteriaBuilder();
1776
+ criteriaOrConfigurator(builder);
1777
+ this.criteria.building = builder.build();
1778
+ }
1779
+ else {
1780
+ this.criteria.building = criteriaOrConfigurator;
1781
+ }
1782
+ return this;
1783
+ }
1784
+ compAddress(criteriaOrConfigurator) {
1785
+ if (typeof criteriaOrConfigurator === "function") {
1786
+ const builder = new CompAddressSearchCriteriaBuilder();
1787
+ criteriaOrConfigurator(builder);
1788
+ this.criteria.compAddress = builder.build();
1789
+ }
1790
+ else {
1791
+ this.criteria.compAddress = criteriaOrConfigurator;
1792
+ }
1793
+ return this;
1794
+ }
1795
+ demographics(criteriaOrConfigurator) {
1796
+ if (typeof criteriaOrConfigurator === "function") {
1797
+ const builder = new DemographicsSearchCriteriaBuilder();
1798
+ criteriaOrConfigurator(builder);
1799
+ this.criteria.demographics = builder.build();
1800
+ }
1801
+ else {
1802
+ this.criteria.demographics = criteriaOrConfigurator;
1803
+ }
1804
+ return this;
1805
+ }
1806
+ foreclosure(criteriaOrConfigurator) {
1807
+ if (typeof criteriaOrConfigurator === "function") {
1808
+ const builder = new ForeclosureSearchCriteriaBuilder();
1809
+ criteriaOrConfigurator(builder);
1810
+ this.criteria.foreclosure = builder.build();
1811
+ }
1812
+ else {
1813
+ this.criteria.foreclosure = criteriaOrConfigurator;
1814
+ }
1815
+ return this;
1816
+ }
1817
+ general(criteriaOrConfigurator) {
1818
+ if (typeof criteriaOrConfigurator === "function") {
1819
+ const builder = new GeneralSearchCriteriaBuilder();
1820
+ criteriaOrConfigurator(builder);
1821
+ this.criteria.general = builder.build();
1822
+ }
1823
+ else {
1824
+ this.criteria.general = criteriaOrConfigurator;
1825
+ }
1826
+ return this;
1827
+ }
1828
+ ids(criteriaOrConfigurator) {
1829
+ if (typeof criteriaOrConfigurator === "function") {
1830
+ const builder = new IdsSearchCriteriaBuilder();
1831
+ criteriaOrConfigurator(builder);
1832
+ this.criteria.ids = builder.build();
1833
+ }
1834
+ else {
1835
+ this.criteria.ids = criteriaOrConfigurator;
1836
+ }
1837
+ return this;
1838
+ }
1839
+ intel(criteriaOrConfigurator) {
1840
+ if (typeof criteriaOrConfigurator === "function") {
1841
+ const builder = new IntelSearchCriteriaBuilder();
1842
+ criteriaOrConfigurator(builder);
1843
+ this.criteria.intel = builder.build();
1844
+ }
1845
+ else {
1846
+ this.criteria.intel = criteriaOrConfigurator;
1847
+ }
1848
+ return this;
1849
+ }
1850
+ involuntaryLien(criteriaOrConfigurator) {
1851
+ if (typeof criteriaOrConfigurator === "function") {
1852
+ const builder = new InvoluntaryLienSearchCriteriaBuilder();
1853
+ criteriaOrConfigurator(builder);
1854
+ this.criteria.involuntaryLien = builder.build();
1855
+ }
1856
+ else {
1857
+ this.criteria.involuntaryLien = criteriaOrConfigurator;
1858
+ }
1859
+ return this;
1860
+ }
1861
+ legal(criteriaOrConfigurator) {
1862
+ if (typeof criteriaOrConfigurator === "function") {
1863
+ const builder = new LegalSearchCriteriaBuilder();
1864
+ criteriaOrConfigurator(builder);
1865
+ this.criteria.legal = builder.build();
1866
+ }
1867
+ else {
1868
+ this.criteria.legal = criteriaOrConfigurator;
1869
+ }
1870
+ return this;
1871
+ }
1872
+ listing(criteriaOrConfigurator) {
1873
+ if (typeof criteriaOrConfigurator === "function") {
1874
+ const builder = new ListingSearchCriteriaBuilder();
1875
+ criteriaOrConfigurator(builder);
1876
+ this.criteria.listing = builder.build();
1877
+ }
1878
+ else {
1879
+ this.criteria.listing = criteriaOrConfigurator;
1880
+ }
1881
+ return this;
1882
+ }
1883
+ lot(criteriaOrConfigurator) {
1884
+ if (typeof criteriaOrConfigurator === "function") {
1885
+ const builder = new LotSearchCriteriaBuilder();
1886
+ criteriaOrConfigurator(builder);
1887
+ this.criteria.lot = builder.build();
1888
+ }
1889
+ else {
1890
+ this.criteria.lot = criteriaOrConfigurator;
1891
+ }
1892
+ return this;
1893
+ }
1894
+ openLien(criteriaOrConfigurator) {
1895
+ if (typeof criteriaOrConfigurator === "function") {
1896
+ const builder = new OpenLienSearchCriteriaBuilder();
1897
+ criteriaOrConfigurator(builder);
1898
+ this.criteria.openLien = builder.build();
1899
+ }
1900
+ else {
1901
+ this.criteria.openLien = criteriaOrConfigurator;
1902
+ }
1903
+ return this;
1904
+ }
1905
+ owner(criteriaOrConfigurator) {
1906
+ if (typeof criteriaOrConfigurator === "function") {
1907
+ const builder = new OwnerSearchCriteriaBuilder();
1908
+ criteriaOrConfigurator(builder);
1909
+ this.criteria.owner = builder.build();
1910
+ }
1911
+ else {
1912
+ this.criteria.owner = criteriaOrConfigurator;
1913
+ }
1914
+ return this;
1915
+ }
1916
+ permit(criteriaOrConfigurator) {
1917
+ if (typeof criteriaOrConfigurator === "function") {
1918
+ const builder = new PermitSearchCriteriaBuilder();
1919
+ criteriaOrConfigurator(builder);
1920
+ this.criteria.permit = builder.build();
1921
+ }
1922
+ else {
1923
+ this.criteria.permit = criteriaOrConfigurator;
1924
+ }
1925
+ return this;
1926
+ }
1927
+ propertyOwnerProfile(criteriaOrConfigurator) {
1928
+ if (typeof criteriaOrConfigurator === "function") {
1929
+ const builder = new PropertyOwnerProfileSearchCriteriaBuilder();
1930
+ criteriaOrConfigurator(builder);
1931
+ this.criteria.propertyOwnerProfile = builder.build();
1932
+ }
1933
+ else {
1934
+ this.criteria.propertyOwnerProfile = criteriaOrConfigurator;
1935
+ }
1936
+ return this;
1937
+ }
1938
+ sale(criteriaOrConfigurator) {
1939
+ if (typeof criteriaOrConfigurator === "function") {
1940
+ const builder = new SaleSearchCriteriaBuilder();
1941
+ criteriaOrConfigurator(builder);
1942
+ this.criteria.sale = builder.build();
1943
+ }
1944
+ else {
1945
+ this.criteria.sale = criteriaOrConfigurator;
1946
+ }
1947
+ return this;
1948
+ }
1949
+ tax(criteriaOrConfigurator) {
1950
+ if (typeof criteriaOrConfigurator === "function") {
1951
+ const builder = new TaxSearchCriteriaBuilder();
1952
+ criteriaOrConfigurator(builder);
1953
+ this.criteria.tax = builder.build();
1954
+ }
1955
+ else {
1956
+ this.criteria.tax = criteriaOrConfigurator;
1957
+ }
1958
+ return this;
1959
+ }
1960
+ valuation(criteriaOrConfigurator) {
1961
+ if (typeof criteriaOrConfigurator === "function") {
1962
+ const builder = new ValuationSearchCriteriaBuilder();
1963
+ criteriaOrConfigurator(builder);
1964
+ this.criteria.valuation = builder.build();
1965
+ }
1966
+ else {
1967
+ this.criteria.valuation = criteriaOrConfigurator;
1968
+ }
1969
+ return this;
1970
+ }
1971
+ or(criteria) {
1972
+ this.criteria.or = criteria;
1973
+ return this;
1974
+ }
1975
+ }
1976
+ exports.SearchCriteriaBuilder = SearchCriteriaBuilder;
1977
+ /**
1978
+ * Builder for delivery configuration
1979
+ */
1980
+ class DeliveryConfigBuilder {
1981
+ constructor() {
1982
+ this.config = {};
1983
+ }
1984
+ static from(config) {
1985
+ const builder = new DeliveryConfigBuilder();
1986
+ builder.config = { ...config };
1987
+ return builder;
1988
+ }
1989
+ webhook(url, headers, errorUrl) {
1990
+ this.config.type = "webhook";
1991
+ this.config.url = url;
1992
+ if (errorUrl) {
1993
+ this.config.errorUrl = errorUrl;
1994
+ }
1995
+ if (headers) {
1996
+ this.config.headers = headers;
1997
+ }
1998
+ return this;
1999
+ }
2000
+ kinesis(streamName, region, iamAccessKeyId, iamSecretAccessKey) {
2001
+ this.config.type = "kinesis";
2002
+ this.config.streamName = streamName;
2003
+ this.config.region = region;
2004
+ this.config.iamAccessKeyId = iamAccessKeyId;
2005
+ this.config.iamSecretAccessKey = iamSecretAccessKey;
2006
+ return this;
2007
+ }
2008
+ build() {
2009
+ if (!this.config.type) {
2010
+ throw new Error("Delivery type (webhook or kinesis) is required");
2011
+ }
2012
+ if (this.config.type === "webhook" && !this.config.url) {
2013
+ throw new Error("URL is required for webhook delivery");
2014
+ }
2015
+ if (this.config.type === "kinesis") {
2016
+ if (!this.config.streamName ||
2017
+ !this.config.region ||
2018
+ !this.config.iamAccessKeyId ||
2019
+ !this.config.iamSecretAccessKey) {
2020
+ throw new Error("Stream name, region, IAM access key ID, and secret access key are required for Kinesis delivery");
2021
+ }
2022
+ }
2023
+ return this.config;
2024
+ }
2025
+ }
2026
+ exports.DeliveryConfigBuilder = DeliveryConfigBuilder;
2027
+ /**
2028
+ * Main builder for property subscription requests
2029
+ */
2030
+ class PropertySubscriptionBuilder extends BaseBuilder {
2031
+ static from(request) {
2032
+ const builder = new PropertySubscriptionBuilder();
2033
+ builder.searchCriteria(request.searchCriteria);
2034
+ builder.deliveryConfig(request.deliveryConfig);
2035
+ return builder;
2036
+ }
2037
+ searchCriteria(criteriaOrConfigurator) {
2038
+ if (typeof criteriaOrConfigurator === "function") {
2039
+ const builder = new SearchCriteriaBuilder("");
2040
+ criteriaOrConfigurator(builder);
2041
+ this.criteria.searchCriteria = builder.build();
2042
+ this.builders.searchCriteria = undefined;
2043
+ }
2044
+ else {
2045
+ this.criteria.searchCriteria = criteriaOrConfigurator;
2046
+ this.builders.searchCriteria = undefined;
2047
+ }
2048
+ return this;
2049
+ }
2050
+ deliveryConfig(configOrConfigurator) {
2051
+ if (typeof configOrConfigurator === "function") {
2052
+ const builder = new DeliveryConfigBuilder();
2053
+ configOrConfigurator(builder);
2054
+ this.criteria.deliveryConfig = builder.build();
2055
+ this.builders.deliveryConfig = undefined;
2056
+ }
2057
+ else {
2058
+ this.criteria.deliveryConfig = configOrConfigurator;
2059
+ this.builders.deliveryConfig = undefined;
2060
+ }
2061
+ return this;
2062
+ }
2063
+ build() {
2064
+ if (!this.criteria.searchCriteria) {
2065
+ throw new Error("Search criteria is required");
2066
+ }
2067
+ if (!this.criteria.deliveryConfig) {
2068
+ throw new Error("Delivery configuration is required");
2069
+ }
2070
+ return {
2071
+ searchCriteria: this.criteria.searchCriteria,
2072
+ deliveryConfig: this.criteria.deliveryConfig,
2073
+ };
2074
+ }
2075
+ }
2076
+ exports.PropertySubscriptionBuilder = PropertySubscriptionBuilder;
2077
+ /**
2078
+ * Builder for property lookup request items
2079
+ */
2080
+ class PropertyLookupRequestItemBuilder {
2081
+ constructor() {
2082
+ this.item = {};
2083
+ }
2084
+ static from(item) {
2085
+ const builder = new PropertyLookupRequestItemBuilder();
2086
+ builder.item = { ...item };
2087
+ return builder;
2088
+ }
2089
+ address(address) {
2090
+ this.item.address = address;
2091
+ return this;
2092
+ }
2093
+ propertyId(propertyId) {
2094
+ this.item.propertyId = propertyId;
2095
+ return this;
2096
+ }
2097
+ hash(hash) {
2098
+ this.item.hash = hash;
2099
+ return this;
2100
+ }
2101
+ apn(apn) {
2102
+ this.item.apn = apn;
2103
+ return this;
2104
+ }
2105
+ countyFipsCode(countyFipsCode) {
2106
+ this.item.countyFipsCode = countyFipsCode;
2107
+ return this;
2108
+ }
2109
+ requestId(requestId) {
2110
+ this.item.requestId = requestId;
2111
+ return this;
2112
+ }
2113
+ build() {
2114
+ return this.item;
2115
+ }
2116
+ }
2117
+ exports.PropertyLookupRequestItemBuilder = PropertyLookupRequestItemBuilder;
2118
+ /**
2119
+ * Builder for property lookup options
2120
+ * PropertyLookupOptions has 40+ fields, so a builder provides a cleaner API
2121
+ */
2122
+ class PropertyLookupOptionsBuilder {
2123
+ constructor() {
2124
+ this.options = {};
2125
+ }
2126
+ static from(options) {
2127
+ const builder = new PropertyLookupOptionsBuilder();
2128
+ builder.options = { ...options };
2129
+ return builder;
2130
+ }
2131
+ pagination(skip, take) {
2132
+ this.options.skip = skip;
2133
+ this.options.take = take;
2134
+ return this;
2135
+ }
2136
+ skip(skip) {
2137
+ this.options.skip = skip;
2138
+ return this;
2139
+ }
2140
+ take(take) {
2141
+ this.options.take = take;
2142
+ return this;
2143
+ }
2144
+ showRequests(show) {
2145
+ this.options.showRequests = show;
2146
+ return this;
2147
+ }
2148
+ areaPolygon(show) {
2149
+ this.options.areaPolygon = show;
2150
+ return this;
2151
+ }
2152
+ quicklistCounts(show) {
2153
+ this.options.quicklistCounts = show;
2154
+ return this;
2155
+ }
2156
+ distance(miles, yards, feet, kilometers, meters) {
2157
+ this.options.useDistance = true;
2158
+ if (miles !== undefined)
2159
+ this.options.distanceMiles = miles;
2160
+ if (yards !== undefined)
2161
+ this.options.distanceYards = yards;
2162
+ if (feet !== undefined)
2163
+ this.options.distanceFeet = feet;
2164
+ if (kilometers !== undefined)
2165
+ this.options.distanceKilometers = kilometers;
2166
+ if (meters !== undefined)
2167
+ this.options.distanceMeters = meters;
2168
+ return this;
2169
+ }
2170
+ boundingBox(nw, se) {
2171
+ this.options.useBoundingBox = true;
2172
+ this.options.boundingBoxNw = nw;
2173
+ this.options.boundingBoxSe = se;
2174
+ return this;
2175
+ }
2176
+ bedrooms(min, max) {
2177
+ this.options.useBedrooms = true;
2178
+ if (min !== undefined)
2179
+ this.options.minBedrooms = min;
2180
+ if (max !== undefined)
2181
+ this.options.maxBedrooms = max;
2182
+ return this;
2183
+ }
2184
+ bathrooms(min, max) {
2185
+ this.options.useBathrooms = true;
2186
+ if (min !== undefined)
2187
+ this.options.minBathrooms = min;
2188
+ if (max !== undefined)
2189
+ this.options.maxBathrooms = max;
2190
+ return this;
2191
+ }
2192
+ stories(min, max) {
2193
+ this.options.useStories = true;
2194
+ if (min !== undefined)
2195
+ this.options.minStories = min;
2196
+ if (max !== undefined)
2197
+ this.options.maxStories = max;
2198
+ return this;
2199
+ }
2200
+ area(minPercent, maxPercent) {
2201
+ this.options.useArea = true;
2202
+ if (minPercent !== undefined)
2203
+ this.options.minAreaPercent = minPercent;
2204
+ if (maxPercent !== undefined)
2205
+ this.options.maxAreaPercent = maxPercent;
2206
+ return this;
2207
+ }
2208
+ yearBuilt(min, max) {
2209
+ this.options.useYearBuilt = true;
2210
+ if (min !== undefined)
2211
+ this.options.minYearBuilt = min;
2212
+ if (max !== undefined)
2213
+ this.options.maxYearBuilt = max;
2214
+ return this;
2215
+ }
2216
+ lotSize(minPercent, maxPercent) {
2217
+ this.options.useLotSize = true;
2218
+ if (minPercent !== undefined)
2219
+ this.options.minLotSizePercent = minPercent;
2220
+ if (maxPercent !== undefined)
2221
+ this.options.maxLotSizePercent = maxPercent;
2222
+ return this;
2223
+ }
2224
+ skipTrace(enabled) {
2225
+ this.options.skipTrace = enabled;
2226
+ return this;
2227
+ }
2228
+ aggregateLoanTypes(enabled) {
2229
+ this.options.aggregateLoanTypes = enabled;
2230
+ return this;
2231
+ }
2232
+ images(enabled) {
2233
+ this.options.images = enabled;
2234
+ return this;
2235
+ }
2236
+ dateFormat(format) {
2237
+ this.options.dateFormat = format;
2238
+ return this;
2239
+ }
2240
+ sort(field, order, sessionId) {
2241
+ this.options.sort = { field, order, sessionId };
2242
+ return this;
2243
+ }
2244
+ useSubdivision(enabled) {
2245
+ this.options.useSubdivision = enabled;
2246
+ return this;
2247
+ }
2248
+ build() {
2249
+ return this.options;
2250
+ }
2251
+ }
2252
+ exports.PropertyLookupOptionsBuilder = PropertyLookupOptionsBuilder;
2253
+ /**
2254
+ * Builder for async property lookup options
2255
+ * Extends PropertyLookupOptionsBuilder with async-specific methods like webhook
2256
+ */
2257
+ class AsyncPropertyLookupOptionsBuilder extends PropertyLookupOptionsBuilder {
2258
+ static from(options) {
2259
+ const builder = new AsyncPropertyLookupOptionsBuilder();
2260
+ builder.options = { ...options };
2261
+ return builder;
2262
+ }
2263
+ webhook(url, errorUrl) {
2264
+ this.options.webhookUrl = url;
2265
+ if (errorUrl) {
2266
+ this.options.errorWebhookUrl = errorUrl;
2267
+ }
2268
+ return this;
2269
+ }
2270
+ }
2271
+ exports.AsyncPropertyLookupOptionsBuilder = AsyncPropertyLookupOptionsBuilder;
2272
+ /**
2273
+ * Builder for property lookup requests
2274
+ */
2275
+ class PropertyLookupRequestBuilder extends BaseBuilder {
2276
+ constructor() {
2277
+ super(...arguments);
2278
+ this.requestItems = [];
2279
+ }
2280
+ static from(request) {
2281
+ const builder = new PropertyLookupRequestBuilder();
2282
+ builder.requestItems = [...request.requests];
2283
+ if (request.options) {
2284
+ builder.options(request.options);
2285
+ }
2286
+ return builder;
2287
+ }
2288
+ items(items) {
2289
+ this.requestItems = items;
2290
+ return this;
2291
+ }
2292
+ addItem(item) {
2293
+ this.requestItems.push(item);
2294
+ return this;
2295
+ }
2296
+ addItemBuilder(builder) {
2297
+ this.requestItems.push(builder.build());
2298
+ return this;
2299
+ }
2300
+ options(optionsOrConfigurator) {
2301
+ return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
2302
+ }
2303
+ build() {
2304
+ const request = {
2305
+ requests: this.requestItems,
2306
+ };
2307
+ if (this.builders.options) {
2308
+ request.options = this.builders.options.build();
2309
+ }
2310
+ else if (this.criteria.options) {
2311
+ request.options = this.criteria.options;
2312
+ }
2313
+ return request;
2314
+ }
2315
+ }
2316
+ exports.PropertyLookupRequestBuilder = PropertyLookupRequestBuilder;
2317
+ /**
2318
+ * Builder for property search requests
2319
+ */
2320
+ class PropertySearchRequestBuilder extends BaseBuilder {
2321
+ static from(request) {
2322
+ const builder = new PropertySearchRequestBuilder();
2323
+ builder.searchCriteria(request.searchCriteria);
2324
+ if (request.options) {
2325
+ builder.options(request.options);
2326
+ }
2327
+ return builder;
2328
+ }
2329
+ searchCriteria(criteriaOrConfigurator) {
2330
+ if (typeof criteriaOrConfigurator === "function") {
2331
+ const builder = new SearchCriteriaBuilder("");
2332
+ criteriaOrConfigurator(builder);
2333
+ this.criteria.searchCriteria = builder.build();
2334
+ this.builders.searchCriteria = undefined;
2335
+ }
2336
+ else {
2337
+ this.criteria.searchCriteria = criteriaOrConfigurator;
2338
+ this.builders.searchCriteria = undefined;
2339
+ }
2340
+ return this;
2341
+ }
2342
+ options(optionsOrConfigurator) {
2343
+ return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
2344
+ }
2345
+ build() {
2346
+ if (!this.criteria.searchCriteria) {
2347
+ throw new Error("Search criteria is required");
2348
+ }
2349
+ const request = {
2350
+ searchCriteria: this.criteria.searchCriteria,
2351
+ };
2352
+ if (this.builders.options) {
2353
+ request.options = this.builders.options.build();
2354
+ }
2355
+ else if (this.criteria.options) {
2356
+ request.options = this.criteria.options;
2357
+ }
2358
+ return request;
2359
+ }
2360
+ }
2361
+ exports.PropertySearchRequestBuilder = PropertySearchRequestBuilder;
2362
+ /**
2363
+ * Builder for property search async requests
2364
+ */
2365
+ class PropertySearchAsyncRequestBuilder extends BaseBuilder {
2366
+ static from(request) {
2367
+ const builder = new PropertySearchAsyncRequestBuilder();
2368
+ builder.searchCriteria(request.searchCriteria);
2369
+ if (request.options) {
2370
+ builder.options(request.options);
2371
+ }
2372
+ return builder;
2373
+ }
2374
+ searchCriteria(criteriaOrConfigurator) {
2375
+ if (typeof criteriaOrConfigurator === "function") {
2376
+ const builder = new SearchCriteriaBuilder("");
2377
+ criteriaOrConfigurator(builder);
2378
+ this.criteria.searchCriteria = builder.build();
2379
+ this.builders.searchCriteria = undefined;
2380
+ }
2381
+ else {
2382
+ this.criteria.searchCriteria = criteriaOrConfigurator;
2383
+ this.builders.searchCriteria = undefined;
2384
+ }
2385
+ return this;
2386
+ }
2387
+ options(optionsOrConfigurator) {
2388
+ return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
2389
+ }
2390
+ build() {
2391
+ if (!this.criteria.searchCriteria) {
2392
+ throw new Error("Search criteria is required");
2393
+ }
2394
+ const request = {
2395
+ searchCriteria: this.criteria.searchCriteria,
2396
+ };
2397
+ if (this.builders.options) {
2398
+ request.options = this.builders.options.build();
2399
+ }
2400
+ else if (this.criteria.options) {
2401
+ request.options = this.criteria.options;
2402
+ }
2403
+ return request;
2404
+ }
2405
+ }
2406
+ exports.PropertySearchAsyncRequestBuilder = PropertySearchAsyncRequestBuilder;
2407
+ /**
2408
+ * Builder for property lookup async requests
2409
+ */
2410
+ class PropertyLookupAsyncRequestBuilder extends BaseBuilder {
2411
+ constructor() {
2412
+ super(...arguments);
2413
+ this.requestItems = [];
2414
+ }
2415
+ static from(request) {
2416
+ const builder = new PropertyLookupAsyncRequestBuilder();
2417
+ builder.requestItems = [...request.requests];
2418
+ if (request.options) {
2419
+ builder.options(request.options);
2420
+ }
2421
+ return builder;
2422
+ }
2423
+ items(items) {
2424
+ this.requestItems = items;
2425
+ return this;
2426
+ }
2427
+ addItem(item) {
2428
+ this.requestItems.push(item);
2429
+ return this;
2430
+ }
2431
+ addItemBuilder(builder) {
2432
+ this.requestItems.push(builder.build());
2433
+ return this;
2434
+ }
2435
+ options(optionsOrConfigurator) {
2436
+ return this.setPropertyWithBuilderClass("options", optionsOrConfigurator, PropertyLookupOptionsBuilder);
2437
+ }
2438
+ build() {
2439
+ const request = {
2440
+ requests: this.requestItems,
2441
+ };
2442
+ if (this.builders.options) {
2443
+ request.options = this.builders.options.build();
2444
+ }
2445
+ else if (this.criteria.options) {
2446
+ request.options = this.criteria.options;
2447
+ }
2448
+ return request;
2449
+ }
2450
+ }
2451
+ exports.PropertyLookupAsyncRequestBuilder = PropertyLookupAsyncRequestBuilder;
2452
+ /**
2453
+ * Builder for property permit request filters
2454
+ */
2455
+ class PropertyPermitRequestBuilder {
2456
+ constructor() {
2457
+ this.request = {};
2458
+ this.options = {};
2459
+ }
2460
+ static from(permitRequest) {
2461
+ const builder = new PropertyPermitRequestBuilder();
2462
+ builder.request = { ...permitRequest.request };
2463
+ builder.options = permitRequest.options ? { ...permitRequest.options } : {};
2464
+ return builder;
2465
+ }
2466
+ // Address/identifier methods
2467
+ address(address) {
2468
+ this.request.address = address;
2469
+ return this;
2470
+ }
2471
+ hash(hash) {
2472
+ this.request.hash = hash;
2473
+ return this;
2474
+ }
2475
+ propertyId(propertyId) {
2476
+ this.request.propertyId = propertyId;
2477
+ return this;
2478
+ }
2479
+ apn(apn) {
2480
+ this.request.apn = apn;
2481
+ return this;
2482
+ }
2483
+ countyFipsCode(countyFipsCode) {
2484
+ this.request.countyFipsCode = countyFipsCode;
2485
+ return this;
2486
+ }
2487
+ // Filter methods
2488
+ allTags(filter) {
2489
+ this.request.allTags = filter;
2490
+ return this;
2491
+ }
2492
+ allTagsBuilder(filter) {
2493
+ this.request.allTags = filter;
2494
+ return this;
2495
+ }
2496
+ description(filter) {
2497
+ this.request.description = filter;
2498
+ return this;
2499
+ }
2500
+ descriptionBuilder(filter) {
2501
+ this.request.description = filter;
2502
+ return this;
2503
+ }
2504
+ endDate(filter) {
2505
+ this.request.endDate = filter;
2506
+ return this;
2507
+ }
2508
+ endDateBuilder(filter) {
2509
+ this.request.endDate = filter;
2510
+ return this;
2511
+ }
2512
+ fileDate(filter) {
2513
+ this.request.fileDate = filter;
2514
+ return this;
2515
+ }
2516
+ fileDateBuilder(filter) {
2517
+ this.request.fileDate = filter;
2518
+ return this;
2519
+ }
2520
+ finalDate(filter) {
2521
+ this.request.finalDate = filter;
2522
+ return this;
2523
+ }
2524
+ finalDateBuilder(filter) {
2525
+ this.request.finalDate = filter;
2526
+ return this;
2527
+ }
2528
+ issueDate(filter) {
2529
+ this.request.issueDate = filter;
2530
+ return this;
2531
+ }
2532
+ issueDateBuilder(filter) {
2533
+ this.request.issueDate = filter;
2534
+ return this;
2535
+ }
2536
+ jobValue(filter) {
2537
+ this.request.jobValue = filter;
2538
+ return this;
2539
+ }
2540
+ jobValueBuilder(filter) {
2541
+ this.request.jobValue = filter;
2542
+ return this;
2543
+ }
2544
+ startDate(filter) {
2545
+ this.request.startDate = filter;
2546
+ return this;
2547
+ }
2548
+ startDateBuilder(filter) {
2549
+ this.request.startDate = filter;
2550
+ return this;
2551
+ }
2552
+ status(filter) {
2553
+ this.request.status = filter;
2554
+ return this;
2555
+ }
2556
+ statusBuilder(filter) {
2557
+ this.request.status = filter;
2558
+ return this;
2559
+ }
2560
+ subType(filter) {
2561
+ this.request.subType = filter;
2562
+ return this;
2563
+ }
2564
+ subTypeBuilder(filter) {
2565
+ this.request.subType = filter;
2566
+ return this;
2567
+ }
2568
+ type(filter) {
2569
+ this.request.type = filter;
2570
+ return this;
2571
+ }
2572
+ typeBuilder(filter) {
2573
+ this.request.type = filter;
2574
+ return this;
2575
+ }
2576
+ // Options methods
2577
+ pagination(skip, take) {
2578
+ this.options.skip = skip;
2579
+ this.options.take = take;
2580
+ return this;
2581
+ }
2582
+ skip(skip) {
2583
+ this.options.skip = skip;
2584
+ return this;
2585
+ }
2586
+ take(take) {
2587
+ this.options.take = take;
2588
+ return this;
2589
+ }
2590
+ sessionId(sessionId) {
2591
+ this.options.sessionId = sessionId;
2592
+ return this;
2593
+ }
2594
+ dateFormat(format) {
2595
+ this.options.dateFormat = format;
2596
+ return this;
2597
+ }
2598
+ showRequests(show) {
2599
+ this.options.showRequests = show;
2600
+ return this;
2601
+ }
2602
+ showOptions(show) {
2603
+ this.options.showOptions = show;
2604
+ return this;
2605
+ }
2606
+ showMeta(show) {
2607
+ this.options.showMeta = show;
2608
+ return this;
2609
+ }
2610
+ sort(field, order) {
2611
+ this.options.sort = { field, order };
2612
+ return this;
2613
+ }
2614
+ build() {
2615
+ const hasOptions = Object.keys(this.options).length > 0;
2616
+ return {
2617
+ request: this.request,
2618
+ options: hasOptions ? this.options : undefined,
2619
+ };
2620
+ }
2621
+ }
2622
+ exports.PropertyPermitRequestBuilder = PropertyPermitRequestBuilder;