/**
 * @zync/expenses — public entry point — expenses-module.
 */

// Core CRUD service
export {
  listExpenses,
  getExpense,
  createExpense,
  updateExpense,
  softDeleteExpense,
  setExpenseStatus,
  getExpenseById,
  listExpensesByIds,
  listNeedsReviewExpenseIds,
} from './service'
export type { ExpenseFilters, EditableExpenseFields, NewExpenseInput } from './service'

// Serializers
export { serializeExpense, serializeExpenseCorrection } from './serialize'

// Settings service (canonical for expense-settings-ui spec 62)
export { getExpenseSettings, updateExpenseSettings } from './settings'

// Per-diem service
export { createPerDiemExpense } from './per-diem'
export type { PerDiemInput } from './per-diem'

// AI pipeline
export { runOcr } from './ai/ocr'
export type { OcrResult } from './ai/ocr'
export { evaluateDeductibility } from './ai/evaluate'
export type { TaxEvalResult } from './ai/evaluate'
export { ExpenseProcessingError } from './ai/errors'

// Webhook emission
export { emitExpenseWebhook } from './webhooks'
export type { ExpenseWebhookEvent } from './webhooks'

// Report services
export { expenseReport, vatSummaryPcn874, vendorAnalysis } from './reports'
export type { ExpenseReportRow, VatSummary, VendorAnalysisRow, ReportFilters } from './reports'

// Excel export
export { buildExpenseReportXlsx, buildVatXlsx } from './excel'
