@lineai/gov-deals
Version:
Explore Federal contracts for government building renovations, city hall renovations, courthouse updates, library modernizations, federal building improvement contracts, base housing and facilities upgrades.
43 lines (42 loc) • 1.28 kB
TypeScript
/**
* Common interface for all data sources
*/
import { SamOpportunity, SamOpportunitySearchFilters, SamOpportunitySearchResponse } from '../types/opportunities';
import { GovDealsPaginationParams } from '../types/common';
/**
* Interface that all data sources must implement
* This allows swapping between SAM.gov API and CSV data
*/
export interface OpportunitiesDataSource {
/**
* Search for opportunities
*/
search(filters?: SamOpportunitySearchFilters, pagination?: GovDealsPaginationParams): Promise<SamOpportunitySearchResponse>;
/**
* Get opportunity by ID
*/
getById(noticeId: string): Promise<SamOpportunity>;
/**
* Get opportunity description
*/
getDescription(noticeId: string): Promise<string>;
/**
* Search for construction opportunities
*/
searchConstruction(additionalFilters?: Partial<SamOpportunitySearchFilters>, pagination?: GovDealsPaginationParams): Promise<SamOpportunitySearchResponse>;
}
/**
* Data source types
*/
export type DataSourceType = 'api' | 'csv';
/**
* Configuration for data sources
*/
export interface DataSourceConfig {
type: DataSourceType;
apiKey?: string;
baseUrl?: string;
csvPath?: string;
timeout?: number;
debug?: boolean;
}