import { User, AuthTokens } from '@/types';

export interface TenantInfo {
  id: string;
  name: string;
  document: string;
  plan: string;
  role?: string;
  logoUrl?: string;
}

export function saveAuth(tokens: AuthTokens & { tenants?: TenantInfo[] }) {
  localStorage.setItem('klavo_token', tokens.access_token);
  localStorage.setItem('klavo_user', JSON.stringify(tokens.user));
  if (tokens.tenants) {
    localStorage.setItem('klavo_tenants', JSON.stringify(tokens.tenants));
  }
}

export function clearAuth() {
  localStorage.removeItem('klavo_token');
  localStorage.removeItem('klavo_user');
  localStorage.removeItem('klavo_tenants');
}

export function getUser(): User | null {
  if (typeof window === 'undefined') return null;
  const raw = localStorage.getItem('klavo_user');
  return raw ? JSON.parse(raw) : null;
}

export function getToken(): string | null {
  if (typeof window === 'undefined') return null;
  return localStorage.getItem('klavo_token');
}

export function isAuthenticated(): boolean {
  return !!getToken();
}

export function getTenants(): TenantInfo[] {
  if (typeof window === 'undefined') return [];
  const raw = localStorage.getItem('klavo_tenants');
  return raw ? JSON.parse(raw) : [];
}

export function saveTenants(tenants: TenantInfo[]) {
  localStorage.setItem('klavo_tenants', JSON.stringify(tenants));
}
