/**
 * 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;
}
