/**
 * Customer Statement types — customer-statement (wave-16, spec 183).
 */

export type StatementRowKind = 'invoice' | 'credit_note' | 'payment'

export interface StatementRow {
  date: string
  kind: StatementRowKind
  documentType: string
  documentNumber: string | null
  reference: string | null
  sourceId: string
  debit: number
  credit: number
  runningBalance: number
}

export interface StatementAgingSummary {
  d0_30: number
  d31_60: number
  d61_90: number
  d90plus: number
}

export interface StatementCurrencyGroup {
  currency: string
  openingBalance: number
  rows: StatementRow[]
  closingBalance: number
}

export interface CustomerStatement {
  customerId: string
  customerName: string
  from: string
  to: string
  groups: StatementCurrencyGroup[]
  aging: StatementAgingSummary
}

export interface StatementQuery {
  from?: string
  to?: string
  currency?: string
}

export interface SendStatementBody {
  from: string
  to: string
  currency?: string
  message?: string
}
