@honestdigital/vehicle-service-types 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +76 -0
  2. package/dist/context.d.ts +53 -0
  3. package/dist/context.d.ts.map +1 -0
  4. package/dist/repositories/vehicleConfigOptions.d.ts +165 -0
  5. package/dist/repositories/vehicleConfigOptions.d.ts.map +1 -0
  6. package/dist/routers/index.d.ts +793 -0
  7. package/dist/routers/index.d.ts.map +1 -0
  8. package/dist/schemas/comparison.schema.d.ts +37 -0
  9. package/dist/schemas/comparison.schema.d.ts.map +1 -0
  10. package/dist/schemas/externalApi.schema.d.ts +1532 -0
  11. package/dist/schemas/externalApi.schema.d.ts.map +1 -0
  12. package/dist/schemas/filters.schema.d.ts +276 -0
  13. package/dist/schemas/filters.schema.d.ts.map +1 -0
  14. package/dist/schemas/vehicle.schema.d.ts +1204 -0
  15. package/dist/schemas/vehicle.schema.d.ts.map +1 -0
  16. package/dist/services/lenderdesk.d.ts +139 -0
  17. package/dist/services/lenderdesk.d.ts.map +1 -0
  18. package/dist/services/mmt.d.ts +52 -0
  19. package/dist/services/mmt.d.ts.map +1 -0
  20. package/dist/types/comparison.d.ts +157 -0
  21. package/dist/types/comparison.d.ts.map +1 -0
  22. package/dist/types/filters.d.ts +95 -0
  23. package/dist/types/filters.d.ts.map +1 -0
  24. package/dist/types/guards.d.ts +32 -0
  25. package/dist/types/guards.d.ts.map +1 -0
  26. package/dist/types/index.d.ts +18 -0
  27. package/dist/types/index.d.ts.map +1 -0
  28. package/dist/types/jdp.d.ts +210 -0
  29. package/dist/types/jdp.d.ts.map +1 -0
  30. package/dist/types/search.d.ts +475 -0
  31. package/dist/types/search.d.ts.map +1 -0
  32. package/dist/types/sync.d.ts +102 -0
  33. package/dist/types/sync.d.ts.map +1 -0
  34. package/dist/types/vehicle.d.ts +75 -0
  35. package/dist/types/vehicle.d.ts.map +1 -0
  36. package/dist/types.d.ts +17 -0
  37. package/dist/types.d.ts.map +1 -0
  38. package/dist/types.js +4213 -0
  39. package/dist/utilities/error.d.ts +49 -0
  40. package/dist/utilities/error.d.ts.map +1 -0
  41. package/package.json +112 -0
