@moon-x/core 0.2.0 → 0.4.0

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 (40) hide show
  1. package/README.md +2 -2
  2. package/dist/{chunk-CDT4MC7S.mjs → chunk-6LTEG7VN.mjs} +0 -39
  3. package/dist/{chunk-SOKLPX7V.mjs → chunk-VVL65GIB.mjs} +10 -0
  4. package/dist/index.d.mts +2 -2
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.js +10 -0
  7. package/dist/index.mjs +1 -1
  8. package/dist/interfaces-cdKh3sLA.d.mts +192 -0
  9. package/dist/interfaces-pNTEOKaK.d.ts +192 -0
  10. package/dist/lib/index.d.mts +1 -1
  11. package/dist/lib/index.d.ts +1 -1
  12. package/dist/lib/index.js +2 -47
  13. package/dist/lib/index.mjs +3 -15
  14. package/dist/passkey-cache-WnDFQ-v4.d.mts +26 -0
  15. package/dist/passkey-cache-WnDFQ-v4.d.ts +26 -0
  16. package/dist/{post-message-C_99BCBh.d.mts → post-message-CmgAfkOS.d.mts} +2 -0
  17. package/dist/{post-message-C_99BCBh.d.ts → post-message-CmgAfkOS.d.ts} +2 -0
  18. package/dist/react/index.d.mts +1 -0
  19. package/dist/react/index.d.ts +1 -0
  20. package/dist/react/index.js +2 -1
  21. package/dist/react/index.mjs +3 -2
  22. package/dist/sdk/index.d.mts +52 -21
  23. package/dist/sdk/index.d.ts +52 -21
  24. package/dist/sdk/index.js +252 -102
  25. package/dist/sdk/index.mjs +241 -80
  26. package/dist/types/index.d.mts +19 -12
  27. package/dist/types/index.d.ts +19 -12
  28. package/dist/utils/index.d.mts +1 -1
  29. package/dist/utils/index.d.ts +1 -1
  30. package/dist/utils/index.js +10 -0
  31. package/dist/utils/index.mjs +1 -1
  32. package/dist/web/index.d.mts +2 -2
  33. package/dist/web/index.d.ts +2 -2
  34. package/dist/web/index.js +50 -114
  35. package/dist/web/index.mjs +51 -58
  36. package/package.json +6 -2
  37. package/dist/interfaces-9k0eKCc4.d.ts +0 -120
  38. package/dist/interfaces-fNhwnCeY.d.mts +0 -120
  39. package/dist/passkey-cache-B9PT3AWX.d.mts +0 -47
  40. package/dist/passkey-cache-B9PT3AWX.d.ts +0 -47
@@ -1,20 +1,16 @@
1
1
  import {
2
2
  PostMessageMethod,
3
3
  PostMessageType
4
- } from "../chunk-SOKLPX7V.mjs";
4
+ } from "../chunk-VVL65GIB.mjs";
5
5
  import {
6
6
  arrayLikeToBytes,
7
7
  authState,
8
8
  broadcastEthereumRaw,
9
9
  broadcastSolanaSigned,
10
10
  bs58ToBytes,
11
- clearParentAssertCache,
12
- readParentAssertCache,
13
11
  serializeEthereumTransaction,
14
- toB64url,
15
- withClearOnFailure,
16
- writeParentAssertCache
17
- } from "../chunk-CDT4MC7S.mjs";
12
+ toB64url
13
+ } from "../chunk-6LTEG7VN.mjs";
18
14
  import "../chunk-GQKIA37O.mjs";
19
15
 
20
16
  // src/sdk/parent-passkey-assert.ts
