@fairmint/canton-node-sdk 0.0.118 → 0.0.120

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 (141) hide show
  1. package/README.md +5 -0
  2. package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.d.ts +4 -0
  3. package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.d.ts.map +1 -1
  4. package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.js +4 -0
  5. package/build/src/clients/ledger-json-api/LedgerJsonApiClient.generated.js.map +1 -1
  6. package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.d.ts +2 -4
  7. package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.d.ts.map +1 -1
  8. package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.js +4 -5
  9. package/build/src/clients/ledger-json-api/operations/v2/authenticated-user/get.js.map +1 -1
  10. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.d.ts +34 -0
  11. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.d.ts.map +1 -0
  12. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.js +13 -0
  13. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/execute.js.map +1 -0
  14. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.d.ts +2 -0
  15. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.d.ts.map +1 -1
  16. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.js +2 -0
  17. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/index.js.map +1 -1
  18. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.d.ts +53 -0
  19. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.d.ts.map +1 -0
  20. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.js +13 -0
  21. package/build/src/clients/ledger-json-api/operations/v2/interactive-submission/prepare.js.map +1 -0
  22. package/build/src/clients/ledger-json-api/operations/v2/users/create-user.d.ts +0 -1
  23. package/build/src/clients/ledger-json-api/operations/v2/users/create-user.d.ts.map +1 -1
  24. package/build/src/clients/ledger-json-api/operations/v2/users/get-user.d.ts +0 -2
  25. package/build/src/clients/ledger-json-api/operations/v2/users/get-user.d.ts.map +1 -1
  26. package/build/src/clients/ledger-json-api/operations/v2/users/get-user.js +2 -4
  27. package/build/src/clients/ledger-json-api/operations/v2/users/get-user.js.map +1 -1
  28. package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.d.ts +28 -7
  29. package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.d.ts.map +1 -1
  30. package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.js +7 -4
  31. package/build/src/clients/ledger-json-api/operations/v2/users/grant-user-rights.js.map +1 -1
  32. package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.d.ts +0 -2
  33. package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.d.ts.map +1 -1
  34. package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.js +2 -4
  35. package/build/src/clients/ledger-json-api/operations/v2/users/list-user-rights.js.map +1 -1
  36. package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.d.ts +0 -1
  37. package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.d.ts.map +1 -1
  38. package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.js +5 -1
  39. package/build/src/clients/ledger-json-api/operations/v2/users/revoke-user-rights.js.map +1 -1
  40. package/build/src/clients/ledger-json-api/operations/v2/users/update-user.d.ts +0 -1
  41. package/build/src/clients/ledger-json-api/operations/v2/users/update-user.d.ts.map +1 -1
  42. package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.d.ts +96 -0
  43. package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.d.ts.map +1 -1
  44. package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.js +107 -1
  45. package/build/src/clients/ledger-json-api/schemas/api/interactive-submission.js.map +1 -1
  46. package/build/src/clients/ledger-json-api/schemas/operations/users.d.ts +29 -14
  47. package/build/src/clients/ledger-json-api/schemas/operations/users.d.ts.map +1 -1
  48. package/build/src/clients/ledger-json-api/schemas/operations/users.js +9 -20
  49. package/build/src/clients/ledger-json-api/schemas/operations/users.js.map +1 -1
  50. package/build/src/clients/validator-api/ValidatorApiClient.generated.d.ts +6 -0
  51. package/build/src/clients/validator-api/ValidatorApiClient.generated.d.ts.map +1 -1
  52. package/build/src/clients/validator-api/ValidatorApiClient.generated.js +6 -0
  53. package/build/src/clients/validator-api/ValidatorApiClient.generated.js.map +1 -1
  54. package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.d.ts +22 -0
  55. package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.d.ts.map +1 -0
  56. package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.js +29 -0
  57. package/build/src/clients/validator-api/operations/v0/admin/generate-external-party-topology.js.map +1 -0
  58. package/build/src/clients/validator-api/operations/v0/admin/index.d.ts +2 -0
  59. package/build/src/clients/validator-api/operations/v0/admin/index.d.ts.map +1 -1
  60. package/build/src/clients/validator-api/operations/v0/admin/index.js +2 -0
  61. package/build/src/clients/validator-api/operations/v0/admin/index.js.map +1 -1
  62. package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.d.ts +25 -0
  63. package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.d.ts.map +1 -0
  64. package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.js +36 -0
  65. package/build/src/clients/validator-api/operations/v0/admin/submit-external-party-topology.js.map +1 -0
  66. package/build/src/clients/validator-api/operations/v0/get-validator-user-info.d.ts +17 -0
  67. package/build/src/clients/validator-api/operations/v0/get-validator-user-info.d.ts.map +1 -0
  68. package/build/src/clients/validator-api/operations/v0/get-validator-user-info.js +22 -0
  69. package/build/src/clients/validator-api/operations/v0/get-validator-user-info.js.map +1 -0
  70. package/build/src/clients/validator-api/operations/v0/index.d.ts +1 -0
  71. package/build/src/clients/validator-api/operations/v0/index.d.ts.map +1 -1
  72. package/build/src/clients/validator-api/operations/v0/index.js +1 -0
  73. package/build/src/clients/validator-api/operations/v0/index.js.map +1 -1
  74. package/build/src/core/logging/FileLogger.d.ts.map +1 -1
  75. package/build/src/core/logging/FileLogger.js +1 -1
  76. package/build/src/core/logging/FileLogger.js.map +1 -1
  77. package/build/src/utils/external-signing/allocate-external-party.d.ts +12 -0
  78. package/build/src/utils/external-signing/allocate-external-party.d.ts.map +1 -0
  79. package/build/src/utils/external-signing/allocate-external-party.js +13 -0
  80. package/build/src/utils/external-signing/allocate-external-party.js.map +1 -0
  81. package/build/src/utils/external-signing/create-external-party-privy.d.ts +74 -0
  82. package/build/src/utils/external-signing/create-external-party-privy.d.ts.map +1 -0
  83. package/build/src/utils/external-signing/create-external-party-privy.js +133 -0
  84. package/build/src/utils/external-signing/create-external-party-privy.js.map +1 -0
  85. package/build/src/utils/external-signing/create-external-party.d.ts +69 -0
  86. package/build/src/utils/external-signing/create-external-party.d.ts.map +1 -0
  87. package/build/src/utils/external-signing/create-external-party.js +81 -0
  88. package/build/src/utils/external-signing/create-external-party.js.map +1 -0
  89. package/build/src/utils/external-signing/execute-external-transaction.d.ts +15 -0
  90. package/build/src/utils/external-signing/execute-external-transaction.d.ts.map +1 -0
  91. package/build/src/utils/external-signing/execute-external-transaction.js +21 -0
  92. package/build/src/utils/external-signing/execute-external-transaction.js.map +1 -0
  93. package/build/src/utils/external-signing/generate-external-party.d.ts +15 -0
  94. package/build/src/utils/external-signing/generate-external-party.d.ts.map +1 -0
  95. package/build/src/utils/external-signing/generate-external-party.js +16 -0
  96. package/build/src/utils/external-signing/generate-external-party.js.map +1 -0
  97. package/build/src/utils/external-signing/index.d.ts +7 -0
  98. package/build/src/utils/external-signing/index.d.ts.map +1 -0
  99. package/build/src/utils/external-signing/index.js +23 -0
  100. package/build/src/utils/external-signing/index.js.map +1 -0
  101. package/build/src/utils/external-signing/prepare-external-transaction.d.ts +20 -0
  102. package/build/src/utils/external-signing/prepare-external-transaction.d.ts.map +1 -0
  103. package/build/src/utils/external-signing/prepare-external-transaction.js +24 -0
  104. package/build/src/utils/external-signing/prepare-external-transaction.js.map +1 -0
  105. package/build/src/utils/external-signing/privy-utils.d.ts +25 -0
  106. package/build/src/utils/external-signing/privy-utils.d.ts.map +1 -0
  107. package/build/src/utils/external-signing/privy-utils.js +56 -0
  108. package/build/src/utils/external-signing/privy-utils.js.map +1 -0
  109. package/build/src/utils/external-signing/stellar-utils.d.ts +48 -0
  110. package/build/src/utils/external-signing/stellar-utils.d.ts.map +1 -0
  111. package/build/src/utils/external-signing/stellar-utils.js +72 -0
  112. package/build/src/utils/external-signing/stellar-utils.js.map +1 -0
  113. package/build/src/utils/index.d.ts +2 -0
  114. package/build/src/utils/index.d.ts.map +1 -1
  115. package/build/src/utils/index.js +2 -0
  116. package/build/src/utils/index.js.map +1 -1
  117. package/build/src/utils/privy/client.d.ts +36 -0
  118. package/build/src/utils/privy/client.d.ts.map +1 -0
  119. package/build/src/utils/privy/client.js +56 -0
  120. package/build/src/utils/privy/client.js.map +1 -0
  121. package/build/src/utils/privy/createWallet.d.ts +30 -0
  122. package/build/src/utils/privy/createWallet.d.ts.map +1 -0
  123. package/build/src/utils/privy/createWallet.js +62 -0
  124. package/build/src/utils/privy/createWallet.js.map +1 -0
  125. package/build/src/utils/privy/getWallet.d.ts +25 -0
  126. package/build/src/utils/privy/getWallet.d.ts.map +1 -0
  127. package/build/src/utils/privy/getWallet.js +50 -0
  128. package/build/src/utils/privy/getWallet.js.map +1 -0
  129. package/build/src/utils/privy/index.d.ts +6 -0
  130. package/build/src/utils/privy/index.d.ts.map +1 -0
  131. package/build/src/utils/privy/index.js +22 -0
  132. package/build/src/utils/privy/index.js.map +1 -0
  133. package/build/src/utils/privy/signData.d.ts +34 -0
  134. package/build/src/utils/privy/signData.d.ts.map +1 -0
  135. package/build/src/utils/privy/signData.js +62 -0
  136. package/build/src/utils/privy/signData.js.map +1 -0
  137. package/build/src/utils/privy/types.d.ts +45 -0
  138. package/build/src/utils/privy/types.d.ts.map +1 -0
  139. package/build/src/utils/privy/types.js +4 -0
  140. package/build/src/utils/privy/types.js.map +1 -0
  141. package/package.json +6 -1
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExternalParty = createExternalParty;
4
+ const validator_api_1 = require("../../clients/validator-api");
5
+ const stellar_utils_1 = require("./stellar-utils");
6
+ /**
7
+ * Creates an external party in Canton
8
+ *
9
+ * This is a convenience function that combines the three-step process:
10
+ *
11
+ * 1. Generate topology transactions
12
+ * 2. Sign the multi-hash
13
+ * 3. Allocate the party
14
+ *
15
+ * The keypair's private key is used to sign the onboarding transactions, proving ownership of the public key.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { Keypair } from '@stellar/stellar-base';
20
+ * import { createExternalParty } from '@fairmint/canton-node-sdk';
21
+ *
22
+ * const keypair = Keypair.random();
23
+ * const party = await createExternalParty({
24
+ * ledgerClient,
25
+ * keypair,
26
+ * partyName: 'alice',
27
+ * synchronizerId: 'global-synchronizer',
28
+ * });
29
+ *
30
+ * console.log('Party ID:', party.partyId);
31
+ * console.log('Public Key Fingerprint:', party.publicKeyFingerprint);
32
+ * ```;
33
+ *
34
+ * @param params - Configuration for external party creation
35
+ * @returns Party details including party ID and key fingerprint
36
+ */
37
+ async function createExternalParty(params) {
38
+ const { keypair, partyName } = params;
39
+ // Initialize Validator API client
40
+ const validatorClient = new validator_api_1.ValidatorApiClient();
41
+ // Step 1: Convert Stellar public key to hex for Validator API
42
+ const publicKeyHex = (0, stellar_utils_1.stellarPublicKeyToHex)(keypair);
43
+ // Step 2: Generate external party topology using Validator API
44
+ const topology = await validatorClient.generateExternalPartyTopology({
45
+ party_hint: partyName,
46
+ public_key: publicKeyHex,
47
+ });
48
+ const { party_id, topology_txs } = topology;
49
+ if (!party_id) {
50
+ throw new Error('No party ID returned from topology generation');
51
+ }
52
+ if (topology_txs?.length === 0) {
53
+ throw new Error('No topology transactions returned from topology generation');
54
+ }
55
+ // Step 3: Sign each topology transaction hash using the Stellar keypair
56
+ const signedTopologyTxs = topology_txs.map((tx) => ({
57
+ topology_tx: tx.topology_tx,
58
+ signed_hash: (0, stellar_utils_1.signHexWithStellarKeypair)(keypair, tx.hash),
59
+ }));
60
+ // Step 4: Submit the signed topology transactions using Validator API
61
+ const submitResult = await validatorClient.submitExternalPartyTopology({
62
+ public_key: publicKeyHex,
63
+ signed_topology_txs: signedTopologyTxs,
64
+ });
65
+ if (!submitResult.party_id) {
66
+ throw new Error('Failed to submit external party topology - no party ID returned');
67
+ }
68
+ // Note: For external parties, we don't need to create a separate user or grant rights.
69
+ // When preparing transactions, we'll use the validator operator's user ID (fetched automatically
70
+ // by prepareExternalTransaction from the validator API). The external signature itself provides
71
+ // the authorization for the transaction.
72
+ return {
73
+ partyId: submitResult.party_id,
74
+ userId: '', // Will be resolved automatically when preparing transactions
75
+ publicKey: publicKeyHex,
76
+ publicKeyFingerprint: party_id.split('::')[1] ?? '', // Extract fingerprint from party ID
77
+ stellarAddress: keypair.publicKey(),
78
+ stellarSecret: keypair.secret(),
79
+ };
80
+ }
81
+ //# sourceMappingURL=create-external-party.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-external-party.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/create-external-party.ts"],"names":[],"mappings":";;AAwEA,kDAsDC;AA5HD,+DAAiE;AACjE,mDAAmF;AAsCnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACI,KAAK,UAAU,mBAAmB,CAAC,MAAiC;IACzE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEtC,kCAAkC;IAClC,MAAM,eAAe,GAAG,IAAI,kCAAkB,EAAE,CAAC;IAEjD,8DAA8D;IAC9D,MAAM,YAAY,GAAG,IAAA,qCAAqB,EAAC,OAAO,CAAC,CAAC;IAEpD,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,6BAA6B,CAAC;QACnE,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,YAAY;KACzB,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,YAAY,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,WAAW,EAAE,IAAA,yCAAyB,EAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;KACzD,CAAC,CAAC,CAAC;IAEJ,sEAAsE;IACtE,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,2BAA2B,CAAC;QACrE,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,iBAAiB;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,uFAAuF;IACvF,iGAAiG;IACjG,gGAAgG;IAChG,yCAAyC;IAEzC,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,QAAQ;QAC9B,MAAM,EAAE,EAAE,EAAE,6DAA6D;QACzE,SAAS,EAAE,YAAY;QACvB,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,oCAAoC;QACzF,cAAc,EAAE,OAAO,CAAC,SAAS,EAAE;QACnC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
2
+ import { type InteractiveSubmissionExecuteRequest, type InteractiveSubmissionExecuteResponse } from '../../clients/ledger-json-api/schemas/api/interactive-submission';
3
+ export type PartySignature = InteractiveSubmissionExecuteRequest['partySignatures']['signatures'][number];
4
+ export interface ExecuteExternalTransactionOptions {
5
+ ledgerClient: LedgerJsonApiClient;
6
+ userId: string;
7
+ preparedTransaction: string;
8
+ submissionId: string;
9
+ partySignatures: PartySignature[];
10
+ hashingSchemeVersion?: string;
11
+ deduplicationPeriod?: InteractiveSubmissionExecuteRequest['deduplicationPeriod'];
12
+ }
13
+ /** Submit a previously prepared and externally signed interactive submission to the ledger. */
14
+ export declare function executeExternalTransaction(options: ExecuteExternalTransactionOptions): Promise<InteractiveSubmissionExecuteResponse>;
15
+ //# sourceMappingURL=execute-external-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-external-transaction.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/execute-external-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EAC1C,MAAM,kEAAkE,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,mCAAmC,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1G,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,mCAAmC,CAAC,qBAAqB,CAAC,CAAC;CAClF;AAED,+FAA+F;AAC/F,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,oCAAoC,CAAC,CAe/C"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeExternalTransaction = executeExternalTransaction;
4
+ /** Submit a previously prepared and externally signed interactive submission to the ledger. */
5
+ async function executeExternalTransaction(options) {
6
+ return options.ledgerClient.interactiveSubmissionExecute({
7
+ userId: options.userId,
8
+ preparedTransaction: options.preparedTransaction,
9
+ hashingSchemeVersion: options.hashingSchemeVersion ?? 'HASHING_SCHEME_VERSION_V2',
10
+ submissionId: options.submissionId,
11
+ deduplicationPeriod: options.deduplicationPeriod ?? {
12
+ DeduplicationDuration: {
13
+ value: { duration: '30s' },
14
+ },
15
+ },
16
+ partySignatures: {
17
+ signatures: options.partySignatures,
18
+ },
19
+ });
20
+ }
21
+ //# sourceMappingURL=execute-external-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-external-transaction.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/execute-external-transaction.ts"],"names":[],"mappings":";;AAmBA,gEAiBC;AAlBD,+FAA+F;AACxF,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,OAAO,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC;QACvD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,2BAA2B;QACjF,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI;YAClD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;aAC3B;SACF;QACD,eAAe,EAAE;YACf,UAAU,EAAE,OAAO,CAAC,eAAe;SACpC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
2
+ import { type GenerateExternalPartyTopologyParams, type GenerateExternalPartyTopologyResponse } from '../../clients/ledger-json-api/operations/v2/parties/external/generate-topology';
3
+ export interface GenerateExternalPartyOptions {
4
+ ledgerClient: LedgerJsonApiClient;
5
+ synchronizerId: string;
6
+ partyHint: string;
7
+ publicKey: GenerateExternalPartyTopologyParams['publicKey'];
8
+ localParticipantObservationOnly?: boolean;
9
+ otherConfirmingParticipantUids?: string[];
10
+ confirmationThreshold?: number;
11
+ observingParticipantUids?: string[];
12
+ }
13
+ /** Helper that invokes the external party topology generation endpoint. */
14
+ export declare function generateExternalPartyTopology(options: GenerateExternalPartyOptions): Promise<GenerateExternalPartyTopologyResponse>;
15
+ //# sourceMappingURL=generate-external-party.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-external-party.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/generate-external-party.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,qCAAqC,EAC3C,MAAM,gFAAgF,CAAC;AAExF,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,mCAAmC,CAAC,WAAW,CAAC,CAAC;IAC5D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAED,2EAA2E;AAC3E,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,qCAAqC,CAAC,CAUhD"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateExternalPartyTopology = generateExternalPartyTopology;
4
+ /** Helper that invokes the external party topology generation endpoint. */
5
+ async function generateExternalPartyTopology(options) {
6
+ return options.ledgerClient.generateExternalPartyTopology({
7
+ synchronizer: options.synchronizerId,
8
+ partyHint: options.partyHint,
9
+ publicKey: options.publicKey,
10
+ localParticipantObservationOnly: options.localParticipantObservationOnly ?? false,
11
+ otherConfirmingParticipantUids: options.otherConfirmingParticipantUids,
12
+ confirmationThreshold: options.confirmationThreshold,
13
+ observingParticipantUids: options.observingParticipantUids,
14
+ });
15
+ }
16
+ //# sourceMappingURL=generate-external-party.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-external-party.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/generate-external-party.ts"],"names":[],"mappings":";;AAkBA,sEAYC;AAbD,2EAA2E;AACpE,KAAK,UAAU,6BAA6B,CACjD,OAAqC;IAErC,OAAO,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC;QACxD,YAAY,EAAE,OAAO,CAAC,cAAc;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,+BAA+B,EAAE,OAAO,CAAC,+BAA+B,IAAI,KAAK;QACjF,8BAA8B,EAAE,OAAO,CAAC,8BAA8B;QACtE,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;KAC3D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './allocate-external-party';
2
+ export * from './create-external-party-privy';
3
+ export * from './execute-external-transaction';
4
+ export * from './generate-external-party';
5
+ export * from './prepare-external-transaction';
6
+ export * from './privy-utils';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC"}
@@ -0,0 +1,23 @@
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("./allocate-external-party"), exports);
18
+ __exportStar(require("./create-external-party-privy"), exports);
19
+ __exportStar(require("./execute-external-transaction"), exports);
20
+ __exportStar(require("./generate-external-party"), exports);
21
+ __exportStar(require("./prepare-external-transaction"), exports);
22
+ __exportStar(require("./privy-utils"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,gEAA8C;AAC9C,iEAA+C;AAC/C,4DAA0C;AAC1C,iEAA+C;AAC/C,gDAA8B"}
@@ -0,0 +1,20 @@
1
+ import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
2
+ import { type InteractiveSubmissionPrepareRequest, type InteractiveSubmissionPrepareResponse } from '../../clients/ledger-json-api/schemas/api/interactive-submission';
3
+ export interface PrepareExternalTransactionOptions {
4
+ ledgerClient: LedgerJsonApiClient;
5
+ commands: InteractiveSubmissionPrepareRequest['commands'];
6
+ userId: string;
7
+ actAs: string[];
8
+ synchronizerId: string;
9
+ commandId?: string;
10
+ readAs?: string[];
11
+ disclosedContracts?: InteractiveSubmissionPrepareRequest['disclosedContracts'];
12
+ verboseHashing?: boolean;
13
+ packageIdSelectionPreference?: InteractiveSubmissionPrepareRequest['packageIdSelectionPreference'];
14
+ }
15
+ export interface PrepareExternalTransactionResult extends InteractiveSubmissionPrepareResponse {
16
+ commandId: string;
17
+ }
18
+ /** Convenience helper for preparing an interactive submission that will be signed off-ledger. */
19
+ export declare function prepareExternalTransaction(options: PrepareExternalTransactionOptions): Promise<PrepareExternalTransactionResult>;
20
+ //# sourceMappingURL=prepare-external-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-external-transaction.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/prepare-external-transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EAC1C,MAAM,kEAAkE,CAAC;AAE1E,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,mCAAmC,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,CAAC,EAAE,mCAAmC,CAAC,oBAAoB,CAAC,CAAC;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B,CAAC,EAAE,mCAAmC,CAAC,8BAA8B,CAAC,CAAC;CACpG;AAED,MAAM,WAAW,gCAAiC,SAAQ,oCAAoC;IAC5F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iGAAiG;AACjG,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,gCAAgC,CAAC,CAmB3C"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareExternalTransaction = prepareExternalTransaction;
4
+ const node_crypto_1 = require("node:crypto");
5
+ /** Convenience helper for preparing an interactive submission that will be signed off-ledger. */
6
+ async function prepareExternalTransaction(options) {
7
+ const commandId = options.commandId ?? (0, node_crypto_1.randomUUID)();
8
+ const response = await options.ledgerClient.interactiveSubmissionPrepare({
9
+ commands: options.commands,
10
+ commandId,
11
+ userId: options.userId,
12
+ actAs: options.actAs,
13
+ readAs: options.readAs ?? [],
14
+ disclosedContracts: options.disclosedContracts,
15
+ synchronizerId: options.synchronizerId,
16
+ verboseHashing: options.verboseHashing ?? false,
17
+ packageIdSelectionPreference: options.packageIdSelectionPreference ?? [],
18
+ });
19
+ return {
20
+ ...response,
21
+ commandId,
22
+ };
23
+ }
24
+ //# sourceMappingURL=prepare-external-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-external-transaction.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/prepare-external-transaction.ts"],"names":[],"mappings":";;AAyBA,gEAqBC;AA9CD,6CAAyC;AAwBzC,iGAAiG;AAC1F,KAAK,UAAU,0BAA0B,CAC9C,OAA0C;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAA,wBAAU,GAAE,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,4BAA4B,CAAC;QACvE,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;QAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;QAC/C,4BAA4B,EAAE,OAAO,CAAC,4BAA4B,IAAI,EAAE;KACzE,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,QAAQ;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { PrivyClient } from '@privy-io/node';
2
+ /**
3
+ * Signs data with a Privy-managed Stellar wallet
4
+ *
5
+ * @param privyClient - Privy client instance
6
+ * @param walletId - Wallet ID to sign with
7
+ * @param data - Data to sign (as Buffer or base64 string)
8
+ * @returns Base64-encoded signature
9
+ */
10
+ export declare function signWithPrivyWallet(privyClient: PrivyClient, walletId: string, data: Buffer | string): Promise<string>;
11
+ /** Wallet info stored in key files for Privy-based external parties */
12
+ export interface PrivyWalletKeyData {
13
+ partyName: string;
14
+ partyId: string;
15
+ userId: string;
16
+ walletId: string;
17
+ stellarAddress: string;
18
+ publicKey: string;
19
+ publicKeyFingerprint: string;
20
+ synchronizerId: string;
21
+ network: string;
22
+ provider: string;
23
+ createdAt: string;
24
+ }
25
+ //# sourceMappingURL=privy-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privy-utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/privy-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,56 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.signWithPrivyWallet = signWithPrivyWallet;
37
+ /**
38
+ * Signs data with a Privy-managed Stellar wallet
39
+ *
40
+ * @param privyClient - Privy client instance
41
+ * @param walletId - Wallet ID to sign with
42
+ * @param data - Data to sign (as Buffer or base64 string)
43
+ * @returns Base64-encoded signature
44
+ */
45
+ async function signWithPrivyWallet(privyClient, walletId, data) {
46
+ const { signWithWallet } = await Promise.resolve().then(() => __importStar(require('../privy/signData')));
47
+ // Convert data to hex
48
+ const hexData = typeof data === 'string' ? Buffer.from(data, 'base64').toString('hex') : data.toString('hex');
49
+ const signResult = await signWithWallet(privyClient, {
50
+ walletId,
51
+ data: hexData,
52
+ });
53
+ // Return base64-encoded signature
54
+ return signResult.signatureBase64;
55
+ }
56
+ //# sourceMappingURL=privy-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privy-utils.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/privy-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,kDAiBC;AAzBD;;;;;;;GAOG;AACI,KAAK,UAAU,mBAAmB,CACvC,WAAwB,EACxB,QAAgB,EAChB,IAAqB;IAErB,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAE7D,sBAAsB;IACtB,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9G,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE;QACnD,QAAQ;QACR,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,kCAAkC;IAClC,OAAO,UAAU,CAAC,eAAe,CAAC;AACpC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { Keypair } from '@stellar/stellar-base';
2
+ /**
3
+ * Converts a Stellar public key to base64 format for Canton
4
+ *
5
+ * Stellar Ed25519 keys can be used for Canton external signing. This function extracts the raw 32-byte public key and
6
+ * converts it to base64.
7
+ *
8
+ * @param keypair - Stellar Keypair object
9
+ * @returns Base64-encoded public key
10
+ */
11
+ export declare function stellarPublicKeyToBase64(keypair: Keypair): string;
12
+ /**
13
+ * Signs data with a Stellar keypair
14
+ *
15
+ * @param keypair - Stellar Keypair object
16
+ * @param data - Data to sign (as Buffer or base64 string)
17
+ * @returns Base64-encoded signature
18
+ */
19
+ export declare function signWithStellarKeypair(keypair: Keypair, data: Buffer | string): string;
20
+ /**
21
+ * Load a Stellar keypair from a secret key
22
+ *
23
+ * @param secret - Stellar secret key (starts with 'S')
24
+ * @returns Stellar Keypair object
25
+ */
26
+ export declare function loadStellarKeypair(secret: string): Keypair;
27
+ /**
28
+ * Generate a new random Stellar keypair
29
+ *
30
+ * @returns Stellar Keypair object
31
+ */
32
+ export declare function generateStellarKeypair(): Keypair;
33
+ /**
34
+ * Convert Stellar public key to hex string (for Validator API)
35
+ *
36
+ * @param keypair - Stellar keypair
37
+ * @returns Hex-encoded public key
38
+ */
39
+ export declare function stellarPublicKeyToHex(keypair: Keypair): string;
40
+ /**
41
+ * Sign hex-encoded hash with Stellar keypair (for Validator API)
42
+ *
43
+ * @param keypair - Stellar keypair to sign with
44
+ * @param hexHash - Hex-encoded hash to sign
45
+ * @returns Hex-encoded signature
46
+ */
47
+ export declare function signHexWithStellarKeypair(keypair: Keypair, hexHash: string): string;
48
+ //# sourceMappingURL=stellar-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stellar-utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/stellar-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAItF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAInF"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stellarPublicKeyToBase64 = stellarPublicKeyToBase64;
4
+ exports.signWithStellarKeypair = signWithStellarKeypair;
5
+ exports.loadStellarKeypair = loadStellarKeypair;
6
+ exports.generateStellarKeypair = generateStellarKeypair;
7
+ exports.stellarPublicKeyToHex = stellarPublicKeyToHex;
8
+ exports.signHexWithStellarKeypair = signHexWithStellarKeypair;
9
+ const stellar_base_1 = require("@stellar/stellar-base");
10
+ /**
11
+ * Converts a Stellar public key to base64 format for Canton
12
+ *
13
+ * Stellar Ed25519 keys can be used for Canton external signing. This function extracts the raw 32-byte public key and
14
+ * converts it to base64.
15
+ *
16
+ * @param keypair - Stellar Keypair object
17
+ * @returns Base64-encoded public key
18
+ */
19
+ function stellarPublicKeyToBase64(keypair) {
20
+ return keypair.rawPublicKey().toString('base64');
21
+ }
22
+ /**
23
+ * Signs data with a Stellar keypair
24
+ *
25
+ * @param keypair - Stellar Keypair object
26
+ * @param data - Data to sign (as Buffer or base64 string)
27
+ * @returns Base64-encoded signature
28
+ */
29
+ function signWithStellarKeypair(keypair, data) {
30
+ const dataBuffer = typeof data === 'string' ? Buffer.from(data, 'base64') : data;
31
+ const signature = keypair.sign(dataBuffer);
32
+ return signature.toString('base64');
33
+ }
34
+ /**
35
+ * Load a Stellar keypair from a secret key
36
+ *
37
+ * @param secret - Stellar secret key (starts with 'S')
38
+ * @returns Stellar Keypair object
39
+ */
40
+ function loadStellarKeypair(secret) {
41
+ return stellar_base_1.Keypair.fromSecret(secret);
42
+ }
43
+ /**
44
+ * Generate a new random Stellar keypair
45
+ *
46
+ * @returns Stellar Keypair object
47
+ */
48
+ function generateStellarKeypair() {
49
+ return stellar_base_1.Keypair.random();
50
+ }
51
+ /**
52
+ * Convert Stellar public key to hex string (for Validator API)
53
+ *
54
+ * @param keypair - Stellar keypair
55
+ * @returns Hex-encoded public key
56
+ */
57
+ function stellarPublicKeyToHex(keypair) {
58
+ return keypair.rawPublicKey().toString('hex');
59
+ }
60
+ /**
61
+ * Sign hex-encoded hash with Stellar keypair (for Validator API)
62
+ *
63
+ * @param keypair - Stellar keypair to sign with
64
+ * @param hexHash - Hex-encoded hash to sign
65
+ * @returns Hex-encoded signature
66
+ */
67
+ function signHexWithStellarKeypair(keypair, hexHash) {
68
+ const dataBuffer = Buffer.from(hexHash, 'hex');
69
+ const signature = keypair.sign(dataBuffer);
70
+ return signature.toString('hex');
71
+ }
72
+ //# sourceMappingURL=stellar-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stellar-utils.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/stellar-utils.ts"],"names":[],"mappings":";;AAWA,4DAEC;AASD,wDAIC;AAQD,gDAEC;AAOD,wDAEC;AAQD,sDAEC;AASD,8DAIC;AApED,wDAAgD;AAEhD;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,OAAgB,EAAE,IAAqB;IAC5E,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,sBAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB;IACpC,OAAO,sBAAO,CAAC,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,OAAgB,EAAE,OAAe;IACzE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  export * from './amulet';
2
2
  export * from './contracts';
3
+ export * from './external-signing';
3
4
  export * from './mining';
4
5
  export * from './parsers';
5
6
  export * from './party';
7
+ export * from './privy';
6
8
  export * from './transactions';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC"}
@@ -16,8 +16,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./amulet"), exports);
18
18
  __exportStar(require("./contracts"), exports);
19
+ __exportStar(require("./external-signing"), exports);
19
20
  __exportStar(require("./mining"), exports);
20
21
  __exportStar(require("./parsers"), exports);
21
22
  __exportStar(require("./party"), exports);
23
+ __exportStar(require("./privy"), exports);
22
24
  __exportStar(require("./transactions"), exports);
23
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,qDAAmC;AACnC,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B"}
@@ -0,0 +1,36 @@
1
+ import { PrivyClient } from '@privy-io/node';
2
+ import type { PrivyClientOptions } from './types';
3
+ /**
4
+ * Creates a Privy client instance for wallet operations
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { createPrivyClient } from '@fairmint/canton-node-sdk';
9
+ *
10
+ * const privy = createPrivyClient({
11
+ * appId: process.env.PRIVY_APP_ID!,
12
+ * appSecret: process.env.PRIVY_APP_SECRET!
13
+ * });
14
+ * ```;
15
+ *
16
+ * @param options - Configuration options for the Privy client
17
+ * @returns Configured PrivyClient instance
18
+ * @throws Error if appId or appSecret are missing
19
+ */
20
+ export declare function createPrivyClient(options: PrivyClientOptions): PrivyClient;
21
+ /**
22
+ * Creates a Privy client from environment variables
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import { createPrivyClientFromEnv } from '@fairmint/canton-node-sdk';
27
+ *
28
+ * // Requires PRIVY_APP_ID and PRIVY_APP_SECRET in environment
29
+ * const privy = createPrivyClientFromEnv();
30
+ * ```;
31
+ *
32
+ * @returns Configured PrivyClient instance
33
+ * @throws Error if PRIVY_APP_ID or PRIVY_APP_SECRET are not set
34
+ */
35
+ export declare function createPrivyClientFromEnv(): PrivyClient;
36
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/utils/privy/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAiB1E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,IAAI,WAAW,CAKtD"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPrivyClient = createPrivyClient;
4
+ exports.createPrivyClientFromEnv = createPrivyClientFromEnv;
5
+ const node_1 = require("@privy-io/node");
6
+ /**
7
+ * Creates a Privy client instance for wallet operations
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { createPrivyClient } from '@fairmint/canton-node-sdk';
12
+ *
13
+ * const privy = createPrivyClient({
14
+ * appId: process.env.PRIVY_APP_ID!,
15
+ * appSecret: process.env.PRIVY_APP_SECRET!
16
+ * });
17
+ * ```;
18
+ *
19
+ * @param options - Configuration options for the Privy client
20
+ * @returns Configured PrivyClient instance
21
+ * @throws Error if appId or appSecret are missing
22
+ */
23
+ function createPrivyClient(options) {
24
+ const { appId, appSecret } = options;
25
+ if (!appId) {
26
+ throw new Error('Privy App ID is required. Set PRIVY_APP_ID environment variable or provide appId option.');
27
+ }
28
+ if (!appSecret) {
29
+ throw new Error('Privy App Secret is required. Set PRIVY_APP_SECRET environment variable or provide appSecret option.');
30
+ }
31
+ return new node_1.PrivyClient({
32
+ appId,
33
+ appSecret,
34
+ });
35
+ }
36
+ /**
37
+ * Creates a Privy client from environment variables
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * import { createPrivyClientFromEnv } from '@fairmint/canton-node-sdk';
42
+ *
43
+ * // Requires PRIVY_APP_ID and PRIVY_APP_SECRET in environment
44
+ * const privy = createPrivyClientFromEnv();
45
+ * ```;
46
+ *
47
+ * @returns Configured PrivyClient instance
48
+ * @throws Error if PRIVY_APP_ID or PRIVY_APP_SECRET are not set
49
+ */
50
+ function createPrivyClientFromEnv() {
51
+ return createPrivyClient({
52
+ appId: process.env['PRIVY_APP_ID'] ?? '',
53
+ appSecret: process.env['PRIVY_APP_SECRET'] ?? '',
54
+ });
55
+ }
56
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/utils/privy/client.ts"],"names":[],"mappings":";;AAoBA,8CAiBC;AAgBD,4DAKC;AA1DD,yCAA6C;AAG7C;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,kBAAW,CAAC;QACrB,KAAK;QACL,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,wBAAwB;IACtC,OAAO,iBAAiB,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QACxC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE;KACjD,CAAC,CAAC;AACL,CAAC"}