@open-captable-protocol/canton 0.2.106 → 0.2.107

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 (113) hide show
  1. package/README.md +3 -1
  2. package/dist/OcpClient.d.ts +236 -3
  3. package/dist/OcpClient.d.ts.map +1 -1
  4. package/dist/OcpClient.js +133 -7
  5. package/dist/OcpClient.js.map +1 -1
  6. package/dist/functions/CantonPayments/simpleAirdrop/archiveSimpleAirdrop.js +1 -1
  7. package/dist/functions/CantonPayments/simpleAirdrop/archiveSimpleAirdrop.js.map +1 -1
  8. package/dist/functions/CantonPayments/simpleAirdrop/index.d.ts +0 -1
  9. package/dist/functions/CantonPayments/simpleAirdrop/index.d.ts.map +1 -1
  10. package/dist/functions/CantonPayments/simpleAirdrop/index.js +0 -1
  11. package/dist/functions/CantonPayments/simpleAirdrop/index.js.map +1 -1
  12. package/dist/functions/OpenCapTable/convertibleIssuance/getConvertibleIssuanceAsOcf.d.ts.map +1 -1
  13. package/dist/functions/OpenCapTable/convertibleIssuance/getConvertibleIssuanceAsOcf.js +77 -30
  14. package/dist/functions/OpenCapTable/convertibleIssuance/getConvertibleIssuanceAsOcf.js.map +1 -1
  15. package/dist/functions/OpenCapTable/document/createDocument.d.ts.map +1 -1
  16. package/dist/functions/OpenCapTable/document/createDocument.js +2 -2
  17. package/dist/functions/OpenCapTable/document/createDocument.js.map +1 -1
  18. package/dist/functions/OpenCapTable/equityCompensationExercise/getEquityCompensationExerciseEventAsOcf.d.ts.map +1 -1
  19. package/dist/functions/OpenCapTable/equityCompensationExercise/getEquityCompensationExerciseEventAsOcf.js +9 -1
  20. package/dist/functions/OpenCapTable/equityCompensationExercise/getEquityCompensationExerciseEventAsOcf.js.map +1 -1
  21. package/dist/functions/OpenCapTable/equityCompensationIssuance/getEquityCompensationIssuanceEventAsOcf.d.ts.map +1 -1
  22. package/dist/functions/OpenCapTable/equityCompensationIssuance/getEquityCompensationIssuanceEventAsOcf.js +34 -8
  23. package/dist/functions/OpenCapTable/equityCompensationIssuance/getEquityCompensationIssuanceEventAsOcf.js.map +1 -1
  24. package/dist/functions/OpenCapTable/index.d.ts +1 -0
  25. package/dist/functions/OpenCapTable/index.d.ts.map +1 -1
  26. package/dist/functions/OpenCapTable/index.js +1 -0
  27. package/dist/functions/OpenCapTable/index.js.map +1 -1
  28. package/dist/functions/OpenCapTable/issuer/getIssuerAsOcf.js +4 -4
  29. package/dist/functions/OpenCapTable/issuer/getIssuerAsOcf.js.map +1 -1
  30. package/dist/functions/OpenCapTable/issuerAuthorization/authorizeIssuer.d.ts.map +1 -1
  31. package/dist/functions/OpenCapTable/issuerAuthorization/authorizeIssuer.js +2 -2
  32. package/dist/functions/OpenCapTable/issuerAuthorization/authorizeIssuer.js.map +1 -1
  33. package/dist/functions/OpenCapTable/issuerAuthorizedSharesAdjustment/getIssuerAuthorizedSharesAdjustmentEventAsOcf.d.ts.map +1 -1
  34. package/dist/functions/OpenCapTable/issuerAuthorizedSharesAdjustment/getIssuerAuthorizedSharesAdjustmentEventAsOcf.js +3 -2
  35. package/dist/functions/OpenCapTable/issuerAuthorizedSharesAdjustment/getIssuerAuthorizedSharesAdjustmentEventAsOcf.js.map +1 -1
  36. package/dist/functions/OpenCapTable/stockCancellation/getStockCancellationEventAsOcf.d.ts.map +1 -1
  37. package/dist/functions/OpenCapTable/stockCancellation/getStockCancellationEventAsOcf.js +7 -1
  38. package/dist/functions/OpenCapTable/stockCancellation/getStockCancellationEventAsOcf.js.map +1 -1
  39. package/dist/functions/OpenCapTable/stockClass/getStockClassAsOcf.js +6 -6
  40. package/dist/functions/OpenCapTable/stockClass/getStockClassAsOcf.js.map +1 -1
  41. package/dist/functions/OpenCapTable/stockClassAuthorizedSharesAdjustment/getStockClassAuthorizedSharesAdjustmentEventAsOcf.d.ts.map +1 -1
  42. package/dist/functions/OpenCapTable/stockClassAuthorizedSharesAdjustment/getStockClassAuthorizedSharesAdjustmentEventAsOcf.js +2 -1
  43. package/dist/functions/OpenCapTable/stockClassAuthorizedSharesAdjustment/getStockClassAuthorizedSharesAdjustmentEventAsOcf.js.map +1 -1
  44. package/dist/functions/OpenCapTable/stockIssuance/getStockIssuanceAsOcf.js +2 -2
  45. package/dist/functions/OpenCapTable/stockIssuance/getStockIssuanceAsOcf.js.map +1 -1
  46. package/dist/functions/OpenCapTable/stockPlan/getStockPlanAsOcf.js +1 -1
  47. package/dist/functions/OpenCapTable/stockPlan/getStockPlanAsOcf.js.map +1 -1
  48. package/dist/functions/OpenCapTable/stockPlanPoolAdjustment/getStockPlanPoolAdjustmentEventAsOcf.d.ts.map +1 -1
  49. package/dist/functions/OpenCapTable/stockPlanPoolAdjustment/getStockPlanPoolAdjustmentEventAsOcf.js +2 -1
  50. package/dist/functions/OpenCapTable/stockPlanPoolAdjustment/getStockPlanPoolAdjustmentEventAsOcf.js.map +1 -1
  51. package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.d.ts +9 -0
  52. package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.d.ts.map +1 -0
  53. package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.js +15 -0
  54. package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.js.map +1 -0
  55. package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.d.ts +10 -0
  56. package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.d.ts.map +1 -0
  57. package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.js +35 -0
  58. package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.js.map +1 -0
  59. package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.d.ts +20 -0
  60. package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.d.ts.map +1 -0
  61. package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.js +42 -0
  62. package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.js.map +1 -0
  63. package/dist/functions/OpenCapTable/stockTransfer/index.d.ts +4 -0
  64. package/dist/functions/OpenCapTable/stockTransfer/index.d.ts.map +1 -0
  65. package/dist/functions/OpenCapTable/stockTransfer/index.js +20 -0
  66. package/dist/functions/OpenCapTable/stockTransfer/index.js.map +1 -0
  67. package/dist/functions/OpenCapTable/vestingTerms/getVestingTermsAsOcf.js +3 -3
  68. package/dist/functions/OpenCapTable/vestingTerms/getVestingTermsAsOcf.js.map +1 -1
  69. package/dist/functions/OpenCapTable/warrantIssuance/getWarrantIssuanceAsOcf.d.ts.map +1 -1
  70. package/dist/functions/OpenCapTable/warrantIssuance/getWarrantIssuanceAsOcf.js +46 -16
  71. package/dist/functions/OpenCapTable/warrantIssuance/getWarrantIssuanceAsOcf.js.map +1 -1
  72. package/dist/functions/OpenCapTableReports/companyValuationReport/addObserversToCompanyValuationReport.d.ts.map +1 -1
  73. package/dist/functions/OpenCapTableReports/companyValuationReport/addObserversToCompanyValuationReport.js +2 -2
  74. package/dist/functions/OpenCapTableReports/companyValuationReport/addObserversToCompanyValuationReport.js.map +1 -1
  75. package/dist/functions/OpenCapTableReports/companyValuationReport/createCompanyValuationReport.d.ts.map +1 -1
  76. package/dist/functions/OpenCapTableReports/companyValuationReport/createCompanyValuationReport.js +2 -2
  77. package/dist/functions/OpenCapTableReports/companyValuationReport/createCompanyValuationReport.js.map +1 -1
  78. package/dist/functions/OpenCapTableReports/companyValuationReport/updateCompanyValuationReport.d.ts.map +1 -1
  79. package/dist/functions/OpenCapTableReports/companyValuationReport/updateCompanyValuationReport.js +2 -2
  80. package/dist/functions/OpenCapTableReports/companyValuationReport/updateCompanyValuationReport.js.map +1 -1
  81. package/dist/functions/PaymentStreams/utils/paymentContext.d.ts.map +1 -1
  82. package/dist/functions/PaymentStreams/utils/paymentContext.js +18 -30
  83. package/dist/functions/PaymentStreams/utils/paymentContext.js.map +1 -1
  84. package/dist/types/native.d.ts +22 -0
  85. package/dist/types/native.d.ts.map +1 -1
  86. package/dist/utils/createOcfObject.d.ts.map +1 -1
  87. package/dist/utils/createOcfObject.js +14 -0
  88. package/dist/utils/createOcfObject.js.map +1 -1
  89. package/dist/utils/index.d.ts +2 -0
  90. package/dist/utils/index.d.ts.map +1 -1
  91. package/dist/utils/index.js +2 -0
  92. package/dist/utils/index.js.map +1 -1
  93. package/dist/utils/ocfComparison.d.ts +31 -0
  94. package/dist/utils/ocfComparison.d.ts.map +1 -0
  95. package/dist/utils/ocfComparison.js +167 -0
  96. package/dist/utils/ocfComparison.js.map +1 -0
  97. package/dist/utils/ocfHelpers.d.ts +63 -0
  98. package/dist/utils/ocfHelpers.d.ts.map +1 -0
  99. package/dist/utils/ocfHelpers.js +132 -0
  100. package/dist/utils/ocfHelpers.js.map +1 -0
  101. package/dist/utils/typeConversions.d.ts +8 -0
  102. package/dist/utils/typeConversions.d.ts.map +1 -1
  103. package/dist/utils/typeConversions.js +31 -1
  104. package/dist/utils/typeConversions.js.map +1 -1
  105. package/package.json +20 -16
  106. package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.d.ts +0 -24
  107. package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.d.ts.map +0 -1
  108. package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.js +0 -47
  109. package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.js.map +0 -1
  110. package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.d.ts +0 -8
  111. package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.d.ts.map +0 -1
  112. package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.js +0 -22
  113. package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ /**
2
+ * OCF (Open Cap Table Format) comparison utilities.
3
+ *
4
+ * Provides semantic equality comparison for OCF objects with normalization to handle common variations in numeric
5
+ * precision and empty values.
6
+ *
7
+ * @module ocfComparison
8
+ */
9
+ /**
10
+ * Deep equality comparison for OCF objects with normalization.
11
+ *
12
+ * This comparison:
13
+ *
14
+ * - Normalizes numeric strings to fixed precision
15
+ * - Treats empty arrays/objects as equivalent to undefined
16
+ * - Trims string whitespace
17
+ * - Recursively compares nested objects
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const obj1 = { quantity: '100.0000000000', name: 'Test' };
22
+ * const obj2 = { quantity: '100', name: 'Test' };
23
+ * ocfDeepEqual(obj1, obj2); // true - normalized numbers match
24
+ * ```;
25
+ *
26
+ * @param a - First OCF object
27
+ * @param b - Second OCF object
28
+ * @returns True if objects are semantically equal
29
+ */
30
+ export declare function ocfDeepEqual(a: unknown, b: unknown): boolean;
31
+ //# sourceMappingURL=ocfComparison.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocfComparison.d.ts","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8FH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CA4C5D"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * OCF (Open Cap Table Format) comparison utilities.
4
+ *
5
+ * Provides semantic equality comparison for OCF objects with normalization to handle common variations in numeric
6
+ * precision and empty values.
7
+ *
8
+ * @module ocfComparison
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ocfDeepEqual = ocfDeepEqual;
12
+ /**
13
+ * Normalize a value for OCF comparison.
14
+ *
15
+ * Handles common variations that should be considered equal:
16
+ *
17
+ * - Numbers as strings are converted to fixed precision
18
+ * - Whitespace is trimmed from strings
19
+ *
20
+ * @param value - Value to normalize
21
+ * @returns Normalized value for comparison
22
+ */
23
+ function normalizeOcfValue(value) {
24
+ if (typeof value === 'string') {
25
+ // Trim whitespace to avoid mismatches due to leading/trailing spaces
26
+ const trimmed = value.trim();
27
+ // Try to parse as a number after trimming
28
+ const num = Number(trimmed);
29
+ if (!isNaN(num) && isFinite(num)) {
30
+ // Convert to fixed precision for consistent comparison
31
+ return num.toFixed(10);
32
+ }
33
+ return trimmed;
34
+ }
35
+ return value;
36
+ }
37
+ /**
38
+ * Check if a value should be treated as undefined/empty for comparison purposes.
39
+ *
40
+ * Handles OCF-specific patterns where empty/null/placeholder values should match:
41
+ *
42
+ * - Null, undefined
43
+ * - Empty strings or whitespace-only strings
44
+ * - Empty arrays or arrays where all elements are undefined-like
45
+ * - Empty objects or objects where all values are undefined-like
46
+ * - ShareNumberRange objects with 0-0 range (placeholder)
47
+ *
48
+ * @param value - Value to check
49
+ * @returns True if value should be treated as undefined
50
+ */
51
+ function isUndefinedLike(value) {
52
+ // Null or undefined
53
+ if (value === undefined || value === null)
54
+ return true;
55
+ // Blank string (including whitespace-only)
56
+ if (typeof value === 'string' && value.trim() === '')
57
+ return true;
58
+ // Helper: detect a ShareNumberRange object with both start/end equal to zero
59
+ const isZeroShareRange = (v) => {
60
+ if (!v || typeof v !== 'object')
61
+ return false;
62
+ const obj = v;
63
+ const startRaw = obj['starting_share_number'];
64
+ const endRaw = obj['ending_share_number'];
65
+ // Both keys must exist
66
+ if (startRaw === undefined || endRaw === undefined)
67
+ return false;
68
+ const parseToNumber = (x) => {
69
+ if (typeof x === 'number')
70
+ return x;
71
+ if (typeof x === 'string') {
72
+ const n = Number(x.trim());
73
+ return isNaN(n) ? NaN : n;
74
+ }
75
+ return NaN;
76
+ };
77
+ const start = parseToNumber(startRaw);
78
+ const end = parseToNumber(endRaw);
79
+ return !isNaN(start) && !isNaN(end) && start === 0 && end === 0;
80
+ };
81
+ // Arrays: treat as undefined-like if empty or every element is undefined-like
82
+ // Also treat arrays composed entirely of 0-0 share number ranges as undefined-like placeholders
83
+ if (Array.isArray(value)) {
84
+ if (value.length === 0)
85
+ return true;
86
+ if (value.every((v) => isUndefinedLike(v)))
87
+ return true;
88
+ if (value.every((v) => isZeroShareRange(v)))
89
+ return true;
90
+ return false;
91
+ }
92
+ // Objects: treat as undefined-like if empty or every property is undefined-like
93
+ // Also treat a single 0-0 ShareNumberRange object as undefined-like placeholder
94
+ if (typeof value === 'object') {
95
+ const obj = value;
96
+ const keys = Object.keys(obj);
97
+ if (keys.length === 0)
98
+ return true;
99
+ if (isZeroShareRange(value))
100
+ return true;
101
+ return keys.every((k) => isUndefinedLike(obj[k]));
102
+ }
103
+ return false;
104
+ }
105
+ /**
106
+ * Deep equality comparison for OCF objects with normalization.
107
+ *
108
+ * This comparison:
109
+ *
110
+ * - Normalizes numeric strings to fixed precision
111
+ * - Treats empty arrays/objects as equivalent to undefined
112
+ * - Trims string whitespace
113
+ * - Recursively compares nested objects
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const obj1 = { quantity: '100.0000000000', name: 'Test' };
118
+ * const obj2 = { quantity: '100', name: 'Test' };
119
+ * ocfDeepEqual(obj1, obj2); // true - normalized numbers match
120
+ * ```;
121
+ *
122
+ * @param a - First OCF object
123
+ * @param b - Second OCF object
124
+ * @returns True if objects are semantically equal
125
+ */
126
+ function ocfDeepEqual(a, b) {
127
+ // Consider empty arrays equivalent to undefined
128
+ if (isUndefinedLike(a) && isUndefinedLike(b))
129
+ return true;
130
+ // Handle null/undefined
131
+ if (a === b)
132
+ return true;
133
+ if (a == null || b == null)
134
+ return false;
135
+ // Handle different types
136
+ if (typeof a !== typeof b)
137
+ return false;
138
+ // Handle objects and arrays
139
+ if (typeof a === 'object' && typeof b === 'object') {
140
+ const objA = a;
141
+ const objB = b;
142
+ // Get all keys
143
+ const keysA = Object.keys(objA);
144
+ const keysB = Object.keys(objB);
145
+ const allKeys = Array.from(new Set([...keysA, ...keysB]));
146
+ // Check if all keys match
147
+ for (const key of allKeys) {
148
+ const valA = objA[key];
149
+ const valB = objB[key];
150
+ // Treat empty arrays as undefined-like and skip if both are undefined-like
151
+ if (isUndefinedLike(valA) && isUndefinedLike(valB))
152
+ continue;
153
+ // If one is undefined-like and the other isn't, they don't match
154
+ if (isUndefinedLike(valA) !== isUndefinedLike(valB))
155
+ return false;
156
+ // Recursively compare values
157
+ if (!ocfDeepEqual(valA, valB))
158
+ return false;
159
+ }
160
+ return true;
161
+ }
162
+ // Handle primitive values with normalization
163
+ const normalizedA = normalizeOcfValue(a);
164
+ const normalizedB = normalizeOcfValue(b);
165
+ return normalizedA === normalizedB;
166
+ }
167
+ //# sourceMappingURL=ocfComparison.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocfComparison.js","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * OCF (Open Cap Table Format) helper utilities.
3
+ *
4
+ * General-purpose utilities for working with OCF objects and DAML contracts:
5
+ *
6
+ * - OCF ID extraction from contract data
7
+ * - Human-readable type labels
8
+ *
9
+ * @module ocfHelpers
10
+ */
11
+ import { getAllOcfTypes, getOcfMetadata, isValidOcfType, OCF_METADATA, type OcfObjectType } from './ocfMetadata';
12
+ /**
13
+ * Get the data field name used in DAML contracts for a given OCF type.
14
+ *
15
+ * This is the field name where OCF data is stored in the contract's create arguments. Useful for extracting OCF data
16
+ * from transaction trees.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * getOcfDataFieldName('STAKEHOLDER'); // 'stakeholder_data'
21
+ * getOcfDataFieldName('TX_STOCK_ISSUANCE'); // 'issuance_data'
22
+ * getOcfDataFieldName('STOCK_CLASS'); // 'stock_class_data'
23
+ * ```;
24
+ *
25
+ * @param type - The OCF object type
26
+ * @returns The data field name (e.g., 'stakeholder_data', 'issuance_data')
27
+ */
28
+ export declare function getOcfDataFieldName(type: OcfObjectType): string;
29
+ /**
30
+ * Extract the OCF ID from contract create arguments.
31
+ *
32
+ * Uses the type's metadata to navigate to the ID field.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const args = { stakeholder_data: { id: 'sh-123', name: { legal_name: 'John' } } };
37
+ * extractOcfIdFromCreateArgs('STAKEHOLDER', args); // 'sh-123'
38
+ * ```;
39
+ *
40
+ * @param type - The OCF object type
41
+ * @param createArgs - The contract's create arguments from a transaction tree
42
+ * @returns The OCF ID string, or undefined if not found
43
+ */
44
+ export declare function extractOcfIdFromCreateArgs(type: OcfObjectType, createArgs: unknown): string | undefined;
45
+ /**
46
+ * Get human-readable display label for an OCF type.
47
+ *
48
+ * Useful for logging, notifications, and UI display.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * getOcfTypeLabel('STAKEHOLDER', 1); // '1 Stakeholder'
53
+ * getOcfTypeLabel('STAKEHOLDER', 5); // '5 Stakeholders'
54
+ * getOcfTypeLabel('TX_STOCK_ISSUANCE', 1); // '1 Stock Issuance'
55
+ * ```;
56
+ *
57
+ * @param type - The OCF object type
58
+ * @param count - Number of items (for pluralization)
59
+ * @returns Human-readable label
60
+ */
61
+ export declare function getOcfTypeLabel(type: OcfObjectType, count: number): string;
62
+ export { getAllOcfTypes, getOcfMetadata, isValidOcfType, OCF_METADATA, type OcfObjectType };
63
+ //# sourceMappingURL=ocfHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocfHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/ocfHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAI/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBvG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA8C1E;AAGD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,CAAC"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * OCF (Open Cap Table Format) helper utilities.
4
+ *
5
+ * General-purpose utilities for working with OCF objects and DAML contracts:
6
+ *
7
+ * - OCF ID extraction from contract data
8
+ * - Human-readable type labels
9
+ *
10
+ * @module ocfHelpers
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.OCF_METADATA = exports.isValidOcfType = exports.getOcfMetadata = exports.getAllOcfTypes = void 0;
14
+ exports.getOcfDataFieldName = getOcfDataFieldName;
15
+ exports.extractOcfIdFromCreateArgs = extractOcfIdFromCreateArgs;
16
+ exports.getOcfTypeLabel = getOcfTypeLabel;
17
+ const ocfMetadata_1 = require("./ocfMetadata");
18
+ Object.defineProperty(exports, "getAllOcfTypes", { enumerable: true, get: function () { return ocfMetadata_1.getAllOcfTypes; } });
19
+ Object.defineProperty(exports, "getOcfMetadata", { enumerable: true, get: function () { return ocfMetadata_1.getOcfMetadata; } });
20
+ Object.defineProperty(exports, "isValidOcfType", { enumerable: true, get: function () { return ocfMetadata_1.isValidOcfType; } });
21
+ Object.defineProperty(exports, "OCF_METADATA", { enumerable: true, get: function () { return ocfMetadata_1.OCF_METADATA; } });
22
+ /**
23
+ * Get the data field name used in DAML contracts for a given OCF type.
24
+ *
25
+ * This is the field name where OCF data is stored in the contract's create arguments. Useful for extracting OCF data
26
+ * from transaction trees.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * getOcfDataFieldName('STAKEHOLDER'); // 'stakeholder_data'
31
+ * getOcfDataFieldName('TX_STOCK_ISSUANCE'); // 'issuance_data'
32
+ * getOcfDataFieldName('STOCK_CLASS'); // 'stock_class_data'
33
+ * ```;
34
+ *
35
+ * @param type - The OCF object type
36
+ * @returns The data field name (e.g., 'stakeholder_data', 'issuance_data')
37
+ */
38
+ function getOcfDataFieldName(type) {
39
+ const metadata = (0, ocfMetadata_1.getOcfMetadata)(type);
40
+ // The first element of ocfIdPath is the data field name
41
+ return metadata.ocfIdPath[0];
42
+ }
43
+ /**
44
+ * Extract the OCF ID from contract create arguments.
45
+ *
46
+ * Uses the type's metadata to navigate to the ID field.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const args = { stakeholder_data: { id: 'sh-123', name: { legal_name: 'John' } } };
51
+ * extractOcfIdFromCreateArgs('STAKEHOLDER', args); // 'sh-123'
52
+ * ```;
53
+ *
54
+ * @param type - The OCF object type
55
+ * @param createArgs - The contract's create arguments from a transaction tree
56
+ * @returns The OCF ID string, or undefined if not found
57
+ */
58
+ function extractOcfIdFromCreateArgs(type, createArgs) {
59
+ if (!createArgs || typeof createArgs !== 'object') {
60
+ return undefined;
61
+ }
62
+ const metadata = (0, ocfMetadata_1.getOcfMetadata)(type);
63
+ let current = createArgs;
64
+ for (const key of metadata.ocfIdPath) {
65
+ if (current === null || current === undefined || typeof current !== 'object') {
66
+ return undefined;
67
+ }
68
+ current = current[key];
69
+ }
70
+ return typeof current === 'string' ? current : undefined;
71
+ }
72
+ /**
73
+ * Get human-readable display label for an OCF type.
74
+ *
75
+ * Useful for logging, notifications, and UI display.
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * getOcfTypeLabel('STAKEHOLDER', 1); // '1 Stakeholder'
80
+ * getOcfTypeLabel('STAKEHOLDER', 5); // '5 Stakeholders'
81
+ * getOcfTypeLabel('TX_STOCK_ISSUANCE', 1); // '1 Stock Issuance'
82
+ * ```;
83
+ *
84
+ * @param type - The OCF object type
85
+ * @param count - Number of items (for pluralization)
86
+ * @returns Human-readable label
87
+ */
88
+ function getOcfTypeLabel(type, count) {
89
+ // Convert type to title case and handle special cases
90
+ const labelMap = {
91
+ STOCK_CLASS: { singular: 'Stock Class', plural: 'Stock Classes' },
92
+ STAKEHOLDER: { singular: 'Stakeholder', plural: 'Stakeholders' },
93
+ STOCK_PLAN: { singular: 'Stock Plan', plural: 'Stock Plans' },
94
+ STOCK_LEGEND_TEMPLATE: { singular: 'Stock Legend Template', plural: 'Stock Legend Templates' },
95
+ DOCUMENT: { singular: 'Document', plural: 'Documents' },
96
+ VESTING_TERMS: { singular: 'Vesting Terms', plural: 'Vesting Terms' },
97
+ TX_STOCK_ISSUANCE: { singular: 'Stock Issuance', plural: 'Stock Issuances' },
98
+ TX_WARRANT_ISSUANCE: { singular: 'Warrant Issuance', plural: 'Warrant Issuances' },
99
+ TX_CONVERTIBLE_ISSUANCE: { singular: 'Convertible Issuance', plural: 'Convertible Issuances' },
100
+ TX_STOCK_PLAN_POOL_ADJUSTMENT: { singular: 'Stock Plan Pool Adjustment', plural: 'Stock Plan Pool Adjustments' },
101
+ TX_STOCK_CLASS_AUTHORIZED_SHARES_ADJUSTMENT: {
102
+ singular: 'Stock Class Authorized Shares Adjustment',
103
+ plural: 'Stock Class Authorized Shares Adjustments',
104
+ },
105
+ TX_STOCK_CANCELLATION: { singular: 'Stock Cancellation', plural: 'Stock Cancellations' },
106
+ TX_ISSUER_AUTHORIZED_SHARES_ADJUSTMENT: {
107
+ singular: 'Issuer Authorized Shares Adjustment',
108
+ plural: 'Issuer Authorized Shares Adjustments',
109
+ },
110
+ TX_EQUITY_COMPENSATION_ISSUANCE: {
111
+ singular: 'Equity Compensation Issuance',
112
+ plural: 'Equity Compensation Issuances',
113
+ },
114
+ TX_EQUITY_COMPENSATION_EXERCISE: {
115
+ singular: 'Equity Compensation Exercise',
116
+ plural: 'Equity Compensation Exercises',
117
+ },
118
+ };
119
+ const labels = labelMap[type];
120
+ if (labels) {
121
+ const label = count === 1 ? labels.singular : labels.plural;
122
+ return `${count} ${label}`;
123
+ }
124
+ // Fallback: convert type to title case
125
+ const fallback = type
126
+ .replace(/^TX_/, '')
127
+ .split('_')
128
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
129
+ .join(' ');
130
+ return `${count} ${fallback}${count === 1 ? '' : 's'}`;
131
+ }
132
+ //# sourceMappingURL=ocfHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocfHelpers.js","sourceRoot":"","sources":["../../src/utils/ocfHelpers.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,14 @@ export declare function relTimeToDAML(microseconds: string): {
24
24
  export declare function damlTimeToDateString(timeString: string): string;
