export interface BusinessPlan {
  id: string;
  businessIdea: string;
  targetMarket: string;
  businessModel: string;
  timeline: number;
  template: string;
  markdown: string;
  sections: BusinessPlanSection[];
  nextSteps: string[];
  keyMetrics: string[];
  createdAt: string;
  updatedAt: string;
  financials?: FinancialProjection;
}

export interface BusinessPlanSection {
  title: string;
  content: string;
  order: number;
  template: string;
}

export interface MarketAnalysis {
  id: string;
  industry: string;
  targetMarket: string;
  geographicScope: string;
  marketSize: string;
  growthRate: string;
  trends: string[];
  targetAudience: MarketSegment[];
  opportunities: MarketOpportunity[];
  challenges: string[];
  recommendations: string[];
  competitors?: CompetitorSummary[];
  timeframe: string;
  demographics?: {
    ageRange: string;
    income: string;
    other: string[];
  };
}

export interface MarketSegment {
  segment: string;
  description: string;
  size: string;
  characteristics: string[];
  painPoints: string[];
  buyingBehavior: string;
}

export interface MarketOpportunity {
  title: string;
  description: string;
  potential: string;
  timeline: string;
  requirements: string[];
}

export interface CompetitorAnalysis {
  industry: string;
  competitionLevel: string;
  competitors: Competitor[];
  gaps: string[];
  opportunities: string[];
  recommendations: string[];
  marketMap?: string;
  positioning?: {
    marketGaps: string[];
    differentiationOpportunities: string[];
    competitiveAdvantages: string[];
  };
}

export interface Competitor {
  name: string;
  description: string;
  strengths: string[];
  weaknesses: string[];
  marketShare?: string;
  strategy: string;
  pricing?: string;
  targetAudience?: string;
  keyFeatures?: string[];
}

export interface CompetitorSummary {
  name: string;
  description: string;
  marketPosition: string;
}

export interface FinancialProjection {
  businessModel: string;
  timeline: number;
  currency: string;
  revenue: Record<string, number>;
  expenses: Record<string, number>;
  netIncome: Record<string, number>;
  cashFlow: Record<string, number>;
  breakEvenMonth: number;
  totalInvestmentNeeded: number;
  roi: number;
  scenarios?: {
    best: number;
    base: number;
    worst: number;
  };
  assumptions: string[];
  recommendations: string[];
}

export interface StartupMetrics {
  metricsType: string;
  current: Record<string, number>;
  goals: Record<string, number>;
  timeframe: string;
  trends: MetricTrend[];
  benchmarks: MetricBenchmark[];
  recommendations: string[];
  healthScore: number;
  alerts: MetricAlert[];
}

export interface MetricTrend {
  metric: string;
  direction: 'up' | 'down' | 'stable';
  percentage: number;
  period: string;
}

export interface MetricBenchmark {
  metric: string;
  yourValue: number;
  industryAverage: number;
  percentile: number;
}

export interface MetricAlert {
  metric: string;
  status: 'critical' | 'warning' | 'info';
  message: string;
  recommendation: string;
}

export interface StartupAssessment {
  stage: string;
  score: number;
  categories: AssessmentCategory[];
  strengths: string[];
  weaknesses: string[];
  nextSteps: AssessmentStep[];
  stageRecommendations: string[];
  overall: string;
  benchmarkComparison?: string;
}

export interface AssessmentCategory {
  name: string;
  score: number;
  maxScore: number;
  feedback: string;
  recommendations: string[];
}

export interface AssessmentStep {
  action: string;
  priority: 'high' | 'medium' | 'low';
  timeline: string;
  resources: string[];
}

export interface PitchDeck {
  businessIdea: string;
  template: string;
  markdown: string;
  slides: PitchSlide[];
  presentationTips: string[];
  keyMessages: string[];
  appendix?: PitchSlide[];
}

export interface PitchSlide {
  title: string;
  content: string;
  order: number;
  type: 'text' | 'chart' | 'image' | 'bullets';
  speakerNotes?: string;
}

export interface BusinessGuidanceRequest {
  question: string;
  context?: string;
  stage?: string;
  industry?: string;
}

export interface BusinessGuidanceResponse {
  question: string;
  answer: string;
  recommendations: string[];
  nextSteps: string[];
  resources: string[];
  confidence: number;
  relatedTopics: string[];
}

export interface BusinessTemplate {
  name: string;
  type: 'business_plan' | 'pitch_deck' | 'financial_model' | 'market_analysis';
  description: string;
  sections: TemplateSection[];
  variables: TemplateVariable[];
  examples: string[];
}

export interface TemplateSection {
  title: string;
  description: string;
  required: boolean;
  order: number;
  template: string;
}

export interface TemplateVariable {
  name: string;
  type: 'string' | 'number' | 'array' | 'object';
  description: string;
  required: boolean;
  defaultValue?: any;
}

export interface BusinessKnowledge {
  topic: string;
  category: 'strategy' | 'finance' | 'marketing' | 'operations' | 'legal' | 'product';
  content: string;
  stage: string[];
  industry: string[];
  confidence: number;
  sources: string[];
  lastUpdated: string;
}

