import api from './client';
import type { SSOConfig, BrandingSettings } from '../types';

export const enterpriseApi = {
  // SSO/SAML
  getSSOConfig: async (): Promise<{ config: SSOConfig | null }> => {
    const { data } = await api.get<{ config: SSOConfig | null }>('/api/enterprise/sso-config');
    return data;
  },

  saveSSOConfig: async (config: Partial<SSOConfig>): Promise<{ config: SSOConfig }> => {
    const { data } = await api.post<{ config: SSOConfig }>('/api/enterprise/sso-config', config);
    return data;
  },

  getSPMetadata: async (): Promise<string> => {
    const { data } = await api.get<string>('/api/enterprise/sso-config/metadata');
    return data;
  },

  // White-Label Branding
  getBranding: async (): Promise<{ settings: BrandingSettings }> => {
    const { data } = await api.get<{ settings: BrandingSettings }>('/api/enterprise/branding');
    return data;
  },

  updateBranding: async (settings: Partial<BrandingSettings>): Promise<{ settings: BrandingSettings }> => {
    const { data } = await api.put<{ settings: BrandingSettings }>('/api/enterprise/branding', settings);
    return data;
  },

  resetBranding: async (): Promise<{ settings: BrandingSettings }> => {
    const { data } = await api.post<{ settings: BrandingSettings }>('/api/enterprise/branding/reset');
    return data;
  },

  uploadLogo: async (file: File): Promise<{ logo_url: string }> => {
    const formData = new FormData();
    formData.append('file', file);
    const { data } = await api.post<{ logo_url: string }>('/api/enterprise/branding/upload-logo', formData, {
      headers: { 'Content-Type': 'multipart/form-data' },
    });
    return data;
  },
};