@getpara/core-sdk 2.0.0-alpha.6 → 2.0.0-alpha.60

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 (75) hide show
  1. package/dist/cjs/ParaCore.js +1038 -248
  2. package/dist/cjs/constants.js +13 -1
  3. package/dist/cjs/index.js +31 -3
  4. package/dist/cjs/shares/enclave.js +266 -0
  5. package/dist/cjs/shares/shareDistribution.js +16 -1
  6. package/dist/cjs/types/{theme.js → assets.js} +2 -2
  7. package/dist/cjs/types/{onRamps.js → auth.js} +12 -12
  8. package/dist/cjs/types/coreApi.js +20 -3
  9. package/dist/cjs/types/events.js +2 -0
  10. package/dist/cjs/types/index.js +2 -21
  11. package/dist/cjs/utils/config.js +108 -0
  12. package/dist/cjs/utils/formatting.js +46 -0
  13. package/dist/cjs/utils/index.js +2 -0
  14. package/dist/cjs/utils/onRamps.js +2 -3
  15. package/dist/cjs/utils/wallet.js +3 -0
  16. package/dist/esm/ParaCore.js +1045 -254
  17. package/dist/esm/{chunk-7B52C2XE.js → chunk-W5CT3TVS.js} +2 -0
  18. package/dist/esm/constants.js +10 -2
  19. package/dist/esm/cryptography/utils.js +1 -1
  20. package/dist/esm/errors.js +1 -1
  21. package/dist/esm/external/mpcComputationClient.js +1 -1
  22. package/dist/esm/external/userManagementClient.js +1 -1
  23. package/dist/esm/index.js +31 -6
  24. package/dist/esm/shares/KeyContainer.js +1 -1
  25. package/dist/esm/shares/enclave.js +226 -0
  26. package/dist/esm/shares/recovery.js +1 -1
  27. package/dist/esm/shares/shareDistribution.js +17 -2
  28. package/dist/esm/transmission/transmissionUtils.js +1 -1
  29. package/dist/esm/types/auth.js +11 -0
  30. package/dist/esm/types/config.js +1 -1
  31. package/dist/esm/types/coreApi.js +19 -3
  32. package/dist/esm/types/events.js +3 -1
  33. package/dist/esm/types/index.js +1 -16
  34. package/dist/esm/types/popup.js +1 -1
  35. package/dist/esm/types/wallet.js +1 -1
  36. package/dist/esm/utils/autobind.js +1 -1
  37. package/dist/esm/utils/config.js +86 -0
  38. package/dist/esm/utils/events.js +1 -1
  39. package/dist/esm/utils/formatting.js +44 -1
  40. package/dist/esm/utils/index.js +1 -0
  41. package/dist/esm/utils/json.js +1 -1
  42. package/dist/esm/utils/listeners.js +1 -1
  43. package/dist/esm/utils/onRamps.js +3 -4
  44. package/dist/esm/utils/phone.js +1 -1
  45. package/dist/esm/utils/polling.js +1 -1
  46. package/dist/esm/utils/types.js +1 -1
  47. package/dist/esm/utils/url.js +1 -1
  48. package/dist/esm/utils/wallet.js +4 -1
  49. package/dist/types/ParaCore.d.ts +115 -52
  50. package/dist/types/PlatformUtils.d.ts +2 -3
  51. package/dist/types/constants.d.ts +18 -14
  52. package/dist/types/index.d.ts +6 -4
  53. package/dist/types/shares/KeyContainer.d.ts +0 -2
  54. package/dist/types/shares/enclave.d.ts +81 -0
  55. package/dist/types/shares/shareDistribution.d.ts +4 -2
  56. package/dist/types/types/assets.d.ts +14 -0
  57. package/dist/types/types/auth.d.ts +16 -0
  58. package/dist/types/types/config.d.ts +11 -2
  59. package/dist/types/types/coreApi.d.ts +101 -36
  60. package/dist/types/types/events.d.ts +7 -2
  61. package/dist/types/types/index.d.ts +1 -4
  62. package/dist/types/types/methods.d.ts +85 -13
  63. package/dist/types/types/wallet.d.ts +7 -4
  64. package/dist/types/utils/config.d.ts +7 -0
  65. package/dist/types/utils/formatting.d.ts +12 -1
  66. package/dist/types/utils/index.d.ts +1 -0
  67. package/dist/types/utils/onRamps.d.ts +9 -10
  68. package/package.json +23 -23
  69. package/dist/cjs/types/recovery.js +0 -34
  70. package/dist/esm/types/onRamps.js +0 -11
  71. package/dist/esm/types/recovery.js +0 -12
  72. package/dist/types/types/onRamps.d.ts +0 -10
  73. package/dist/types/types/recovery.d.ts +0 -7
  74. package/dist/types/types/theme.d.ts +0 -12
  75. /package/dist/esm/types/{theme.js → assets.js} +0 -0
