const PLUS_PORT = process.env.PLUS_PORT || 8080; const PLUS_BASE_URL = `http://localhost:${PLUS_PORT}`; export interface PlusApiResponse { success: boolean; data?: T; error?: string; message?: string; } async function plusFetch( endpoint: string, options: RequestInit = {} ): Promise> { try { const response = await fetch(`${PLUS_BASE_URL}${endpoint}`, { ...options, headers: { "Content-Type": "application/json", Accept: "application/json", ...options.headers, }, }); const data = await response.json(); if (!response.ok) { return { success: false, error: data.message || `HTTP ${response.status}`, }; } return { success: true, data }; } catch (error: any) { return { success: false, error: error.message || "Erro de conexão com Plus", }; } } export const plusClient = { async getDashboardData(): Promise { return plusFetch("/api/graficos/dados-cards"); }, async getVendasMes(): Promise { return plusFetch("/api/graficos/grafico-vendas-mes"); }, async getComprasMes(): Promise { return plusFetch("/api/graficos/grafico-compras-mes"); }, async getGraficoMes(): Promise { return plusFetch("/api/graficos/grafico-mes"); }, async getContasReceber(): Promise { return plusFetch("/api/graficos/grafico-conta-receber"); }, async getContasPagar(): Promise { return plusFetch("/api/graficos/grafico-conta-pagar"); }, async getContasEmpresa(): Promise { return plusFetch("/api/contas-empresa"); }, async healthCheck(): Promise { return plusFetch("/api/health"); }, async emitirNFe(dados: any): Promise { return plusFetch("/api/nfe/emitir", { method: "POST", body: JSON.stringify(dados), }); }, async emitirNFCe(dados: any): Promise { return plusFetch("/api/nfce/emitir", { method: "POST", body: JSON.stringify(dados), }); }, async consultarNFe(chave: string): Promise { return plusFetch("/api/nfe/consultar", { method: "POST", body: JSON.stringify({ chave }), }); }, }; export default plusClient;