@cartridge/controller 0.5.9 → 0.7.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 (102) hide show
  1. package/.turbo/turbo-build$colon$deps.log +53 -115
  2. package/.turbo/turbo-build.log +54 -116
  3. package/dist/controller.cjs +860 -0
  4. package/dist/controller.cjs.map +1 -0
  5. package/dist/controller.d.cts +33 -0
  6. package/dist/controller.d.ts +4 -4
  7. package/dist/controller.js +254 -170
  8. package/dist/controller.js.map +1 -1
  9. package/dist/index.cjs +2200 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.cts +17 -0
  12. package/dist/index.d.ts +12 -6
  13. package/dist/index.js +296 -7666
  14. package/dist/index.js.map +1 -1
  15. package/dist/lookup.cjs +59 -0
  16. package/dist/lookup.cjs.map +1 -0
  17. package/dist/lookup.d.cts +4 -0
  18. package/dist/lookup.js +7 -7
  19. package/dist/lookup.js.map +1 -1
  20. package/dist/node/index.cjs +726 -0
  21. package/dist/node/index.cjs.map +1 -0
  22. package/dist/node/index.d.cts +56 -0
  23. package/dist/node/index.d.ts +56 -0
  24. package/dist/{telegram/provider.js → node/index.js} +521 -216
  25. package/dist/node/index.js.map +1 -0
  26. package/dist/policies-DD1aPjQ4.d.cts +21 -0
  27. package/dist/policies-DD1aPjQ4.d.ts +21 -0
  28. package/dist/{types-CVnDQVqD.d.ts → provider-ap1C1ypF.d.cts} +27 -10
  29. package/dist/provider-ap1C1ypF.d.ts +201 -0
  30. package/dist/session/{provider.js → index.cjs} +342 -168
  31. package/dist/session/index.cjs.map +1 -0
  32. package/dist/session/index.d.cts +38 -0
  33. package/dist/session/index.d.ts +37 -7
  34. package/dist/session/index.js +309 -161
  35. package/dist/session/index.js.map +1 -1
  36. package/package.json +49 -16
  37. package/src/controller.ts +44 -15
  38. package/src/iframe/base.ts +1 -11
  39. package/src/mutex.ts +22 -0
  40. package/src/node/account.ts +72 -0
  41. package/src/node/backend.ts +159 -0
  42. package/src/node/index.ts +4 -0
  43. package/src/node/provider.ts +178 -0
  44. package/src/node/server.ts +89 -0
  45. package/src/policies.ts +49 -0
  46. package/src/provider.ts +33 -2
  47. package/src/session/account.ts +2 -1
  48. package/src/session/provider.ts +123 -10
  49. package/src/telegram/provider.ts +3 -2
  50. package/src/types.ts +3 -6
  51. package/src/utils.ts +4 -1
  52. package/tsconfig.json +3 -3
  53. package/dist/__tests__/parseChainId.test.d.ts +0 -2
  54. package/dist/__tests__/parseChainId.test.js +0 -89
  55. package/dist/__tests__/parseChainId.test.js.map +0 -1
  56. package/dist/account.d.ts +0 -38
  57. package/dist/account.js +0 -106
  58. package/dist/account.js.map +0 -1
  59. package/dist/constants.d.ts +0 -5
  60. package/dist/constants.js +0 -10
  61. package/dist/constants.js.map +0 -1
  62. package/dist/errors.d.ts +0 -5
  63. package/dist/errors.js +0 -11
  64. package/dist/errors.js.map +0 -1
  65. package/dist/icon.d.ts +0 -3
  66. package/dist/icon.js +0 -6
  67. package/dist/icon.js.map +0 -1
  68. package/dist/iframe/base.d.ts +0 -5
  69. package/dist/iframe/base.js +0 -122
  70. package/dist/iframe/base.js.map +0 -1
  71. package/dist/iframe/index.d.ts +0 -5
  72. package/dist/iframe/index.js +0 -184
  73. package/dist/iframe/index.js.map +0 -1
  74. package/dist/iframe/keychain.d.ts +0 -5
  75. package/dist/iframe/keychain.js +0 -143
  76. package/dist/iframe/keychain.js.map +0 -1
  77. package/dist/iframe/profile.d.ts +0 -5
  78. package/dist/iframe/profile.js +0 -163
  79. package/dist/iframe/profile.js.map +0 -1
  80. package/dist/index.d-BbTUPBeO.d.ts +0 -68
  81. package/dist/provider.d.ts +0 -22
  82. package/dist/provider.js +0 -198
  83. package/dist/provider.js.map +0 -1
  84. package/dist/session/account.d.ts +0 -37
  85. package/dist/session/account.js +0 -92
  86. package/dist/session/account.js.map +0 -1
  87. package/dist/session/backend.d.ts +0 -60
  88. package/dist/session/backend.js +0 -39
  89. package/dist/session/backend.js.map +0 -1
  90. package/dist/session/provider.d.ts +0 -30
  91. package/dist/session/provider.js.map +0 -1
  92. package/dist/telegram/backend.d.ts +0 -33
  93. package/dist/telegram/backend.js +0 -40
  94. package/dist/telegram/backend.js.map +0 -1
  95. package/dist/telegram/provider.d.ts +0 -26
  96. package/dist/telegram/provider.js.map +0 -1
  97. package/dist/types.d.ts +0 -5
  98. package/dist/types.js +0 -13
  99. package/dist/types.js.map +0 -1
  100. package/dist/utils.d.ts +0 -18
  101. package/dist/utils.js +0 -139
  102. package/dist/utils.js.map +0 -1
