@getpara/server-sdk 2.0.0-alpha.3 → 2.0.0-alpha.6

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 (45) hide show
  1. package/dist/cjs/ParaServer.js +91 -0
  2. package/dist/cjs/ServerLocalStorage.js +48 -0
  3. package/dist/cjs/ServerSessionStorage.js +48 -0
  4. package/dist/cjs/ServerUtils.js +77 -0
  5. package/dist/cjs/index.js +3 -523
  6. package/dist/cjs/package.json +3 -0
  7. package/dist/cjs/wallet/keygen.js +229 -0
  8. package/dist/cjs/wallet/privateKey.js +86 -0
  9. package/dist/cjs/wallet/signing.js +172 -0
  10. package/dist/cjs/wasm/wasm_exec.js +589 -0
  11. package/dist/cjs/workers/walletUtils.js +367 -0
  12. package/dist/cjs/workers/worker.js +24 -906
  13. package/dist/cjs/workers/workerWrapper.js +88 -0
  14. package/dist/esm/ParaServer.js +39 -0
  15. package/dist/esm/ServerLocalStorage.js +26 -0
  16. package/dist/esm/ServerSessionStorage.js +26 -0
  17. package/dist/esm/ServerUtils.js +55 -0
  18. package/dist/esm/chunk-FTA5RKYX.js +8 -0
  19. package/dist/esm/index.js +4 -468
  20. package/dist/esm/package.json +6 -0
  21. package/dist/esm/wallet/keygen.js +160 -0
  22. package/dist/esm/wallet/privateKey.js +32 -0
  23. package/dist/esm/wallet/signing.js +109 -0
  24. package/dist/esm/{workers/wasm_exec-CFNSOXDO.js → wasm/wasm_exec.js} +68 -74
  25. package/dist/esm/workers/walletUtils.js +290 -0
  26. package/dist/esm/workers/worker.js +41 -336
  27. package/dist/esm/workers/workerWrapper.js +44 -0
  28. package/dist/types/ServerUtils.d.ts +5 -4
  29. package/dist/types/wallet/keygen.d.ts +5 -3
  30. package/dist/types/workers/walletUtils.d.ts +3 -3
  31. package/dist/types/workers/worker.d.ts +2 -1
  32. package/package.json +5 -5
  33. package/dist/cjs/index.js.br +0 -0
  34. package/dist/cjs/index.js.gz +0 -0
  35. package/dist/cjs/workers/worker.js.br +0 -0
  36. package/dist/cjs/workers/worker.js.gz +0 -0
  37. package/dist/esm/index.js.br +0 -0
  38. package/dist/esm/index.js.gz +0 -0
  39. package/dist/esm/workers/chunk-ILICZWQV.js +0 -36
  40. package/dist/esm/workers/chunk-ILICZWQV.js.br +0 -0
  41. package/dist/esm/workers/chunk-ILICZWQV.js.gz +0 -0
  42. package/dist/esm/workers/wasm_exec-CFNSOXDO.js.br +0 -0
  43. package/dist/esm/workers/wasm_exec-CFNSOXDO.js.gz +0 -0
  44. package/dist/esm/workers/worker.js.br +0 -0
  45. package/dist/esm/workers/worker.js.gz +0 -0
