import type { CostSummary, CostDataQualityReport, CostByAgent, CostByUserReport, CostByProviderModel, CostByBiller, CostByAgentModel, CostByProject, CostWindowSpendRow, FinanceSummary, FinanceByBiller, FinanceByKind, FinanceEvent, ProviderQuotaResult, } from "@paperclipai/shared"; import { api } from "./client"; function dateParams(from?: string, to?: string): string { const params = new URLSearchParams(); if (!from && !to) params.set("period", "all"); if (from) params.set("from", from); if (to) params.set("to", to); const qs = params.toString(); return qs ? `?${qs}` : ""; } export const costsApi = { dataQuality: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/data-quality${dateParams(from, to)}`), retryAccounting: (companyId: string, runId: string) => api.post<{ accounted: boolean }>(`/companies/${companyId}/costs/retry-accounting`, { runId }), summary: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/summary${dateParams(from, to)}`), byUser: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/by-user${dateParams(from, to)}`), byAgent: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/by-agent${dateParams(from, to)}`), byAgentModel: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/by-agent-model${dateParams(from, to)}`), byProject: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/by-project${dateParams(from, to)}`), byProvider: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/by-provider${dateParams(from, to)}`), byBiller: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/by-biller${dateParams(from, to)}`), financeSummary: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/finance-summary${dateParams(from, to)}`), financeByBiller: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/finance-by-biller${dateParams(from, to)}`), financeByKind: (companyId: string, from?: string, to?: string) => api.get(`/companies/${companyId}/costs/finance-by-kind${dateParams(from, to)}`), financeEvents: (companyId: string, from?: string, to?: string, limit: number = 100) => api.get(`/companies/${companyId}/costs/finance-events${dateParamsWithLimit(from, to, limit)}`), windowSpend: (companyId: string) => api.get(`/companies/${companyId}/costs/window-spend`), quotaWindows: (companyId: string) => api.get(`/companies/${companyId}/costs/quota-windows`), }; function dateParamsWithLimit(from?: string, to?: string, limit?: number): string { const params = new URLSearchParams(); if (!from && !to) params.set("period", "all"); if (from) params.set("from", from); if (to) params.set("to", to); if (limit) params.set("limit", String(limit)); const qs = params.toString(); return qs ? `?${qs}` : ""; }