@@ -22,12 +18,8 @@ var assertPasskeyInParent = async ({
22
18
  transport,
23
19
  passkey,
24
20
  publishableKey,
25
- requireFreshAssertion = false
21
+ validateCredentialInAllowList = false
26
22
  }) => {
27
- if (!requireFreshAssertion) {
28
- const cached = readParentAssertCache();
29
- if (cached) return cached;
30
- }
31
23
  const dekInfo = await transport.send(
32
24
  PostMessageType.AUTH,
33
25
  PostMessageMethod.GET_DEK_INFO,
@@ -48,27 +40,104 @@ var assertPasskeyInParent = async ({
48
40
  challenge,
49
41
  allowCredentials: []
50
42
  });
51
- const result = {
43
+ if (validateCredentialInAllowList && !allowList.includes(credential.rawIdB64url)) {
44
+ throw new Error("unknown_passkey_for_this_account");
45
+ }
46
+ return {
52
47
  userHandleB64url: credential.userHandleB64url,
53
48
  credentialIdB64url: credential.rawIdB64url
54
49
  };
55
- writeParentAssertCache(result);
56
- return result;
50
+ };
51
+
52
+ // src/sdk/get-presence-token.ts
53
+ var getPresenceToken = async ({
54
+ transport,
55
+ passkey,
56
+ publishableKey,
57
+ relyingPartyOrigin
58
+ }) => {
59
+ const { token, optionsJSON } = await transport.send(
60
+ PostMessageType.AUTH,
61
+ PostMessageMethod.PASSKEY_PRESENCE_BEGIN,
62
+ { publishableKey, relyingPartyOrigin }
63
+ );
64
+ const response = await passkey.assertForServer({ optionsJSON });
65
+ const verify = await transport.send(
66
+ PostMessageType.AUTH,
67
+ PostMessageMethod.PASSKEY_PRESENCE_VERIFY,
68
+ {
69
+ publishableKey,
70
+ relyingPartyOrigin,
71
+ token,
72
+ response
73
+ }
74
+ );
75
+ return {
76
+ presenceToken: verify.presence_token,
77
+ expiresAt: verify.expires_at
78
+ };
79
+ };
80
+
81
+ // src/sdk/get-internal-presence-tokens.ts
82
+ var getInternalPresenceTokens = async ({
83
+ transport,
84
+ passkey,
85
+ publishableKey,
86
+ relyingPartyOrigin,
87
+ scopes
88
+ }) => {
89
+ const { token, optionsJSON } = await transport.send(
90
+ PostMessageType.AUTH,
91
+ PostMessageMethod.PASSKEY_PRESENCE_BEGIN,
92
+ { publishableKey, relyingPartyOrigin }
93
+ );
94
+ const { response, userHandleB64url, credentialIdB64url } = await passkey.assertForInternalPresence({ optionsJSON });
95
+ const verify = await transport.send(
96
+ PostMessageType.AUTH,
97
+ PostMessageMethod.PASSKEY_PRESENCE_VERIFY,
98
+ {
99
+ publishableKey,
100
+ relyingPartyOrigin,
101
+ token,
102
+ response,
103
+ purpose: "internal",
104
+ scopes
105
+ }
106
+ );
107
+ const out = {};
108
+ for (const [scope, t] of Object.entries(verify.tokens ?? {})) {
109
+ out[scope] = { token: t.token, expiresAt: t.expires_at };
110
+ }
111
+ return {
112
+ tokens: out,
113
+ userHandleB64url,
114
+ credentialIdB64url
115
+ };
116
+ };
117
+ var flattenPresenceTokens = (result) => {
118
+ const out = {};
119
+ for (const [scope, t] of Object.entries(result.tokens)) {
120
+ out[scope] = t.token;
121
+ }
122
+ return out;
57
123
  };
58
124
 
59
125
  // src/sdk/headless-ethereum.ts
126
+ var SCOPES_SIGN = ["keyshare_read", "sign"];
60
127
  var getHeadlessEthereumMethods = ({
61
128
  transport,
62
129
  passkey,
63
- publishableKey
130
+ publishableKey,
131
+ relyingPartyOrigin
64
132
  }) => ({
65
- signEthereumMessageHeadless: async (params) => withClearOnFailure(async () => {
133
+ signEthereumMessageHeadless: async (params) => {
66
134
  if (!transport.isReady()) throw new Error("SDK not ready");
67
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
135
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
68
136
  transport,
69
137
  passkey,
70
138
  publishableKey,
71
- requireFreshAssertion: params.requireFreshAssertion
139
+ relyingPartyOrigin,
140
+ scopes: SCOPES_SIGN
72
141
  });
73
142
  return transport.send(
74
143
  PostMessageType.WALLET,
@@ -79,17 +148,23 @@ var getHeadlessEthereumMethods = ({
79
148
  wallet: params.wallet,
80
149
  uiOptions: params.options?.uiOptions,
81
150
  userHandleB64url,
82
- credentialIdB64url
151
+ credentialIdB64url,
152
+ presenceTokens: flattenPresenceTokens({
153
+ tokens,
154
+ userHandleB64url,
155
+ credentialIdB64url
156
+ })
83
157
  }
84
158
  );
85
- }),
86
- signEthereumTransactionHeadless: async (params) => withClearOnFailure(async () => {
159
+ },
160
+ signEthereumTransactionHeadless: async (params) => {
87
161
  if (!transport.isReady()) throw new Error("SDK not ready");
88
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
162
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
89
163
  transport,
90
164
  passkey,
91
165
  publishableKey,
92
- requireFreshAssertion: params.requireFreshAssertion
166
+ relyingPartyOrigin,
167
+ scopes: SCOPES_SIGN
93
168
  });
94
169
  return transport.send(
95
170
  PostMessageType.WALLET,
@@ -101,17 +176,23 @@ var getHeadlessEthereumMethods = ({
101
176
  wallet: params.wallet,
102
177
  options: params.options,
103
178
  userHandleB64url,
104
- credentialIdB64url
179
+ credentialIdB64url,
180
+ presenceTokens: flattenPresenceTokens({
181
+ tokens,
182
+ userHandleB64url,
183
+ credentialIdB64url
184
+ })
105
185
  }
106
186
  );
107
- }),
108
- signEthereumTypedDataHeadless: async (params) => withClearOnFailure(async () => {
187
+ },
188
+ signEthereumTypedDataHeadless: async (params) => {
109
189
  if (!transport.isReady()) throw new Error("SDK not ready");
110
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
190
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
111
191
  transport,
112
192
  passkey,
113
193
  publishableKey,
114
- requireFreshAssertion: params.requireFreshAssertion
194
+ relyingPartyOrigin,
195
+ scopes: SCOPES_SIGN
115
196
  });
116
197
  return transport.send(
117
198
  PostMessageType.WALLET,
@@ -125,17 +206,23 @@ var getHeadlessEthereumMethods = ({
125
206
  wallet: params.wallet,
126
207
  options: params.options,
127
208
  userHandleB64url,
128
- credentialIdB64url
209
+ credentialIdB64url,
210
+ presenceTokens: flattenPresenceTokens({
211
+ tokens,
212
+ userHandleB64url,
213
+ credentialIdB64url
214
+ })
129
215
  }
130
216
  );
131
- }),
132
- signEthereumHashHeadless: async (params) => withClearOnFailure(async () => {
217
+ },
218
+ signEthereumHashHeadless: async (params) => {
133
219
  if (!transport.isReady()) throw new Error("SDK not ready");
134
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
220
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
135
221
  transport,
136
222
  passkey,
137
223
  publishableKey,
138
- requireFreshAssertion: params.requireFreshAssertion
224
+ relyingPartyOrigin,
225
+ scopes: SCOPES_SIGN
139
226
  });
140
227
  return transport.send(
141
228
  PostMessageType.WALLET,
@@ -146,17 +233,23 @@ var getHeadlessEthereumMethods = ({
146
233
  wallet: params.wallet,
147
234
  options: params.options,
148
235
  userHandleB64url,
149
- credentialIdB64url
236
+ credentialIdB64url,
237
+ presenceTokens: flattenPresenceTokens({
238
+ tokens,
239
+ userHandleB64url,
240
+ credentialIdB64url
241
+ })
150
242
  }
151
243
  );
152
- }),
153
- signEthereum7702AuthorizationHeadless: async (params) => withClearOnFailure(async () => {
244
+ },
245
+ signEthereum7702AuthorizationHeadless: async (params) => {
154
246
  if (!transport.isReady()) throw new Error("SDK not ready");
155
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
247
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
156
248
  transport,
157
249
  passkey,
158
250
  publishableKey,
159
- requireFreshAssertion: params.requireFreshAssertion
251
+ relyingPartyOrigin,
252
+ scopes: SCOPES_SIGN
160
253
  });
161
254
  return transport.send(
162
255
  PostMessageType.WALLET,
@@ -170,17 +263,23 @@ var getHeadlessEthereumMethods = ({
170
263
  wallet: params.wallet,
171
264
  options: params.options,
172
265
  userHandleB64url,
173
- credentialIdB64url
266
+ credentialIdB64url,
267
+ presenceTokens: flattenPresenceTokens({
268
+ tokens,
269
+ userHandleB64url,
270
+ credentialIdB64url
271
+ })
174
272
  }
175
273
  );
176
- }),
177
- sendEthereumTransactionHeadless: async (params) => withClearOnFailure(async () => {
274
+ },
275
+ sendEthereumTransactionHeadless: async (params) => {
178
276
  if (!transport.isReady()) throw new Error("SDK not ready");
179
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
277
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
180
278
  transport,
181
279
  passkey,
182
280
  publishableKey,
183
- requireFreshAssertion: params.requireFreshAssertion
281
+ relyingPartyOrigin,
282
+ scopes: SCOPES_SIGN
184
283
  });