@@ -1,19 +1,8 @@
1
- // src/account.ts
2
- import {
3
- WalletAccount
4
- } from "starknet";
1
+ import { constants, shortString, WalletAccount } from 'starknet';
2
+ import { connectToChild } from '@cartridge/penpal';
3
+ import { Permission } from '@starknet-io/types-js';
5
4
 
6
- // src/utils.ts
7
- import {
8
- addAddressPadding,
9
- CallData,
10
- constants,
11
- getChecksumAddress,
12
- hash,
13
- shortString,
14
- typedData,
15
- TypedDataRevision
16
- } from "starknet";
5
+ // src/account.ts
17
6
  function toArray(val) {
18
7
  return Array.isArray(val) ? val : [val];
19
8
  }
@@ -42,6 +31,10 @@ function parseChainId(url) {
42
31
 
43
32
  // src/account.ts
44
33
  var ControllerAccount = class extends WalletAccount {
34
+ address;
35
+ keychain;
36
+ modal;
37
+ options;
45
38
  constructor(provider, rpcUrl, address, keychain, options, modal) {
46
39
  super({ nodeUrl: rpcUrl }, provider);
47
40
  this.address = address;
@@ -66,8 +59,8 @@ var ControllerAccount = class extends WalletAccount {
66
59
  return new Promise(async (resolve, reject) => {
67
60
  const sessionExecute = await this.keychain.execute(
68
61
  calls,
69
- void 0,
70
- void 0,
62
+ undefined,
63
+ undefined,
71
64
  false
72
65
  );
73
66
  if (sessionExecute.code === "SUCCESS" /* SUCCESS */) {
@@ -81,8 +74,8 @@ var ControllerAccount = class extends WalletAccount {
81
74
  this.modal.open();
82
75
  const manualExecute = await this.keychain.execute(
83
76
  calls,
84
- void 0,
85
- void 0,
77
+ undefined,
78
+ undefined,
86
79
  true,
87
80
  sessionExecute.error
88
81
  );
@@ -122,16 +115,15 @@ var ControllerAccount = class extends WalletAccount {
122
115
  }
123
116
  };
124
117
  var account_default = ControllerAccount;
125
-
126
- // src/iframe/base.ts
127
- import { connectToChild } from "@cartridge/penpal";
128
118
  var IFrame = class {
119
+ url;
120
+ iframe;
121
+ container;
122
+ onClose;
129
123
  constructor({
130
124
  id,
131
125
  url,
132
126
  preset,
133
- theme,
134
- colorMode,
135
127
  onClose,
136
128
  onConnect,
137
129
  methods = {}
@@ -139,15 +131,9 @@ var IFrame = class {
139
131
  if (typeof document === "undefined") {
140
132
  return;
141
133
  }
142
- if (theme) {
143
- url.searchParams.set("theme", theme);
144
- }
145
134
  if (preset) {
146
135
  url.searchParams.set("preset", preset);
147
136
  }
148
- if (colorMode) {
149
- url.searchParams.set("colorMode", colorMode);
150
- }
151
137
  this.url = url;
152
138
  const iframe = document.createElement("iframe");
153
139
  iframe.src = url.toString();
@@ -310,21 +296,16 @@ var NotReadyToConnect = class _NotReadyToConnect extends Error {
310
296
  }
311
297
  };
312
298
 
313
- // src/provider.ts
314
- import {
315
- Permission
316
- } from "@starknet-io/types-js";
317
-
318
299
  // package.json
319
300
  var package_default = {
320
301
  name: "@cartridge/controller",
321
- version: "0.5.9",
302
+ version: "0.7.0",
322
303
  description: "Cartridge Controller",
323
304
  module: "dist/index.js",
324
305
  types: "dist/index.d.ts",
325
306
  type: "module",
326
307
  scripts: {
327
- "build:deps": "tsup --dts-resolve",
308
+ "build:deps": "tsup",
328
309
  build: "pnpm build:deps",
329
310
  format: 'prettier --write "src/**/*.ts"',
330
311
  "format:check": 'prettier --check "src/**/*.ts"',
@@ -332,167 +313,240 @@ var package_default = {
332
313
  version: "pnpm pkg get version"
333
314
  },
334
315
  exports: {
335
- ".": "./dist/index.js",
336
- "./session": "./dist/session/index.js",
337
- "./provider": "./dist/provider/index.js",
338
- "./types": "./dist/types/index.js"
316
+ ".": {
317
+ types: "./dist/index.d.ts",
318
+ import: "./dist/index.js",
319
+ require: "./dist/index.cjs"
320
+ },
321
+ "./session": {
322
+ types: "./dist/session/index.d.ts",
323
+ import: "./dist/session/index.js",
324
+ require: "./dist/session/index.cjs"
325
+ },
326
+ "./session/node": {
327
+ types: "./dist/node/index.d.ts",
328
+ import: "./dist/node/index.js",
329
+ require: "./dist/node/index.cjs"
330
+ },
331
+ "./provider": {
332
+ types: "./dist/provider/index.d.ts",
333
+ import: "./dist/provider/index.js"
334
+ },
335
+ "./types": {
336
+ types: "./dist/types/index.d.ts",
337
+ import: "./dist/types/index.js"
338
+ }
339
339
  },
340
340
  tsup: {
341
341
  entry: [
342
- "src/**"
342
+ "src/index.ts",
343
+ "src/controller.ts",
344
+ "src/lookup.ts",
345
+ "src/session/index.ts",
346
+ "src/node/index.ts"
343
347
  ],
344
348
  format: [
345
- "esm"
349
+ "esm",
350
+ "cjs"
346
351
  ],
347
352
  splitting: false,
348
353
  sourcemap: true,
349
- clean: true
354
+ clean: true,
355
+ dts: true,
356
+ treeshake: {
357
+ preset: "recommended"
358
+ },
359
+ exports: "named"
360
+ },
361
+ peerDependencies: {
362
+ starknet: "catalog:",
363
+ open: "^10.1.0"
350
364
  },
351
365
  dependencies: {
352
366
  "@cartridge/account-wasm": "workspace:*",
353
- "@cartridge/penpal": "^6.2.3",
354
- "@starknet-io/types-js": "^0.7.7",
367
+ "@cartridge/penpal": "catalog:",
368
+ "@starknet-io/types-js": "catalog:",
355
369
  "@telegram-apps/sdk": "^2.4.0",
356
- base64url: "^3.0.1",
370
+ base64url: "catalog:",
357
371
  "cbor-x": "^1.5.0",
358
- "fast-deep-equal": "^3.1.3",
359
- "query-string": "^7.1.1",
360
- starknet: "^6.11.0"
372
+ "fast-deep-equal": "catalog:"
361
373
  },
362
374
  devDependencies: {
363
375
  "@cartridge/tsconfig": "workspace:*",
364
376
  "@types/jest": "^29.5.14",
365
- "@types/node": "^20.6.0",
377
+ "@types/node": "catalog:",
366
378
  jest: "^29.7.0",
379
+ prettier: "catalog:",
367
380
  "ts-jest": "^29.2.5",
368
- typescript: "^5.4.5"
381
+ tsup: "catalog:",
382
+ typescript: "catalog:"
369
383
  }
370
384
  };
371
385
 
372
386
  // src/icon.ts
373
387
  var icon = "data:image/png;base64,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";
374
388
 
389
+ // src/mutex.ts
390
+ function releaseStub() {
391
+ }
392
+ var Mutex = class {
393
+ m_lastPromise = Promise.resolve();
394
+ /**
395
+ * Acquire lock
396
+ * @param [bypass=false] option to skip lock acquisition
397
+ */
398
+ async obtain(bypass = false) {
399
+ let release = releaseStub;
400
+ if (bypass) return release;
401
+ const lastPromise = this.m_lastPromise;
402
+ this.m_lastPromise = new Promise((resolve) => release = resolve);
403
+ await lastPromise;
404
+ return release;
405
+ }
406
+ };
407
+
375
408
  // src/provider.ts
409
+ var mutex = new Mutex();
376
410
  var BaseProvider = class {
377
- constructor() {
378
- this.id = "controller";
379
- this.name = "Controller";
380
- this.version = package_default.version;
381
- this.icon = icon;
382
- this.subscriptions = [];
383
- this.request = async (call) => {
384
- switch (call.type) {
385
- case "wallet_getPermissions":
386
- await this.probe();
387
- if (this.account) {
388
- return [Permission.ACCOUNTS];
389
- }
390
- return [];
391
- case "wallet_requestAccounts": {
392
- if (this.account) {
393
- return [this.account.address];
394
- }
395
- const silentMode = call.params && call.params.silent_mode;
396
- this.account = await this.probe();
397
- if (!this.account && !silentMode) {
398
- this.account = await this.connect();
399
- }
400
- if (this.account) {
401
- return [this.account.address];
402
- }
403
- return [];
411
+ id = "controller";
412
+ name = "Controller";
413
+ version = package_default.version;
414
+ icon = icon;
415
+ account;
416
+ subscriptions = [];
417
+ _probePromise = null;
418
+ async safeProbe() {
419
+ if (this.account) {
420
+ return this.account;
421
+ }
422
+ if (this._probePromise) {
423
+ return this._probePromise;
424
+ }
425
+ const release = await mutex.obtain();
426
+ return await new Promise(async (resolve) => {
427
+ try {
428
+ this._probePromise = this.probe();
429
+ const result = await this._probePromise;
430
+ resolve(result);
431
+ } finally {
432
+ this._probePromise = null;
433
+ }
434
+ }).finally(() => {
435
+ release();
436
+ });
437
+ }
438
+ request = async (call) => {
439
+ switch (call.type) {
440
+ case "wallet_getPermissions":
441
+ await this.safeProbe();
442
+ if (this.account) {
443
+ return [Permission.ACCOUNTS];
404
444
  }
405
- case "wallet_watchAsset":
406
- throw {
407
- code: 63,
408
- message: "An unexpected error occurred",
409
- data: "wallet_watchAsset not implemented"
410
- };
411
- case "wallet_addStarknetChain": {
412
- let params2 = call.params;
413
- return this.addStarknetChain(params2);
445
+ return [];
446
+ case "wallet_requestAccounts": {
447
+ if (this.account) {
448
+ return [this.account.address];
414
449
  }
415
- case "wallet_switchStarknetChain": {
416
- let params2 = call.params;
417
- return this.switchStarknetChain(params2.chainId);
450
+ const silentMode = call.params && call.params.silent_mode;
451
+ this.account = await this.safeProbe();
452
+ if (!this.account && !silentMode) {
453
+ this.account = await this.connect();
418
454
  }
419
- case "wallet_requestChainId":
420
- if (!this.account) {
421
- throw {
422
- code: 63,
423
- message: "An unexpected error occurred",
424
- data: "Account not initialized"
425
- };
426
- }
427
- return await this.account.getChainId();
428
- case "wallet_deploymentData":
455
+ if (this.account) {
456
+ return [this.account.address];
457
+ }
458
+ return [];
459
+ }
460
+ case "wallet_watchAsset":
461
+ throw {
462
+ code: 63,
463
+ message: "An unexpected error occurred",
464
+ data: "wallet_watchAsset not implemented"
465
+ };
466
+ case "wallet_addStarknetChain": {
467
+ let params2 = call.params;
468
+ return this.addStarknetChain(params2);
469
+ }
470
+ case "wallet_switchStarknetChain": {
471
+ let params2 = call.params;
472
+ return this.switchStarknetChain(params2.chainId);
473
+ }
474
+ case "wallet_requestChainId":
475
+ if (!this.account) {
429
476
  throw {
430
477
  code: 63,
431
478
  message: "An unexpected error occurred",
432
- data: "wallet_deploymentData not implemented"
479
+ data: "Account not initialized"
433
480
  };
434
- case "wallet_addInvokeTransaction":
435
- if (!this.account) {
436
- throw {
437
- code: 63,
438
- message: "An unexpected error occurred",
439
- data: "Account not initialized"
440
- };
441
- }
442
- let params = call.params;
443
- return await this.account.execute(
444
- params.calls.map((call2) => ({
445
- contractAddress: call2.contract_address,
446
- entrypoint: call2.entry_point,
447
- calldata: call2.calldata
448
- }))
449
- );
450
- case "wallet_addDeclareTransaction":
481
+ }
482
+ return await this.account.getChainId();
483
+ case "wallet_deploymentData":
484
+ throw {
485
+ code: 63,
486
+ message: "An unexpected error occurred",
487
+ data: "wallet_deploymentData not implemented"
488
+ };
489
+ case "wallet_addInvokeTransaction":
490
+ if (!this.account) {
451
491
  throw {
452
492
  code: 63,
453
493
  message: "An unexpected error occurred",
454
- data: "wallet_addDeclareTransaction not implemented"
494
+ data: "Account not initialized"
455
495
  };
456
- case "wallet_signTypedData": {
457
- if (!this.account) {
458
- throw {
459
- code: 63,
460
- message: "An unexpected error occurred",
461
- data: "Account not initialized"
462
- };
463
- }
464
- return await this.account.signMessage(call.params);
465
496
  }
466
- case "wallet_supportedSpecs":
467
- return [];
468
- case "wallet_supportedWalletApi":
469
- return [];
470
- default:
497
+ let params = call.params;
498
+ return await this.account.execute(
499
+ params.calls.map((call2) => ({
500
+ contractAddress: call2.contract_address,
501
+ entrypoint: call2.entry_point,
502
+ calldata: call2.calldata
503
+ }))
504
+ );
505
+ case "wallet_addDeclareTransaction":
506
+ throw {
507
+ code: 63,
508
+ message: "An unexpected error occurred",
509
+ data: "wallet_addDeclareTransaction not implemented"
510
+ };
511
+ case "wallet_signTypedData": {
512
+ if (!this.account) {
471
513
  throw {
472
514
  code: 63,
473
515
  message: "An unexpected error occurred",
474
- data: `Unknown RPC call type: ${call.type}`
516
+ data: "Account not initialized"
475
517
  };
518
+ }
519
+ return await this.account.signMessage(call.params);
476
520
  }
477
- };
478
- this.on = (event, handler) => {
479
- if (event !== "accountsChanged" && event !== "networkChanged") {
480
- throw new Error(`Unknown event: ${event}`);
481
- }
482
- this.subscriptions.push({ type: event, handler });
483
- };
484
- this.off = (event, handler) => {
485
- if (event !== "accountsChanged" && event !== "networkChanged") {
486
- throw new Error(`Unknown event: ${event}`);
487
- }
488
- const idx = this.subscriptions.findIndex(
489
- (sub) => sub.type === event && sub.handler === handler
490
- );
491
- if (idx >= 0) {
492
- this.subscriptions.splice(idx, 1);
493
- }
494
- };
495
- }
521
+ case "wallet_supportedSpecs":
522
+ return [];
523
+ case "wallet_supportedWalletApi":
524
+ return [];
525
+ default:
526
+ throw {
527
+ code: 63,
528
+ message: "An unexpected error occurred",
529
+ data: `Unknown RPC call type: ${call.type}`
530
+ };
531
+ }
532
+ };
533
+ on = (event, handler) => {
534
+ if (event !== "accountsChanged" && event !== "networkChanged") {
535
+ throw new Error(`Unknown event: ${event}`);
536
+ }
537
+ this.subscriptions.push({ type: event, handler });
538
+ };
539
+ off = (event, handler) => {
540
+ if (event !== "accountsChanged" && event !== "networkChanged") {
541
+ throw new Error(`Unknown event: ${event}`);
542
+ }
543
+ const idx = this.subscriptions.findIndex(
544
+ (sub) => sub.type === event && sub.handler === handler
545
+ );
546
+ if (idx >= 0) {
547
+ this.subscriptions.splice(idx, 1);
548
+ }
549
+ };
496
550
  emitNetworkChanged(chainId) {
497
551
  this.subscriptions.filter((sub) => sub.type === "networkChanged").forEach((sub) => {
498
552
  sub.handler(chainId);
@@ -507,6 +561,12 @@ var BaseProvider = class {
507
561
 
508
562
  // src/controller.ts
509
563
  var ControllerProvider = class extends BaseProvider {
564
+ keychain;
565
+ profile;
566
+ options;
567
+ iframes;
568
+ selectedChain;
569
+ chains;
510
570
  constructor(options) {
511
571
  super();
512
572
  const chains = /* @__PURE__ */ new Map();
@@ -549,9 +609,10 @@ var ControllerProvider = class extends BaseProvider {
549
609
  return;
550
610
  }
551
611
  const response = await this.keychain.probe(this.rpcUrl());
612
+ let rpcUrl = response?.rpcUrl || this.rpcUrl();
552
613
  this.account = new account_default(
553
614
  this,
554
- this.rpcUrl(),
615
+ rpcUrl,
555
616
  response.address,
556
617
  this.keychain,
557
618
  this.options,
@@ -620,12 +681,17 @@ var ControllerProvider = class extends BaseProvider {
620
681
  }
621
682
  }
622
683
  async switchStarknetChain(chainId) {
684
+ if (!this.keychain || !this.iframes.keychain) {
685
+ console.error(new NotReadyToConnect().message);
686
+ return false;
687
+ }
623
688
  try {
624
689
  this.selectedChain = chainId;
625
- this.account = await this.probe();
626
- if (!this.account) {
627
- this.account = await this.connect();
690
+ const response = await this.keychain.probe(this.rpcUrl());
691
+ if (response.rpcUrl === this.rpcUrl()) {
692
+ return true;
628
693
  }
694
+ await this.keychain.switchChain(this.rpcUrl());
629
695
  } catch (e) {
630
696
  console.error(e);
631
697
  return false;
@@ -647,7 +713,7 @@ var ControllerProvider = class extends BaseProvider {
647
713
  await document.requestStorageAccess();
648
714
  }
649
715
  }
650
- this.account = void 0;
716
+ this.account = undefined;
651
717
  return this.keychain.disconnect();
652
718
  }
653
719
  async openProfile(tab = "inventory") {
@@ -662,6 +728,30 @@ var ControllerProvider = class extends BaseProvider {
662
728
  this.profile.navigate(`${this.iframes.profile.url?.pathname}/${tab}`);
663
729
  this.iframes.profile.open();
664
730
  }
731
+ async openProfileTo(to) {
732
+ if (!this.profile || !this.iframes.profile?.url) {
733
+ console.error("Profile is not ready");
734
+ return;
735
+ }
736
+ if (!this.account) {
737
+ console.error("Account is not ready");
738
+ return;
739
+ }
740
+ this.profile.navigate(`${this.iframes.profile.url?.pathname}/${to}`);
741
+ this.iframes.profile.open();
742
+ }
743
+ async openProfileAt(at) {
744
+ if (!this.profile || !this.iframes.profile?.url) {
745
+ console.error("Profile is not ready");
746
+ return;
747
+ }
748
+ if (!this.account) {
749
+ console.error("Account is not ready");
750
+ return;
751
+ }
752
+ this.profile.navigate(at);
753
+ this.iframes.profile.open();
754
+ }
665
755
  async openSettings() {
666
756
  if (!this.keychain || !this.iframes.keychain) {
667
757
  console.error(new NotReadyToConnect().message);
@@ -698,12 +788,6 @@ var ControllerProvider = class extends BaseProvider {
698
788
  }
699
789
  return this.keychain.username();
700
790
  }
701
- fetchControllers(contractAddresses) {
702
- if (!this.keychain) {
703
- throw new NotReadyToConnect().message;
704
- }
705
- return this.keychain.fetchControllers(contractAddresses);
706
- }
707
791
  openPurchaseCredits() {
708
792
  if (!this.keychain || !this.iframes.keychain) {
709
793
  console.error(new NotReadyToConnect().message);
@@ -733,7 +817,7 @@ var ControllerProvider = class extends BaseProvider {
733
817
  this.iframes.profile?.sendBackward();
734
818
  this.iframes.keychain.open();
735
819
  this.iframes.profile?.close();
736
- const res = await this.keychain.execute(calls, void 0, void 0, true);
820
+ const res = await this.keychain.execute(calls, undefined, undefined, true);
737
821
  this.iframes.profile?.open();
738
822
  this.iframes.keychain.close();
739
823
  this.iframes.profile?.sendForward();
@@ -750,7 +834,7 @@ var ControllerProvider = class extends BaseProvider {
750
834
  return await this.keychain.delegateAccount();
751
835
  }
752
836
  waitForKeychain({
753
- timeout = 5e3,
837
+ timeout = 5e4,
754
838
  interval = 100
755
839
  } = {}) {
756
840
  return new Promise((resolve, reject) => {
@@ -768,7 +852,7 @@ var ControllerProvider = class extends BaseProvider {
768
852
  });
769
853
  }
770
854
  };
771
- export {
772
- ControllerProvider as default
773
- };
855
+
856
+ export { ControllerProvider as default };
857
+ //# sourceMappingURL=controller.js.map
774
858
  //# sourceMappingURL=controller.js.map