export interface FundingStrategy {
  stage: string;
  fundingTypes: FundingOption[];
  timeline: string;
  requirements: string[];
  recommendations: string[];
  preparationSteps: string[];
}

export interface FundingOption {
  type: string;
  description: string;
  typicalAmount: string;
  requirements: string[];
  pros: string[];
  cons: string[];
  timeline: string;
}

export interface BusinessModelCanvas {
  keyPartners: string[];
  keyActivities: string[];
  keyResources: string[];
  valueProposition: string[];
  customerRelationships: string[];
  channels: string[];
  customerSegments: string[];
  costStructure: string[];
  revenueStreams: string[];
}

export interface GoToMarketStrategy {
  targetMarket: string;
  positioning: string;
  pricing: PricingStrategy;
  distribution: DistributionStrategy;
  marketing: MarketingStrategy;
  sales: SalesStrategy;
  timeline: GTMTimeline[];
  metrics: string[];
}

export interface PricingStrategy {
  model: string;
  tiers?: PricingTier[];
  rationale: string;
  competitiveAnalysis: string;
  recommendations: string[];
}

export interface PricingTier {
  name: string;
  price: number;
  features: string[];
  targetCustomer: string;
}

export interface DistributionStrategy {
  channels: DistributionChannel[];
  partnerships: string[];
  directSales: boolean;
  onlineStrategy: string;
  recommendations: string[];
}

export interface DistributionChannel {
  name: string;
  description: string;
  cost: string;
  reach: string;
  effectiveness: number;
}

export interface MarketingStrategy {
  channels: MarketingChannel[];
  messaging: string[];
  contentStrategy: string;
  budget: Record<string, number>;
  timeline: string;
  metrics: string[];
}

export interface MarketingChannel {
  name: string;
  description: string;
  cost: string;
  reach: string;
  roi: number;
}

export interface SalesStrategy {
  model: string;
  process: SalesStep[];
  team: SalesRole[];
  tools: string[];
  metrics: string[];
  enablement: string[];
}

export interface SalesStep {
  name: string;
  description: string;
  duration: string;
  activities: string[];
}

export interface SalesRole {
  title: string;
  responsibilities: string[];
  skills: string[];
  experience: string;
}

export interface GTMTimeline {
  phase: string;
  duration: string;
  activities: string[];
  milestones: string[];
  metrics: string[];
}

export interface BusinessReview {
  businessName: string;
  currentStage: 'idea' | 'mvp' | 'early_stage' | 'growth' | 'scale';
  overallHealthScore: number;
  strengths: ReviewStrength[];
  gaps: ReviewGap[];
  strategicPaths: StrategicPath[];
  immediateActions: ImmediateAction[];
  dataCollected: ReviewDataSources;
  reviewDate: string;
  nextReviewDate: string;
}

export interface ReviewStrength {
  area: string;
  description: string;
  impact: 'high' | 'medium' | 'low';
  evidence: string[];
}

export interface ReviewGap {
  area: string;
  description: string;
  severity: 'critical' | 'major' | 'minor';
  impact: string;
  recommendedActions: string[];
}

export interface StrategicPath {
  name: string;
  focus: string;
  description: string;
  timeline: string;
  riskLevel: 'low' | 'medium' | 'high';
  keyActions: PathAction[];
  expectedOutcome: string;
  investmentRequired: string;
  successMetrics: string[];
}

export interface PathAction {
  action: string;
  priority: 'immediate' | 'short-term' | 'long-term';
  owner: string;
  resources: string[];
  deadline: string;
}

export interface ImmediateAction {
  action: string;
  rationale: string;
  expectedImpact: string;
  timeframe: string;
  dependencies: string[];
}

export interface ReviewDataSources {
  productStatus: ProductReviewData;
  marketPosition: MarketReviewData;
  financialHealth: FinancialReviewData;
  teamResources: TeamReviewData;
  technicalStatus: TechnicalReviewData;
  customerInsights: CustomerReviewData;
}

export interface ProductReviewData {
  developmentStage: string;
  featuresCompleted: number;
  featuresPlanned: number;
  qualityScore: number;
  userSatisfaction: number;
  technicalDebt: string;
}

export interface MarketReviewData {
  marketShare: string;
  competitorCount: number;
  uniqueValueProp: string;
  marketGrowthRate: string;
  customerAcquisitionCost: number;
  lifetimeValue: number;
}

export interface FinancialReviewData {
  revenue: number;
  expenses: number;
  runway: string;
  burnRate: number;
  profitability: string;
  fundingStatus: string;
}

export interface TeamReviewData {
  teamSize: number;
  keyRoles: string[];
  missingRoles: string[];
  teamHealth: number;
  productivity: number;
  culture: string;
}

export interface TechnicalReviewData {
  codeQuality: number;
  testCoverage: number;
  deploymentFrequency: string;
  systemReliability: number;
  securityScore: number;
  scalability: string;
}

export interface CustomerReviewData {
  customerCount: number;
  nps: number;
  churnRate: number;
  supportTickets: number;
  featureRequests: string[];
  topComplaints: string[];
}