@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,821 @@
1
+ /**
2
+ * BatchData.io Query Builders
3
+ *
4
+ * Fluent query builder API for constructing BatchData property subscription requests
5
+ *
6
+ * Usage example:
7
+ * ```typescript
8
+ * const searchQuery = new SearchCriteriaBuilder("Maricopa County, AZ")
9
+ * .address(new AddressSearchCriteriaBuilder()
10
+ * .city(new StringFilterBuilder().equals("Phoenix").build())
11
+ * .state(new StringFilterBuilder().equals("AZ").build())
12
+ * .build())
13
+ * .building(new BuildingSearchCriteriaBuilder()
14
+ * .yearBuilt(new NumericRangeFilterBuilder().min(1990).max(2020).build())
15
+ * .build())
16
+ * .build();
17
+ * ```
18
+ */
19
+ import { StringFilter, NumericRangeFilter, DateRangeFilter, GeoLocationDistance, GeoLocationBoundingBox, GeoLocationPolygon, AddressSearchCriteria, AssessmentSearchCriteria, BuildingSearchCriteria, CompAddressSearchCriteria, DemographicsSearchCriteria, ForeclosureSearchCriteria, GeneralSearchCriteria, IdsSearchCriteria, IntelSearchCriteria, InvoluntaryLienSearchCriteria, LegalSearchCriteria, ListingSearchCriteria, LotSearchCriteria, OpenLienSearchCriteria, OwnerSearchCriteria, PermitSearchCriteria, PropertyOwnerProfileSearchCriteria, SaleSearchCriteria, TaxSearchCriteria, ValuationSearchCriteria, OrSearchCriteria, SearchCriteria, DeliveryConfig, PropertySubscriptionRequest, QuickListValueWithNot, PropertyLookupRequest, PropertyLookupRequestItem, PropertyLookupRequestAddress, PropertyLookupOptions, PropertyPermitRequest, PropertySearchRequest, PropertySearchAsyncRequest, PropertyLookupAsyncRequest, GeoPoint } from "./types";
20
+ /**
21
+ * Base interface for all builders
22
+ */
23
+ export interface Builder<T> {
24
+ build(): T;
25
+ }
26
+ /**
27
+ * Type helper that represents the expected setter method signature for a single property.
28
+ * This can be used to ensure setter methods have the correct signature.
29
+ *
30
+ * Note: TypeScript cannot enforce that a class implements methods for ALL properties
31
+ * of a type at compile time. This type serves as documentation and can help catch
32
+ * signature mismatches when explicitly typed.
33
+ */
34
+ export type PropertySetter<T, K extends keyof T> = (value: T[K] | ((builder: Builder<T[K]>) => void)) => Builder<T>;
35
+ /**
36
+ * Type helper that represents the expected builders storage structure.
37
+ * For each property K in T, there should be a Builder<T[K]> instance.
38
+ * This ensures type safety when storing and accessing nested builders.
39
+ */
40
+ export type BuildersStorage<T> = {
41
+ [K in keyof T]?: Builder<T[K]>;
42
+ };
43
+ /**
44
+ * Abstract base class for builders that store nested builders
45
+ * Handles the common pattern of storing builder instances and building them all at once
46
+ */
47
+ declare abstract class BaseBuilder<T> implements Builder<T> {
48
+ protected criteria: Partial<T>;
49
+ protected builders: BuildersStorage<T>;
50
+ /**
51
+ * Helper method to set a property either directly or via a builder configurator.
52
+ * This extracts the common pattern of checking if a configurator function is provided,
53
+ * creating/reusing a builder instance, and either calling the configurator or setting
54
+ * the value directly.
55
+ *
56
+ * @param key - The property key to set
57
+ * @param valueOrConfigurator - Either the direct value or a configurator function
58
+ * @param builderFactory - Factory function to create a new builder instance if needed
59
+ * @returns This builder instance for method chaining
60
+ */
61
+ protected setPropertyWithBuilder<K extends keyof T, B extends Builder<T[K]>>(key: K, valueOrConfigurator: T[K] | ((builder: B) => void), builderFactory: () => B): this;
62
+ /**
63
+ * Helper method that accepts a builder class constructor and infers types from it.
64
+ * This allows you to pass the builder class directly instead of a factory function.
65
+ *
66
+ * @param key - The property key to set
67
+ * @param valueOrConfigurator - Either the direct value or a configurator function
68
+ * @param BuilderClass - The builder class constructor (e.g., NumericRangeFilterBuilder)
69
+ * @returns This builder instance for method chaining
70
+ */
71
+ protected setPropertyWithBuilderClass<K extends keyof T, B extends Builder<T[K]>>(key: K, valueOrConfigurator: T[K] | ((builder: B) => void), BuilderClass: new () => B): this;
72
+ build(): T;
73
+ }
74
+ /**
75
+ * Base builder for string filters
76
+ */
77
+ export declare class StringFilterBuilder implements Builder<StringFilter> {
78
+ private filter;
79
+ static from(filter: StringFilter): StringFilterBuilder;
80
+ equals(value: string): this;
81
+ contains(value: string): this;
82
+ startsWith(value: string): this;
83
+ endsWith(value: string): this;
84
+ inList(values: string[]): this;
85
+ notInList(values: string[]): this;
86
+ matches(patterns: string[]): this;
87
+ build(): StringFilter;
88
+ }
89
+ /**
90
+ * Base builder for numeric range filters
91
+ */
92
+ export declare class NumericRangeFilterBuilder implements Builder<NumericRangeFilter> {
93
+ private filter;
94
+ static from(filter: NumericRangeFilter): NumericRangeFilterBuilder;
95
+ min(value: number): this;
96
+ max(value: number): this;
97
+ range(min: number, max: number): this;
98
+ build(): NumericRangeFilter;
99
+ }
100
+ /**
101
+ * Base builder for date range filters
102
+ */
103
+ export declare class DateRangeFilterBuilder implements Builder<DateRangeFilter> {
104
+ private filter;
105
+ static from(filter: DateRangeFilter): DateRangeFilterBuilder;
106
+ minDate(date: string): this;
107
+ maxDate(date: string): this;
108
+ range(minDate: string, maxDate: string): this;
109
+ build(): DateRangeFilter;
110
+ }
111
+ /**
112
+ * Helper class for creating geographic location filters
113
+ * This is not a builder in the traditional sense - it's a factory that creates
114
+ * different geo location objects (distance, bounding box, polygon)
115
+ */
116
+ export declare class GeoLocationFactory {
117
+ /**
118
+ * Create a distance-based filter
119
+ */
120
+ static distance(latitude: number, longitude: number, options?: {
121
+ meters?: string;
122
+ kilometers?: string;
123
+ feet?: string;
124
+ yards?: string;
125
+ miles?: string;
126
+ }): GeoLocationDistance;
127
+ /**
128
+ * Create a bounding box filter
129
+ */
130
+ static boundingBox(nwLatitude: number, nwLongitude: number, seLatitude: number, seLongitude: number): GeoLocationBoundingBox;
131
+ /**
132
+ * Create a polygon filter
133
+ */
134
+ static polygon(points: Array<{
135
+ latitude: number;
136
+ longitude: number;
137
+ }>): GeoLocationPolygon;
138
+ }
139
+ /**
140
+ * Builder for address search criteria
141
+ */
142
+ export declare class AddressSearchCriteriaBuilder extends BaseBuilder<AddressSearchCriteria> {
143
+ protected criteria: AddressSearchCriteria;
144
+ static from(criteria: AddressSearchCriteria): AddressSearchCriteriaBuilder;
145
+ street(filter: StringFilter): this;
146
+ street(configurator: (builder: StringFilterBuilder) => void): this;
147
+ city(filter: StringFilter): this;
148
+ city(configurator: (builder: StringFilterBuilder) => void): this;
149
+ locality(filter: StringFilter): this;
150
+ locality(configurator: (builder: StringFilterBuilder) => void): this;
151
+ county(filter: StringFilter): this;
152
+ county(configurator: (builder: StringFilterBuilder) => void): this;
153
+ countyFipsCode(filter: StringFilter): this;
154
+ countyFipsCode(configurator: (builder: StringFilterBuilder) => void): this;
155
+ state(filter: StringFilter): this;
156
+ state(configurator: (builder: StringFilterBuilder) => void): this;
157
+ zip(filter: StringFilter): this;
158
+ zip(configurator: (builder: StringFilterBuilder) => void): this;
159
+ unitType(filter: StringFilter): this;
160
+ unitType(configurator: (builder: StringFilterBuilder) => void): this;
161
+ formattedStreet(filter: StringFilter): this;
162
+ formattedStreet(configurator: (builder: StringFilterBuilder) => void): this;
163
+ streetNoUnit(filter: StringFilter): this;
164
+ streetNoUnit(configurator: (builder: StringFilterBuilder) => void): this;
165
+ geoLocationDistance(latitude: number, longitude: number, options?: {
166
+ meters?: string;
167
+ kilometers?: string;
168
+ feet?: string;
169
+ yards?: string;
170
+ miles?: string;
171
+ }): this;
172
+ geoLocationBoundingBox(nwLatitude: number, nwLongitude: number, seLatitude: number, seLongitude: number): this;
173
+ geoLocationPolygon(points: Array<{
174
+ latitude: number;
175
+ longitude: number;
176
+ }>): this;
177
+ initialGeoStatus(filter: StringFilter): this;
178
+ initialGeoStatus(configurator: (builder: StringFilterBuilder) => void): this;
179
+ geoStatus(filter: StringFilter): this;
180
+ geoStatus(configurator: (builder: StringFilterBuilder) => void): this;
181
+ cityState(filter: StringFilter): this;
182
+ cityState(configurator: (builder: StringFilterBuilder) => void): this;
183
+ countyState(filter: StringFilter): this;
184
+ countyState(configurator: (builder: StringFilterBuilder) => void): this;
185
+ }
186
+ /**
187
+ * Builder for assessment search criteria
188
+ */
189
+ export declare class AssessmentSearchCriteriaBuilder extends BaseBuilder<AssessmentSearchCriteria> {
190
+ protected criteria: AssessmentSearchCriteria;
191
+ static from(criteria: AssessmentSearchCriteria): AssessmentSearchCriteriaBuilder;
192
+ assessmentYear(filter: NumericRangeFilter): this;
193
+ assessmentYear(configurator: (builder: NumericRangeFilterBuilder) => void): this;
194
+ totalAssessedValue(filter: NumericRangeFilter): this;
195
+ totalAssessedValue(configurator: (builder: NumericRangeFilterBuilder) => void): this;
196
+ assessedImprovementValue(filter: NumericRangeFilter): this;
197
+ assessedImprovementValue(configurator: (builder: NumericRangeFilterBuilder) => void): this;
198
+ assessedLandValue(filter: NumericRangeFilter): this;
199
+ assessedLandValue(configurator: (builder: NumericRangeFilterBuilder) => void): this;
200
+ marketValueYear(filter: NumericRangeFilter): this;
201
+ marketValueYear(configurator: (builder: NumericRangeFilterBuilder) => void): this;
202
+ landMarketValue(filter: NumericRangeFilter): this;
203
+ landMarketValue(configurator: (builder: NumericRangeFilterBuilder) => void): this;
204
+ improvementMarketValue(filter: NumericRangeFilter): this;
205
+ improvementMarketValue(configurator: (builder: NumericRangeFilterBuilder) => void): this;
206
+ totalMarketValue(filter: NumericRangeFilter): this;
207
+ totalMarketValue(configurator: (builder: NumericRangeFilterBuilder) => void): this;
208
+ }
209
+ /**
210
+ * Builder for building search criteria
211
+ */
212
+ export declare class BuildingSearchCriteriaBuilder extends BaseBuilder<BuildingSearchCriteria> {
213
+ protected criteria: BuildingSearchCriteria;
214
+ static from(criteria: BuildingSearchCriteria): BuildingSearchCriteriaBuilder;
215
+ airConditioningSource(filter: StringFilter): this;
216
+ airConditioningSource(configurator: (builder: StringFilterBuilder) => void): this;
217
+ basementType(filter: StringFilter): this;
218
+ basementType(configurator: (builder: StringFilterBuilder) => void): this;
219
+ totalBuildingAreaSquareFeet(filter: NumericRangeFilter): this;
220
+ totalBuildingAreaSquareFeet(configurator: (builder: NumericRangeFilterBuilder) => void): this;
221
+ buildingClass(filter: StringFilter): this;
222
+ buildingClass(configurator: (builder: StringFilterBuilder) => void): this;
223
+ buildingCondition(filter: StringFilter): this;
224
+ buildingCondition(configurator: (builder: StringFilterBuilder) => void): this;
225
+ buildingQuality(filter: StringFilter): this;
226
+ buildingQuality(configurator: (builder: StringFilterBuilder) => void): this;
227
+ buildingType(filter: StringFilter): this;
228
+ buildingType(configurator: (builder: StringFilterBuilder) => void): this;
229
+ driveway(filter: StringFilter): this;
230
+ driveway(configurator: (builder: StringFilterBuilder) => void): this;
231
+ exteriorWalls(filter: StringFilter): this;
232
+ exteriorWalls(configurator: (builder: StringFilterBuilder) => void): this;
233
+ floorCover(filter: StringFilter): this;
234
+ floorCover(configurator: (builder: StringFilterBuilder) => void): this;
235
+ garageParkingSpaceCount(filter: NumericRangeFilter): this;
236
+ garageParkingSpaceCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
237
+ garage(filter: StringFilter): this;
238
+ garage(configurator: (builder: StringFilterBuilder) => void): this;
239
+ heatSource(filter: StringFilter): this;
240
+ heatSource(configurator: (builder: StringFilterBuilder) => void): this;
241
+ heatingFuelType(filter: StringFilter): this;
242
+ heatingFuelType(configurator: (builder: StringFilterBuilder) => void): this;
243
+ interiorWalls(filter: StringFilter): this;
244
+ interiorWalls(configurator: (builder: StringFilterBuilder) => void): this;
245
+ buildingCount(filter: NumericRangeFilter): this;
246
+ buildingCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
247
+ bathroomCount(filter: NumericRangeFilter): this;
248
+ bathroomCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
249
+ calculatedBathroomCount(filter: NumericRangeFilter): this;
250
+ calculatedBathroomCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
251
+ bedroomCount(filter: NumericRangeFilter): this;
252
+ bedroomCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
253
+ patio(filter: StringFilter): this;
254
+ patio(configurator: (builder: StringFilterBuilder) => void): this;
255
+ storyCount(filter: NumericRangeFilter): this;
256
+ storyCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
257
+ features(filter: StringFilter): this;
258
+ features(configurator: (builder: StringFilterBuilder) => void): this;
259
+ residentialUnitCount(filter: NumericRangeFilter): this;
260
+ residentialUnitCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
261
+ pool(filter: StringFilter): this;
262
+ pool(configurator: (builder: StringFilterBuilder) => void): this;
263
+ porch(filter: StringFilter): this;
264
+ porch(configurator: (builder: StringFilterBuilder) => void): this;
265
+ roofCover(filter: StringFilter): this;
266
+ roofCover(configurator: (builder: StringFilterBuilder) => void): this;
267
+ roofType(filter: StringFilter): this;
268
+ roofType(configurator: (builder: StringFilterBuilder) => void): this;
269
+ sewer(filter: StringFilter): this;
270
+ sewer(configurator: (builder: StringFilterBuilder) => void): this;
271
+ style(filter: StringFilter): this;
272
+ style(configurator: (builder: StringFilterBuilder) => void): this;
273
+ roomCount(filter: NumericRangeFilter): this;
274
+ roomCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
275
+ unitCount(filter: NumericRangeFilter): this;
276
+ unitCount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
277
+ constructionType(filter: StringFilter): this;
278
+ constructionType(configurator: (builder: StringFilterBuilder) => void): this;
279
+ waterService(filter: StringFilter): this;
280
+ waterService(configurator: (builder: StringFilterBuilder) => void): this;
281
+ yearBuilt(filter: NumericRangeFilter): this;
282
+ yearBuilt(configurator: (builder: NumericRangeFilterBuilder) => void): this;
283
+ build(): BuildingSearchCriteria;
284
+ }
285
+ /**
286
+ * Builder for comp address search criteria
287
+ */
288
+ export declare class CompAddressSearchCriteriaBuilder implements Builder<CompAddressSearchCriteria> {
289
+ protected criteria: CompAddressSearchCriteria;
290
+ static from(criteria: CompAddressSearchCriteria): CompAddressSearchCriteriaBuilder;
291
+ street(value: string): this;
292
+ city(value: string): this;
293
+ state(value: string): this;
294
+ zip(value: string): this;
295
+ hash(value: string): this;
296
+ build(): CompAddressSearchCriteria;
297
+ }
298
+ /**
299
+ * Builder for demographics search criteria
300
+ */
301
+ export declare class DemographicsSearchCriteriaBuilder extends BaseBuilder<DemographicsSearchCriteria> {
302
+ protected criteria: DemographicsSearchCriteria;
303
+ static from(criteria: DemographicsSearchCriteria): DemographicsSearchCriteriaBuilder;
304
+ age(filter: NumericRangeFilter): this;
305
+ age(configurator: (builder: NumericRangeFilterBuilder) => void): this;
306
+ householdSize(filter: NumericRangeFilter): this;
307
+ householdSize(configurator: (builder: NumericRangeFilterBuilder) => void): this;
308
+ income(filter: NumericRangeFilter): this;
309
+ income(configurator: (builder: NumericRangeFilterBuilder) => void): this;
310
+ netWorth(filter: NumericRangeFilter): this;
311
+ netWorth(configurator: (builder: NumericRangeFilterBuilder) => void): this;
312
+ discretionaryIncome(filter: NumericRangeFilter): this;
313
+ discretionaryIncome(configurator: (builder: NumericRangeFilterBuilder) => void): this;
314
+ homeownerRenter(filter: StringFilter): this;
315
+ homeownerRenter(configurator: (builder: StringFilterBuilder) => void): this;
316
+ businessOwner(filter: StringFilter): this;
317
+ businessOwner(configurator: (builder: StringFilterBuilder) => void): this;
318
+ gender(filter: StringFilter): this;
319
+ gender(configurator: (builder: StringFilterBuilder) => void): this;
320
+ hasChildren(value: boolean): this;
321
+ investments(filter: StringFilter): this;
322
+ investments(configurator: (builder: StringFilterBuilder) => void): this;
323
+ demographics(filter: StringFilter): this;
324
+ demographics(configurator: (builder: StringFilterBuilder) => void): this;
325
+ religiousAffiliation(filter: StringFilter): this;
326
+ religiousAffiliation(configurator: (builder: StringFilterBuilder) => void): this;
327
+ }
328
+ /**
329
+ * Builder for foreclosure search criteria
330
+ */
331
+ export declare class ForeclosureSearchCriteriaBuilder {
332
+ private criteria;
333
+ static from(criteria: ForeclosureSearchCriteria): ForeclosureSearchCriteriaBuilder;
334
+ status(filter: StringFilter): this;
335
+ status(configurator: (builder: StringFilterBuilder) => void): this;
336
+ recordingDate(filter: DateRangeFilter): this;
337
+ recordingDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
338
+ auctionDate(filter: DateRangeFilter): this;
339
+ auctionDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
340
+ releaseDate(filter: DateRangeFilter): this;
341
+ releaseDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
342
+ auctionMinimumBidAmount(filter: NumericRangeFilter): this;
343
+ auctionMinimumBidAmount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
344
+ pastDueAmount(filter: NumericRangeFilter): this;
345
+ pastDueAmount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
346
+ build(): ForeclosureSearchCriteria;
347
+ }
348
+ /**
349
+ * Builder for general search criteria
350
+ */
351
+ export declare class GeneralSearchCriteriaBuilder {
352
+ private criteria;
353
+ static from(criteria: GeneralSearchCriteria): GeneralSearchCriteriaBuilder;
354
+ propertyTypeCategory(filter: StringFilter): this;
355
+ propertyTypeCategory(configurator: (builder: StringFilterBuilder) => void): this;
356
+ propertyTypeDetail(filter: StringFilter): this;
357
+ propertyTypeDetail(configurator: (builder: StringFilterBuilder) => void): this;
358
+ build(): GeneralSearchCriteria;
359
+ }
360
+ /**
361
+ * Builder for IDs search criteria
362
+ */
363
+ export declare class IdsSearchCriteriaBuilder {
364
+ private criteria;
365
+ static from(criteria: IdsSearchCriteria): IdsSearchCriteriaBuilder;
366
+ addressHash(filter: StringFilter): this;
367
+ addressHash(configurator: (builder: StringFilterBuilder) => void): this;
368
+ mailingAddressHash(filter: StringFilter): this;
369
+ mailingAddressHash(configurator: (builder: StringFilterBuilder) => void): this;
370
+ fipsCode(filter: StringFilter): this;
371
+ fipsCode(configurator: (builder: StringFilterBuilder) => void): this;
372
+ apn(filter: StringFilter): this;
373
+ apn(configurator: (builder: StringFilterBuilder) => void): this;
374
+ taxId(filter: StringFilter): this;
375
+ taxId(configurator: (builder: StringFilterBuilder) => void): this;
376
+ build(): IdsSearchCriteria;
377
+ }
378
+ /**
379
+ * Builder for intel search criteria
380
+ */
381
+ export declare class IntelSearchCriteriaBuilder {
382
+ private criteria;
383
+ static from(criteria: IntelSearchCriteria): IntelSearchCriteriaBuilder;
384
+ lastSoldDate(filter: DateRangeFilter): this;
385
+ lastSoldDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
386
+ lastSoldPrice(filter: NumericRangeFilter): this;
387
+ lastSoldPrice(configurator: (builder: NumericRangeFilterBuilder) => void): this;
388
+ salePropensity(filter: NumericRangeFilter): this;
389
+ salePropensity(configurator: (builder: NumericRangeFilterBuilder) => void): this;
390
+ build(): IntelSearchCriteria;
391
+ }
392
+ /**
393
+ * Builder for involuntary lien search criteria
394
+ */
395
+ export declare class InvoluntaryLienSearchCriteriaBuilder {
396
+ private criteria;
397
+ static from(criteria: InvoluntaryLienSearchCriteria): InvoluntaryLienSearchCriteriaBuilder;
398
+ lienType(filter: StringFilter): this;
399
+ lienType(configurator: (builder: StringFilterBuilder) => void): this;
400
+ lienTypeCode(filter: StringFilter): this;
401
+ lienTypeCode(configurator: (builder: StringFilterBuilder) => void): this;
402
+ documentType(filter: StringFilter): this;
403
+ documentType(configurator: (builder: StringFilterBuilder) => void): this;
404
+ documentTypeCode(filter: StringFilter): this;
405
+ documentTypeCode(configurator: (builder: StringFilterBuilder) => void): this;
406
+ recordingDate(filter: DateRangeFilter): this;
407
+ recordingDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
408
+ filingDate(filter: DateRangeFilter): this;
409
+ filingDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
410
+ lienAmount(filter: NumericRangeFilter): this;
411
+ lienAmount(configurator: (builder: NumericRangeFilterBuilder) => void): this;
412
+ build(): InvoluntaryLienSearchCriteria;
413
+ }
414
+ /**
415
+ * Builder for legal search criteria
416
+ */
417
+ export declare class LegalSearchCriteriaBuilder {
418
+ private criteria;
419
+ static from(criteria: LegalSearchCriteria): LegalSearchCriteriaBuilder;
420
+ subdivisionName(filter: StringFilter): this;
421
+ subdivisionName(configurator: (builder: StringFilterBuilder) => void): this;
422
+ build(): LegalSearchCriteria;
423
+ }
424
+ /**
425
+ * Builder for listing search criteria
426
+ */
427
+ export declare class ListingSearchCriteriaBuilder {
428
+ private criteria;
429
+ static from(criteria: ListingSearchCriteria): ListingSearchCriteriaBuilder;
430
+ description(filter: StringFilter): this;
431
+ description(configurator: (builder: StringFilterBuilder) => void): this;
432
+ price(filter: NumericRangeFilter): this;
433
+ price(configurator: (builder: NumericRangeFilterBuilder) => void): this;
434
+ daysOnMarket(filter: NumericRangeFilter): this;
435
+ daysOnMarket(configurator: (builder: NumericRangeFilterBuilder) => void): this;
436
+ status(filter: StringFilter): this;
437
+ status(configurator: (builder: StringFilterBuilder) => void): this;
438
+ statusCategory(filter: StringFilter): this;
439
+ statusCategory(configurator: (builder: StringFilterBuilder) => void): this;
440
+ failedListingDate(filter: DateRangeFilter): this;
441
+ failedListingDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
442
+ soldDate(filter: DateRangeFilter): this;
443
+ soldDate(configurator: (builder: DateRangeFilterBuilder) => void): this;
444
+ build(): ListingSearchCriteria;
445
+ }
446
+ /**
447
+ * Builder for lot search criteria
448
+ */
449
+ export declare class LotSearchCriteriaBuilder {
450
+ private criteria;
451
+ static from(criteria: LotSearchCriteria): LotSearchCriteriaBuilder;
452
+ lotSizeAcres(filter: NumericRangeFilter): this;
453
+ lotSizeAcres(configurator: (builder: NumericRangeFilterBuilder) => void): this;
454
+ lotDepthFeet(filter: NumericRangeFilter): this;
455
+ lotDepthFeet(configurator: (builder: NumericRangeFilterBuilder) => void): this;
456
+ lotFrontageFeet(filter: NumericRangeFilter): this;
457
+ lotFrontageFeet(configurator: (builder: NumericRangeFilterBuilder) => void): this;
458
+ lotSizeSquareFeet(filter: NumericRangeFilter): this;
459
+ lotSizeSquareFeet(configurator: (builder: NumericRangeFilterBuilder) => void): this;
460
+ zoningCode(filter: StringFilter): this;
461
+ zoningCode(configurator: (builder: StringFilterBuilder) => void): this;
462
+ build(): LotSearchCriteria;
463
+ }
464
+ /**
465
+ * Builder for open lien search criteria
466
+ */
467
+ export declare class OpenLienSearchCriteriaBuilder {
468
+ private criteria;
469
+ static from(criteria: OpenLienSearchCriteria): OpenLienSearchCriteriaBuilder;
470
+ allLoanTypes(filter: StringFilter): this;
471
+ juniorLoanTypes(filter: StringFilter): this;
472
+ totalOpenLienCount(filter: NumericRangeFilter): this;
473
+ totalOpenLienBalance(filter: NumericRangeFilter): this;
474
+ firstLoanLtv(filter: NumericRangeFilter): this;
475
+ firstLoanInterestRate(filter: NumericRangeFilter): this;
476
+ secondLoanInterestRate(filter: NumericRangeFilter): this;
477
+ thirdLoanInterestRate(filter: NumericRangeFilter): this;
478
+ fourthLoanInterestRate(filter: NumericRangeFilter): this;
479
+ firstLoanType(filter: StringFilter): this;
480
+ secondLoanType(filter: StringFilter): this;
481
+ thirdLoanType(filter: StringFilter): this;
482
+ fourthLoanType(filter: StringFilter): this;
483
+ firstLoanRecordingDate(filter: DateRangeFilter): this;
484
+ lastLoanRecordingDate(filter: DateRangeFilter): this;
485
+ build(): OpenLienSearchCriteria;
486
+ }
487
+ /**
488
+ * Builder for owner search criteria
489
+ */
490
+ export declare class OwnerSearchCriteriaBuilder {
491
+ private criteria;
492
+ static from(criteria: OwnerSearchCriteria): OwnerSearchCriteriaBuilder;
493
+ firstName(filter: StringFilter): this;
494
+ lastName(filter: StringFilter): this;
495
+ ownerOccupied(value: boolean): this;
496
+ mailingStreet(filter: StringFilter): this;
497
+ mailingCity(filter: StringFilter): this;
498
+ mailingState(filter: StringFilter): this;
499
+ mailingZip(filter: StringFilter): this;
500
+ ownerStatusType(filter: StringFilter): this;
501
+ lengthOfResidenceMonths(filter: NumericRangeFilter): this;
502
+ lengthOfResidenceYears(filter: NumericRangeFilter): this;
503
+ ownershipStartDate(filter: DateRangeFilter): this;
504
+ mailingAddressHash(filter: StringFilter): this;
505
+ build(): OwnerSearchCriteria;
506
+ }
507
+ /**
508
+ * Builder for permit search criteria
509
+ */
510
+ export declare class PermitSearchCriteriaBuilder {
511
+ private criteria;
512
+ static from(criteria: PermitSearchCriteria): PermitSearchCriteriaBuilder;
513
+ permitCount(filter: NumericRangeFilter): this;
514
+ latestDate(filter: DateRangeFilter): this;
515
+ earliestDate(filter: DateRangeFilter): this;
516
+ totalJobValue(filter: NumericRangeFilter): this;
517
+ allTags(filter: StringFilter): this;
518
+ build(): PermitSearchCriteria;
519
+ }
520
+ /**
521
+ * Builder for property owner profile search criteria
522
+ */
523
+ export declare class PropertyOwnerProfileSearchCriteriaBuilder {
524
+ private criteria;
525
+ static from(criteria: PropertyOwnerProfileSearchCriteria): PropertyOwnerProfileSearchCriteriaBuilder;
526
+ propertiesCount(filter: NumericRangeFilter): this;
527
+ propertiesTotalEquity(filter: NumericRangeFilter): this;
528
+ propertiesTotalEstimatedValue(filter: NumericRangeFilter): this;
529
+ mortgagesTotalBalance(filter: NumericRangeFilter): this;
530
+ mortgagesCount(filter: NumericRangeFilter): this;
531
+ mortgagesAverageBalance(filter: NumericRangeFilter): this;
532
+ build(): PropertyOwnerProfileSearchCriteria;
533
+ }
534
+ /**
535
+ * Builder for sale search criteria
536
+ */
537
+ export declare class SaleSearchCriteriaBuilder {
538
+ private criteria;
539
+ static from(criteria: SaleSearchCriteria): SaleSearchCriteriaBuilder;
540
+ lastSalePrice(filter: NumericRangeFilter): this;
541
+ lastSaleDate(filter: DateRangeFilter): this;
542
+ lastSaleDocumentType(filter: StringFilter): this;
543
+ lastSalePricePerSquareFoot(filter: NumericRangeFilter): this;
544
+ flipLength(filter: NumericRangeFilter): this;
545
+ flipLengthCategory(filter: NumericRangeFilter): this;
546
+ flipProfit(filter: NumericRangeFilter): this;
547
+ build(): SaleSearchCriteria;
548
+ }
549
+ /**
550
+ * Builder for tax search criteria
551
+ */
552
+ export declare class TaxSearchCriteriaBuilder {
553
+ private criteria;
554
+ static from(criteria: TaxSearchCriteria): TaxSearchCriteriaBuilder;
555
+ taxDelinquentYear(filter: NumericRangeFilter): this;
556
+ build(): TaxSearchCriteria;
557
+ }
558
+ /**
559
+ * Builder for valuation search criteria
560
+ */
561
+ export declare class ValuationSearchCriteriaBuilder {
562
+ private criteria;
563
+ static from(criteria: ValuationSearchCriteria): ValuationSearchCriteriaBuilder;
564
+ estimatedValue(filter: NumericRangeFilter): this;
565
+ ltv(filter: NumericRangeFilter): this;
566
+ equityPercent(filter: NumericRangeFilter): this;
567
+ build(): ValuationSearchCriteria;
568
+ }
569
+ /**
570
+ * Builder for OR search criteria
571
+ */
572
+ export declare class OrSearchCriteriaBuilder {
573
+ private criteria;
574
+ static from(criteria: OrSearchCriteria): OrSearchCriteriaBuilder;
575
+ listing(): {
576
+ status(filter: StringFilter): StringFilter;
577
+ };
578
+ sale(): {
579
+ lastSaleDate(filter: DateRangeFilter): DateRangeFilter;
580
+ };
581
+ build(): OrSearchCriteria;
582
+ }
583
+ /**
584
+ * Main builder for search criteria
585
+ *
586
+ * Note: The API requires a query field (returns 400 without it), even when
587
+ * address filters are provided. Query appears to be a geographic scope string
588
+ * (e.g., "US", "AZ", "Maricopa County, AZ"). You can set it via constructor
589
+ * or using the query() method.
590
+ */
591
+ export declare class SearchCriteriaBuilder extends BaseBuilder<SearchCriteria> {
592
+ protected criteria: Partial<SearchCriteria>;
593
+ /**
594
+ * Creates a new SearchCriteriaBuilder
595
+ *
596
+ * @param query - Geographic scope for the search (e.g., "US", "AZ", "Maricopa County, AZ").
597
+ * This is required by the API even when address filters are provided.
598
+ * The query defines the geographic boundary/scope for property searches.
599
+ */
600
+ constructor(query: string);
601
+ static from(criteria: SearchCriteria): SearchCriteriaBuilder;
602
+ /**
603
+ * Sets the geographic scope for the search
604
+ *
605
+ * @param value - Geographic scope string (e.g., "US", "AZ", "Maricopa County, AZ").
606
+ * This defines the geographic boundary/scope for property searches.
607
+ * Required by the API even when address filters are provided.
608
+ * @returns This builder instance for method chaining
609
+ */
610
+ query(value: string): this;
611
+ quickList(value: QuickListValueWithNot): this;
612
+ quickLists(values: QuickListValueWithNot[]): this;
613
+ orQuickLists(values: QuickListValueWithNot[]): this;
614
+ address(criteria: AddressSearchCriteria): this;
615
+ address(configurator: (builder: AddressSearchCriteriaBuilder) => void): this;
616
+ assessment(criteria: AssessmentSearchCriteria): this;
617
+ assessment(configurator: (builder: AssessmentSearchCriteriaBuilder) => void): this;
618
+ building(criteria: BuildingSearchCriteria): this;
619
+ building(configurator: (builder: BuildingSearchCriteriaBuilder) => void): this;
620
+ compAddress(criteria: CompAddressSearchCriteria): this;
621
+ compAddress(configurator: (builder: CompAddressSearchCriteriaBuilder) => void): this;
622
+ demographics(criteria: DemographicsSearchCriteria): this;
623
+ demographics(configurator: (builder: DemographicsSearchCriteriaBuilder) => void): this;
624
+ foreclosure(criteria: ForeclosureSearchCriteria): this;
625
+ foreclosure(configurator: (builder: ForeclosureSearchCriteriaBuilder) => void): this;
626
+ general(criteria: GeneralSearchCriteria): this;
627
+ general(configurator: (builder: GeneralSearchCriteriaBuilder) => void): this;
628
+ ids(criteria: IdsSearchCriteria): this;
629
+ ids(configurator: (builder: IdsSearchCriteriaBuilder) => void): this;
630
+ intel(criteria: IntelSearchCriteria): this;
631
+ intel(configurator: (builder: IntelSearchCriteriaBuilder) => void): this;
632
+ involuntaryLien(criteria: InvoluntaryLienSearchCriteria): this;
633
+ involuntaryLien(configurator: (builder: InvoluntaryLienSearchCriteriaBuilder) => void): this;
634
+ legal(criteria: LegalSearchCriteria): this;
635
+ legal(configurator: (builder: LegalSearchCriteriaBuilder) => void): this;
636
+ listing(criteria: ListingSearchCriteria): this;
637
+ listing(configurator: (builder: ListingSearchCriteriaBuilder) => void): this;
638
+ lot(criteria: LotSearchCriteria): this;
639
+ lot(configurator: (builder: LotSearchCriteriaBuilder) => void): this;
640
+ openLien(criteria: OpenLienSearchCriteria): this;
641
+ openLien(configurator: (builder: OpenLienSearchCriteriaBuilder) => void): this;
642
+ owner(criteria: OwnerSearchCriteria): this;
643
+ owner(configurator: (builder: OwnerSearchCriteriaBuilder) => void): this;
644
+ permit(criteria: PermitSearchCriteria): this;
645
+ permit(configurator: (builder: PermitSearchCriteriaBuilder) => void): this;
646
+ propertyOwnerProfile(criteria: PropertyOwnerProfileSearchCriteria): this;
647
+ propertyOwnerProfile(configurator: (builder: PropertyOwnerProfileSearchCriteriaBuilder) => void): this;
648
+ sale(criteria: SaleSearchCriteria): this;
649
+ sale(configurator: (builder: SaleSearchCriteriaBuilder) => void): this;
650
+ tax(criteria: TaxSearchCriteria): this;
651
+ tax(configurator: (builder: TaxSearchCriteriaBuilder) => void): this;
652
+ valuation(criteria: ValuationSearchCriteria): this;
653
+ valuation(configurator: (builder: ValuationSearchCriteriaBuilder) => void): this;
654
+ or(criteria: OrSearchCriteria[]): this;
655
+ }
656
+ /**
657
+ * Builder for delivery configuration
658
+ */
659
+ export declare class DeliveryConfigBuilder {
660
+ private config;
661
+ static from(config: DeliveryConfig): DeliveryConfigBuilder;
662
+ webhook(url: string, headers?: Record<string, string>, errorUrl?: string): this;
663
+ kinesis(streamName: string, region: string, iamAccessKeyId: string, iamSecretAccessKey: string): this;
664
+ build(): DeliveryConfig;
665
+ }
666
+ /**
667
+ * Main builder for property subscription requests
668
+ */
669
+ export declare class PropertySubscriptionBuilder extends BaseBuilder<PropertySubscriptionRequest> {
670
+ static from(request: PropertySubscriptionRequest): PropertySubscriptionBuilder;
671
+ searchCriteria(criteria: SearchCriteria): this;
672
+ searchCriteria(configurator: (builder: SearchCriteriaBuilder) => void): this;
673
+ deliveryConfig(config: DeliveryConfig): this;
674
+ deliveryConfig(configurator: (builder: DeliveryConfigBuilder) => void): this;
675
+ build(): PropertySubscriptionRequest;
676
+ }
677
+ /**
678
+ * Builder for property lookup request items
679
+ */
680
+ export declare class PropertyLookupRequestItemBuilder {
681
+ private item;
682
+ static from(item: PropertyLookupRequestItem): PropertyLookupRequestItemBuilder;
683
+ address(address: PropertyLookupRequestAddress): this;
684
+ propertyId(propertyId: string): this;
685
+ hash(hash: string): this;
686
+ apn(apn: string): this;
687
+ countyFipsCode(countyFipsCode: string): this;
688
+ requestId(requestId: string): this;
689
+ build(): PropertyLookupRequestItem;
690
+ }
691
+ /**
692
+ * Builder for property lookup options
693
+ * PropertyLookupOptions has 40+ fields, so a builder provides a cleaner API
694
+ */
695
+ export declare class PropertyLookupOptionsBuilder {
696
+ private options;
697
+ static from(options: PropertyLookupOptions): PropertyLookupOptionsBuilder;
698
+ pagination(skip: number, take: number): this;
699
+ skip(skip: number): this;
700
+ take(take: number): this;
701
+ showRequests(show: boolean): this;
702
+ areaPolygon(show: boolean): this;
703
+ quicklistCounts(show: boolean): this;
704
+ distance(miles?: number, yards?: number, feet?: number, kilometers?: number, meters?: number): this;
705
+ boundingBox(nw: GeoPoint, se: GeoPoint): this;
706
+ bedrooms(min?: number, max?: number): this;
707
+ bathrooms(min?: number, max?: number): this;
708
+ stories(min?: number, max?: number): this;
709
+ area(minPercent?: number, maxPercent?: number): this;
710
+ yearBuilt(min?: number, max?: number): this;
711
+ lotSize(minPercent?: number, maxPercent?: number): this;
712
+ skipTrace(enabled: boolean): this;
713
+ aggregateLoanTypes(enabled: boolean): this;
714
+ images(enabled: boolean): this;
715
+ dateFormat(format: string): this;
716
+ sort(field: string, order: "asc" | "desc" | "random", sessionId?: string): this;
717
+ useSubdivision(enabled: boolean): this;
718
+ build(): PropertyLookupOptions;
719
+ }
720
+ /**
721
+ * Builder for async property lookup options
722
+ * Extends PropertyLookupOptionsBuilder with async-specific methods like webhook
723
+ */
724
+ export declare class AsyncPropertyLookupOptionsBuilder extends PropertyLookupOptionsBuilder {
725
+ static from(options: PropertyLookupOptions): AsyncPropertyLookupOptionsBuilder;
726
+ webhook(url: string, errorUrl?: string): this;
727
+ }
728
+ /**
729
+ * Builder for property lookup requests
730
+ */
731
+ export declare class PropertyLookupRequestBuilder extends BaseBuilder<PropertyLookupRequest> {
732
+ private requestItems;
733
+ static from(request: PropertyLookupRequest): PropertyLookupRequestBuilder;
734
+ items(items: PropertyLookupRequestItem[]): this;
735
+ addItem(item: PropertyLookupRequestItem): this;
736
+ addItemBuilder(builder: PropertyLookupRequestItemBuilder): this;
737
+ options(options: PropertyLookupOptions): this;
738
+ options(configurator: (builder: PropertyLookupOptionsBuilder) => void): this;
739
+ build(): PropertyLookupRequest;
740
+ }
741
+ /**
742
+ * Builder for property search requests
743
+ */
744
+ export declare class PropertySearchRequestBuilder extends BaseBuilder<PropertySearchRequest> {
745
+ static from(request: PropertySearchRequest): PropertySearchRequestBuilder;
746
+ searchCriteria(criteria: SearchCriteria): this;
747
+ searchCriteria(configurator: (builder: SearchCriteriaBuilder) => void): this;
748
+ options(options: PropertyLookupOptions): this;
749
+ options(configurator: (builder: PropertyLookupOptionsBuilder) => void): this;
750
+ build(): PropertySearchRequest;
751
+ }
752
+ /**
753
+ * Builder for property search async requests
754
+ */
755
+ export declare class PropertySearchAsyncRequestBuilder extends BaseBuilder<PropertySearchAsyncRequest> {
756
+ static from(request: PropertySearchAsyncRequest): PropertySearchAsyncRequestBuilder;
757
+ searchCriteria(criteria: SearchCriteria): this;
758
+ searchCriteria(configurator: (builder: SearchCriteriaBuilder) => void): this;
759
+ options(options: PropertyLookupOptions): this;
760
+ options(configurator: (builder: PropertyLookupOptionsBuilder) => void): this;
761
+ build(): PropertySearchAsyncRequest;
762
+ }
763
+ /**
764
+ * Builder for property lookup async requests
765
+ */
766
+ export declare class PropertyLookupAsyncRequestBuilder extends BaseBuilder<PropertyLookupAsyncRequest> {
767
+ private requestItems;
768
+ static from(request: PropertyLookupAsyncRequest): PropertyLookupAsyncRequestBuilder;
769
+ items(items: PropertyLookupRequestItem[]): this;
770
+ addItem(item: PropertyLookupRequestItem): this;
771
+ addItemBuilder(builder: PropertyLookupRequestItemBuilder): this;
772
+ options(options: PropertyLookupOptions): this;
773
+ options(configurator: (builder: PropertyLookupOptionsBuilder) => void): this;
774
+ build(): PropertyLookupAsyncRequest;
775
+ }
776
+ /**
777
+ * Builder for property permit request filters
778
+ */
779
+ export declare class PropertyPermitRequestBuilder {
780
+ private request;
781
+ private options;
782
+ static from(permitRequest: PropertyPermitRequest): PropertyPermitRequestBuilder;
783
+ address(address: PropertyLookupRequestAddress): this;
784
+ hash(hash: string): this;
785
+ propertyId(propertyId: string): this;
786
+ apn(apn: string): this;
787
+ countyFipsCode(countyFipsCode: string): this;
788
+ allTags(filter: StringFilter): this;
789
+ allTagsBuilder(filter: StringFilter): this;
790
+ description(filter: StringFilter): this;
791
+ descriptionBuilder(filter: StringFilter): this;
792
+ endDate(filter: DateRangeFilter): this;
793
+ endDateBuilder(filter: DateRangeFilter): this;
794
+ fileDate(filter: DateRangeFilter): this;
795
+ fileDateBuilder(filter: DateRangeFilter): this;
796
+ finalDate(filter: DateRangeFilter): this;
797
+ finalDateBuilder(filter: DateRangeFilter): this;
798
+ issueDate(filter: DateRangeFilter): this;
799
+ issueDateBuilder(filter: DateRangeFilter): this;
800
+ jobValue(filter: NumericRangeFilter): this;
801
+ jobValueBuilder(filter: NumericRangeFilter): this;
802
+ startDate(filter: DateRangeFilter): this;
803
+ startDateBuilder(filter: DateRangeFilter): this;
804
+ status(filter: StringFilter): this;
805
+ statusBuilder(filter: StringFilter): this;
806
+ subType(filter: StringFilter): this;
807
+ subTypeBuilder(filter: StringFilter): this;
808
+ type(filter: StringFilter): this;
809
+ typeBuilder(filter: StringFilter): this;
810
+ pagination(skip: number, take: number): this;
811
+ skip(skip: number): this;
812
+ take(take: number): this;
813
+ sessionId(sessionId: string): this;
814
+ dateFormat(format: string): this;
815
+ showRequests(show: boolean): this;
816
+ showOptions(show: boolean): this;
817
+ showMeta(show: boolean): this;
818
+ sort(field: string, order: "asc" | "desc"): this;
819
+ build(): PropertyPermitRequest;
820
+ }
821
+ export {};