@@ -0,0 +1,109 @@
1
+ import "../chunk-FTA5RKYX.js";
2
+ import * as uuid from "uuid";
3
+ import { setupWorker } from "../workers/workerWrapper.js";
4
+ async function signTransaction(ctx, userId, walletId, share, tx, chainId, sessionCookie, isDKLS) {
5
+ return await new Promise(async (resolve) => {
6
+ const workId = uuid.v4();
7
+ const worker = await setupWorker(
8
+ ctx,
9
+ async (sendTransactionRes) => {
10
+ resolve(sendTransactionRes);
11
+ },
12
+ workId
13
+ );
14
+ worker.postMessage({
15
+ env: ctx.env,
16
+ apiKey: ctx.apiKey,
17
+ cosmosPrefix: ctx.cosmosPrefix,
18
+ params: { share, walletId, userId, tx, chainId },
19
+ functionType: "SIGN_TRANSACTION",
20
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
21
+ disableWorkers: ctx.disableWorkers,
22
+ sessionCookie,
23
+ useDKLS: isDKLS,
24
+ disableWebSockets: ctx.disableWebSockets,
25
+ wasmOverride: ctx.wasmOverride,
26
+ workId
27
+ });
28
+ });
29
+ }
30
+ async function sendTransaction(ctx, userId, walletId, share, tx, chainId, sessionCookie, isDKLS) {
31
+ return await new Promise(async (resolve) => {
32
+ const workId = uuid.v4();
33
+ const worker = await setupWorker(
34
+ ctx,
35
+ async (sendTransactionRes) => {
36
+ resolve(sendTransactionRes);
37
+ },
38
+ workId
39
+ );
40
+ worker.postMessage({
41
+ env: ctx.env,
42
+ apiKey: ctx.apiKey,
43
+ params: { share, walletId, userId, tx, chainId },
44
+ functionType: "SEND_TRANSACTION",
45
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
46
+ disableWorkers: ctx.disableWorkers,
47
+ sessionCookie,
48
+ useDKLS: isDKLS,
49
+ disableWebSockets: ctx.disableWebSockets,
50
+ wasmOverride: ctx.wasmOverride,
51
+ workId
52
+ });
53
+ });
54
+ }
55
+ async function signMessage(ctx, userId, walletId, share, message, sessionCookie, isDKLS) {
56
+ return await new Promise(async (resolve) => {
57
+ const workId = uuid.v4();
58
+ const worker = await setupWorker(
59
+ ctx,
60
+ async (signMessageRes) => {
61
+ resolve(signMessageRes);
62
+ },
63
+ workId
64
+ );
65
+ worker.postMessage({
66
+ env: ctx.env,
67
+ apiKey: ctx.apiKey,
68
+ params: { share, walletId, userId, message },
69
+ functionType: "SIGN_MESSAGE",
70
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
71
+ disableWorkers: ctx.disableWorkers,
72
+ sessionCookie,
73
+ useDKLS: isDKLS,
74
+ disableWebSockets: ctx.disableWebSockets,
75
+ wasmOverride: ctx.wasmOverride,
76
+ workId
77
+ });
78
+ });
79
+ }
80
+ async function ed25519Sign(ctx, userId, walletId, share, base64Bytes, sessionCookie) {
81
+ return await new Promise(async (resolve) => {
82
+ const workId = uuid.v4();
83
+ const worker = await setupWorker(
84
+ ctx,
85
+ async (signMessageRes) => {
86
+ resolve(signMessageRes);
87
+ },
88
+ workId
89
+ );
90
+ worker.postMessage({
91
+ env: ctx.env,
92
+ apiKey: ctx.apiKey,
93
+ params: { share, walletId, userId, base64Bytes },
94
+ functionType: "ED25519_SIGN",
95
+ offloadMPCComputationURL: ctx.offloadMPCComputationURL,
96
+ disableWorkers: ctx.disableWorkers,
97
+ sessionCookie,
98
+ disableWebSockets: ctx.disableWebSockets,
99
+ wasmOverride: ctx.wasmOverride,
100
+ workId
101
+ });
102
+ });
103
+ }
104
+ export {
105
+ ed25519Sign,
106
+ sendTransaction,
107
+ signMessage,
108
+ signTransaction
109
+ };
@@ -1,17 +1,13 @@
1
1
  import {
2
- __async,
3
- __commonJS,
4
- __require
5
- } from "./chunk-ILICZWQV.js";
6
-
7
- // src/wasm/wasm_exec.js
2
+ __commonJS
3
+ } from "../chunk-FTA5RKYX.js";
8
4
  var require_wasm_exec = __commonJS({
9
5
  "src/wasm/wasm_exec.js"(exports, module) {
10
- var globalThisCopy = global;
6
+ const globalThisCopy = global;
11
7
  if (!globalThisCopy.crypto) {
12
- globalThisCopy.crypto = __require("crypto");
8
+ globalThisCopy.crypto = require("crypto");
13
9
  }
14
- var crypto = globalThisCopy.crypto;
10
+ const crypto = globalThisCopy.crypto;
15
11
  (() => {
16
12
  const enosys = () => {
17
13
  const err = new Error("not implemented");
@@ -484,73 +480,71 @@ var require_wasm_exec = __commonJS({
484
480
  }
485
481
  };
486
482
  }
487
- run(instance) {
488
- return __async(this, null, function* () {
489
- if (!(instance instanceof WebAssembly.Instance)) {
490
- throw new Error("Go.run: WebAssembly.Instance expected");
491
- }
492
- this._inst = instance;
493
- this.mem = new DataView(this._inst.exports.mem.buffer);
494
- this._values = [
495
- // JS values that Go currently has references to, indexed by reference id
496
- NaN,
497
- 0,
498
- null,
499
- true,
500
- false,
501
- globalThis,
502
- this
503
- ];
504
- this._goRefCounts = new Array(this._values.length).fill(Infinity);
505
- this._ids = /* @__PURE__ */ new Map([
506
- // mapping from JS values to reference ids
507
- [0, 1],
508
- [null, 2],
509
- [true, 3],
510
- [false, 4],
511
- [globalThis, 5],
512
- [this, 6]
513
- ]);
514
- this._idPool = [];
515
- this.exited = false;
516
- let offset = 4096;
517
- const strPtr = (str) => {
518
- const ptr = offset;
519
- const bytes = encoder.encode(str + "\0");
520
- new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);
521
- offset += bytes.length;
522
- if (offset % 8 !== 0) {
523
- offset += 8 - offset % 8;
524
- }
525
- return ptr;
526
- };
527
- const argc = this.argv.length;
528
- const argvPtrs = [];
529
- this.argv.forEach((arg) => {
530
- argvPtrs.push(strPtr(arg));
531
- });
532
- argvPtrs.push(0);
533
- const keys = Object.keys(this.env).sort();
534
- keys.forEach((key) => {
535
- argvPtrs.push(strPtr(`${key}=${this.env[key]}`));
536
- });
537
- argvPtrs.push(0);
538
- const argv = offset;
539
- argvPtrs.forEach((ptr) => {
540
- this.mem.setUint32(offset, ptr, true);
541
- this.mem.setUint32(offset + 4, 0, true);
542
- offset += 8;
543
- });
544
- const wasmMinDataAddr = 4096 + 8192;
545
- if (offset >= wasmMinDataAddr) {
546
- throw new Error("total length of command line and environment variables exceeds limit");
547
- }
548
- this._inst.exports.run(argc, argv);
549
- if (this.exited) {
550
- this._resolveExitPromise();
483
+ async run(instance) {
484
+ if (!(instance instanceof WebAssembly.Instance)) {
485
+ throw new Error("Go.run: WebAssembly.Instance expected");
486
+ }
487
+ this._inst = instance;
488
+ this.mem = new DataView(this._inst.exports.mem.buffer);
489
+ this._values = [
490
+ // JS values that Go currently has references to, indexed by reference id
491
+ NaN,
492
+ 0,
493
+ null,
494
+ true,
495
+ false,
496
+ globalThis,
497
+ this
498
+ ];
499
+ this._goRefCounts = new Array(this._values.length).fill(Infinity);
500
+ this._ids = /* @__PURE__ */ new Map([
501
+ // mapping from JS values to reference ids
502
+ [0, 1],
503
+ [null, 2],
504
+ [true, 3],
505
+ [false, 4],
506
+ [globalThis, 5],
507
+ [this, 6]
508
+ ]);
509
+ this._idPool = [];
510
+ this.exited = false;
511
+ let offset = 4096;
512
+ const strPtr = (str) => {
513
+ const ptr = offset;
514
+ const bytes = encoder.encode(str + "\0");
515
+ new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);
516
+ offset += bytes.length;
517
+ if (offset % 8 !== 0) {
518
+ offset += 8 - offset % 8;
551
519
  }
552
- yield this._exitPromise;
520
+ return ptr;
521
+ };
522
+ const argc = this.argv.length;
523
+ const argvPtrs = [];
524
+ this.argv.forEach((arg) => {
525
+ argvPtrs.push(strPtr(arg));
526
+ });
527
+ argvPtrs.push(0);
528
+ const keys = Object.keys(this.env).sort();
529
+ keys.forEach((key) => {
530
+ argvPtrs.push(strPtr(`${key}=${this.env[key]}`));
553
531
  });
532
+ argvPtrs.push(0);
533
+ const argv = offset;
534
+ argvPtrs.forEach((ptr) => {
535
+ this.mem.setUint32(offset, ptr, true);
536
+ this.mem.setUint32(offset + 4, 0, true);
537
+ offset += 8;
538
+ });
539
+ const wasmMinDataAddr = 4096 + 8192;
540
+ if (offset >= wasmMinDataAddr) {
541
+ throw new Error("total length of command line and environment variables exceeds limit");
542
+ }
543
+ this._inst.exports.run(argc, argv);
544
+ if (this.exited) {
545
+ this._resolveExitPromise();
546
+ }
547
+ await this._exitPromise;
554
548
  }
555
549
  _resume() {
556
550
  if (this.exited) {
@@ -0,0 +1,290 @@
1
+ import "../chunk-FTA5RKYX.js";
2
+ import { getBaseMPCNetworkUrl } from "@getpara/core-sdk";
3
+ const configCGGMPBase = (serverUrl, walletId, id) => `{"ServerUrl":"${serverUrl}", "WalletId": "${walletId}", "Id":"${id}", "Ids":["USER","CAPSULE"], "Threshold":1}`;
4
+ const configDKLSBase = (walletId, id, disableWebSockets) => `{"walletId": "${walletId}", "id":"${id}", "otherId":"CAPSULE", "isReceiver": false, "disableWebSockets": ${disableWebSockets}}`;
5
+ async function keygenRequest(ctx, userId, walletId, protocolId) {
6
+ const { data } = await ctx.mpcComputationClient.post("/wallets", {
7
+ userId,
8
+ walletId,
9
+ protocolId
10
+ });
11
+ return data;
12
+ }
13
+ async function signMessageRequest(ctx, userId, walletId, protocolId, message, signer) {
14
+ const { data } = await ctx.mpcComputationClient.post(`/wallets/${walletId}/messages/sign`, {
15
+ userId,
16
+ protocolId,
17
+ message,
18
+ signer
19
+ });
20
+ return data;
21
+ }
22
+ async function sendTransactionRequest(ctx, userId, walletId, protocolId, transaction, signer, chainId) {
23
+ const { data } = await ctx.mpcComputationClient.post(`/wallets/${walletId}/transactions/send`, {
24
+ userId,
25
+ protocolId,
26
+ transaction,
27
+ signer,
28
+ chainId
29
+ });
30
+ return data;
31
+ }
32
+ async function ed25519Keygen(ctx, userId) {
33
+ const { walletId, protocolId } = await ctx.client.createWallet(userId, {
34
+ scheme: "ED25519",
35
+ type: "SOLANA"
36
+ });
37
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
38
+ try {
39
+ const newSigner = await new Promise(
40
+ (resolve, reject) => global.ed25519CreateAccount(serverUrl, walletId, protocolId, (err, result) => {
41
+ if (err) {
42
+ reject(err);
43
+ }
44
+ resolve(result);
45
+ })
46
+ );
47
+ return { signer: newSigner, walletId };
48
+ } catch (e) {
49
+ throw new Error(`error creating account of type SOLANA with userId ${userId} and walletId ${walletId}`);
50
+ }
51
+ }
52
+ async function ed25519PreKeygen(ctx, pregenIdentifier, pregenIdentifierType) {
53
+ const { walletId, protocolId } = await ctx.client.createPregenWallet({
54
+ pregenIdentifier,
55
+ pregenIdentifierType,
56
+ scheme: "ED25519",
57
+ type: "SOLANA"
58
+ });
59
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
60
+ try {
61
+ const newSigner = await new Promise(
62
+ (resolve, reject) => global.ed25519CreateAccount(serverUrl, walletId, protocolId, (err, result) => {
63
+ if (err) {
64
+ reject(err);
65
+ }
66
+ resolve(result);
67
+ })
68
+ );
69
+ return { signer: newSigner, walletId };
70
+ } catch (e) {
71
+ throw new Error(`error creating account of type SOLANA with walletId ${walletId}`);
72
+ }
73
+ }
74
+ async function ed25519Sign(ctx, share, userId, walletId, base64Bytes) {
75
+ const { protocolId } = await ctx.client.preSignMessage(userId, walletId, base64Bytes, "ED25519");
76
+ try {
77
+ const base64Sig = await new Promise(
78
+ (resolve, reject) => global.ed25519Sign(share, protocolId, base64Bytes, (err, result) => {
79
+ if (err) {
80
+ reject(err);
81
+ }
82
+ resolve(result);
83
+ })
84
+ );
85
+ return { signature: base64Sig };
86
+ } catch (e) {
87
+ throw new Error(`error signing for account of type SOLANA with userId ${userId} and walletId ${walletId}`);
88
+ }
89
+ }
90
+ async function keygen(ctx, userId, type, secretKey) {
91
+ const { walletId, protocolId } = await ctx.client.createWallet(userId, {
92
+ useTwoSigners: true,
93
+ scheme: ctx.useDKLS ? "DKLS" : "CGGMP",
94
+ type,
95
+ cosmosPrefix: type === "COSMOS" ? ctx.cosmosPrefix : void 0
96
+ });
97
+ if (ctx.offloadMPCComputationURL && !ctx.useDKLS) {
98
+ return {
99
+ signer: (await keygenRequest(ctx, userId, walletId, protocolId)).signer,
100
+ walletId
101
+ };
102
+ }
103
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
104
+ const signerConfigUser = ctx.useDKLS ? configDKLSBase(walletId, "USER", ctx.disableWebSockets) : configCGGMPBase(serverUrl, walletId, "USER");
105
+ const createAccountFn = ctx.useDKLS ? global.dklsCreateAccount : global.createAccountV2;
106
+ try {
107
+ const newSigner = await new Promise(
108
+ (resolve, reject) => createAccountFn(
109
+ signerConfigUser,
110
+ serverUrl,
111
+ protocolId,
112
+ secretKey,
113
+ () => {
114
+ },
115
+ // no-op for deprecated callback to update progress percentage
116
+ (err, result) => {
117
+ if (err) {
118
+ reject(err);
119
+ }
120
+ resolve(result);
121
+ }
122
+ )
123
+ );
124
+ return { signer: newSigner, walletId };
125
+ } catch (e) {
126
+ throw new Error(`error creating account of type ${type} with userId ${userId} and walletId ${walletId}`);
127
+ }
128
+ }
129
+ async function preKeygen(ctx, partnerId, pregenIdentifier, pregenIdentifierType, type, secretKey) {
130
+ const { walletId, protocolId } = await ctx.client.createPregenWallet({
131
+ pregenIdentifier,
132
+ pregenIdentifierType,
133
+ type,
134
+ cosmosPrefix: type === "COSMOS" ? ctx.cosmosPrefix : void 0
135
+ });
136
+ if (ctx.offloadMPCComputationURL && !ctx.useDKLS) {
137
+ return {
138
+ signer: (await keygenRequest(ctx, partnerId, walletId, protocolId)).signer,
139
+ walletId
140
+ };
141
+ }
142
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
143
+ const signerConfigUser = ctx.useDKLS ? configDKLSBase(walletId, "USER", ctx.disableWebSockets) : configCGGMPBase(serverUrl, walletId, "USER");
144
+ const createAccountFn = ctx.useDKLS ? global.dklsCreateAccount : global.createAccountV2;
145
+ try {
146
+ const newSigner = await new Promise(
147
+ (resolve, reject) => createAccountFn(
148
+ signerConfigUser,
149
+ serverUrl,
150
+ protocolId,
151
+ secretKey,
152
+ () => {
153
+ },
154
+ // no-op for deprecated callback to update progress percentage
155
+ (err, result) => {
156
+ if (err) {
157
+ reject(err);
158
+ }
159
+ resolve(result);
160
+ }
161
+ )
162
+ );
163
+ return { signer: newSigner, walletId };
164
+ } catch (e) {
165
+ throw new Error(`error creating account of type ${type} with walletId ${walletId}`);
166
+ }
167
+ }
168
+ async function signMessage(ctx, share, walletId, userId, message) {
169
+ const { protocolId, pendingTransactionId } = await ctx.client.preSignMessage(userId, walletId, message);
170
+ if (pendingTransactionId) {
171
+ return { pendingTransactionId };
172
+ }
173
+ if (ctx.offloadMPCComputationURL && !ctx.useDKLS) {
174
+ return signMessageRequest(ctx, userId, walletId, protocolId, message, share);
175
+ }
176
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
177
+ const signMessageFn = ctx.useDKLS ? global.dklsSignMessage : global.signMessage;
178
+ try {
179
+ return await new Promise(
180
+ (resolve, reject) => signMessageFn(share, serverUrl, message, protocolId, (err, result) => {
181
+ if (err) {
182
+ reject(err);
183
+ }
184
+ resolve({ signature: result });
185
+ })
186
+ );
187
+ } catch (e) {
188
+ throw new Error(`error signing for account with userId ${userId} and walletId ${walletId}`);
189
+ }
190
+ }
191
+ async function signTransaction(ctx, share, walletId, userId, tx, chainId) {
192
+ const {
193
+ data: { protocolId, pendingTransactionId }
194
+ } = await ctx.client.signTransaction(userId, walletId, { transaction: tx, chainId });
195
+ if (pendingTransactionId) {
196
+ return { pendingTransactionId };
197
+ }
198
+ if (ctx.offloadMPCComputationURL && !ctx.useDKLS) {
199
+ return sendTransactionRequest(ctx, userId, walletId, protocolId, tx, share, chainId);
200
+ }
201
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
202
+ const signTransactionFn = ctx.useDKLS ? global.dklsSendTransaction : global.sendTransaction;
203
+ try {
204
+ return await new Promise(
205
+ (resolve, reject) => signTransactionFn(share, serverUrl, tx, chainId, protocolId, (err, result) => {
206
+ if (err) {
207
+ reject(err);
208
+ }
209
+ resolve({ signature: result });
210
+ })
211
+ );
212
+ } catch (e) {
213
+ throw new Error(`error signing transaction for account with userId ${userId} and walletId ${walletId}`);
214
+ }
215
+ }
216
+ async function sendTransaction(ctx, share, walletId, userId, tx, chainId) {
217
+ const {
218
+ data: { protocolId, pendingTransactionId }
219
+ } = await ctx.client.sendTransaction(userId, walletId, { transaction: tx, chainId });
220
+ if (pendingTransactionId) {
221
+ return { pendingTransactionId };
222
+ }
223
+ if (ctx.offloadMPCComputationURL && !ctx.useDKLS) {
224
+ return sendTransactionRequest(ctx, userId, walletId, protocolId, tx, share, chainId);
225
+ }
226
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
227
+ const sendTransactionFn = ctx.useDKLS ? global.dklsSendTransaction : global.sendTransaction;
228
+ try {
229
+ return await new Promise(
230
+ (resolve, reject) => sendTransactionFn(share, serverUrl, tx, chainId, protocolId, (err, result) => {
231
+ if (err) {
232
+ reject(err);
233
+ }
234
+ resolve({ signature: result });
235
+ })
236
+ );
237
+ } catch (e) {
238
+ throw new Error(`error signing transaction to send for account with userId ${userId} and walletId ${walletId}`);
239
+ }
240
+ }
241
+ async function refresh(ctx, share, walletId, userId) {
242
+ const {
243
+ data: { protocolId }
244
+ } = await ctx.client.refreshKeys(userId, walletId);
245
+ const serverUrl = getBaseMPCNetworkUrl(ctx.env, !ctx.disableWebSockets);
246
+ const refreshFn = ctx.useDKLS ? global.dklsRefresh : global.refresh;
247
+ try {
248
+ return await new Promise(
249
+ (resolve, reject) => refreshFn(share, serverUrl, protocolId, (err, result) => {
250
+ if (err) {
251
+ reject(err);
252
+ }
253
+ resolve(result);
254
+ })
255
+ );
256
+ } catch (e) {
257
+ throw new Error(`error refreshing keys for account with userId ${userId} and walletId ${walletId}`);
258
+ }
259
+ }
260
+ async function getPrivateKey(ctx, share, walletId, userId) {
261
+ const paraShare = await ctx.client.getParaShare(userId, walletId);
262
+ if (!paraShare) {
263
+ console.error("unable to retrieve Para share");
264
+ return "";
265
+ }
266
+ try {
267
+ return await new Promise(
268
+ (resolve, reject) => global.getPrivateKey(share, paraShare, (err, result) => {
269
+ if (err) {
270
+ reject(err);
271
+ }
272
+ resolve(result);
273
+ })
274
+ );
275
+ } catch (e) {
276
+ throw new Error(`error getting private key for account with userId ${userId} and walletId ${walletId}`);
277
+ }
278
+ }
279
+ export {
280
+ ed25519Keygen,
281
+ ed25519PreKeygen,
282
+ ed25519Sign,
283
+ getPrivateKey,
284
+ keygen,
285
+ preKeygen,
286
+ refresh,
287
+ sendTransaction,
288
+ signMessage,
289
+ signTransaction
290
+ };