@@ -7,6 +7,7 @@ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
7
  var __typeError = (msg) => {
8
8
  throw TypeError(msg);
9
9
  };
10
+ var __pow = Math.pow;
10
11
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
12
  var __spreadValues = (a, b) => {
12
13
  for (var prop in b || (b = {}))
@@ -59,6 +60,7 @@ var __async = (__this, __arguments, generator) => {
59
60
  };
60
61
 
61
62
  export {
63
+ __pow,
62
64
  __spreadValues,
63
65
  __spreadProps,
64
66
  __objRest,
@@ -1,6 +1,7 @@
1
- import "./chunk-7B52C2XE.js";
2
- const PARA_CORE_VERSION = "2.0.0-alpha.6";
1
+ import "./chunk-W5CT3TVS.js";
2
+ const PARA_CORE_VERSION = "2.0.0-alpha.60";
3
3
  const PREFIX = "@CAPSULE/";
4
+ const PARA_PREFIX = "@PARA/";
4
5
  const LOCAL_STORAGE_AUTH_INFO = `${PREFIX}authInfo`;
5
6
  const LOCAL_STORAGE_EMAIL = `${PREFIX}e-mail`;
6
7
  const LOCAL_STORAGE_PHONE = `${PREFIX}phone`;
@@ -14,18 +15,24 @@ const LOCAL_STORAGE_WALLETS = `${PREFIX}wallets`;
14
15
  const LOCAL_STORAGE_EXTERNAL_WALLETS = `${PREFIX}externalWallets`;
15
16
  const LOCAL_STORAGE_CURRENT_WALLET_IDS = `${PREFIX}currentWalletIds`;
16
17
  const LOCAL_STORAGE_SESSION_COOKIE = `${PREFIX}sessionCookie`;
18
+ const LOCAL_STORAGE_ENCLAVE_JWT = `${PREFIX}enclaveJwt`;
19
+ const LOCAL_STORAGE_ENCLAVE_REFRESH_JWT = `${PREFIX}enclaveRefreshJwt`;
17
20
  const SESSION_STORAGE_LOGIN_ENCRYPTION_KEY_PAIR = `${PREFIX}loginEncryptionKeyPair`;
18
21
  const POLLING_INTERVAL_MS = 2e3;
19
22
  const SHORT_POLLING_INTERVAL_MS = 1e3;
20
23
  const POLLING_TIMEOUT_MS = 3e5;
21
24
  const EXTERNAL_WALLET_CONNECTION_ONLY_USER_ID = "EXTERNAL_WALLET_CONNECTION_ONLY";
25
+ const ACCOUNT_LINK_CONFLICT = "Account already linked";
22
26
  export {
27
+ ACCOUNT_LINK_CONFLICT,
23
28
  EXTERNAL_WALLET_CONNECTION_ONLY_USER_ID,
24
29
  LOCAL_STORAGE_AUTH_INFO,
25
30
  LOCAL_STORAGE_COUNTRY_CODE,
26
31
  LOCAL_STORAGE_CURRENT_WALLET_IDS,
27
32
  LOCAL_STORAGE_ED25519_WALLETS,
28
33
  LOCAL_STORAGE_EMAIL,
34
+ LOCAL_STORAGE_ENCLAVE_JWT,
35
+ LOCAL_STORAGE_ENCLAVE_REFRESH_JWT,
29
36
  LOCAL_STORAGE_EXTERNAL_WALLETS,
30
37
  LOCAL_STORAGE_EXTERNAL_WALLET_USER_ID,
31
38
  LOCAL_STORAGE_FARCASTER_USERNAME,
@@ -35,6 +42,7 @@ export {
35
42
  LOCAL_STORAGE_USER_ID,
36
43
  LOCAL_STORAGE_WALLETS,
37
44
  PARA_CORE_VERSION,
45
+ PARA_PREFIX,
38
46
  POLLING_INTERVAL_MS,
39
47
  POLLING_TIMEOUT_MS,
40
48
  PREFIX,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __async
3
- } from "../chunk-7B52C2XE.js";
3
+ } from "../chunk-W5CT3TVS.js";
4
4
  import base64url from "base64url";
5
5
  import forge from "node-forge";
6
6
  import { getPortalBaseURL } from "../utils/index.js";
@@ -1,4 +1,4 @@
1
- import "./chunk-7B52C2XE.js";
1
+ import "./chunk-W5CT3TVS.js";
2
2
  class TransactionReviewError extends Error {
3
3
  constructor(transactionReviewUrl) {
4
4
  super("transaction review error");
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  import axios from "axios";
3
3
  function initClient(baseURL, useAdapter) {
4
4
  const client = axios.create({ baseURL });
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  import Client from "@getpara/user-management-client";
3
3
  import { Environment } from "../types/index.js";
4
4
  function getBaseOAuthUrl(env) {
package/dist/esm/index.js CHANGED
@@ -1,30 +1,41 @@
1
- import "./chunk-7B52C2XE.js";
1
+ import "./chunk-W5CT3TVS.js";
2
2
  import { ParaCore } from "./ParaCore.js";
3
3
  import {
4
4
  AuthMethod,
5
+ AuthMethodStatus,
5
6
  EmailTheme,
6
7
  Network,
8
+ WalletType,
9
+ WalletScheme,
7
10
  OnRampAsset,
8
11
  OnRampPurchaseType,
9
12
  OnRampProvider,
10
13
  OnRampPurchaseStatus,
14
+ OnRampMethod,
15
+ OAuthMethod,
16
+ RecoveryStatus,
17
+ ThemeMode,
11
18
  NON_ED25519,
12
19
  PREGEN_IDENTIFIER_TYPES,
13
20
  WALLET_TYPES,
14
21
  WALLET_SCHEMES,
15
- OAUTH_METHODS
22
+ OAUTH_METHODS,
23
+ LINKED_ACCOUNT_TYPES,
24
+ EXTERNAL_WALLET_TYPES,
25
+ EVM_WALLETS,
26
+ SOLANA_WALLETS,
27
+ COSMOS_WALLETS
16
28
  } from "@getpara/user-management-client";
17
29
  import {
18
- OnRampMethod,
19
30
  PopupType,
20
31
  PregenIdentifierType,
21
- RecoveryStatus
32
+ AccountLinkError
22
33
  } from "./types/index.js";
23
34
  export * from "./types/coreApi.js";
24
35
  export * from "./types/events.js";
25
36
  export * from "./types/config.js";
26
- import { getPortalDomain, entityToWallet, constructUrl, shortenUrl } from "./utils/index.js";
27
- import { PREFIX } from "./constants.js";
37
+ import { getPortalDomain, dispatchEvent, entityToWallet, constructUrl, shortenUrl } from "./utils/index.js";
38
+ import { PREFIX, PARA_PREFIX } from "./constants.js";
28
39
  import { distributeNewShare } from "./shares/shareDistribution.js";
29
40
  import { KeyContainer } from "./shares/KeyContainer.js";
30
41
  import { getBaseUrl, initClient } from "./external/userManagementClient.js";
@@ -52,6 +63,7 @@ export * from "./errors.js";
52
63
  export * from "./utils/formatting.js";
53
64
  export * from "./utils/polling.js";
54
65
  export * from "./utils/phone.js";
66
+ export * from "./utils/config.js";
55
67
  import { isWalletSupported } from "./utils/wallet.js";
56
68
  import { getNetworkPrefix, getOnRampAssets, getOnRampNetworks, toAssetInfoArray } from "./utils/onRamps.js";
57
69
  import { getPortalBaseURL } from "./utils/url.js";
@@ -59,24 +71,36 @@ import { retrieve } from "./transmission/transmissionUtils.js";
59
71
  const paraVersion = ParaCore.version;
60
72
  var src_default = ParaCore;
61
73
  export {
74
+ AccountLinkError,
62
75
  AuthMethod,
76
+ AuthMethodStatus,
77
+ COSMOS_WALLETS,
78
+ EVM_WALLETS,
79
+ EXTERNAL_WALLET_TYPES,
63
80
  EmailTheme,
64
81
  KeyContainer,
82
+ LINKED_ACCOUNT_TYPES,
65
83
  NON_ED25519,
66
84
  Network,
67
85
  OAUTH_METHODS,
86
+ OAuthMethod,
68
87
  OnRampAsset,
69
88
  OnRampMethod,
70
89
  OnRampProvider,
71
90
  OnRampPurchaseStatus,
72
91
  OnRampPurchaseType,
92
+ PARA_PREFIX as PARA_STORAGE_PREFIX,
73
93
  PREGEN_IDENTIFIER_TYPES,
74
94
  PopupType,
75
95
  PregenIdentifierType,
76
96
  RecoveryStatus,
97
+ SOLANA_WALLETS,
77
98
  PREFIX as STORAGE_PREFIX,
99
+ ThemeMode,
78
100
  WALLET_SCHEMES,
79
101
  WALLET_TYPES,
102
+ WalletScheme,
103
+ WalletType,
80
104
  constructUrl,
81
105
  decryptPrivateKey,
82
106
  decryptPrivateKeyAndDecryptShare,
@@ -84,6 +108,7 @@ export {
84
108
  decryptWithKeyPair,
85
109
  decryptWithPrivateKey,
86
110
  src_default as default,
111
+ dispatchEvent,
87
112
  distributeNewShare,
88
113
  encodePrivateKeyToPemHex,
89
114
  encryptPrivateKey,
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  import { Encrypt as ECIESEncrypt, Decrypt as ECIESDecrypt } from "@celo/utils/lib/ecies.js";
3
3
  import * as eutil from "@ethereumjs/util";
4
4
  import * as forge from "node-forge";
@@ -0,0 +1,226 @@
1
+ import {
2
+ __async
3
+ } from "../chunk-W5CT3TVS.js";
4
+ class EnclaveClient {
5
+ constructor({
6
+ userManagementClient,
7
+ retrieveJwt,
8
+ persistJwt,
9
+ retrieveRefreshJwt,
10
+ persistRefreshJwt
11
+ }) {
12
+ this.enclavePublicKey = null;
13
+ this.frontendKeyPair = null;
14
+ this.userManagementClient = userManagementClient;
15
+ this.retrieveJwt = retrieveJwt;
16
+ this.persistJwt = persistJwt;
17
+ this.retrieveRefreshJwt = retrieveRefreshJwt;
18
+ this.persistRefreshJwt = persistRefreshJwt;
19
+ }
20
+ refreshJwt() {
21
+ return __async(this, null, function* () {
22
+ const frontendKeyPair = yield this.generateFrontendKeyPair();
23
+ const responsePublicKeyPEM = yield this.exportPublicKeyToPEM(frontendKeyPair.publicKey);
24
+ const payload = {
25
+ refreshJwt: this.retrieveRefreshJwt(),
26
+ responsePublicKey: responsePublicKeyPEM
27
+ };
28
+ const encryptedPayload = yield this.encryptForEnclave(JSON.stringify(payload));
29
+ const response = yield this.userManagementClient.refreshEnclaveJwt(JSON.stringify(encryptedPayload));
30
+ const decryptedResponse = yield this.decryptForFrontend(JSON.parse(response.payload));
31
+ this.persistJwt(decryptedResponse.jwt);
32
+ this.persistRefreshJwt(decryptedResponse.refreshJwt);
33
+ });
34
+ }
35
+ withJwtRefreshRetry(fn) {
36
+ return __async(this, null, function* () {
37
+ try {
38
+ return yield fn();
39
+ } catch (error) {
40
+ yield this.refreshJwt();
41
+ return yield fn();
42
+ }
43
+ });
44
+ }
45
+ issueEnclaveJwt() {
46
+ return __async(this, null, function* () {
47
+ const frontendKeyPair = yield this.generateFrontendKeyPair();
48
+ const responsePublicKeyPEM = yield this.exportPublicKeyToPEM(frontendKeyPair.publicKey);
49
+ const payload = {
50
+ responsePublicKey: responsePublicKeyPEM
51
+ };
52
+ const encryptedPayload = yield this.encryptForEnclave(JSON.stringify(payload));
53
+ const response = yield this.userManagementClient.issueEnclaveJwt(JSON.stringify(encryptedPayload));
54
+ const decryptedResponse = yield this.decryptForFrontend(JSON.parse(response));
55
+ this.persistJwt(decryptedResponse.jwt);
56
+ });
57
+ }
58
+ /**
59
+ * Generate a P-256 keypair for the frontend to receive encrypted responses
60
+ */
61
+ generateFrontendKeyPair() {
62
+ return __async(this, null, function* () {
63
+ if (this.frontendKeyPair) {
64
+ return this.frontendKeyPair;
65
+ }
66
+ this.frontendKeyPair = yield crypto.subtle.generateKey({ name: "ECDH", namedCurve: "P-256" }, true, ["deriveBits"]);
67
+ return this.frontendKeyPair;
68
+ });
69
+ }
70
+ /**
71
+ * Get the enclave's public key from the user-management service
72
+ */
73
+ getEnclavePublicKey() {
74
+ return __async(this, null, function* () {
75
+ if (this.enclavePublicKey) {
76
+ return this.enclavePublicKey;
77
+ }
78
+ const response = yield this.userManagementClient.getEnclavePublicKey();
79
+ this.enclavePublicKey = response.publicKey;
80
+ return this.enclavePublicKey;
81
+ });
82
+ }
83
+ /**
84
+ * Import a PEM-formatted public key for use with Web Crypto API
85
+ */
86
+ importPublicKeyFromPEM(pemString) {
87
+ return __async(this, null, function* () {
88
+ const pemContents = pemString.replace("-----BEGIN PUBLIC KEY-----", "").replace("-----END PUBLIC KEY-----", "").replace(/\s/g, "");
89
+ const keyData = Uint8Array.from(atob(pemContents), (c) => c.charCodeAt(0));
90
+ return yield crypto.subtle.importKey("spki", keyData, { name: "ECDH", namedCurve: "P-256" }, false, []);
91
+ });
92
+ }
93
+ /**
94
+ * Export a public key to PEM format
95
+ */
96
+ exportPublicKeyToPEM(publicKey) {
97
+ return __async(this, null, function* () {
98
+ const exported = yield crypto.subtle.exportKey("spki", publicKey);
99
+ const exportedAsBase64 = btoa(String.fromCharCode(...new Uint8Array(exported)));
100
+ return `-----BEGIN PUBLIC KEY-----
101
+ ${exportedAsBase64}
102
+ -----END PUBLIC KEY-----`;
103
+ });
104
+ }
105
+ /**
106
+ * Encrypt data using P-256 ECIES for the enclave
107
+ */
108
+ encryptForEnclave(plaintext) {
109
+ return __async(this, null, function* () {
110
+ const enclavePublicKeyPEM = yield this.getEnclavePublicKey();
111
+ const enclavePublicKey = yield this.importPublicKeyFromPEM(enclavePublicKeyPEM);
112
+ const ephemeralKeyPair = yield crypto.subtle.generateKey({ name: "ECDH", namedCurve: "P-256" }, true, ["deriveBits"]);
113
+ const sharedSecretBits = yield crypto.subtle.deriveBits(
114
+ { name: "ECDH", public: enclavePublicKey },
115
+ ephemeralKeyPair.privateKey,
116
+ 256
117
+ // 32 bytes = 256 bits
118
+ );
119
+ const encryptionKeyBuffer = yield crypto.subtle.digest("SHA-256", sharedSecretBits);
120
+ const encryptionKey = yield crypto.subtle.importKey("raw", encryptionKeyBuffer, { name: "AES-GCM" }, false, ["encrypt"]);
121
+ const iv = crypto.getRandomValues(new Uint8Array(12));
122
+ const encrypted = yield crypto.subtle.encrypt(
123
+ { name: "AES-GCM", iv },
124
+ encryptionKey,
125
+ new TextEncoder().encode(plaintext)
126
+ );
127
+ const encryptedArray = new Uint8Array(encrypted);
128
+ const combined = new Uint8Array(iv.length + encryptedArray.length);
129
+ combined.set(iv);
130
+ combined.set(encryptedArray, iv.length);
131
+ const ephemeralPublicKeyBuffer = yield crypto.subtle.exportKey("spki", ephemeralKeyPair.publicKey);
132
+ return {
133
+ encryptedData: btoa(String.fromCharCode(...combined)),
134
+ keyId: "",
135
+ // Will be set by the enclave
136
+ algorithm: "ECIES-P256-AES256-SHA256",
137
+ ephemeral: btoa(String.fromCharCode(...new Uint8Array(ephemeralPublicKeyBuffer)))
138
+ };
139
+ });
140
+ }
141
+ /**
142
+ * Decrypt response encrypted for the frontend
143
+ */
144
+ decryptForFrontend(encryptedPayload) {
145
+ return __async(this, null, function* () {
146
+ if (!this.frontendKeyPair) {
147
+ throw new Error("Frontend keypair not available");
148
+ }
149
+ const encryptedData = Uint8Array.from(atob(encryptedPayload.encryptedData), (c) => c.charCodeAt(0));
150
+ const ephemeralPublicKeyData = Uint8Array.from(atob(encryptedPayload.ephemeral), (c) => c.charCodeAt(0));
151
+ const ephemeralPublicKey = yield crypto.subtle.importKey(
152
+ "spki",
153
+ ephemeralPublicKeyData,
154
+ { name: "ECDH", namedCurve: "P-256" },
155
+ false,
156
+ []
157
+ );
158
+ const sharedSecretBits = yield crypto.subtle.deriveBits(
159
+ { name: "ECDH", public: ephemeralPublicKey },
160
+ this.frontendKeyPair.privateKey,
161
+ 256
162
+ );
163
+ const encryptionKeyBuffer = yield crypto.subtle.digest("SHA-256", sharedSecretBits);
164
+ const encryptionKey = yield crypto.subtle.importKey("raw", encryptionKeyBuffer, { name: "AES-GCM" }, false, ["decrypt"]);
165
+ const iv = encryptedData.slice(0, 12);
166
+ const ciphertext = encryptedData.slice(12);
167
+ const decrypted = yield crypto.subtle.decrypt({ name: "AES-GCM", iv }, encryptionKey, ciphertext);
168
+ return JSON.parse(new TextDecoder().decode(decrypted));
169
+ });
170
+ }
171
+ /**
172
+ * Persist key shares to the enclave
173
+ * @param shares Array of share data to persist
174
+ */
175
+ persistShares(shares) {
176
+ return __async(this, null, function* () {
177
+ const payload = {
178
+ shares,
179
+ jwt: this.retrieveJwt()
180
+ };
181
+ const encryptedPayload = yield this.encryptForEnclave(JSON.stringify(payload));
182
+ const encryptedPayloadStr = JSON.stringify(encryptedPayload);
183
+ return yield this.userManagementClient.persistEnclaveShares(encryptedPayloadStr);
184
+ });
185
+ }
186
+ /**
187
+ * Retrieve key shares from the enclave
188
+ * @param query Query parameters for finding shares (single query or array of queries)
189
+ */
190
+ retrieveShares(query) {
191
+ return __async(this, null, function* () {
192
+ yield this.issueEnclaveJwt();
193
+ const frontendKeyPair = yield this.generateFrontendKeyPair();
194
+ const responsePublicKeyPEM = yield this.exportPublicKeyToPEM(frontendKeyPair.publicKey);
195
+ const fullQuery = query.map((q) => ({
196
+ userId: q.userId
197
+ }));
198
+ const payload = {
199
+ query: fullQuery,
200
+ responsePublicKey: responsePublicKeyPEM,
201
+ jwt: this.retrieveJwt()
202
+ };
203
+ const encryptedPayload = yield this.encryptForEnclave(JSON.stringify(payload));
204
+ const encryptedPayloadStr = JSON.stringify(encryptedPayload);
205
+ const response = yield this.userManagementClient.retrieveEnclaveShares(encryptedPayloadStr);
206
+ const encryptedResponse = JSON.parse(response.payload);
207
+ const decryptedData = yield this.decryptForFrontend(encryptedResponse);
208
+ return decryptedData.shares;
209
+ });
210
+ }
211
+ retrieveSharesWithRetry(query) {
212
+ return __async(this, null, function* () {
213
+ return yield this.withJwtRefreshRetry(() => __async(this, null, function* () {
214
+ return this.retrieveShares(query);
215
+ }));
216
+ });
217
+ }
218
+ persistSharesWithRetry(shares) {
219
+ return __async(this, null, function* () {
220
+ return yield this.persistShares(shares);
221
+ });
222
+ }
223
+ }
224
+ export {
225
+ EnclaveClient
226
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  __async,
3
3
  __spreadValues
4
- } from "../chunk-7B52C2XE.js";
4
+ } from "../chunk-W5CT3TVS.js";
5
5
  import { EncryptorType, KeyShareType } from "@getpara/user-management-client";
6
6
  import { KeyContainer } from "./KeyContainer.js";
7
7
  function sendRecoveryForShare(_0) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __async
3
- } from "../chunk-7B52C2XE.js";
3
+ } from "../chunk-W5CT3TVS.js";
4
4
  import { EncryptorType, KeyShareType } from "@getpara/user-management-client";
5
5
  import { encryptWithDerivedPublicKey } from "../cryptography/utils.js";
6
6
  import { sendRecoveryForShare } from "./recovery.js";
@@ -13,8 +13,23 @@ function distributeNewShare(_0) {
13
13
  ignoreRedistributingBackupEncryptedShare = false,
14
14
  emailProps = {},
15
15
  partnerId,
16
- protocolId
16
+ protocolId,
17
+ isEnclaveUser,
18
+ walletScheme
17
19
  }) {
20
+ if (isEnclaveUser) {
21
+ yield ctx.enclaveClient.persistSharesWithRetry([
22
+ {
23
+ userId,
24
+ walletId,
25
+ walletScheme,
26
+ signer: userShare,
27
+ partnerId,
28
+ protocolId
29
+ }
30
+ ]);
31
+ return "";
32
+ }
18
33
  const publicKeysRes = yield ctx.client.getSessionPublicKeys(userId);
19
34
  const biometricEncryptedShares = publicKeysRes.data.keys.map((key) => {
20
35
  if (!key.publicKey) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __async
3
- } from "../chunk-7B52C2XE.js";
3
+ } from "../chunk-W5CT3TVS.js";
4
4
  import { Encrypt as ECIESEncrypt, Decrypt as ECIESDecrypt } from "@celo/utils/lib/ecies.js";
5
5
  import { Buffer } from "buffer";
6
6
  import * as eutil from "@ethereumjs/util";
@@ -0,0 +1,11 @@
1
+ import "../chunk-W5CT3TVS.js";
2
+ var AccountLinkError = /* @__PURE__ */ ((AccountLinkError2) => {
3
+ AccountLinkError2["NotAuthenticated"] = "No user is currently authenticated";
4
+ AccountLinkError2["Conflict"] = "Account already linked";
5
+ AccountLinkError2["Canceled"] = "Account linking was canceled";
6
+ AccountLinkError2["Unknown"] = "An unknown error occurred";
7
+ return AccountLinkError2;
8
+ })(AccountLinkError || {});
9
+ export {
10
+ AccountLinkError
11
+ };
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  var Environment = /* @__PURE__ */ ((Environment2) => {
3
3
  Environment2["DEV"] = "DEV";
4
4
  Environment2["SANDBOX"] = "SANDBOX";
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  const PARA_CORE_METHODS = [
3
3
  "getAuthInfo",
4
4
  "signUpOrLogIn",
@@ -45,8 +45,24 @@ const PARA_CORE_METHODS = [
45
45
  "signMessage",
46
46
  "signTransaction",
47
47
  "initiateOnRampTransaction",
48
- "getWalletBalance"
48
+ "getWalletBalance",
49
+ "issueJwt",
50
+ "getLinkedAccounts",
51
+ "accountLinkInProgress"
52
+ ];
53
+ const PARA_INTERNAL_METHODS = [
54
+ "linkAccount",
55
+ "unlinkAccount",
56
+ "verifyEmailOrPhoneLink",
57
+ "verifyOAuthLink",
58
+ "verifyFarcasterLink",
59
+ "verifyTelegramLink",
60
+ "verifyExternalWalletLink",
61
+ "accountLinkInProgress",
62
+ "prepareLogin",
63
+ "sendLoginCode"
49
64
  ];
50
65
  export {
51
- PARA_CORE_METHODS
66
+ PARA_CORE_METHODS,
67
+ PARA_INTERNAL_METHODS
52
68
  };
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  const EVENT_PREFIX = "para";
3
3
  var ParaEvent = ((ParaEvent2) => {
4
4
  ParaEvent2["LOGIN_EVENT"] = `${EVENT_PREFIX}Login`;
@@ -12,6 +12,8 @@ var ParaEvent = ((ParaEvent2) => {
12
12
  ParaEvent2["WALLET_CREATED"] = `${EVENT_PREFIX}WalletCreated`;
13
13
  ParaEvent2["PREGEN_WALLET_CLAIMED"] = `${EVENT_PREFIX}PregenWalletClaimed`;
14
14
  ParaEvent2["GUEST_WALLETS_CREATED"] = `${EVENT_PREFIX}GuestWalletsCreated`;
15
+ ParaEvent2["ASSET_TRANSFERRED"] = `${EVENT_PREFIX}AssetTransferred`;
16
+ ParaEvent2["ONRAMP_TRANSACTION_COMPLETE"] = `${EVENT_PREFIX}OnRampTransactionComplete`;
15
17
  return ParaEvent2;
16
18
  })(ParaEvent || {});
17
19
  export {
@@ -1,22 +1,7 @@
1
- import "../chunk-7B52C2XE.js";
1
+ export * from "./auth.js";
2
2
  export * from "./config.js";
3
3
  export * from "./coreApi.js";
4
4
  export * from "./wallet.js";
5
5
  export * from "./methods.js";
6
- export * from "./theme.js";
7
- export * from "./onRamps.js";
8
6
  export * from "./popup.js";
9
- export * from "./recovery.js";
10
7
  export * from "./events.js";
11
- import {
12
- Network,
13
- OnRampAsset,
14
- OnRampProvider,
15
- OnRampPurchaseStatus
16
- } from "@getpara/user-management-client";
17
- export {
18
- Network,
19
- OnRampAsset,
20
- OnRampProvider,
21
- OnRampPurchaseStatus
22
- };
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  var PopupType = /* @__PURE__ */ ((PopupType2) => {
3
3
  PopupType2["SIGN_TRANSACTION_REVIEW"] = "SIGN_TRANSACTION_REVIEW";
4
4
  PopupType2["SIGN_MESSAGE_REVIEW"] = "SIGN_MESSAGE_REVIEW";
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  var PregenIdentifierType = /* @__PURE__ */ ((PregenIdentifierType2) => {
3
3
  PregenIdentifierType2["EMAIL"] = "EMAIL";
4
4
  PregenIdentifierType2["PHONE"] = "PHONE";
@@ -1,4 +1,4 @@
1
- import "../chunk-7B52C2XE.js";
1
+ import "../chunk-W5CT3TVS.js";
2
2
  function autoBind(instance) {
3
3
  let proto = instance;
4
4
  while (proto && proto !== Object.prototype) {
@@ -0,0 +1,86 @@
1
+ import "../chunk-W5CT3TVS.js";
2
+ import { NETWORKS } from "@getpara/user-management-client";
3
+ function validateBalancesConfig(obj) {
4
+ if (!obj || typeof obj !== "object") {
5
+ return false;
6
+ }
7
+ if (!obj.displayType || obj.displayType !== "AGGREGATED" && obj.displayType !== "CUSTOM_ASSET") {
8
+ return false;
9
+ }
10
+ if (obj.displayType === "AGGREGATED") {
11
+ if (obj.excludeStandardAssets !== void 0 && typeof obj.excludeStandardAssets !== "boolean") {
12
+ return false;
13
+ }
14
+ if (obj.additionalAssets !== void 0) {
15
+ if (!Array.isArray(obj.additionalAssets)) {
16
+ return false;
17
+ }
18
+ for (const asset of obj.additionalAssets) {
19
+ if (!validateCustomAsset(asset)) {
20
+ return false;
21
+ }
22
+ const hasPriceUrl = typeof asset.priceUrl === "string" && asset.priceUrl.trim();
23
+ const hasPrice = asset.price && typeof asset.price === "object" && typeof asset.price.value === "number" && asset.price.value > 0 && typeof asset.price.currency === "string" && asset.price.currency.trim();
24
+ if (!hasPriceUrl && !hasPrice) {
25
+ return false;
26
+ }
27
+ if (hasPriceUrl && hasPrice) {
28
+ return false;
29
+ }
30
+ }
31
+ }
32
+ return true;
33
+ }
34
+ if (obj.displayType === "CUSTOM_ASSET") {
35
+ if (!obj.asset) {
36
+ return false;
37
+ }
38
+ if (!validateCustomAsset(obj.asset)) {
39
+ return false;
40
+ }
41
+ const hasPriceUrl = typeof obj.asset.priceUrl === "string" && obj.asset.priceUrl.trim();
42
+ const hasPrice = obj.asset.price && typeof obj.asset.price === "object" && typeof obj.asset.price.value === "number" && obj.asset.price.value > 0 && typeof obj.asset.price.currency === "string" && obj.asset.price.currency.trim();
43
+ if (hasPriceUrl && hasPrice) {
44
+ return false;
45
+ }
46
+ return true;
47
+ }
48
+ return false;
49
+ }
50
+ function validateCustomAsset(obj) {
51
+ if (!obj || typeof obj !== "object") {
52
+ return false;
53
+ }
54
+ if (typeof obj.name !== "string" || !obj.name.trim() || typeof obj.symbol !== "string" || !obj.symbol.trim()) {
55
+ return false;
56
+ }
57
+ if (!Array.isArray(obj.implementations) || obj.implementations.length === 0) {
58
+ return false;
59
+ }
60
+ for (const network of obj.implementations) {
61
+ if (!network || typeof network !== "object") {
62
+ return false;
63
+ }
64
+ if (typeof network.network === "string") {
65
+ if (!NETWORKS.includes(network.network)) {
66
+ return false;
67
+ }
68
+ if (typeof network.contractAddress !== "string" || !network.contractAddress.trim()) {
69
+ return false;
70
+ }
71
+ } else if (typeof network.network === "object") {
72
+ if (typeof network.network.name !== "string" || !network.network.name.trim() || typeof network.network.rpcUrl !== "string" || !network.network.rpcUrl.trim() || typeof network.network.evmChainId !== "string" || !network.network.evmChainId.trim()) {
73
+ return false;
74
+ }
75
+ if (network.contractAddress !== void 0 && (typeof network.contractAddress !== "string" || !network.contractAddress.trim())) {
76
+ return false;
77
+ }
78
+ } else {
79
+ return false;
80
+ }
81
+ }
82
+ return true;
83
+ }
84
+ export {
85
+ validateBalancesConfig
86
+ };