import type { Provider } from "./types";
import { twitchProvider } from "./twitch";
import { youtubeProvider } from "./youtube";

// Plattformen, die nur mit OAuth des Creators (kommendes Creator-Portal) oder
// über einen kostenpflichtigen Aggregator automatisierbar sind → aktuell manuell.
function manualProvider(key: string, label: string, reason: string): Provider {
  return {
    key,
    label,
    configured: () => false,
    async fetchStats() {
      return { ok: false, unsupported: true, reason };
    },
  };
}

const REGISTRY: Record<string, Provider> = {
  twitch: twitchProvider,
  youtube: youtubeProvider,
  tiktok: manualProvider("tiktok", "TikTok", "TikTok erfordert Creator-OAuth (Login Kit) — folgt mit dem Creator-Portal."),
  instagram: manualProvider("instagram", "Instagram", "Instagram Graph API erfordert Business-OAuth des Creators — folgt mit dem Creator-Portal."),
  discord: manualProvider("discord", "Discord", "Discord erfordert einen Bot mit Server-Zugang — separat einzurichten."),
};

export function getProvider(platform: string): Provider | null {
  return REGISTRY[platform] ?? null;
}

/** Liste der Plattformen mit aktiver Auto-Anbindung (Zugangsdaten gesetzt). */
export function configuredProviders(): string[] {
  return Object.values(REGISTRY).filter((p) => p.configured()).map((p) => p.key);
}
