import { createClient, type SupabaseClient } from '@supabase/supabase-js';
import type { Database } from './database.types';

export type GustitoClient = SupabaseClient<Database>;

// Fabrica del cliente. Cada app la llama con sus variables de entorno,
// asi el paquete shared no depende de ninguna config concreta.
export function crearClienteSupabase(url: string, anonKey: string): GustitoClient {
  if (!url || !anonKey) {
    throw new Error(
      'Faltan VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY. Revisa el archivo .env en la raiz.',
    );
  }
  return createClient<Database>(url, anonKey, {
    auth: {
      persistSession: true,
      autoRefreshToken: true,
      detectSessionInUrl: true,
    },
    realtime: {
      // Tope de eventos/seg por conexion: suficiente para GPS fluido sin saturar.
      params: { eventsPerSecond: 10 },
    },
  });
}