185
284
  const serializedTransaction = await serializeEthereumTransaction(
186
285
  params.transaction
@@ -194,7 +293,12 @@ var getHeadlessEthereumMethods = ({
194
293
  wallet: params.wallet,
195
294
  options: params.options,
196
295
  userHandleB64url,
197
- credentialIdB64url
296
+ credentialIdB64url,
297
+ presenceTokens: flattenPresenceTokens({
298
+ tokens,
299
+ userHandleB64url,
300
+ credentialIdB64url
301
+ })
198
302
  }
199
303
  );
200
304
  if (!signed.serializedSigned) {
@@ -207,7 +311,7 @@ var getHeadlessEthereumMethods = ({
207
311
  signed.serializedSigned
208
312
  );
209
313
  return { hash };
210
- }),
314
+ },
211
315
  getEthereumBalance: async (params) => {
212
316
  if (!transport.isReady()) throw new Error("SDK not ready");
213
317
  return transport.send(
@@ -243,18 +347,21 @@ var getHeadlessEthereumMethods = ({
243
347
  });
244
348
 
245
349
  // src/sdk/headless-solana.ts
350
+ var SCOPES_SIGN2 = ["keyshare_read", "sign"];
246
351
  var getHeadlessSolanaMethods = ({
247
352
  transport,
248
353
  passkey,
249
- publishableKey
354
+ publishableKey,
355
+ relyingPartyOrigin
250
356
  }) => ({
251
- signSolanaMessageHeadless: async (params) => withClearOnFailure(async () => {
357
+ signSolanaMessageHeadless: async (params) => {
252
358
  if (!transport.isReady()) throw new Error("SDK not ready");
253
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
359
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
254
360
  transport,
255
361
  passkey,
256
362
  publishableKey,
257
- requireFreshAssertion: params.requireFreshAssertion
363
+ relyingPartyOrigin,
364
+ scopes: SCOPES_SIGN2
258
365
  });
259
366
  const { signature } = await transport.send(
260
367
  PostMessageType.WALLET,
@@ -265,18 +372,24 @@ var getHeadlessSolanaMethods = ({
265
372
  wallet: params.wallet,
266
373
  uiOptions: params.options?.uiOptions,
267
374
  userHandleB64url,
268
- credentialIdB64url
375
+ credentialIdB64url,
376
+ presenceTokens: flattenPresenceTokens({
377
+ tokens,
378
+ userHandleB64url,
379
+ credentialIdB64url
380
+ })
269
381
  }
270
382
  );
271
383
  return { signature: arrayLikeToBytes(signature) };
272
- }),
273
- signSolanaTransactionHeadless: async (params) => withClearOnFailure(async () => {
384
+ },
385
+ signSolanaTransactionHeadless: async (params) => {
274
386
  if (!transport.isReady()) throw new Error("SDK not ready");
275
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
387
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
276
388
  transport,
277
389
  passkey,
278
390
  publishableKey,
279
- requireFreshAssertion: params.requireFreshAssertion
391
+ relyingPartyOrigin,
392
+ scopes: SCOPES_SIGN2
280
393
  });
281
394
  const { signedTransaction } = await transport.send(
282
395
  PostMessageType.WALLET,
@@ -287,18 +400,24 @@ var getHeadlessSolanaMethods = ({
287
400
  wallet: params.wallet,
288
401
  options: params.options,
289
402
  userHandleB64url,
290
- credentialIdB64url
403
+ credentialIdB64url,
404
+ presenceTokens: flattenPresenceTokens({
405
+ tokens,
406
+ userHandleB64url,
407
+ credentialIdB64url
408
+ })
291
409
  }
292
410
  );
293
411
  return { signedTransaction: await bs58ToBytes(signedTransaction) };
294
- }),
295
- sendSolanaTransactionHeadless: async (params) => withClearOnFailure(async () => {
412
+ },
413
+ sendSolanaTransactionHeadless: async (params) => {
296
414
  if (!transport.isReady()) throw new Error("SDK not ready");
297
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
415
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
298
416
  transport,
299
417
  passkey,
300
418
  publishableKey,
301
- requireFreshAssertion: params.requireFreshAssertion
419
+ relyingPartyOrigin,
420
+ scopes: SCOPES_SIGN2
302
421
  });
303
422
  const { signedTransaction } = await transport.send(
304
423
  PostMessageType.WALLET,
@@ -309,7 +428,12 @@ var getHeadlessSolanaMethods = ({
309
428
  wallet: params.wallet,
310
429
  options: params.options,
311
430
  userHandleB64url,
312
- credentialIdB64url
431
+ credentialIdB64url,
432
+ presenceTokens: flattenPresenceTokens({
433
+ tokens,
434
+ userHandleB64url,
435
+ credentialIdB64url
436
+ })
313
437
  }
314
438
  );
315
439
  const broadcastSignature = await broadcastSolanaSigned(
@@ -317,7 +441,7 @@ var getHeadlessSolanaMethods = ({
317
441
  signedTransaction
318
442
  );
319
443
  return { signature: await bs58ToBytes(broadcastSignature) };
320
- }),
444
+ },
321
445
  getSolanaBalance: async (params) => {
322
446
  if (!transport.isReady()) throw new Error("SDK not ready");
323
447
  return transport.send(
@@ -340,13 +464,17 @@ var getHeadlessSolanaMethods = ({
340
464
  var getHeadlessAuthenticationMethods = ({
341
465
  transport,
342
466
  publishableKey,
343
- emailConfig,
344
467
  setIsAuthenticated,
345
468
  setUser
346
469
  }) => ({
347
- /** Send a one-time passcode to the user's email address. */
470
+ /**
471
+ * Send a one-time passcode to the user's email address. Returns the
472
+ * server's response — most importantly `expires_at` (unix seconds),
473
+ * which the UI uses to render a countdown that cannot drift from the
474
+ * authoritative server-side TTL.
475
+ */
348
476
  sendCode: async (params) => {
349
- await transport.send(
477
+ const response = await transport.send(
350
478
  PostMessageType.AUTH,
351
479
  PostMessageMethod.LOGIN_CREATE,
352
480
  {
@@ -357,6 +485,7 @@ var getHeadlessAuthenticationMethods = ({
357
485
  );
358
486
  authState.clearEmail();
359
487
  authState.setEmail(params.email);
488
+ return response;
360
489
  },
361
490
  /**
362
491
  * Verify the OTP and complete the login. The iframe-app handles
@@ -372,8 +501,7 @@ var getHeadlessAuthenticationMethods = ({
372
501
  {
373
502
  email,
374
503
  code: params.code,
375
- publishableKey,
376
- expiresIn: emailConfig?.expiresIn
504
+ publishableKey
377
505
  }
378
506
  );
379
507
  authState.clearEmail();
@@ -425,11 +553,15 @@ var getHeadlessAuthenticationMethods = ({
425
553
  });
426
554
 
427
555
  // src/sdk/headless-general.ts
556
+ var SCOPES_CREATE_WALLET = ["dek_bootstrap", "keyshare_write"];
557
+ var SCOPES_IMPORT_KEY = ["dek_bootstrap", "keyshare_write"];
558
+ var SCOPES_REMOVE_PASSKEY = ["passkey_remove"];
428
559
  var getHeadlessGeneralMethods = ({
429
560
  transport,
430
561
  passkey,
431
562
  storage,
432
563
  publishableKey,
564
+ relyingPartyOrigin,
433
565
  setIsAuthenticated,
434
566
  setUser
435
567
  }) => ({
@@ -439,18 +571,34 @@ var getHeadlessGeneralMethods = ({
439
571
  { publishableKey }
440
572
  ),
441
573
  removePasskey: async (credentialIdB64url) => {
574
+ const { tokens, userHandleB64url, credentialIdB64url: assertedCredId } = await getInternalPresenceTokens({
575
+ transport,
576
+ passkey,
577
+ publishableKey,
578
+ relyingPartyOrigin,
579
+ scopes: SCOPES_REMOVE_PASSKEY
580
+ });
442
581
  await transport.send(
443
582
  PostMessageType.AUTH,
444
583
  PostMessageMethod.REMOVE_PASSKEY,
445
- { publishableKey, credentialIdB64url }
584
+ {
585
+ publishableKey,
586
+ credentialIdB64url,
587
+ presenceTokens: flattenPresenceTokens({
588
+ tokens,
589
+ userHandleB64url,
590
+ credentialIdB64url: assertedCredId
591
+ })
592
+ }
446
593
  );
447
594
  },
448
- createWallet: (walletType, options) => withClearOnFailure(async () => {
449
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
595
+ createWallet: async (walletType, options) => {
596
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
450
597
  transport,
451
598
  passkey,
452
599
  publishableKey,
453
- requireFreshAssertion: options?.requireFreshAssertion
600
+ relyingPartyOrigin,
601
+ scopes: SCOPES_CREATE_WALLET
454
602
  });
455
603
  const wallet = await transport.send(
456
604
  PostMessageType.WALLET,
@@ -460,17 +608,23 @@ var getHeadlessGeneralMethods = ({
460
608
  publishableKey,
461
609
  options,
462
610
  userHandleB64url,
463
- credentialIdB64url
611
+ credentialIdB64url,
612
+ presenceTokens: flattenPresenceTokens({
613
+ tokens,
614
+ userHandleB64url,
615
+ credentialIdB64url
616
+ })
464
617
  }
465
618
  );
466
619
  return { wallet };
467
- }),
468
- importKey: (walletType, key, options) => withClearOnFailure(async () => {
469
- const { userHandleB64url, credentialIdB64url } = await assertPasskeyInParent({
620
+ },
621
+ importKey: async (walletType, key) => {
622
+ const { userHandleB64url, credentialIdB64url, tokens } = await getInternalPresenceTokens({
470
623
  transport,
471
624
  passkey,
472
625
  publishableKey,
473
- requireFreshAssertion: options?.requireFreshAssertion
626
+ relyingPartyOrigin,
627
+ scopes: SCOPES_IMPORT_KEY
474
628
  });
475
629
  const wallet = await transport.send(
476
630
  PostMessageType.WALLET,
@@ -480,11 +634,16 @@ var getHeadlessGeneralMethods = ({
480
634
  publishableKey,
481
635
  key,
482
636
  userHandleB64url,
483
- credentialIdB64url
637
+ credentialIdB64url,
638
+ presenceTokens: flattenPresenceTokens({
639
+ tokens,
640
+ userHandleB64url,
641
+ credentialIdB64url
642
+ })
484
643
  }
485
644
  );
486
645
  return { wallet };
487
- }),
646
+ },
488
647
  getWallets: async (walletType) => {
489
648
  const { wallets } = await transport.send(
490
649
  PostMessageType.WALLET,
@@ -524,7 +683,6 @@ var getHeadlessGeneralMethods = ({
524
683
  await transport.send(PostMessageType.AUTH, PostMessageMethod.LOGOUT, {
525
684
  publishableKey
526
685
  });
527
- clearParentAssertCache();
528
686
  await storage.remove("id_token");
529
687
  if (setIsAuthenticated) setIsAuthenticated(false);
530
688
  if (setUser) setUser(null);
@@ -572,8 +730,11 @@ var getHeadlessGeneralMethods = ({
572
730
  });
573
731
  export {
574
732
  assertPasskeyInParent,
733
+ flattenPresenceTokens,
575
734
  getHeadlessAuthenticationMethods,
576
735
  getHeadlessEthereumMethods,
577
736
  getHeadlessGeneralMethods,
578
- getHeadlessSolanaMethods
737
+ getHeadlessSolanaMethods,
738
+ getInternalPresenceTokens,
739
+ getPresenceToken
579
740
  };