@happyvertical/smrt-ledgers 0.57.1 → 0.57.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +73 -0
  3. package/dist/chunks/{Account-b0RgfbjM.js → Account-IFuMKhPt.js} +42 -8
  4. package/dist/chunks/Account-IFuMKhPt.js.map +1 -0
  5. package/dist/chunks/Ledger-DwxK6NRF.js +68 -0
  6. package/dist/chunks/Ledger-DwxK6NRF.js.map +1 -0
  7. package/dist/collections/JournalEntries.d.ts +26 -0
  8. package/dist/collections/JournalEntries.d.ts.map +1 -1
  9. package/dist/collections/Journals.d.ts.map +1 -1
  10. package/dist/collections/Ledgers.d.ts +6 -0
  11. package/dist/collections/Ledgers.d.ts.map +1 -0
  12. package/dist/collections/index.d.ts +1 -0
  13. package/dist/collections/index.d.ts.map +1 -1
  14. package/dist/index.d.ts +5 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +380 -17
  17. package/dist/index.js.map +1 -1
  18. package/dist/manifest.json +639 -13
  19. package/dist/models/Account.d.ts +4 -0
  20. package/dist/models/Account.d.ts.map +1 -1
  21. package/dist/models/Journal.d.ts +9 -0
  22. package/dist/models/Journal.d.ts.map +1 -1
  23. package/dist/models/JournalEntry.d.ts +10 -0
  24. package/dist/models/JournalEntry.d.ts.map +1 -1
  25. package/dist/models/Ledger.d.ts +18 -0
  26. package/dist/models/Ledger.d.ts.map +1 -0
  27. package/dist/models/index.d.ts +1 -0
  28. package/dist/models/index.d.ts.map +1 -1
  29. package/dist/postings.d.ts +33 -0
  30. package/dist/postings.d.ts.map +1 -0
  31. package/dist/recipes.d.ts +9 -0
  32. package/dist/recipes.d.ts.map +1 -1
  33. package/dist/smrt-knowledge.json +475 -9
  34. package/dist/types.d.ts +23 -0
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/types.js.map +1 -1
  37. package/package.json +5 -5
  38. package/dist/chunks/Account-b0RgfbjM.js.map +0 -1
