/**
 * HTTP client for Ezer Mishpati legal-ai REST API.
 */
export class LegalApi {
    baseUrl;
    constructor(baseUrl) {
        this.baseUrl = baseUrl;
    }
    async request(path, init) {
        const res = await fetch(`${this.baseUrl}${path}`, {
            ...init,
            headers: {
                "Content-Type": "application/json",
                ...init?.headers,
            },
        });
        if (!res.ok) {
            const text = await res.text();
            throw new Error(`Legal API ${res.status}: ${text}`);
        }
        return res.json();
    }
    async listCases() {
        return this.request("/api/cases");
    }
    async getCase(caseNumber) {
        return this.request(`/api/cases/${encodeURIComponent(caseNumber)}/details`);
    }
    async createCase(data) {
        return this.request("/api/cases/create", {
            method: "POST",
            body: JSON.stringify(data),
        });
    }
    async updateCase(caseNumber, data) {
        return this.request(`/api/cases/${encodeURIComponent(caseNumber)}`, {
            method: "PUT",
            body: JSON.stringify(data),
        });
    }
    async getCaseStatus(caseNumber) {
        return this.request(`/api/cases/${encodeURIComponent(caseNumber)}/status`);
    }
    async search(query, limit = 10, sectionType = "") {
        const params = new URLSearchParams({ query, limit: String(limit) });
        if (sectionType)
            params.set("section_type", sectionType);
        return this.request(`/api/search?${params}`);
    }
    async searchCase(caseNumber, query, limit = 10) {
        const params = new URLSearchParams({ query, limit: String(limit) });
        return this.request(`/api/cases/${encodeURIComponent(caseNumber)}/search?${params}`);
    }
    async getTemplate(caseNumber) {
        return this.request(`/api/cases/${encodeURIComponent(caseNumber)}/template`);
    }
    async getProcessingStatus() {
        return this.request("/api/processing-status");
    }
    async health() {
        return this.request("/health");
    }
}