25
25
  /** Convert a number or string to a string Used for DAML numeric fields that require string values */
26
26
  export declare function numberToString(value: number | string): string;
27
+ /**
28
+ * Normalize a numeric string by removing trailing zeros after the decimal point. DAML returns numbers like
29
+ * "5000000.0000000000" but OCF expects "5000000". Also handles removing the decimal point if all fractional digits are
30
+ * zeros.
31
+ *
32
+ * @throws Error if the string contains scientific notation (e.g., "1.5e10") or is not a valid numeric string
33
+ */
34
+ export declare function normalizeNumericString(value: string): string;
27
35
  /**
28
36
  * Convert a number, string, null or undefined to a string or undefined Used for optional DAML numeric fields that
29
37
  * require string values
@@ -1 +1 @@
1
- {"version":3,"file":"typeConversions.d.ts","sourceRoot":"","sources":["../../src/utils/typeConversions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,wEAAwE,CAAC;AACtI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAe,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAItE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAE5E;AAED,uHAAuH;AACvH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYjD;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAK1F;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAKpG;AAkCD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAStF;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAWhG;AAID,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,CAOvE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,uCAAuC,GAAG,MAAM,CAezF"}
1
+ {"version":3,"file":"typeConversions.d.ts","sourceRoot":"","sources":["../../src/utils/typeConversions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,wEAAwE,CAAC;AACtI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAe,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAItE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAE5E;AAED,uHAAuH;AACvH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA0B5D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYjD;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAK1F;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAKpG;AAkCD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAStF;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAWhG;AAID,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,CAOvE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,uCAAuC,GAAG,MAAM,CAezF"}
@@ -10,6 +10,7 @@ exports.dateStringToDAMLTime = dateStringToDAMLTime;
10
10
  exports.relTimeToDAML = relTimeToDAML;
11
11
  exports.damlTimeToDateString = damlTimeToDateString;
12
12
  exports.numberToString = numberToString;
13
+ exports.normalizeNumericString = normalizeNumericString;
13
14
  exports.optionalNumberToString = optionalNumberToString;
14
15
  exports.optionalString = optionalString;
15
16
  exports.safeString = safeString;
@@ -48,6 +49,35 @@ function damlTimeToDateString(timeString) {
48
49
  function numberToString(value) {
49
50
  return typeof value === 'number' ? value.toString() : value;
50
51
  }
52
+ /**
53
+ * Normalize a numeric string by removing trailing zeros after the decimal point. DAML returns numbers like
54
+ * "5000000.0000000000" but OCF expects "5000000". Also handles removing the decimal point if all fractional digits are
55
+ * zeros.
56
+ *
57
+ * @throws Error if the string contains scientific notation (e.g., "1.5e10") or is not a valid numeric string
58
+ */
59
+ function normalizeNumericString(value) {
60
+ // Validate: reject scientific notation
61
+ if (value.toLowerCase().includes('e')) {
62
+ throw new Error(`Invalid numeric string: scientific notation is not supported (got "${value}")`);
63
+ }
64
+ // Validate: must be a valid numeric string (optional minus, digits, optional decimal and more digits)
65
+ if (!/^-?\d+(\.\d+)?$/.test(value)) {
66
+ throw new Error(`Invalid numeric string format (got "${value}")`);
67
+ }
68
+ // If no decimal point, return as-is
69
+ if (!value.includes('.')) {
70
+ return value;
71
+ }
72
+ // Remove trailing zeros after decimal point
73
+ const result = value.replace(/\.?0+$/, '');
74
+ // If we ended up with just an empty string after the decimal, it means there was nothing before it
75
+ // This shouldn't happen with valid numeric strings, but just in case:
76
+ if (result === '') {
77
+ return '0';
78
+ }
79
+ return result;
80
+ }
51
81
  /**
52
82
  * Convert a number, string, null or undefined to a string or undefined Used for optional DAML numeric fields that
53
83
  * require string values
@@ -93,7 +123,7 @@ function monetaryToDaml(monetary) {
93
123
  }
94
124
  function damlMonetaryToNative(damlMonetary) {
95
125
  return {
96
- amount: damlMonetary.amount,
126
+ amount: normalizeNumericString(damlMonetary.amount),
97
127
  currency: damlMonetary.currency,
98
128
  };
99
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"typeConversions.js","sourceRoot":"","sources":["../../src/utils/typeConversions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeConversions.js","sourceRoot":"","sources":["../../src/utils/typeConversions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAaH,oDAMC;AAMD,sCAEC;AAGD,oDAGC;AAGD,wCAEC;AASD,wDA0BC;AAMD,wDAGC;AAMD,wCAEC;AAMD,gCAYC;AAID,wCAKC;AAED,oDAKC;AAkCD,sCASC;AAED,kDAWC;AAKD,sCAOC;AAQD,0CAeC;AAjND,+CAA+C;AAE/C;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,UAAkB;IACrD,4CAA4C;IAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,UAAU,gBAAgB,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,YAAoB;IAChD,OAAO,EAAE,YAAY,EAAE,CAAC;AAC1B,CAAC;AAED,uHAAuH;AACvH,SAAgB,oBAAoB,CAAC,UAAkB;IACrD,6CAA6C;IAC7C,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,qGAAqG;AACrG,SAAgB,cAAc,CAAC,KAAsB;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,KAAa;IAClD,uCAAuC;IACvC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,sEAAsE,KAAK,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,sGAAsG;IACtG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4CAA4C;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE3C,mGAAmG;IACnG,sEAAsE;IACtE,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,KAAyC;IAC9E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAgC;IAC7D,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvD,6DAA6D;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,4BAA4B;QAC5B,IAAI,KAAK,IAAI,KAAK,IAAI,OAAQ,KAA2B,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3E,OAAQ,KAAyB,CAAC,GAAG,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,yCAAyC;AAEzC,SAAgB,cAAc,CAAC,QAAkB;IAC/C,OAAO;QACL,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;QAC1F,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,YAAqD;IACxF,OAAO;QACL,MAAM,EAAE,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC;QACnD,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAC;AACJ,CAAC;AAED,kCAAkC;AAElC,SAAS,iBAAiB,CAAC,WAAwB;IACjD,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,qBAAqB,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,uBAAuB,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,qBAAqB,CAAC;QAC/B,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,eAAe,GAAU,WAAW,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAyB,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAoD;IACnF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,qBAAqB;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,uBAAuB;YAC1B,OAAO,SAAS,CAAC;QACnB,KAAK,qBAAqB;YACxB,OAAO,OAAO,CAAC;QACjB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,eAAe,GAAU,QAAQ,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,eAAyB,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,OAAgB;IAC5C,OAAO;QACL,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;QACrD,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;QAClD,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,mBAAmB,EAAE,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CAAC,WAAmD;IACrF,OAAO;QACL,YAAY,EAAE,uBAAuB,CAAC,WAAW,CAAC,YAAY,CAAC;QAC/D,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC;QAC3E,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;QACnD,GAAG,CAAC,WAAW,CAAC,mBAAmB,IAAI;YACrC,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;SACrD,CAAC;QACF,GAAG,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,oCAAoC;AAEpC,gGAAgG;AAChG,SAAgB,aAAa,CAAC,QAA+B;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,2CAA2C;AAE3C;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAiD;IAC/E,MAAM,IAAI,GAAG,QAAQ,CAAC,eAA0C,CAAC;IAEjE,4BAA4B;IAC5B,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,uCAAuC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAkD,CAAC;IAC5E,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-captable-protocol/canton",
3
- "version": "0.2.106",
3
+ "version": "0.2.107",
4
4
  "description": "A TypeScript SDK for interacting with the Open CapTable Protocol (OCP) Factory contract on Canton blockchain",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -26,36 +26,40 @@
26
26
  "test": "npm run -s typecheck && jest --passWithNoTests",
27
27
  "test:ci": "npm run -s typecheck && jest --runInBand",
28
28
  "test:coverage": "jest --coverage --passWithNoTests",
29
+ "test:integration": "npm run -s typecheck && jest -c jest.integration.config.js --passWithNoTests",
30
+ "test:integration:ci": "npm run -s typecheck && jest -c jest.integration.config.js --runInBand",
29
31
  "test:watch": "jest --watch",
30
32
  "typecheck": "tsc -p tsconfig.tests.json --noEmit"
31
33
  },
32
34
  "dependencies": {
33
- "@daml/ledger": "2.10.2",
34
- "@daml/types": "2.10.2",
35
- "@fairmint/canton-node-sdk": "0.0.131",
36
- "@fairmint/open-captable-protocol-daml-js": "0.2.50"
35
+ "@daml/ledger": "2.10.3",
36
+ "@daml/types": "3.4.9",
37
+ "@fairmint/canton-node-sdk": "0.0.142",
38
+ "@fairmint/open-captable-protocol-daml-js": "0.2.55"
37
39
  },
38
40
  "devDependencies": {
39
- "@eslint/eslintrc": "^3.3.1",
41
+ "@eslint/eslintrc": "3.3.3",
40
42
  "@types/jest": "30.0.0",
41
- "@types/node": "24.7.2",
42
- "@typescript-eslint/eslint-plugin": "8.46.1",
43
- "@typescript-eslint/parser": "8.46.1",
43
+ "@types/jsonwebtoken": "9.0.10",
44
+ "@types/node": "25.0.3",
45
+ "@typescript-eslint/eslint-plugin": "8.51.0",
46
+ "@typescript-eslint/parser": "8.51.0",
44
47
  "ajv": "8.17.1",
45
48
  "ajv-formats": "3.0.1",
46
- "eslint": "9.37.0",
49
+ "eslint": "9.39.2",
47
50
  "eslint-config-prettier": "10.1.8",
48
51
  "eslint-import-resolver-typescript": "4.4.4",
49
52
  "eslint-plugin-import": "2.32.0",
50
- "eslint-plugin-unused-imports": "4.2.0",
53
+ "eslint-plugin-unused-imports": "4.3.0",
51
54
  "jest": "30.2.0",
52
- "prettier": "3.6.2",
53
- "prettier-plugin-jsdoc": "1.3.3",
55
+ "jsonwebtoken": "9.0.3",
56
+ "prettier": "3.7.4",
57
+ "prettier-plugin-jsdoc": "1.8.0",
54
58
  "prettier-plugin-organize-imports": "4.3.0",
55
- "prettier-plugin-packagejson": "2.5.19",
56
- "ts-jest": "29.4.5",
59
+ "prettier-plugin-packagejson": "2.5.20",
60
+ "ts-jest": "29.4.6",
57
61
  "ts-node": "10.9.2",
58
- "typedoc": "0.28.14",
62
+ "typedoc": "0.28.15",
59
63
  "typescript": "5.9.3"
60
64
  },
61
65
  "publishConfig": {
@@ -1,24 +0,0 @@
1
- import type { CommandWithDisclosedContracts } from '../../../types';
2
- export interface ExecuteBatchTransfersParams {
3
- factoryContractId: string;
4
- personalAirdropCids: string[];
5
- amuletInputs: string[];
6
- openMiningRoundCid: string;
7
- amount: string | number;
8
- numberOfTransfers: number;
9
- lockedAmuletCid?: string;
10
- }
11
- /**
12
- * Build command to execute batch transfers on multiple PersonalAirdrop contracts
13
- *
14
- * Supports two modes:
15
- * 1. Regular amulets: Provide amuletInputs, leave lockedAmuletCid undefined
16
- * 2. LockedAmulet: Provide lockedAmuletCid, leave amuletInputs empty
17
- *
18
- * When using LockedAmulet:
19
- * - The locked amulet is unlocked before batch processing
20
- * - Used for all transfers in the batch
21
- * - Re-locked with preserved lock details (holders, expiry, context) after completion
22
- */
23
- export declare function buildExecuteBatchTransfersCommand(params: ExecuteBatchTransfersParams): CommandWithDisclosedContracts;
24
- //# sourceMappingURL=executeBatchTransfers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executeBatchTransfers.d.ts","sourceRoot":"","sources":["../../../../src/functions/CantonPayments/airdrop/executeBatchTransfers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,2BAA2B;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,2BAA2B,GAAG,6BAA6B,CA+BpH"}