import { apiClient, ensureCsrfCookie } from './client';

/** Реквизиты тенанта. Совпадает с RequisitesResource (бэкенд SP2). */
export interface Requisites {
    subject_type: 'individual' | 'sole_proprietor' | 'legal_entity' | null;
    contact_name: string | null;
    contact_phone: string | null;
    inn: string | null;
    legal_name: string | null;
    kpp: string | null;
    ogrn: string | null;
    legal_address: string | null;
    bank_name: string | null;
    bank_bik: string | null;
    bank_account: string | null;
    corr_account: string | null;
    requisites_completed_at: string | null;
}

/** Ответ POST /lookup-inn (мягкая подтяжка по DaData). */
export interface InnLookupResult {
    found: boolean;
    legal_name?: string;
    kpp?: string;
    ogrn?: string;
    legal_address?: string;
    subject_type_hint?: 'sole_proprietor' | 'legal_entity';
}

/** GET /api/tenant/requisites — null если ещё не заполнялись. */
export async function getRequisites(): Promise<Requisites | null> {
    const { data } = await apiClient.get('/api/tenant/requisites');
    return data.data ?? null;
}

/** PUT /api/tenant/requisites — upsert, возвращает сохранённое. */
export async function updateRequisites(payload: Partial<Requisites>): Promise<Requisites> {
    await ensureCsrfCookie();
    const { data } = await apiClient.put('/api/tenant/requisites', payload);
    return data.data;
}

/** POST /api/tenant/requisites/lookup-inn — ничего не сохраняет. */
export async function lookupInn(inn: string): Promise<InnLookupResult> {
    await ensureCsrfCookie();
    const { data } = await apiClient.post('/api/tenant/requisites/lookup-inn', { inn });
    return data;
}
