@open-captable-protocol/canton 0.0.31 → 0.0.33

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.
@@ -1,3 +1,4 @@
1
1
  export * from './issuer';
2
+ export * from './stockClass';
2
3
  export * from './companyValuationReport';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC"}
@@ -15,5 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./issuer"), exports);
18
+ __exportStar(require("./stockClass"), exports);
18
19
  __exportStar(require("./companyValuationReport"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,2DAAyC"}
@@ -1,34 +1,58 @@
1
1
  import { LedgerJsonApiClient } from '@fairmint/canton-node-sdk';
2
2
  /**
3
3
  * OCF Issuer object according to the Open Cap Table Coalition schema
4
+ * Object describing the issuer of the cap table (the company whose cap table this is)
4
5
  * @see https://schema.opencaptablecoalition.com/v/1.2.0/objects/Issuer.schema.json
5
6
  */
6
7
  export interface OcfIssuer {
8
+ /** Object type identifier - must be "ISSUER" */
7
9
  object_type: 'ISSUER';
10
+ /** Legal name of the issuer */
8
11
  legal_name: string;
12
+ /** Doing Business As name */
9
13
  dba?: string;
14
+ /** Date of formation (ISO 8601 date string YYYY-MM-DD) */
10
15
  formation_date?: string;
16
+ /** The country where the issuer company was legally formed (ISO 3166-1 alpha-2) */
11
17
  country_of_formation: string;
18
+ /** The state, province, or subdivision where the issuer company was legally formed */
12
19
  country_subdivision_of_formation?: string;
20
+ /** The tax ids for this issuer company */
13
21
  tax_ids?: Array<{
22
+ /** Type of tax identifier */
14
23
  tax_id_type: string;
24
+ /** The tax identification number */
15
25
  tax_id: string;
16
26
  }>;
27
+ /** A work email that the issuer company can be reached at */
17
28
  email?: {
29
+ /** Type of email address (personal or business) */
18
30
  email_type: 'PERSONAL' | 'BUSINESS';
31
+ /** The email address */
19
32
  email_address: string;
20
33
  };
34
+ /** A phone number that the issuer company can be reached at */
21
35
  phone?: string;
36
+ /** The headquarters address of the issuing company */
22
37
  address?: {
23
- line1?: string;
24
- line2?: string;
38
+ /** What type of address is this (e.g. legal address, contact address, etc.) */
39
+ address_type: 'LEGAL' | 'CONTACT' | 'OTHER';
40
+ /** Street address (multi-line string) */
41
+ street_suite?: string;
42
+ /** City */
25
43
  city?: string;
26
- state?: string;
44
+ /** State, province, or equivalent identifier required for an address in this country */
45
+ country_subdivision?: string;
46
+ /** Country code for this address (ISO 3166-1 alpha-2) */
47
+ country: string;
48
+ /** Address postal code */
27
49
  postal_code?: string;
28
- country?: string;
29
50
  };
51
+ /** The initial number of shares authorized for this issuer */
30
52
  initial_shares_authorized?: string | number;
53
+ /** Unique identifier for the issuer object */
31
54
  id?: string;
55
+ /** Additional comments or notes about the issuer */
32
56
  comments?: string[];
33
57
  }
34
58
  export interface GetIssuerAsOcfParams {
@@ -1 +1 @@
1
- {"version":3,"file":"getIssuerAsOcf.d.ts","sourceRoot":"","sources":["../../../src/functions/issuer/getIssuerAsOcf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,QAAQ,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QACN,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAiF/B"}
1
+ {"version":3,"file":"getIssuerAsOcf.d.ts","sourceRoot":"","sources":["../../../src/functions/issuer/getIssuerAsOcf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,WAAW,EAAE,QAAQ,CAAC;IAEtB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,CAAC;IAE7B,sFAAsF;IACtF,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAE1C,0CAA0C;IAC1C,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,6BAA6B;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,oCAAoC;QACpC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH,6DAA6D;IAC7D,KAAK,CAAC,EAAE;QACN,mDAAmD;QACnD,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;QACpC,wBAAwB;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sDAAsD;IACtD,OAAO,CAAC,EAAE;QACR,+EAA+E;QAC/E,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;QAC5C,yCAAyC;QACzC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,wFAAwF;QACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,yDAAyD;QACzD,OAAO,EAAE,MAAM,CAAC;QAChB,0BAA0B;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,8DAA8D;IAC9D,yBAAyB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5C,8CAA8C;IAC9C,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CA+F/B"}
@@ -62,6 +62,19 @@ async function getIssuerAsOcf(client, params) {
62
62
  throw new Error(`Unknown email type: ${damlEmailType}`);
63
63
  }
64
64
  };
65
+ // Helper function to convert DAML address type to OCF schema address type
66
+ const convertAddressType = (damlAddressType) => {
67
+ switch (damlAddressType) {
68
+ case 'OcfAddressTypeLegal':
69
+ return 'LEGAL';
70
+ case 'OcfAddressTypeContact':
71
+ return 'CONTACT';
72
+ case 'OcfAddressTypeOther':
73
+ return 'OTHER';
74
+ default:
75
+ throw new Error(`Unknown address type: ${damlAddressType}`);
76
+ }
77
+ };
65
78
  // Transform DAML issuer data to OCF format
66
79
  const ocfIssuer = {
67
80
  object_type: 'ISSUER',
@@ -83,12 +96,12 @@ async function getIssuerAsOcf(client, params) {
83
96
  ...(issuerData.phone && { phone: issuerData.phone }),
84
97
  ...(issuerData.address && {
85
98
  address: {
86
- ...(issuerData.address.line1 && { line1: toUndefined(issuerData.address.line1) }),
87
- ...(issuerData.address.line2 && { line2: toUndefined(issuerData.address.line2) }),
99
+ address_type: convertAddressType(issuerData.address.address_type),
100
+ ...(issuerData.address.street_suite && { street_suite: toUndefined(issuerData.address.street_suite) }),
88
101
  ...(issuerData.address.city && { city: toUndefined(issuerData.address.city) }),
89
- ...(issuerData.address.state && { state: toUndefined(issuerData.address.state) }),
90
- ...(issuerData.address.postal_code && { postal_code: toUndefined(issuerData.address.postal_code) }),
91
- ...(issuerData.address.country && { country: toUndefined(issuerData.address.country) })
102
+ ...(issuerData.address.country_subdivision && { country_subdivision: toUndefined(issuerData.address.country_subdivision) }),
103
+ country: toUndefined(issuerData.address.country) || issuerData.country_of_formation, // Use country_of_formation as fallback
104
+ ...(issuerData.address.postal_code && { postal_code: toUndefined(issuerData.address.postal_code) })
92
105
  }
93
106
  }),
94
107
  ...(issuerData.initial_shares_authorized && {
@@ -1 +1 @@
1
- {"version":3,"file":"getIssuerAsOcf.js","sourceRoot":"","sources":["../../../src/functions/issuer/getIssuerAsOcf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getIssuerAsOcf.js","sourceRoot":"","sources":["../../../src/functions/issuer/getIssuerAsOcf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { Fairmint } from '@fairmint/open-captable-protocol-daml-js';
2
+ import { LedgerJsonApiClient } from '@fairmint/canton-node-sdk';
3
+ export interface CreateStockClassParams {
4
+ /** Contract ID of the Issuer contract */
5
+ issuerContractId: string;
6
+ /** The party that will act as the issuer */
7
+ issuerParty: string;
8
+ /** Stock class data to create */
9
+ stockClassData: Fairmint.OpenCapTable.Types.OcfStockClassData;
10
+ }
11
+ export interface CreateStockClassResult {
12
+ contractId: string;
13
+ updateId: string;
14
+ }
15
+ /**
16
+ * Create a stock class by exercising the CreateStockClass choice on an Issuer contract
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const result = await createStockClass(client, {
21
+ * issuerContractId: "1234567890abcdef",
22
+ * issuerParty: "issuer_party_id",
23
+ * stockClassData: {
24
+ * name: "Series A Preferred",
25
+ * class_type: "OcfStockClassTypePreferred",
26
+ * default_id_prefix: "SA-",
27
+ * initial_shares_authorized: "1000000",
28
+ * votes_per_share: "1",
29
+ * seniority: "1",
30
+ * // ... other stock class data
31
+ * }
32
+ * });
33
+ * ```
34
+ *
35
+ * @param client - The ledger JSON API client
36
+ * @param params - Parameters for creating a stock class
37
+ * @returns Promise resolving to the result of the stock class creation
38
+ */
39
+ export declare function createStockClass(client: LedgerJsonApiClient, params: CreateStockClassParams): Promise<CreateStockClassResult>;
40
+ //# sourceMappingURL=createStockClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStockClass.d.ts","sourceRoot":"","sources":["../../../src/functions/stockClass/createStockClass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC;CAC/D;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAmCjC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStockClass = createStockClass;
4
+ const open_captable_protocol_daml_js_1 = require("@fairmint/open-captable-protocol-daml-js");
5
+ const findCreatedEvent_1 = require("../../utils/findCreatedEvent");
6
+ /**
7
+ * Create a stock class by exercising the CreateStockClass choice on an Issuer contract
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const result = await createStockClass(client, {
12
+ * issuerContractId: "1234567890abcdef",
13
+ * issuerParty: "issuer_party_id",
14
+ * stockClassData: {
15
+ * name: "Series A Preferred",
16
+ * class_type: "OcfStockClassTypePreferred",
17
+ * default_id_prefix: "SA-",
18
+ * initial_shares_authorized: "1000000",
19
+ * votes_per_share: "1",
20
+ * seniority: "1",
21
+ * // ... other stock class data
22
+ * }
23
+ * });
24
+ * ```
25
+ *
26
+ * @param client - The ledger JSON API client
27
+ * @param params - Parameters for creating a stock class
28
+ * @returns Promise resolving to the result of the stock class creation
29
+ */
30
+ async function createStockClass(client, params) {
31
+ // Create the choice arguments for CreateStockClass
32
+ const choiceArguments = {
33
+ stock_class_data: params.stockClassData
34
+ };
35
+ // Submit the choice to the Issuer contract
36
+ const response = await client.submitAndWaitForTransactionTree({
37
+ actAs: [params.issuerParty],
38
+ commands: [
39
+ {
40
+ ExerciseCommand: {
41
+ templateId: open_captable_protocol_daml_js_1.Fairmint.OpenCapTable.Issuer.Issuer.templateId,
42
+ contractId: params.issuerContractId,
43
+ choice: 'CreateStockClass',
44
+ choiceArgument: choiceArguments
45
+ }
46
+ }
47
+ ]
48
+ });
49
+ const created = (0, findCreatedEvent_1.findCreatedEventByTemplateId)(response, open_captable_protocol_daml_js_1.Fairmint.OpenCapTable.StockClass.StockClass.templateId);
50
+ if (!created) {
51
+ throw new Error('Expected CreatedTreeEvent not found');
52
+ }
53
+ const stockClassContractId = created.CreatedTreeEvent.value.contractId;
54
+ return {
55
+ contractId: stockClassContractId,
56
+ updateId: response.transactionTree.updateId
57
+ };
58
+ }
59
+ //# sourceMappingURL=createStockClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStockClass.js","sourceRoot":"","sources":["../../../src/functions/stockClass/createStockClass.ts"],"names":[],"mappings":";;AA2CA,4CAsCC;AAjFD,6FAAoE;AAGpE,mEAA4E;AAgB5E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAA2B,EAC3B,MAA8B;IAE9B,mDAAmD;IACnD,MAAM,eAAe,GAAkD;QACrE,gBAAgB,EAAE,MAAM,CAAC,cAAc;KACxC,CAAC;IAEF,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC;QAC5D,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3B,QAAQ,EAAE;YACR;gBACE,eAAe,EAAE;oBACf,UAAU,EAAE,yCAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;oBAC1D,UAAU,EAAE,MAAM,CAAC,gBAAgB;oBACnC,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,eAAe;iBAChC;aACF;SACF;KACF,CAA4C,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAA,+CAA4B,EAC1C,QAAQ,EACR,yCAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CACvD,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;IAEvE,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,QAAQ;KAC5C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { LedgerJsonApiClient } from '@fairmint/canton-node-sdk';
2
+ /**
3
+ * OCF Stock Class object according to the Open Cap Table Coalition schema
4
+ * Object describing a class of stock issued by the issuer
5
+ * @see https://schema.opencaptablecoalition.com/v/1.2.0/objects/StockClass.schema.json
6
+ */
7
+ export interface OcfStockClass {
8
+ /** Object type identifier - must be "STOCK_CLASS" */
9
+ object_type: 'STOCK_CLASS';
10
+ /** Name for the stock type (e.g. Series A Preferred or Class A Common) */
11
+ name: string;
12
+ /** The type of this stock class (e.g. Preferred or Common) */
13
+ class_type: 'PREFERRED' | 'COMMON';
14
+ /** Default prefix for certificate numbers in certificated shares (e.g. CS- in CS-1). If certificate IDs have a dash, the prefix should end in the dash like CS- */
15
+ default_id_prefix: string;
16
+ /** The initial number of shares authorized for this stock class */
17
+ initial_shares_authorized: string | number;
18
+ /** Date on which the board approved the stock class (ISO 8601 date string YYYY-MM-DD) */
19
+ board_approval_date?: string;
20
+ /** Date on which the stockholders approved the stock class (ISO 8601 date string YYYY-MM-DD) */
21
+ stockholder_approval_date?: string;
22
+ /** The number of votes each share of this stock class gets */
23
+ votes_per_share: string | number;
24
+ /** Per-share par value of this stock class */
25
+ par_value?: {
26
+ /** The amount of the monetary value */
27
+ amount: string;
28
+ /** The currency code for the monetary value (ISO 4217) */
29
+ currency: string;
30
+ };
31
+ /** Per-share price this stock class was issued for */
32
+ price_per_share?: {
33
+ /** The amount of the monetary value */
34
+ amount: string;
35
+ /** The currency code for the monetary value (ISO 4217) */
36
+ currency: string;
37
+ };
38
+ /**
39
+ * Seniority of the stock - determines repayment priority. Seniority is ordered by increasing number so that stock classes with a higher seniority have higher repayment priority. The following properties hold for all stock classes for a given company:
40
+ * a) transitivity: stock classes are absolutely stackable by seniority and in increasing numerical order,
41
+ * b) non-uniqueness: multiple stock classes can have the same Seniority number and therefore have the same liquidation/repayment order.
42
+ * In practice, stock classes with same seniority may be created at different points in time and (for example, an extension of an existing preferred financing round), and also a new stock class can be created with seniority between two existing stock classes, in which case it is assigned some decimal number between the numbers representing seniority of the respective classes.
43
+ */
44
+ seniority: string | number;
45
+ /** List of stock class conversion rights possible for this stock class */
46
+ conversion_rights?: Array<{
47
+ /** The type of conversion right */
48
+ conversion_mechanism: string;
49
+ /** Additional conversion right details */
50
+ [key: string]: any;
51
+ }>;
52
+ /** The liquidation preference per share for this stock class */
53
+ liquidation_preference_multiple?: string | number;
54
+ /** The participation cap multiple per share for this stock class */
55
+ participation_cap_multiple?: string | number;
56
+ /** Unique identifier for the stock class object */
57
+ id?: string;
58
+ /** Additional comments or notes about the stock class */
59
+ comments?: string[];
60
+ }
61
+ export interface GetStockClassAsOcfParams {
62
+ /** Contract ID of the StockClass contract to retrieve */
63
+ contractId: string;
64
+ }
65
+ export interface GetStockClassAsOcfResult {
66
+ /** The OCF StockClass object */
67
+ stockClass: OcfStockClass;
68
+ /** The original contract ID */
69
+ contractId: string;
70
+ }
71
+ /**
72
+ * Retrieve a stock class contract by ID and return it as an OCF JSON object
73
+ *
74
+ * This function fetches the stock class contract data from the ledger and transforms it
75
+ * into the Open Cap Table Coalition (OCF) format according to the official schema.
76
+ *
77
+ * @see https://schema.opencaptablecoalition.com/v/1.2.0/objects/StockClass.schema.json
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const result = await getStockClassAsOcf(client, {
82
+ * contractId: "1234567890abcdef"
83
+ * });
84
+ *
85
+ * console.log(result.stockClass);
86
+ * // {
87
+ * // object_type: "STOCK_CLASS",
88
+ * // name: "Series A Preferred",
89
+ * // class_type: "PREFERRED",
90
+ * // default_id_prefix: "SA-",
91
+ * // initial_shares_authorized: "1000000",
92
+ * // votes_per_share: "1",
93
+ * // seniority: "1",
94
+ * // // ... other fields
95
+ * // }
96
+ * ```
97
+ *
98
+ * @param client - The ledger JSON API client
99
+ * @param params - Parameters for retrieving the stock class
100
+ * @returns Promise resolving to the OCF StockClass object
101
+ */
102
+ export declare function getStockClassAsOcf(client: LedgerJsonApiClient, params: GetStockClassAsOcfParams): Promise<GetStockClassAsOcfResult>;
103
+ //# sourceMappingURL=getStockClassAsOcf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStockClassAsOcf.d.ts","sourceRoot":"","sources":["../../../src/functions/stockClass/getStockClassAsOcf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,WAAW,EAAE,aAAa,CAAC;IAE3B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IAEb,8DAA8D;IAC9D,UAAU,EAAE,WAAW,GAAG,QAAQ,CAAC;IAEnC,mKAAmK;IACnK,iBAAiB,EAAE,MAAM,CAAC;IAE1B,mEAAmE;IACnE,yBAAyB,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3C,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,gGAAgG;IAChG,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,8DAA8D;IAC9D,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjC,8CAA8C;IAC9C,SAAS,CAAC,EAAE;QACV,uCAAuC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,0DAA0D;QAC1D,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,sDAAsD;IACtD,eAAe,CAAC,EAAE;QAChB,uCAAuC;QACvC,MAAM,EAAE,MAAM,CAAC;QACf,0DAA0D;QAC1D,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAE3B,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,KAAK,CAAC;QACxB,mCAAmC;QACnC,oBAAoB,EAAE,MAAM,CAAC;QAC7B,0CAA0C;QAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC,CAAC;IAEH,gEAAgE;IAChE,+BAA+B,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAElD,oEAAoE;IACpE,0BAA0B,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7C,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,gCAAgC;IAChC,UAAU,EAAE,aAAa,CAAC;IAC1B,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CA4EnC"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStockClassAsOcf = getStockClassAsOcf;
4
+ /**
5
+ * Retrieve a stock class contract by ID and return it as an OCF JSON object
6
+ *
7
+ * This function fetches the stock class contract data from the ledger and transforms it
8
+ * into the Open Cap Table Coalition (OCF) format according to the official schema.
9
+ *
10
+ * @see https://schema.opencaptablecoalition.com/v/1.2.0/objects/StockClass.schema.json
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const result = await getStockClassAsOcf(client, {
15
+ * contractId: "1234567890abcdef"
16
+ * });
17
+ *
18
+ * console.log(result.stockClass);
19
+ * // {
20
+ * // object_type: "STOCK_CLASS",
21
+ * // name: "Series A Preferred",
22
+ * // class_type: "PREFERRED",
23
+ * // default_id_prefix: "SA-",
24
+ * // initial_shares_authorized: "1000000",
25
+ * // votes_per_share: "1",
26
+ * // seniority: "1",
27
+ * // // ... other fields
28
+ * // }
29
+ * ```
30
+ *
31
+ * @param client - The ledger JSON API client
32
+ * @param params - Parameters for retrieving the stock class
33
+ * @returns Promise resolving to the OCF StockClass object
34
+ */
35
+ async function getStockClassAsOcf(client, params) {
36
+ // Get the events for the StockClass contract
37
+ const eventsResponse = await client.getEventsByContractId({
38
+ contractId: params.contractId
39
+ });
40
+ if (!eventsResponse.created?.createdEvent?.createArgument) {
41
+ throw new Error('Invalid contract events response: missing created event or create argument');
42
+ }
43
+ const createArgument = eventsResponse.created.createdEvent.createArgument;
44
+ // Type guard to ensure we have the expected stock class data structure
45
+ function hasStockClassData(arg) {
46
+ return typeof arg === 'object' &&
47
+ arg !== null &&
48
+ 'stock_class_data' in arg &&
49
+ typeof arg.stock_class_data === 'object';
50
+ }
51
+ if (!hasStockClassData(createArgument)) {
52
+ throw new Error('Stock class data not found in contract create argument');
53
+ }
54
+ const stockClassData = createArgument.stock_class_data;
55
+ // Helper function to convert DAML Optional to JavaScript undefined
56
+ const toUndefined = (value) => value === null ? undefined : value;
57
+ // Helper function to convert DAML stock class type to OCF schema stock class type
58
+ const convertStockClassType = (damlClassType) => {
59
+ switch (damlClassType) {
60
+ case 'OcfStockClassTypePreferred':
61
+ return 'PREFERRED';
62
+ case 'OcfStockClassTypeCommon':
63
+ return 'COMMON';
64
+ default:
65
+ throw new Error(`Unknown stock class type: ${damlClassType}`);
66
+ }
67
+ };
68
+ // Helper function to convert DAML monetary value to OCF format
69
+ const convertMonetary = (damlMonetary) => ({
70
+ amount: damlMonetary.amount.toString(),
71
+ currency: damlMonetary.currency
72
+ });
73
+ // Transform DAML stock class data to OCF format
74
+ const ocfStockClass = {
75
+ object_type: 'STOCK_CLASS',
76
+ name: stockClassData.name || '',
77
+ class_type: convertStockClassType(stockClassData.class_type),
78
+ default_id_prefix: stockClassData.default_id_prefix || '',
79
+ initial_shares_authorized: stockClassData.initial_shares_authorized?.toString() || '0',
80
+ votes_per_share: stockClassData.votes_per_share?.toString() || '0',
81
+ seniority: stockClassData.seniority?.toString() || '0',
82
+ // Optional fields
83
+ ...(stockClassData.board_approval_date && { board_approval_date: stockClassData.board_approval_date }),
84
+ ...(stockClassData.stockholder_approval_date && { stockholder_approval_date: stockClassData.stockholder_approval_date }),
85
+ ...(stockClassData.par_value && { par_value: convertMonetary(stockClassData.par_value) }),
86
+ ...(stockClassData.price_per_share && { price_per_share: convertMonetary(stockClassData.price_per_share) }),
87
+ ...(stockClassData.conversion_rights && { conversion_rights: stockClassData.conversion_rights }),
88
+ ...(stockClassData.liquidation_preference_multiple && {
89
+ liquidation_preference_multiple: stockClassData.liquidation_preference_multiple.toString()
90
+ }),
91
+ ...(stockClassData.participation_cap_multiple && {
92
+ participation_cap_multiple: stockClassData.participation_cap_multiple.toString()
93
+ }),
94
+ // Use contract ID as the OCF object ID
95
+ id: params.contractId
96
+ };
97
+ return {
98
+ stockClass: ocfStockClass,
99
+ contractId: params.contractId
100
+ };
101
+ }
102
+ //# sourceMappingURL=getStockClassAsOcf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStockClassAsOcf.js","sourceRoot":"","sources":["../../../src/functions/stockClass/getStockClassAsOcf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './createStockClass';
2
+ export * from './updateStockClass';
3
+ export * from './getStockClassAsOcf';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/functions/stockClass/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./createStockClass"), exports);
18
+ __exportStar(require("./updateStockClass"), exports);
19
+ __exportStar(require("./getStockClassAsOcf"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/stockClass/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,qDAAmC;AACnC,uDAAqC"}
@@ -0,0 +1,38 @@
1
+ import { Fairmint } from '@fairmint/open-captable-protocol-daml-js';
2
+ import { LedgerJsonApiClient } from '@fairmint/canton-node-sdk';
3
+ export interface UpdateStockClassParams {
4
+ stockClassContractId: string;
5
+ newStockClassData: Fairmint.OpenCapTable.Types.OcfStockClassData;
6
+ }
7
+ export interface UpdateStockClassResult {
8
+ contractId: string;
9
+ updateId: string;
10
+ }
11
+ /**
12
+ * Update stock class data by exercising the UpdateStockClassData choice on a StockClass contract
13
+ *
14
+ * This function retrieves the issuer party from the stock class contract and then updates
15
+ * the stock class data with the provided new data.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const result = await updateStockClass(client, {
20
+ * stockClassContractId: "1234567890abcdef",
21
+ * newStockClassData: {
22
+ * name: "Series A Preferred (Updated)",
23
+ * class_type: "OcfStockClassTypePreferred",
24
+ * default_id_prefix: "SA-",
25
+ * initial_shares_authorized: "2000000", // Updated from 1000000
26
+ * votes_per_share: "1",
27
+ * seniority: "1",
28
+ * // ... other updated stock class data
29
+ * }
30
+ * });
31
+ * ```
32
+ *
33
+ * @param client - The ledger JSON API client
34
+ * @param params - Parameters for updating stock class data
35
+ * @returns Promise resolving to the result of the stock class data update
36
+ */
37
+ export declare function updateStockClass(client: LedgerJsonApiClient, params: UpdateStockClassParams): Promise<UpdateStockClassResult>;
38
+ //# sourceMappingURL=updateStockClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateStockClass.d.ts","sourceRoot":"","sources":["../../../src/functions/stockClass/updateStockClass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,MAAM,WAAW,sBAAsB;IACrC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC;CAClE;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CA6CjC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateStockClass = updateStockClass;
4
+ const open_captable_protocol_daml_js_1 = require("@fairmint/open-captable-protocol-daml-js");
5
+ function hasIssuer(arg) {
6
+ return !!arg && typeof arg === 'object' && typeof arg.issuer === 'string';
7
+ }
8
+ /**
9
+ * Update stock class data by exercising the UpdateStockClassData choice on a StockClass contract
10
+ *
11
+ * This function retrieves the issuer party from the stock class contract and then updates
12
+ * the stock class data with the provided new data.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const result = await updateStockClass(client, {
17
+ * stockClassContractId: "1234567890abcdef",
18
+ * newStockClassData: {
19
+ * name: "Series A Preferred (Updated)",
20
+ * class_type: "OcfStockClassTypePreferred",
21
+ * default_id_prefix: "SA-",
22
+ * initial_shares_authorized: "2000000", // Updated from 1000000
23
+ * votes_per_share: "1",
24
+ * seniority: "1",
25
+ * // ... other updated stock class data
26
+ * }
27
+ * });
28
+ * ```
29
+ *
30
+ * @param client - The ledger JSON API client
31
+ * @param params - Parameters for updating stock class data
32
+ * @returns Promise resolving to the result of the stock class data update
33
+ */
34
+ async function updateStockClass(client, params) {
35
+ // Get the events for the StockClass contract to extract the issuer party
36
+ const eventsResponse = await client.getEventsByContractId({
37
+ contractId: params.stockClassContractId
38
+ });
39
+ if (!eventsResponse.created?.createdEvent?.createArgument) {
40
+ throw new Error('Invalid contract events response: missing created event or create argument');
41
+ }
42
+ const createArgument = eventsResponse.created.createdEvent.createArgument;
43
+ if (!hasIssuer(createArgument)) {
44
+ throw new Error('Issuer party not found in contract create argument');
45
+ }
46
+ const issuerParty = createArgument.issuer;
47
+ // Create the choice arguments for UpdateStockClassData
48
+ const choiceArguments = {
49
+ new_stock_class_data: params.newStockClassData
50
+ };
51
+ // Submit the choice to the StockClass contract
52
+ const response = await client.submitAndWaitForTransactionTree({
53
+ actAs: [issuerParty],
54
+ commands: [
55
+ {
56
+ ExerciseCommand: {
57
+ templateId: open_captable_protocol_daml_js_1.Fairmint.OpenCapTable.StockClass.StockClass.templateId,
58
+ contractId: params.stockClassContractId,
59
+ choice: 'UpdateStockClassData',
60
+ choiceArgument: choiceArguments
61
+ }
62
+ }
63
+ ]
64
+ });
65
+ const event = response.transactionTree.eventsById[1];
66
+ if ('CreatedTreeEvent' in event) {
67
+ return {
68
+ contractId: event.CreatedTreeEvent.value.contractId,
69
+ updateId: response.transactionTree.updateId
70
+ };
71
+ }
72
+ else {
73
+ throw new Error('Expected CreatedTreeEvent not found');
74
+ }
75
+ }
76
+ //# sourceMappingURL=updateStockClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateStockClass.js","sourceRoot":"","sources":["../../../src/functions/stockClass/updateStockClass.ts"],"names":[],"mappings":";;AAgDA,4CAgDC;AAhGD,6FAAoE;AAkBpE,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAQ,GAAqC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/G,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAA2B,EAC3B,MAA8B;IAE9B,yEAAyE;IACzE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC;QACxD,UAAU,EAAE,MAAM,CAAC,oBAAoB;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC;IAC1E,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,uDAAuD;IACvD,MAAM,eAAe,GAA0D;QAC7E,oBAAoB,EAAE,MAAM,CAAC,iBAAiB;KAC/C,CAAC;IAEF,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC;QAC5D,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,eAAe,EAAE;oBACf,UAAU,EAAE,yCAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU;oBAClE,UAAU,EAAE,MAAM,CAAC,oBAAoB;oBACvC,MAAM,EAAE,sBAAsB;oBAC9B,cAAc,EAAE,eAAe;iBAChC;aACF;SACF;KACF,CAA4C,CAAC;IAE9C,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,kBAAkB,IAAI,KAAK,EAAE,CAAC;QAChC,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU;YACnD,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,QAAQ;SAC5C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-captable-protocol/canton",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
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",
@@ -20,7 +20,7 @@
20
20
  "@daml/ledger": "^2.10.2",
21
21
  "@daml/types": "^2.10.2",
22
22
  "@fairmint/canton-node-sdk": "^0.0.85",
23
- "@fairmint/open-captable-protocol-daml-js": "^0.0.36"
23
+ "@fairmint/open-captable-protocol-daml-js": "^0.0.39"
24
24
  },
25
25
 
26
26
  "devDependencies": {