@@ -27,6 +27,8 @@ export declare class Account extends SmrtHierarchical {
27
27
  * Account type - one of the 5 core types
28
28
  */
29
29
  type: AccountType;
30
+ /** Accounting scope; null is a legacy account usable only by legacy journals. */
31
+ ledgerId: string | null;
30
32
  /**
31
33
  * Whether the account is active
32
34
  */
@@ -36,6 +38,8 @@ export declare class Account extends SmrtHierarchical {
36
38
  */
37
39
  metadata: Record<string, unknown>;
38
40
  constructor(options?: AccountOptions);
41
+ protected validateBeforeSave(): Promise<void>;
42
+ delete(options?: Parameters<SmrtHierarchical['delete']>[0]): Promise<void>;
39
43
  /**
40
44
  * Check if this is a top-level account (no parent)
41
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../../src/models/Account.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAS,gBAAgB,EAAQ,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAU,CAAC;AAE7E,qBAUa,OAAQ,SAAQ,gBAAgB;IAC3C;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAM;IAEpB;;OAEG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;OAEG;IAEH,WAAW,EAAE,MAAM,CAAM;IAEzB;;OAEG;IAEH,IAAI,EAAE,WAAW,CAAW;IAI5B;;OAEG;IAKH,MAAM,EAAE,OAAO,CAAQ;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,OAAO,GAAE,cAAmB;IAYxC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACH,aAAa,IAAI,OAAO;IAIxB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAazB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAMpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAS5C;;OAEG;IACG,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IASlD;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAAC,GACjD,OAAO,CAAC,OAAO,CAAC;CAcpB"}
1
+ {"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../../src/models/Account.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAU,CAAC;AAG7E,qBAUa,OAAQ,SAAQ,gBAAgB;IAC3C;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAM;IAEpB;;OAEG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;OAEG;IAEH,WAAW,EAAE,MAAM,CAAM;IAEzB;;OAEG;IAEH,IAAI,EAAE,WAAW,CAAW;IAE5B,iFAAiF;IAMjF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAI/B;;OAEG;IAKH,MAAM,EAAE,OAAO,CAAQ;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,OAAO,GAAE,cAAmB;cAcxB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC7C,MAAM,CACV,OAAO,GAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAM,GACtD,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACH,aAAa,IAAI,OAAO;IAIxB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAazB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAMpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAS5C;;OAEG;IACG,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IASlD;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAAC,GACjD,OAAO,CAAC,OAAO,CAAC;CA8BpB"}
@@ -31,6 +31,10 @@ export declare class Journal extends SmrtObject {
31
31
  * External reference (e.g., order ID, invoice number)
32
32
  */
33
33
  sourceRef: string | null;
34
+ /** Optional durable accounting scope; null preserves legacy tolerant journals. */
35
+ ledgerId: string | null;
36
+ idempotencyKey: string | null;
37
+ requestDigest: string | null;
34
38
  /**
35
39
  * Journal status: draft, posted, voided
36
40
  */
@@ -84,6 +88,7 @@ export declare class Journal extends SmrtObject {
84
88
  * Check if journal entries are balanced (debits = credits)
85
89
  */
86
90
  isBalanced(): Promise<boolean>;
91
+ getLedger(): Promise<import("./Ledger.js").Ledger | null>;
87
92
  /**
88
93
  * Add an entry to this journal (only if draft)
89
94
  */
@@ -96,6 +101,10 @@ export declare class Journal extends SmrtObject {
96
101
  * Void the journal (mark as cancelled with reason)
97
102
  */
98
103
  void(reason: string): Promise<void>;
104
+ private validatePosting;
105
+ save(options?: Parameters<SmrtObject['save']>[0]): Promise<this>;
106
+ protected validateBeforeSave(): Promise<void>;
107
+ delete(options?: Parameters<SmrtObject['delete']>[0]): Promise<void>;
99
108
  /**
100
109
  * AI-powered: Generate a summary of this journal.
101
110
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Journal.d.ts","sourceRoot":"","sources":["../../src/models/Journal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAS,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAOnE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,aAAU,CAAC;AAElB,qBAMa,OAAQ,SAAQ,UAAU;IACrC;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAM;IAEpB;;OAEG;IAEH,IAAI,EAAE,IAAI,CAAc;IAExB;;OAEG;IAEH,WAAW,EAAE,MAAM,CAAM;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAM;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhC;;OAEG;IAIH,MAAM,EAAE,aAAa,CAAW;IAEhC;;OAEG;IAEH,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE7B;;OAEG;IACH,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,OAAO,GAAE,cAAmB;IAgBxC;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,mBAAgB,EAAE,YAAY,EAAE,CAAC;IASpE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAMpC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC;;;;;;;;;;;;;;OAcG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAyCnC"}
1
+ {"version":3,"file":"Journal.d.ts","sourceRoot":"","sources":["../../src/models/Journal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAO/E,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,aAAU,CAAC;AAGlB,qBAaa,OAAQ,SAAQ,UAAU;IACrC;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAM;IAEpB;;OAEG;IAEH,IAAI,EAAE,IAAI,CAAc;IAExB;;OAEG;IAEH,WAAW,EAAE,MAAM,CAAM;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAM;IAE1B;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhC,kFAAkF;IAMlF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEpC;;OAEG;IAIH,MAAM,EAAE,aAAa,CAAW;IAEhC;;OAEG;IAEH,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE7B;;OAEG;IACH,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEjC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,OAAO,GAAE,cAAmB;IAsBxC;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,mBAAgB,EAAE,YAAY,EAAE,CAAC;IASpE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAmB9B,SAAS,IAAI,OAAO,CAAC,OAAO,aAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ5D;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCrD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAW3B,eAAe;IA2Cd,IAAI,CACjB,OAAO,GAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAC9C,OAAO,CAAC,IAAI,CAAC;cAWA,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB7C,MAAM,CACV,OAAO,GAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAM,GAChD,OAAO,CAAC,IAAI,CAAC;IAgBhB;;;;;;;;;;;;;;OAcG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAyCnC"}
@@ -19,6 +19,13 @@ export declare class JournalEntry extends SmrtObject {
19
19
  * Account ID (required)
20
20
  */
21
21
  accountId: string;
22
+ /** Opaque external party dimension, never a product-specific model. */
23
+ counterpartyKind: string | null;
24
+ counterpartyId: string | null;
25
+ /** Due date for an AR/AP open item. */
26
+ dueDate: Date | null;
27
+ /** Source reference of the open item reduced by this settlement line. */
28
+ settlesSourceRef: string | null;
22
29
  /**
23
30
  * Debit amount (left side)
24
31
  */
@@ -44,10 +51,12 @@ export declare class JournalEntry extends SmrtObject {
44
51
  */
45
52
  metadata: Record<string, unknown>;
46
53
  constructor(options?: JournalEntryOptions);
54
+ save(options?: Parameters<SmrtObject['save']>[0]): Promise<this>;
47
55
  /**
48
56
  * Validate entry before save
49
57
  */
50
58
  protected validateBeforeSave(): Promise<void>;
59
+ delete(options?: Parameters<SmrtObject['delete']>[0]): Promise<void>;
51
60
  /**
52
61
  * Check if this is a debit entry
53
62
  */
@@ -72,6 +81,7 @@ export declare class JournalEntry extends SmrtObject {
72
81
  * Get the account
73
82
  */
74
83
  getAccount(): Promise<import("./Account.js").Account | null>;
84
+ private loadAccount;
75
85
  /**
76
86
  * Get a formatted description of this entry
77
87
  */
@@ -1 +1 @@
1
- {"version":3,"file":"JournalEntry.d.ts","sourceRoot":"","sources":["../../src/models/JournalEntry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAU,CAAC;AAGpD,qBAMa,YAAa,SAAQ,UAAU;IAC1C;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAGH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IAKH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IAEH,KAAK,EAAE,MAAM,CAAO;IAEpB;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAO;IAErB;;OAEG;IAEH,QAAQ,EAAE,MAAM,CAAS;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAO;IAE3B;;OAEG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,OAAO,GAAE,mBAAwB;IAa7C;;OAEG;cACa,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BnD;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,cAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAO/D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,cAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAO/D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAQxC"}
1
+ {"version":3,"file":"JournalEntry.d.ts","sourceRoot":"","sources":["../../src/models/JournalEntry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAS/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAU,CAAC;AAGpD,qBAMa,YAAa,SAAQ,UAAU;IAC1C;;OAEG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/B;;OAEG;IAGH,SAAS,EAAE,MAAM,CAAM;IAEvB;;OAEG;IAKH,SAAS,EAAE,MAAM,CAAM;IAEvB,uEAAuE;IAEvE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGvC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,uCAAuC;IAEvC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IAE5B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvC;;OAEG;IAEH,KAAK,EAAE,MAAM,CAAO;IAEpB;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAO;IAErB;;OAEG;IAEH,QAAQ,EAAE,MAAM,CAAS;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAO;IAE3B;;OAEG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,OAAO,GAAE,mBAAwB;IAqB9B,IAAI,CACjB,OAAO,GAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAM,GAC9C,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;cACa,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsE7C,MAAM,CACV,OAAO,GAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAM,GAChD,OAAO,CAAC,IAAI,CAAC;IAwBhB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,cAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAO/D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,cAAW,EAAE,OAAO,GAAG,IAAI,CAAC;YAKjD,WAAW;IAoBzB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAQxC"}
@@ -0,0 +1,18 @@
1
+ import { SmrtObject } from '@happyvertical/smrt-core';
2
+ import type { LedgerOptions } from "../types.js";
3
+ /**
4
+ * A named accounting scope. Exact ledgers store one currency's minor units and
5
+ * reject fractional entries; legacy journals without a ledger retain the
6
+ * tolerant balance rule for backwards compatibility.
7
+ */
8
+ export declare class Ledger extends SmrtObject {
9
+ tenantId: string | null;
10
+ name: string;
11
+ /** ISO 4217 currency for this ledger's entries. */
12
+ currency: string;
13
+ balanceMode: 'tolerant' | 'exact-integer';
14
+ constructor(options?: LedgerOptions);
15
+ delete(): Promise<void>;
16
+ protected validateBeforeSave(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=Ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ledger.d.ts","sourceRoot":"","sources":["../../src/models/Ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAQ,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAU,CAAC;AAE9C;;;;GAIG;AACH,qBAMa,MAAO,SAAQ,UAAU;IAEpC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG/B,IAAI,SAAM;IAEV,mDAAmD;IAEnD,QAAQ,SAAS;IAMjB,WAAW,EAAE,UAAU,GAAG,eAAe,CAAc;gBAE3C,OAAO,GAAE,aAAkB;IASjC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cAIb,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBpD"}
@@ -1,4 +1,5 @@
1
1
  export { Account } from "./Account.js";
2
2
  export { Journal } from "./Journal.js";
3
3
  export { JournalEntry } from "./JournalEntry.js";
4
+ export { Ledger } from "./Ledger.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAU,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { DatabaseInterface } from '@happyvertical/smrt-core/migrations';
2
+ import type { Journal } from "./models/Journal.js";
3
+ export type Counterparty = {
4
+ kind: string;
5
+ id: string;
6
+ };
7
+ export interface LedgerPostingInput {
8
+ db: DatabaseInterface;
9
+ tenantId: string;
10
+ ledgerId: string;
11
+ idempotencyKey: string;
12
+ sourceModule: string;
13
+ sourceRef: string;
14
+ description: string;
15
+ date?: Date;
16
+ currency: string;
17
+ amountMinor: number;
18
+ counterparty: Counterparty;
19
+ debitAccountId: string;
20
+ creditAccountId: string;
21
+ dueDate?: Date;
22
+ settlesSourceRef?: string;
23
+ }
24
+ /**
25
+ * Atomically records an exact-minor-unit double entry. `runOnce` scopes the
26
+ * key by tenant and ledger; its receipt binds the request digest so retries recover the
27
+ * original journal and a changed replay refuses instead of double-posting.
28
+ */
29
+ export declare function postLedgerEntry(input: LedgerPostingInput): Promise<Journal>;
30
+ export declare const postReceivable: typeof postLedgerEntry;
31
+ export declare const postPayable: typeof postLedgerEntry;
32
+ export declare const postSettlement: typeof postLedgerEntry;
33
+ //# sourceMappingURL=postings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postings.d.ts","sourceRoot":"","sources":["../src/postings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAI7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAkB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,iBAAiB,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA2BD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,OAAO,CAAC,CAyGlB;AAED,eAAO,MAAM,cAAc,wBAAkB,CAAC;AAC9C,eAAO,MAAM,WAAW,wBAAkB,CAAC;AAC3C,eAAO,MAAM,cAAc,wBAAkB,CAAC"}
package/dist/recipes.d.ts CHANGED
@@ -54,6 +54,12 @@ export declare class BookkeepingRecipe extends SmrtRecipe {
54
54
  readonly sourceRef: {
55
55
  readonly visibility: "hidden";
56
56
  };
57
+ readonly idempotencyKey: {
58
+ readonly visibility: "hidden";
59
+ };
60
+ readonly requestDigest: {
61
+ readonly visibility: "hidden";
62
+ };
57
63
  readonly voidedAt: {
58
64
  readonly visibility: "hidden";
59
65
  };
@@ -70,6 +76,9 @@ export declare class BookkeepingRecipe extends SmrtRecipe {
70
76
  readonly exchangeRate: {
71
77
  readonly visibility: "hidden";
72
78
  };
79
+ readonly settlesSourceRef: {
80
+ readonly visibility: "hidden";
81
+ };
73
82
  readonly metadata: {
74
83
  readonly visibility: "hidden";
75
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,mFAAmF;AACnF,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,EAAE,SAAyB;IAClC,MAAM,CAAC,IAAI,SAA6B;IACxC,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,OAAO,SACsD;IACpE,MAAM,CAAC,QAAQ,WAMb;IACF,MAAM,CAAC,OAAO;;;;;MAKZ;IACF,MAAM,CAAC,MAAM,4DAAoC;IACjD,MAAM,CAAC,GAAG;;;;;;;;;;SAeR;IACF,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsBH;CACZ"}
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,mFAAmF;AACnF,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,MAAM,CAAC,EAAE,SAAyB;IAClC,MAAM,CAAC,IAAI,SAA6B;IACxC,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,OAAO,SACsD;IACpE,MAAM,CAAC,QAAQ,WAMb;IACF,MAAM,CAAC,OAAO;;;;;MAKZ;IACF,MAAM,CAAC,MAAM,4DAAoC;IACjD,MAAM,CAAC,GAAG;;;;;;;;;;SAeR;IACF,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyBH;CACZ"}