business-as-code
Version:
Primitives for expressing business logic and processes as code
27 lines (23 loc) • 680 B
text/typescript
/**
* LedgerEntry — double-entry record. Every entry IS an Action under the SVO substrate.
*
* Invariant: per-currency, sum(debits.amount) === sum(credits.amount).
* The ledger is append-only; reversals are new entries with opposite sign.
*/
import type { Money } from './types.js'
export interface LedgerEntry {
$id: string
$type: 'LedgerEntry'
/** Reference to the underlying Action (digital-objects ActionRef shape). */
actionRef: string
debits: LedgerLine[]
credits: LedgerLine[]
/** Optional human-readable memo. */
memo?: string
/** ISO-8601 timestamp. */
postedAt: string
}
export interface LedgerLine {
accountRef: string
amount: Money
}