import { MetaAdData } from './types'; export interface RestructuredAdsResult { companies: Array<{ companyName: string; ads: Array<{ adId: string; assetType: string; format: string; visualHooks: string[]; audiencesAddressed: string[]; ageGroup?: string; graphicIdentity: string[]; copywritingHooks: string[]; copywritingAngles: string[]; usps: string[]; cta: string; adSummary: string; engagementMetrics?: string; duration?: string; adTotalAirTime?: string; adLibraryUrl?: string; targetingAssumptions: string[]; publisherPlatform: string[]; }>; }>; } export interface CompanyAnalysisResult { companyName: string; creativeSummary: string; topCreatives: { description: string; primaryHook: string; cta: string; ctaFraming: string; visualComposition: string; copywritingTone: string; }; whatWorks: Array<{ title: string; description: string; }>; missedOpportunities: Array<{ title: string; description: string; }>; actionableTakeaways: Array<{ title: string; insight: string; suggestedFormat: string; hypothesis: string; }>; top3Ads: Array<{ adId: string; reason: string; keyInsights: string[]; performanceIndicators: string; fullAdData: MetaAdData; }>; } export interface IndustryAnalysisResult { companyName: string; creativeSummary: string; topCreatives: Array<{ name: string; primaryHook: string; cta: string; visualComposition: string; copywritingTone: string; }>; whatWorks: string[]; missedOpportunities: string[]; actionableTakeaways: Array<{ title: string; insight: string; suggestedFormat: string; hypothesis: string; }>; } export interface AdConceptResult { text: string; } export declare class GeminiAnalyzer { private genAI; private model; constructor(apiKey?: string); /** * Extracts JSON from text that might be wrapped in markdown code blocks * @param text - Raw text response from Gemini * @returns Parsed JSON object */ private extractJsonFromText; /** * Calculates ad air time from Unix timestamps * @param startDate - Start date in Unix timestamp * @param endDate - End date in Unix timestamp (null if still active) * @returns Formatted string in "Days:Hours:Mins" format or "N/A" */ private calculateAdAirTime; /** * Enriches the analysis result with full ad data for top 3 ads * @param analysisData - The analysis data from LLM * @param originalAds - The original ad data for reference * @returns Enriched analysis data with full ad data */ private enrichAnalysisWithAdData; /** * Enriches the restructured ads data with calculated fields * @param jsonData - The JSON data from LLM * @param originalAds - The original ad data for reference * @returns Enriched JSON data */ private enrichRestructuredAds; /** * Step 1: Restructures raw ad data into organized JSON format per company * @param ads - Array of Meta ad data from Apify * @returns Promise - JSON with ads organized by company */ restructureAds(ads: MetaAdData[]): Promise; /** * Extracts company-specific data from restructured ads JSON * @param restructuredData - Full restructured JSON data * @param companyName - Name of the company to extract * @returns Company-specific JSON data or full data if extraction fails */ extractCompanyData(restructuredData: RestructuredAdsResult, companyName: string): RestructuredAdsResult; private createFallbackJsonFromAds; /** * Step 2: Analyzes a specific company's ads for strategic insights * @param companyName - Name of the company to analyze * @param restructuredData - JSON data from restructureAds step * @param originalAds - Original ad data for enriching top 3 ads * @returns Promise - Company-specific analysis results */ getTopIdeasPerCompany(companyName: string, restructuredData: RestructuredAdsResult, originalAds: MetaAdData[]): Promise; /** * Step 3: Synthesizes multiple company analyses into industry insights * @param companyAnalyses - Array of company analysis results * @returns Promise - Industry analysis results */ industryWriteup(companyAnalyses: CompanyAnalysisResult[]): Promise; /** * Step 4: Generates ad concepts based on company analyses, industry insights, and client info * @param companyAnalyses - Array of company analysis results * @param industryAnalysis - Industry analysis results * @param clientDetails - Client company details and context * @returns Promise - Generated ad concepts */ generateAdIdeas(companyAnalyses: CompanyAnalysisResult[], industryAnalysis: IndustryAnalysisResult, clientDetails: string): Promise; private buildRestructureAdsPrompt; private buildGetTopIdeasPrompt; private buildIndustryWriteupPrompt; private buildGenerateAdIdeasPrompt; private formatAdsForPrompt; } //# sourceMappingURL=gemini_analyzer.d.ts.map