import createClient from 'openapi-fetch';
import type { paths } from './schema';

/**
 * Client typé — règle d'or (ADR-001) : `paths` est GÉNÉRÉ depuis
 * docs/openapi.json (pnpm generate:client), régénéré dans le même commit
 * que tout changement d'API. Le front ne peut pas dériver du back.
 */

const TOKEN_KEY = 'siop.token';

export const getToken = () => localStorage.getItem(TOKEN_KEY);
export const setToken = (token: string) => localStorage.setItem(TOKEN_KEY, token);
export const clearToken = () => localStorage.removeItem(TOKEN_KEY);

export const api = createClient<paths>({ baseUrl: '/api' });

api.use({
  onRequest({ request }) {
    const token = getToken();
    if (token) request.headers.set('Authorization', `Bearer ${token}`);
    return request;
  },
});
