/**
 * Site-wide configuration for GridPilot website.
 *
 * Values are primarily sourced from environment variables so that
 * deployments can provide real company details without hard-coding
 * production data in the repository.
 *
 * Website must remain an API consumer (no adapter imports).
 */

export interface SiteConfigData {
  // Platform Information
  platformName: string;
  platformUrl: string;

  // Contact Information
  supportEmail: string;
  sponsorEmail: string;

  // Legal & Business Information
  legal: {
    companyName: string;
    vatId: string;
    registeredCountry: string;
    registeredAddress: string;
  };

  // Platform Fees
  fees: {
    platformFeePercent: number;
    description: string;
  };

  // VAT Information
  vat: {
    euReverseChargeApplies: boolean;
    nonEuVatExempt: boolean;
    standardRate: number;
    notice: string;
    euBusinessNotice: string;
    nonEuNotice: string;
  };

  // Sponsorship Types Available
  sponsorshipTypes: {
    leagues: {
      enabled: boolean;
      title: string;
      description: string;
    };
    teams: {
      enabled: boolean;
      title: string;
      description: string;
    };
    drivers: {
      enabled: boolean;
      title: string;
      description: string;
    };
    races: {
      enabled: boolean;
      title: string;
      description: string;
    };
    platform: {
      enabled: boolean;
      title: string;
      description: string;
    };
  };

  // Feature Flags for Sponsorship Features
  features: {
    liveryPlacement: boolean;
    leaguePageBranding: boolean;
    racePageBranding: boolean;
    profileBadges: boolean;
    socialMediaMentions: boolean;
    newsletterInclusion: boolean;
    homepageAds: boolean;
    sidebarAds: boolean;
    broadcastOverlays: boolean;
  };
}

export const siteConfig: SiteConfigData = {
  // Platform Information
  platformName: process.env.NEXT_PUBLIC_SITE_NAME ?? 'GridPilot',
  platformUrl: process.env.NEXT_PUBLIC_SITE_URL ?? 'https://gridpilot.com',

  // Contact Information
  supportEmail: process.env.NEXT_PUBLIC_SUPPORT_EMAIL ?? 'support@example.com',
  sponsorEmail: process.env.NEXT_PUBLIC_SPONSOR_EMAIL ?? 'sponsors@example.com',

  // Legal & Business Information
  legal: {
    companyName: process.env.NEXT_PUBLIC_LEGAL_COMPANY_NAME ?? '',
    vatId: process.env.NEXT_PUBLIC_LEGAL_VAT_ID ?? '',
    registeredCountry: process.env.NEXT_PUBLIC_LEGAL_REGISTERED_COUNTRY ?? '',
    registeredAddress: process.env.NEXT_PUBLIC_LEGAL_REGISTERED_ADDRESS ?? '',
  },

  // Platform Fees
  fees: {
    platformFeePercent: 10,
    description: 'Platform fee supports maintenance, analytics, and secure payment processing.',
  },

  // VAT Information
  vat: {
    euReverseChargeApplies: true,
    nonEuVatExempt: true,
    standardRate: 20,
    notice: 'All prices shown are exclusive of VAT. Applicable taxes will be calculated at checkout.',
    euBusinessNotice: 'EU businesses with a valid VAT ID may apply reverse charge.',
    nonEuNotice: 'Non-EU businesses are not charged VAT.',
  },

  // Sponsorship Types Available
  sponsorshipTypes: {
    leagues: {
      enabled: true,
      title: 'League Sponsorship',
      description: 'Sponsor entire racing leagues and get your brand in front of all participants.',
    },
    teams: {
      enabled: true,
      title: 'Team Sponsorship',
      description: 'Partner with competitive racing teams for long-term brand association.',
    },
    drivers: {
      enabled: true,
      title: 'Driver Sponsorship',
      description: 'Support individual drivers and grow with rising sim racing talent.',
    },
    races: {
      enabled: true,
      title: 'Race Sponsorship',
      description: 'Sponsor individual race events for targeted, high-impact exposure.',
    },
    platform: {
      enabled: true,
      title: 'Platform Advertising',
      description: 'Reach the entire GridPilot audience with strategic platform placements.',
    },
  },

  // Feature Flags for Sponsorship Features
  features: {
    liveryPlacement: true,
    leaguePageBranding: true,
    racePageBranding: true,
    profileBadges: true,
    socialMediaMentions: true,
    newsletterInclusion: true,
    homepageAds: true,
    sidebarAds: true,
    broadcastOverlays: false,
  },
} as const;

export type SiteConfig = typeof siteConfig;