@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.
- package/README.md +3 -1
- package/dist/OcpClient.d.ts +236 -3
- package/dist/OcpClient.d.ts.map +1 -1
- package/dist/OcpClient.js +133 -7
- package/dist/OcpClient.js.map +1 -1
- package/dist/functions/CantonPayments/simpleAirdrop/archiveSimpleAirdrop.js +1 -1
- package/dist/functions/CantonPayments/simpleAirdrop/archiveSimpleAirdrop.js.map +1 -1
- package/dist/functions/CantonPayments/simpleAirdrop/index.d.ts +0 -1
- package/dist/functions/CantonPayments/simpleAirdrop/index.d.ts.map +1 -1
- package/dist/functions/CantonPayments/simpleAirdrop/index.js +0 -1
- package/dist/functions/CantonPayments/simpleAirdrop/index.js.map +1 -1
- package/dist/functions/OpenCapTable/convertibleIssuance/getConvertibleIssuanceAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/convertibleIssuance/getConvertibleIssuanceAsOcf.js +77 -30
- package/dist/functions/OpenCapTable/convertibleIssuance/getConvertibleIssuanceAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/document/createDocument.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/document/createDocument.js +2 -2
- package/dist/functions/OpenCapTable/document/createDocument.js.map +1 -1
- package/dist/functions/OpenCapTable/equityCompensationExercise/getEquityCompensationExerciseEventAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/equityCompensationExercise/getEquityCompensationExerciseEventAsOcf.js +9 -1
- package/dist/functions/OpenCapTable/equityCompensationExercise/getEquityCompensationExerciseEventAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/equityCompensationIssuance/getEquityCompensationIssuanceEventAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/equityCompensationIssuance/getEquityCompensationIssuanceEventAsOcf.js +34 -8
- package/dist/functions/OpenCapTable/equityCompensationIssuance/getEquityCompensationIssuanceEventAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/index.d.ts +1 -0
- package/dist/functions/OpenCapTable/index.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/index.js +1 -0
- package/dist/functions/OpenCapTable/index.js.map +1 -1
- package/dist/functions/OpenCapTable/issuer/getIssuerAsOcf.js +4 -4
- package/dist/functions/OpenCapTable/issuer/getIssuerAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/issuerAuthorization/authorizeIssuer.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/issuerAuthorization/authorizeIssuer.js +2 -2
- package/dist/functions/OpenCapTable/issuerAuthorization/authorizeIssuer.js.map +1 -1
- package/dist/functions/OpenCapTable/issuerAuthorizedSharesAdjustment/getIssuerAuthorizedSharesAdjustmentEventAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/issuerAuthorizedSharesAdjustment/getIssuerAuthorizedSharesAdjustmentEventAsOcf.js +3 -2
- package/dist/functions/OpenCapTable/issuerAuthorizedSharesAdjustment/getIssuerAuthorizedSharesAdjustmentEventAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockCancellation/getStockCancellationEventAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/stockCancellation/getStockCancellationEventAsOcf.js +7 -1
- package/dist/functions/OpenCapTable/stockCancellation/getStockCancellationEventAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockClass/getStockClassAsOcf.js +6 -6
- package/dist/functions/OpenCapTable/stockClass/getStockClassAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockClassAuthorizedSharesAdjustment/getStockClassAuthorizedSharesAdjustmentEventAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/stockClassAuthorizedSharesAdjustment/getStockClassAuthorizedSharesAdjustmentEventAsOcf.js +2 -1
- package/dist/functions/OpenCapTable/stockClassAuthorizedSharesAdjustment/getStockClassAuthorizedSharesAdjustmentEventAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockIssuance/getStockIssuanceAsOcf.js +2 -2
- package/dist/functions/OpenCapTable/stockIssuance/getStockIssuanceAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockPlan/getStockPlanAsOcf.js +1 -1
- package/dist/functions/OpenCapTable/stockPlan/getStockPlanAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockPlanPoolAdjustment/getStockPlanPoolAdjustmentEventAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/stockPlanPoolAdjustment/getStockPlanPoolAdjustmentEventAsOcf.js +2 -1
- package/dist/functions/OpenCapTable/stockPlanPoolAdjustment/getStockPlanPoolAdjustmentEventAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.d.ts +9 -0
- package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.d.ts.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.js +15 -0
- package/dist/functions/OpenCapTable/stockTransfer/archiveStockTransferByIssuer.js.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.d.ts +10 -0
- package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.d.ts.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.js +35 -0
- package/dist/functions/OpenCapTable/stockTransfer/createStockTransfer.js.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.d.ts +20 -0
- package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.d.ts.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.js +42 -0
- package/dist/functions/OpenCapTable/stockTransfer/getStockTransferAsOcf.js.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/index.d.ts +4 -0
- package/dist/functions/OpenCapTable/stockTransfer/index.d.ts.map +1 -0
- package/dist/functions/OpenCapTable/stockTransfer/index.js +20 -0
- package/dist/functions/OpenCapTable/stockTransfer/index.js.map +1 -0
- package/dist/functions/OpenCapTable/vestingTerms/getVestingTermsAsOcf.js +3 -3
- package/dist/functions/OpenCapTable/vestingTerms/getVestingTermsAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTable/warrantIssuance/getWarrantIssuanceAsOcf.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/warrantIssuance/getWarrantIssuanceAsOcf.js +46 -16
- package/dist/functions/OpenCapTable/warrantIssuance/getWarrantIssuanceAsOcf.js.map +1 -1
- package/dist/functions/OpenCapTableReports/companyValuationReport/addObserversToCompanyValuationReport.d.ts.map +1 -1
- package/dist/functions/OpenCapTableReports/companyValuationReport/addObserversToCompanyValuationReport.js +2 -2
- package/dist/functions/OpenCapTableReports/companyValuationReport/addObserversToCompanyValuationReport.js.map +1 -1
- package/dist/functions/OpenCapTableReports/companyValuationReport/createCompanyValuationReport.d.ts.map +1 -1
- package/dist/functions/OpenCapTableReports/companyValuationReport/createCompanyValuationReport.js +2 -2
- package/dist/functions/OpenCapTableReports/companyValuationReport/createCompanyValuationReport.js.map +1 -1
- package/dist/functions/OpenCapTableReports/companyValuationReport/updateCompanyValuationReport.d.ts.map +1 -1
- package/dist/functions/OpenCapTableReports/companyValuationReport/updateCompanyValuationReport.js +2 -2
- package/dist/functions/OpenCapTableReports/companyValuationReport/updateCompanyValuationReport.js.map +1 -1
- package/dist/functions/PaymentStreams/utils/paymentContext.d.ts.map +1 -1
- package/dist/functions/PaymentStreams/utils/paymentContext.js +18 -30
- package/dist/functions/PaymentStreams/utils/paymentContext.js.map +1 -1
- package/dist/types/native.d.ts +22 -0
- package/dist/types/native.d.ts.map +1 -1
- package/dist/utils/createOcfObject.d.ts.map +1 -1
- package/dist/utils/createOcfObject.js +14 -0
- package/dist/utils/createOcfObject.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ocfComparison.d.ts +31 -0
- package/dist/utils/ocfComparison.d.ts.map +1 -0
- package/dist/utils/ocfComparison.js +167 -0
- package/dist/utils/ocfComparison.js.map +1 -0
- package/dist/utils/ocfHelpers.d.ts +63 -0
- package/dist/utils/ocfHelpers.d.ts.map +1 -0
- package/dist/utils/ocfHelpers.js +132 -0
- package/dist/utils/ocfHelpers.js.map +1 -0
- package/dist/utils/typeConversions.d.ts +8 -0
- package/dist/utils/typeConversions.d.ts.map +1 -1
- package/dist/utils/typeConversions.js +31 -1
- package/dist/utils/typeConversions.js.map +1 -1
- package/package.json +20 -16
- package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.d.ts +0 -24
- package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.d.ts.map +0 -1
- package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.js +0 -47
- package/dist/functions/CantonPayments/airdrop/executeBatchTransfers.js.map +0 -1
- package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.d.ts +0 -8
- package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.d.ts.map +0 -1
- package/dist/functions/CantonPayments/simpleAirdrop/updateSimpleAirdropConfig.js +0 -22
- 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":";AAAA;;;;;GAKG;;AAaH,oDAMC;AAMD,sCAEC;AAGD,oDAGC;AAGD,wCAEC;AAMD,wDAGC;AAMD,wCAEC;AAMD,gCAYC;AAID,wCAKC;AAED,oDAKC;AAkCD,sCASC;AAED,kDAWC;AAKD,sCAOC;AAQD,0CAeC;
|
|
1
|
+
{"version":3,"file":"typeConversions.js","sourceRoot":"","sources":["../../src/utils/typeConversions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-captable-protocol/canton",
|
|
3
|
-
"version": "0.2.
|
|
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.
|
|
34
|
-
"@daml/types": "
|
|
35
|
-
"@fairmint/canton-node-sdk": "0.0.
|
|
36
|
-
"@fairmint/open-captable-protocol-daml-js": "0.2.
|
|
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": "
|
|
41
|
+
"@eslint/eslintrc": "3.3.3",
|
|
40
42
|
"@types/jest": "30.0.0",
|
|
41
|
-
"@types/
|
|
42
|
-
"@
|
|
43
|
-
"@typescript-eslint/
|
|
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.
|
|
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.
|
|
53
|
+
"eslint-plugin-unused-imports": "4.3.0",
|
|
51
54
|
"jest": "30.2.0",
|
|
52
|
-
"
|
|
53
|
-
"prettier
|
|
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.
|
|
56
|
-
"ts-jest": "29.4.
|
|
59
|
+
"prettier-plugin-packagejson": "2.5.20",
|
|
60
|
+
"ts-jest": "29.4.6",
|
|
57
61
|
"ts-node": "10.9.2",
|
|
58
|
-
"typedoc": "0.28.
|
|
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"}
|