import { z } from "zod";

export type SourceCategory =
  | "maps"
  | "directory"
  | "enrichment"
  | "extraction"
  | "scraping"
  | "other";

export interface NormalizedLead {
  businessName: string;
  website?: string;
  email?: string;
  phone?: string;
  address?: string;
  city?: string;
  state?: string;
  country?: string;
  category?: string;
  confidenceScore: number;
  rawData?: any;
}

export interface SearchParams {
  keyword?: string;
  location?: string;
  industry?: string;
  domain?: string;
  limit?: number;
  deepScrape?: boolean;
}

export interface ILeadSource {
  id: string;
  name: string;
  description: string;
  category: SourceCategory;
  inputSchema: z.ZodObject<any>;
  
  run(params: SearchParams): Promise<NormalizedLead[]>;
  isAvailable(): boolean | Promise<boolean>;
}