@@ -0,0 +1,210 @@
1
+ /**
2
+ * JDP (JM&A Group Data Provider) Type Definitions
3
+ * Used for SFTP-based CSV vehicle inventory sync
4
+ */
5
+ /**
6
+ * Raw vehicle data from JDP CSV file
7
+ * 57 columns as defined in the CSV schema
8
+ */
9
+ export interface JDPVehicle {
10
+ Type: string;
11
+ Vin: string;
12
+ Year: string;
13
+ Make: string;
14
+ Model: string;
15
+ Body: string;
16
+ Trim: string;
17
+ Doors: string;
18
+ Stock: string;
19
+ ExteriorColor: string;
20
+ ExteriorColorCode: string;
21
+ InteriorColor: string;
22
+ InteriorColorCode: string;
23
+ Transmission: string;
24
+ TransmissionSpeed: string;
25
+ EngineDescription: string;
26
+ Fuel: string;
27
+ Drivetrain: string;
28
+ Miles: string;
29
+ EstimatedInvoicePrice: string;
30
+ SellingPrice: string;
31
+ MSRP: string;
32
+ PurchasePrice: string;
33
+ SellingPriceAfterRebates: string;
34
+ LowestPayment: string;
35
+ LowestLeasePayment: string;
36
+ LowestLoanPayment: string;
37
+ LowestCashPayment: string;
38
+ OfferType: string;
39
+ Term: string;
40
+ PaymentOptions: string;
41
+ CityMPG: string;
42
+ HighwayMPG: string;
43
+ CombinedMPG: string;
44
+ ChromeStyleId: string;
45
+ Photos: string;
46
+ MediaGallery: string;
47
+ StandardFeatures: string;
48
+ SafetyFeatures: string;
49
+ OptionalFeatures: string;
50
+ InventoryId: string;
51
+ DateInStock: string;
52
+ IsHotDeal: string;
53
+ ModelCode: string;
54
+ PassengerCapacity: string;
55
+ DealerId: string;
56
+ DealerName: string;
57
+ DealerAddress1: string;
58
+ DealerCity: string;
59
+ DealerState: string;
60
+ DealerZipCode: string;
61
+ DealerCountry: string;
62
+ DealerPhone: string;
63
+ DealerGeoLocationLat: string;
64
+ DealerGeolocationLon: string;
65
+ ZipCode: string;
66
+ StackabilityGrid: string;
67
+ }
68
+ /**
69
+ * Payment option from JDP PaymentOptions JSON array
70
+ */
71
+ export interface JDPPaymentOption {
72
+ DateCreated: string;
73
+ Payment: number;
74
+ WeeklyPayment: number;
75
+ BiWeeklyPayment: number;
76
+ SemiMonthlyPayment: number;
77
+ PaymentPerThousand: number;
78
+ CapitalizedCostReduction: number;
79
+ ResidualValue: number;
80
+ FinalBalloonPayment: number;
81
+ MileagePenalty: number;
82
+ PerMileCharge: number;
83
+ DueAtSign: number;
84
+ OfferType: number;
85
+ LenderId: string;
86
+ Lender: string;
87
+ LenderIsOem: boolean;
88
+ ProgramIsOem: boolean;
89
+ PurchasePrice: number;
90
+ SecurityDeposit: number;
91
+ DownPayment: number;
92
+ Term: number;
93
+ MonthTerm: number;
94
+ DispositionFee: number;
95
+ TerminationFee: number;
96
+ TotalPayments: number;
97
+ AcquisitionFee: number;
98
+ PurchaseOptionFee: number;
99
+ Retail: number;
100
+ MileageOdometer: number;
101
+ MileageLimit: number;
102
+ MaximumResidualizedMSRP: number;
103
+ MaximumCapitalizedAmount: number;
104
+ ResidualPercentage: number;
105
+ TotalCapitalization: number;
106
+ Beacon: number;
107
+ Factor: number;
108
+ DocFee: number;
109
+ ExpirationDate: string;
110
+ Copyright: string;
111
+ InterestRate: number;
112
+ OriginalRate: number;
113
+ DealRatio: number;
114
+ ProgramName: string;
115
+ ProgramId: number;
116
+ ProgramNumber: string;
117
+ ProgramDescription: string;
118
+ IsHotDeal: number;
119
+ EffectiveDate: string;
120
+ CategoryId: number;
121
+ ResidualProgramCategoryId: number;
122
+ ResidualProgramId: number;
123
+ FinancedAmount: number;
124
+ Rebates: JDPRebate[];
125
+ ConditionalRebates: JDPRebate[];
126
+ SingleSecurityDeposit: number;
127
+ }
128
+ /**
129
+ * Rebate from JDP payment options
130
+ * Fields match actual SFTP data structure (ProgramId, ProgramName, Amount, etc.)
131
+ */
132
+ export interface JDPRebate {
133
+ ProgramId?: number;
134
+ ProgramName?: string;
135
+ ProgramNumber?: string;
136
+ ProgramDescription?: string;
137
+ Amount?: number;
138
+ GroupAffiliationId?: number;
139
+ GroupAffiliation?: string;
140
+ PreviousOwnershipId?: number;
141
+ PreviousOwnership?: string;
142
+ }
143
+ /**
144
+ * JDP configuration stored in tenant record
145
+ */
146
+ export interface JDPConfig {
147
+ /** JDP dealer ID from filename (e.g., "142" from JDP_inventory_142_...) */
148
+ jdpDealerId: string;
149
+ /** Whether JDP sync is enabled for this tenant */
150
+ enabled: boolean;
151
+ /** Optional: last sync timestamp */
152
+ lastSyncAt?: string;
153
+ /** Optional: directory path on SFTP server */
154
+ sftpDirectory?: string;
155
+ }
156
+ /**
157
+ * Mapping between JDP dealer and internal tenant
158
+ */
159
+ export interface JDPDealerMapping {
160
+ jdpDealerId: string;
161
+ tenantId: number;
162
+ tenantName: string;
163
+ }
164
+ /**
165
+ * Result of parsing a JDP CSV file
166
+ */
167
+ export interface JDPParseResult {
168
+ /** JDP dealer ID extracted from filename */
169
+ jdpDealerId: string;
170
+ /** Filename without path */
171
+ filename: string;
172
+ /** Parsed vehicles */
173
+ vehicles: JDPVehicle[];
174
+ /** Parse errors (non-fatal) */
175
+ parseErrors: Array<{
176
+ row: number;
177
+ field?: string;
178
+ error: string;
179
+ }>;
180
+ /** Total rows in file (including header) */
181
+ totalRows: number;
182
+ }
183
+ /**
184
+ * JDP sync configuration for a sync run
185
+ */
186
+ export interface JDPSyncOptions {
187
+ /** Path to CSV file */
188
+ filePath: string;
189
+ /** Skip Chrome image fetching (for faster testing) */
190
+ skipChromeImages?: boolean;
191
+ /** Force sync even if no changes detected */
192
+ forceSync?: boolean;
193
+ /** Dry run - don't actually write to database */
194
+ dryRun?: boolean;
195
+ /** Skip deleting vehicles not in CSV (only add/update) */
196
+ noDelete?: boolean;
197
+ }
198
+ /**
199
+ * JDP offer types enum
200
+ */
201
+ export declare const JDP_OFFER_TYPES: {
202
+ readonly LOAN: 1;
203
+ readonly LEASE: 2;
204
+ readonly CASH: 3;
205
+ };
206
+ /**
207
+ * CSV column headers in order
208
+ */
209
+ export declare const JDP_CSV_HEADERS: readonly ["Type", "Vin", "Year", "Make", "Model", "Body", "Trim", "Doors", "ExteriorColor", "ExteriorColorCode", "InteriorColor", "InteriorColorCode", "Transmission", "EngineDescription", "Miles", "EstimatedInvoicePrice", "SellingPrice", "MSRP", "PurchasePrice", "DateInStock", "Fuel", "CityMPG", "HighwayMPG", "CombinedMPG", "ChromeStyleId", "InventoryId", "LowestPayment", "LowestLeasePayment", "LowestLoanPayment", "LowestCashPayment", "OfferType", "Term", "Drivetrain", "ZipCode", "StandardFeatures", "SafetyFeatures", "OptionalFeatures", "PaymentOptions", "Photos", "DealerAddress1", "DealerCity", "DealerCountry", "DealerGeoLocationLat", "DealerGeolocationLon", "DealerPhone", "DealerState", "DealerZipCode", "PassengerCapacity", "DealerId", "DealerName", "Stock", "TransmissionSpeed", "IsHotDeal", "StackabilityGrid", "MediaGallery", "ModelCode", "SellingPriceAfterRebates"];
210
+ //# sourceMappingURL=jdp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jdp.d.ts","sourceRoot":"","sources":["../../src/types/jdp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,475 @@
1
+ import { z } from 'zod';
2
+ import type { SortOption } from './filters';
3
+ export interface VehicleFilters {
4
+ make?: string[];
5
+ model?: string[];
6
+ trim?: string[];
7
+ year?: number[];
8
+ status?: string[];
9
+ location?: string[];
10
+ drivetrain?: string[];
11
+ doors?: number[];
12
+ fuelType?: string[];
13
+ bodyStyle?: string[];
14
+ exteriorColor?: string[];
15
+ interiorColor?: string[];
16
+ exteriorColorGeneric?: string[];
17
+ interiorColorGeneric?: string[];
18
+ priceRange?: {
19
+ min?: number;
20
+ max?: number;
21
+ };
22
+ mileageRange?: {
23
+ min?: number;
24
+ max?: number;
25
+ };
26
+ }
27
+ export interface ApiVehicleFilters {
28
+ brand?: string[];
29
+ model?: string[];
30
+ trim?: string[];
31
+ year?: string[];
32
+ status?: string[];
33
+ location?: string[];
34
+ drivetrain?: string[];
35
+ doors?: string[];
36
+ fuelType?: string[];
37
+ bodyStyle?: string[];
38
+ exteriorColor?: string[];
39
+ interiorColor?: string[];
40
+ exteriorColorGeneric?: string[];
41
+ interiorColorGeneric?: string[];
42
+ price?: {
43
+ min: string;
44
+ max: string;
45
+ };
46
+ mileage?: {
47
+ min: string;
48
+ max: string;
49
+ };
50
+ }
51
+ export interface SearchParams {
52
+ tenantId: string;
53
+ searchQuery?: string;
54
+ filters: VehicleFilters;
55
+ pagination: {
56
+ limit: number;
57
+ offset: number;
58
+ };
59
+ sortBy?: SortOption;
60
+ groupByModel?: boolean;
61
+ }
62
+ export interface FacetParams {
63
+ tenantId: string;
64
+ searchQuery?: string;
65
+ filters?: VehicleFilters;
66
+ }
67
+ export interface MinimalVehicle {
68
+ vin: string;
69
+ brand: string;
70
+ model: string;
71
+ trim: string;
72
+ year: number;
73
+ price: number;
74
+ status: string;
75
+ exteriorColor?: string | null;
76
+ interiorColor?: string | null;
77
+ mainImage?: string;
78
+ }
79
+ export interface SearchResult {
80
+ vehicles: MinimalVehicle[];
81
+ totalCount: number;
82
+ pagination: {
83
+ limit: number;
84
+ offset: number;
85
+ hasMore: boolean;
86
+ };
87
+ searchMeta?: SearchMetadata;
88
+ }
89
+ export interface SearchMetadata {
90
+ query: string;
91
+ resultCount: number;
92
+ executionTimeMs: number;
93
+ }
94
+ export declare const VehicleFiltersSchema: z.ZodObject<{
95
+ brand: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
96
+ model: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
97
+ trim: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
98
+ year: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
99
+ status: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
100
+ location: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
101
+ drivetrain: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
102
+ doors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
103
+ fuelType: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
104
+ bodyStyle: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
105
+ exteriorColor: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
106
+ interiorColor: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
107
+ exteriorColorGeneric: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
108
+ interiorColorGeneric: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
109
+ price: z.ZodOptional<z.ZodObject<{
110
+ min: z.ZodString;
111
+ max: z.ZodString;
112
+ }, "strip", z.ZodTypeAny, {
113
+ min: string;
114
+ max: string;
115
+ }, {
116
+ min: string;
117
+ max: string;
118
+ }>>;
119
+ mileage: z.ZodOptional<z.ZodObject<{
120
+ min: z.ZodString;
121
+ max: z.ZodString;
122
+ }, "strip", z.ZodTypeAny, {
123
+ min: string;
124
+ max: string;
125
+ }, {
126
+ min: string;
127
+ max: string;
128
+ }>>;
129
+ }, "strip", z.ZodTypeAny, {
130
+ trim?: string[] | undefined;
131
+ year?: string[] | undefined;
132
+ status?: string[] | undefined;
133
+ fuelType?: string[] | undefined;
134
+ brand?: string[] | undefined;
135
+ model?: string[] | undefined;
136
+ price?: {
137
+ min: string;
138
+ max: string;
139
+ } | undefined;
140
+ mileage?: {
141
+ min: string;
142
+ max: string;
143
+ } | undefined;
144
+ location?: string[] | undefined;
145
+ bodyStyle?: string[] | undefined;
146
+ exteriorColor?: string[] | undefined;
147
+ exteriorColorGeneric?: string[] | undefined;
148
+ interiorColor?: string[] | undefined;
149
+ interiorColorGeneric?: string[] | undefined;
150
+ drivetrain?: string[] | undefined;
151
+ doors?: string[] | undefined;
152
+ }, {
153
+ trim?: string[] | undefined;
154
+ year?: string[] | undefined;
155
+ status?: string[] | undefined;
156
+ fuelType?: string[] | undefined;
157
+ brand?: string[] | undefined;
158
+ model?: string[] | undefined;
159
+ price?: {
160
+ min: string;
161
+ max: string;
162
+ } | undefined;
163
+ mileage?: {
164
+ min: string;
165
+ max: string;
166
+ } | undefined;
167
+ location?: string[] | undefined;
168
+ bodyStyle?: string[] | undefined;
169
+ exteriorColor?: string[] | undefined;
170
+ exteriorColorGeneric?: string[] | undefined;
171
+ interiorColor?: string[] | undefined;
172
+ interiorColorGeneric?: string[] | undefined;
173
+ drivetrain?: string[] | undefined;
174
+ doors?: string[] | undefined;
175
+ }>;
176
+ export declare const sortOptionSchema: z.ZodEnum<["year_desc", "year_asc", "price_desc", "price_asc", "mileage_desc", "mileage_asc"]>;
177
+ export declare const SearchInputSchema: z.ZodObject<{
178
+ searchQuery: z.ZodOptional<z.ZodString>;
179
+ filters: z.ZodOptional<z.ZodObject<{
180
+ brand: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
181
+ model: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
182
+ trim: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
183
+ year: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
184
+ status: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
185
+ location: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
186
+ drivetrain: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
187
+ doors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
188
+ fuelType: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
189
+ bodyStyle: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
190
+ exteriorColor: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
191
+ interiorColor: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
192
+ exteriorColorGeneric: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
193
+ interiorColorGeneric: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
194
+ price: z.ZodOptional<z.ZodObject<{
195
+ min: z.ZodString;
196
+ max: z.ZodString;
197
+ }, "strip", z.ZodTypeAny, {
198
+ min: string;
199
+ max: string;
200
+ }, {
201
+ min: string;
202
+ max: string;
203
+ }>>;
204
+ mileage: z.ZodOptional<z.ZodObject<{
205
+ min: z.ZodString;
206
+ max: z.ZodString;
207
+ }, "strip", z.ZodTypeAny, {
208
+ min: string;
209
+ max: string;
210
+ }, {
211
+ min: string;
212
+ max: string;
213
+ }>>;
214
+ }, "strip", z.ZodTypeAny, {
215
+ trim?: string[] | undefined;
216
+ year?: string[] | undefined;
217
+ status?: string[] | undefined;
218
+ fuelType?: string[] | undefined;
219
+ brand?: string[] | undefined;
220
+ model?: string[] | undefined;
221
+ price?: {
222
+ min: string;
223
+ max: string;
224
+ } | undefined;
225
+ mileage?: {
226
+ min: string;
227
+ max: string;
228
+ } | undefined;
229
+ location?: string[] | undefined;
230
+ bodyStyle?: string[] | undefined;
231
+ exteriorColor?: string[] | undefined;
232
+ exteriorColorGeneric?: string[] | undefined;
233
+ interiorColor?: string[] | undefined;
234
+ interiorColorGeneric?: string[] | undefined;
235
+ drivetrain?: string[] | undefined;
236
+ doors?: string[] | undefined;
237
+ }, {
238
+ trim?: string[] | undefined;
239
+ year?: string[] | undefined;
240
+ status?: string[] | undefined;
241
+ fuelType?: string[] | undefined;
242
+ brand?: string[] | undefined;
243
+ model?: string[] | undefined;
244
+ price?: {
245
+ min: string;
246
+ max: string;
247
+ } | undefined;
248
+ mileage?: {
249
+ min: string;
250
+ max: string;
251
+ } | undefined;
252
+ location?: string[] | undefined;
253
+ bodyStyle?: string[] | undefined;
254
+ exteriorColor?: string[] | undefined;
255
+ exteriorColorGeneric?: string[] | undefined;
256
+ interiorColor?: string[] | undefined;
257
+ interiorColorGeneric?: string[] | undefined;
258
+ drivetrain?: string[] | undefined;
259
+ doors?: string[] | undefined;
260
+ }>>;
261
+ pagination: z.ZodDefault<z.ZodOptional<z.ZodObject<{
262
+ limit: z.ZodDefault<z.ZodNumber>;
263
+ offset: z.ZodDefault<z.ZodNumber>;
264
+ }, "strip", z.ZodTypeAny, {
265
+ limit: number;
266
+ offset: number;
267
+ }, {
268
+ limit?: number | undefined;
269
+ offset?: number | undefined;
270
+ }>>>;
271
+ sortBy: z.ZodOptional<z.ZodEnum<["year_desc", "year_asc", "price_desc", "price_asc", "mileage_desc", "mileage_asc"]>>;
272
+ groupByModel: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
273
+ }, "strip", z.ZodTypeAny, {
274
+ pagination: {
275
+ limit: number;
276
+ offset: number;
277
+ };
278
+ groupByModel: boolean;
279
+ filters?: {
280
+ trim?: string[] | undefined;
281
+ year?: string[] | undefined;
282
+ status?: string[] | undefined;
283
+ fuelType?: string[] | undefined;
284
+ brand?: string[] | undefined;
285
+ model?: string[] | undefined;
286
+ price?: {
287
+ min: string;
288
+ max: string;
289
+ } | undefined;
290
+ mileage?: {
291
+ min: string;
292
+ max: string;
293
+ } | undefined;
294
+ location?: string[] | undefined;
295
+ bodyStyle?: string[] | undefined;
296
+ exteriorColor?: string[] | undefined;
297
+ exteriorColorGeneric?: string[] | undefined;
298
+ interiorColor?: string[] | undefined;
299
+ interiorColorGeneric?: string[] | undefined;
300
+ drivetrain?: string[] | undefined;
301
+ doors?: string[] | undefined;
302
+ } | undefined;
303
+ searchQuery?: string | undefined;
304
+ sortBy?: "year_desc" | "year_asc" | "price_desc" | "price_asc" | "mileage_desc" | "mileage_asc" | undefined;
305
+ }, {
306
+ filters?: {
307
+ trim?: string[] | undefined;
308
+ year?: string[] | undefined;
309
+ status?: string[] | undefined;
310
+ fuelType?: string[] | undefined;
311
+ brand?: string[] | undefined;
312
+ model?: string[] | undefined;
313
+ price?: {
314
+ min: string;
315
+ max: string;
316
+ } | undefined;
317
+ mileage?: {
318
+ min: string;
319
+ max: string;
320
+ } | undefined;
321
+ location?: string[] | undefined;
322
+ bodyStyle?: string[] | undefined;
323
+ exteriorColor?: string[] | undefined;
324
+ exteriorColorGeneric?: string[] | undefined;
325
+ interiorColor?: string[] | undefined;
326
+ interiorColorGeneric?: string[] | undefined;
327
+ drivetrain?: string[] | undefined;
328
+ doors?: string[] | undefined;
329
+ } | undefined;
330
+ searchQuery?: string | undefined;
331
+ pagination?: {
332
+ limit?: number | undefined;
333
+ offset?: number | undefined;
334
+ } | undefined;
335
+ sortBy?: "year_desc" | "year_asc" | "price_desc" | "price_asc" | "mileage_desc" | "mileage_asc" | undefined;
336
+ groupByModel?: boolean | undefined;
337
+ }>;
338
+ export declare const FacetInputSchema: z.ZodObject<{
339
+ searchQuery: z.ZodOptional<z.ZodString>;
340
+ filters: z.ZodOptional<z.ZodObject<{
341
+ brand: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
342
+ model: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
343
+ trim: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
344
+ year: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
345
+ status: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
346
+ location: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
347
+ drivetrain: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
348
+ doors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
349
+ fuelType: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
350
+ bodyStyle: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
351
+ exteriorColor: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
352
+ interiorColor: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
353
+ exteriorColorGeneric: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
354
+ interiorColorGeneric: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
355
+ price: z.ZodOptional<z.ZodObject<{
356
+ min: z.ZodString;
357
+ max: z.ZodString;
358
+ }, "strip", z.ZodTypeAny, {
359
+ min: string;
360
+ max: string;
361
+ }, {
362
+ min: string;
363
+ max: string;
364
+ }>>;
365
+ mileage: z.ZodOptional<z.ZodObject<{
366
+ min: z.ZodString;
367
+ max: z.ZodString;
368
+ }, "strip", z.ZodTypeAny, {
369
+ min: string;
370
+ max: string;
371
+ }, {
372
+ min: string;
373
+ max: string;
374
+ }>>;
375
+ }, "strip", z.ZodTypeAny, {
376
+ trim?: string[] | undefined;
377
+ year?: string[] | undefined;
378
+ status?: string[] | undefined;
379
+ fuelType?: string[] | undefined;
380
+ brand?: string[] | undefined;
381
+ model?: string[] | undefined;
382
+ price?: {
383
+ min: string;
384
+ max: string;
385
+ } | undefined;
386
+ mileage?: {
387
+ min: string;
388
+ max: string;
389
+ } | undefined;
390
+ location?: string[] | undefined;
391
+ bodyStyle?: string[] | undefined;
392
+ exteriorColor?: string[] | undefined;
393
+ exteriorColorGeneric?: string[] | undefined;
394
+ interiorColor?: string[] | undefined;
395
+ interiorColorGeneric?: string[] | undefined;
396
+ drivetrain?: string[] | undefined;
397
+ doors?: string[] | undefined;
398
+ }, {
399
+ trim?: string[] | undefined;
400
+ year?: string[] | undefined;
401
+ status?: string[] | undefined;
402
+ fuelType?: string[] | undefined;
403
+ brand?: string[] | undefined;
404
+ model?: string[] | undefined;
405
+ price?: {
406
+ min: string;
407
+ max: string;
408
+ } | undefined;
409
+ mileage?: {
410
+ min: string;
411
+ max: string;
412
+ } | undefined;
413
+ location?: string[] | undefined;
414
+ bodyStyle?: string[] | undefined;
415
+ exteriorColor?: string[] | undefined;
416
+ exteriorColorGeneric?: string[] | undefined;
417
+ interiorColor?: string[] | undefined;
418
+ interiorColorGeneric?: string[] | undefined;
419
+ drivetrain?: string[] | undefined;
420
+ doors?: string[] | undefined;
421
+ }>>;
422
+ }, "strip", z.ZodTypeAny, {
423
+ filters?: {
424
+ trim?: string[] | undefined;
425
+ year?: string[] | undefined;
426
+ status?: string[] | undefined;
427
+ fuelType?: string[] | undefined;
428
+ brand?: string[] | undefined;
429
+ model?: string[] | undefined;
430
+ price?: {
431
+ min: string;
432
+ max: string;
433
+ } | undefined;
434
+ mileage?: {
435
+ min: string;
436
+ max: string;
437
+ } | undefined;
438
+ location?: string[] | undefined;
439
+ bodyStyle?: string[] | undefined;
440
+ exteriorColor?: string[] | undefined;
441
+ exteriorColorGeneric?: string[] | undefined;
442
+ interiorColor?: string[] | undefined;
443
+ interiorColorGeneric?: string[] | undefined;
444
+ drivetrain?: string[] | undefined;
445
+ doors?: string[] | undefined;
446
+ } | undefined;
447
+ searchQuery?: string | undefined;
448
+ }, {
449
+ filters?: {
450
+ trim?: string[] | undefined;
451
+ year?: string[] | undefined;
452
+ status?: string[] | undefined;
453
+ fuelType?: string[] | undefined;
454
+ brand?: string[] | undefined;
455
+ model?: string[] | undefined;
456
+ price?: {
457
+ min: string;
458
+ max: string;
459
+ } | undefined;
460
+ mileage?: {
461
+ min: string;
462
+ max: string;
463
+ } | undefined;
464
+ location?: string[] | undefined;
465
+ bodyStyle?: string[] | undefined;
466
+ exteriorColor?: string[] | undefined;
467
+ exteriorColorGeneric?: string[] | undefined;
468
+ interiorColor?: string[] | undefined;
469
+ interiorColorGeneric?: string[] | undefined;
470
+ drivetrain?: string[] | undefined;
471
+ doors?: string[] | undefined;
472
+ } | undefined;
473
+ searchQuery?: string | undefined;
474
+ }>;
475
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"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"}