autotrader-connect-api
Version:
Production-ready TypeScript wrapper for Auto Trader UK Connect APIs
188 lines • 5.85 kB
TypeScript
/**
* Search module for AutoTrader API
* Handles search-related endpoints and operations
*/
import { SearchResponse, SearchFilters, SavedSearch, QuickSearchParams, SearchComparison, PopularSearch } from '../types/search';
import { VehicleResponse } from '../types/vehicle';
/**
* Perform enhanced vehicle search with facets and suggestions
* @param filters Search filters and parameters
* @returns Promise resolving to enhanced search results
*/
export declare function searchVehicles(filters?: SearchFilters): Promise<SearchResponse>;
/**
* Quick search for autocomplete and suggestions
* @param params Quick search parameters
* @returns Promise resolving to quick search results
*/
export declare function quickSearch(params: QuickSearchParams): Promise<{
vehicles: VehicleResponse[];
suggestions: {
makes: string[];
models: string[];
locations: string[];
};
}>;
/**
* Get search suggestions based on partial input
* @param query Partial search query
* @param type Type of suggestions to get
* @returns Promise resolving to suggestions
*/
export declare function getSearchSuggestions(query: string, type?: 'makes' | 'models' | 'locations' | 'all'): Promise<{
makes?: string[];
models?: string[];
locations?: Array<{
name: string;
type: string;
postcode?: string;
}>;
}>;
/**
* Save a search for future alerts
* @param searchData Search data to save
* @returns Promise resolving to saved search
*/
export declare function saveSearch(searchData: {
name: string;
filters: SearchFilters;
alertSettings: {
enabled: boolean;
frequency: 'Immediately' | 'Daily' | 'Weekly';
email?: string;
sms?: string;
pushNotification?: boolean;
};
}): Promise<SavedSearch>;
/**
* Get user's saved searches
* @returns Promise resolving to array of saved searches
*/
export declare function getSavedSearches(): Promise<SavedSearch[]>;
/**
* Update a saved search
* @param searchId Saved search ID
* @param updateData Updated search data
* @returns Promise resolving to updated saved search
*/
export declare function updateSavedSearch(searchId: string, updateData: Partial<{
name: string;
filters: SearchFilters;
alertSettings: SavedSearch['alertSettings'];
active: boolean;
}>): Promise<SavedSearch>;
/**
* Delete a saved search
* @param searchId Saved search ID
* @returns Promise resolving to deletion confirmation
*/
export declare function deleteSavedSearch(searchId: string): Promise<{
success: boolean;
}>;
/**
* Execute a saved search
* @param searchId Saved search ID
* @returns Promise resolving to search results
*/
export declare function executeSavedSearch(searchId: string): Promise<SearchResponse>;
/**
* Compare multiple vehicles
* @param vehicleIds Array of vehicle IDs to compare
* @returns Promise resolving to comparison data
*/
export declare function compareVehicles(vehicleIds: string[]): Promise<SearchComparison>;
/**
* Get popular searches
* @param category Optional category filter
* @returns Promise resolving to popular searches
*/
export declare function getPopularSearches(category?: 'Make' | 'Model' | 'Location' | 'Price Range' | 'Body Type'): Promise<PopularSearch[]>;
/**
* Get search analytics and insights
* @param timeframe Time period for analytics
* @returns Promise resolving to search analytics
*/
export declare function getSearchAnalytics(timeframe?: 'day' | 'week' | 'month' | 'year'): Promise<{
totalSearches: number;
uniqueSearches: number;
averageResultsPerSearch: number;
topSearchTerms: Array<{
term: string;
count: number;
trend: 'rising' | 'falling' | 'stable';
}>;
conversionRate: number;
performanceMetrics: {
averageSearchTime: number;
bounceRate: number;
clickThroughRate: number;
};
}>;
/**
* Track search interaction
* @param searchId Search ID
* @param interaction Interaction data
* @returns Promise resolving to tracking confirmation
*/
export declare function trackSearchInteraction(searchId: string, interaction: {
type: 'click' | 'view' | 'enquiry' | 'save' | 'compare';
vehicleId?: string;
timestamp?: string;
metadata?: Record<string, unknown>;
}): Promise<{
success: boolean;
}>;
/**
* Get related searches based on current search
* @param filters Current search filters
* @returns Promise resolving to related search suggestions
*/
export declare function getRelatedSearches(filters: SearchFilters): Promise<Array<{
query: string;
filters: Partial<SearchFilters>;
resultCount: number;
description: string;
popularity: number;
}>>;
/**
* Get market insights for search results
* @param filters Search filters to analyze
* @returns Promise resolving to market insights
*/
export declare function getMarketInsights(filters: SearchFilters): Promise<{
overview: {
totalVehicles: number;
averagePrice: number;
priceRange: {
min: number;
max: number;
};
averageMileage: number;
averageAge: number;
};
trends: {
priceDirection: 'Rising' | 'Falling' | 'Stable';
demandLevel: 'High' | 'Medium' | 'Low';
inventoryLevel: 'High' | 'Medium' | 'Low';
marketHealth: 'Strong' | 'Moderate' | 'Weak';
};
topPerformers: {
makes: Array<{
name: string;
count: number;
averagePrice: number;
}>;
models: Array<{
name: string;
count: number;
averagePrice: number;
}>;
dealers: Array<{
name: string;
count: number;
rating: number;
}>;
};
recommendations: string[];
}>;
//# sourceMappingURL=search.d.ts.map