@tronweb3/tronwallet-adapter-trust 1.0.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.
@@ -0,0 +1,1739 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global["@tronweb3/tronwallet-adapter-trust"] = factory());
5
+ })(this, (function () { 'use strict';
6
+
7
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8
+
9
+ function getDefaultExportFromCjs (x) {
10
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
11
+ }
12
+
13
+ var cjs$2 = {};
14
+
15
+ var adapter$2 = {};
16
+
17
+ var cjs$1 = {};
18
+
19
+ var adapter$1 = {};
20
+
21
+ var eventemitter3 = {exports: {}};
22
+
23
+ (function (module) {
24
+
25
+ var has = Object.prototype.hasOwnProperty
26
+ , prefix = '~';
27
+
28
+ /**
29
+ * Constructor to create a storage for our `EE` objects.
30
+ * An `Events` instance is a plain object whose properties are event names.
31
+ *
32
+ * @constructor
33
+ * @private
34
+ */
35
+ function Events() {}
36
+
37
+ //
38
+ // We try to not inherit from `Object.prototype`. In some engines creating an
39
+ // instance in this way is faster than calling `Object.create(null)` directly.
40
+ // If `Object.create(null)` is not supported we prefix the event names with a
41
+ // character to make sure that the built-in object properties are not
42
+ // overridden or used as an attack vector.
43
+ //
44
+ if (Object.create) {
45
+ Events.prototype = Object.create(null);
46
+
47
+ //
48
+ // This hack is needed because the `__proto__` property is still inherited in
49
+ // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
50
+ //
51
+ if (!new Events().__proto__) prefix = false;
52
+ }
53
+
54
+ /**
55
+ * Representation of a single event listener.
56
+ *
57
+ * @param {Function} fn The listener function.
58
+ * @param {*} context The context to invoke the listener with.
59
+ * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
60
+ * @constructor
61
+ * @private
62
+ */
63
+ function EE(fn, context, once) {
64
+ this.fn = fn;
65
+ this.context = context;
66
+ this.once = once || false;
67
+ }
68
+
69
+ /**
70
+ * Add a listener for a given event.
71
+ *
72
+ * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
73
+ * @param {(String|Symbol)} event The event name.
74
+ * @param {Function} fn The listener function.
75
+ * @param {*} context The context to invoke the listener with.
76
+ * @param {Boolean} once Specify if the listener is a one-time listener.
77
+ * @returns {EventEmitter}
78
+ * @private
79
+ */
80
+ function addListener(emitter, event, fn, context, once) {
81
+ if (typeof fn !== 'function') {
82
+ throw new TypeError('The listener must be a function');
83
+ }
84
+
85
+ var listener = new EE(fn, context || emitter, once)
86
+ , evt = prefix ? prefix + event : event;
87
+
88
+ if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
89
+ else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
90
+ else emitter._events[evt] = [emitter._events[evt], listener];
91
+
92
+ return emitter;
93
+ }
94
+
95
+ /**
96
+ * Clear event by name.
97
+ *
98
+ * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
99
+ * @param {(String|Symbol)} evt The Event name.
100
+ * @private
101
+ */
102
+ function clearEvent(emitter, evt) {
103
+ if (--emitter._eventsCount === 0) emitter._events = new Events();
104
+ else delete emitter._events[evt];
105
+ }
106
+
107
+ /**
108
+ * Minimal `EventEmitter` interface that is molded against the Node.js
109
+ * `EventEmitter` interface.
110
+ *
111
+ * @constructor
112
+ * @public
113
+ */
114
+ function EventEmitter() {
115
+ this._events = new Events();
116
+ this._eventsCount = 0;
117
+ }
118
+
119
+ /**
120
+ * Return an array listing the events for which the emitter has registered
121
+ * listeners.
122
+ *
123
+ * @returns {Array}
124
+ * @public
125
+ */
126
+ EventEmitter.prototype.eventNames = function eventNames() {
127
+ var names = []
128
+ , events
129
+ , name;
130
+
131
+ if (this._eventsCount === 0) return names;
132
+
133
+ for (name in (events = this._events)) {
134
+ if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
135
+ }
136
+
137
+ if (Object.getOwnPropertySymbols) {
138
+ return names.concat(Object.getOwnPropertySymbols(events));
139
+ }
140
+
141
+ return names;
142
+ };
143
+
144
+ /**
145
+ * Return the listeners registered for a given event.
146
+ *
147
+ * @param {(String|Symbol)} event The event name.
148
+ * @returns {Array} The registered listeners.
149
+ * @public
150
+ */
151
+ EventEmitter.prototype.listeners = function listeners(event) {
152
+ var evt = prefix ? prefix + event : event
153
+ , handlers = this._events[evt];
154
+
155
+ if (!handlers) return [];
156
+ if (handlers.fn) return [handlers.fn];
157
+
158
+ for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
159
+ ee[i] = handlers[i].fn;
160
+ }
161
+
162
+ return ee;
163
+ };
164
+
165
+ /**
166
+ * Return the number of listeners listening to a given event.
167
+ *
168
+ * @param {(String|Symbol)} event The event name.
169
+ * @returns {Number} The number of listeners.
170
+ * @public
171
+ */
172
+ EventEmitter.prototype.listenerCount = function listenerCount(event) {
173
+ var evt = prefix ? prefix + event : event
174
+ , listeners = this._events[evt];
175
+
176
+ if (!listeners) return 0;
177
+ if (listeners.fn) return 1;
178
+ return listeners.length;
179
+ };
180
+
181
+ /**
182
+ * Calls each of the listeners registered for a given event.
183
+ *
184
+ * @param {(String|Symbol)} event The event name.
185
+ * @returns {Boolean} `true` if the event had listeners, else `false`.
186
+ * @public
187
+ */
188
+ EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
189
+ var evt = prefix ? prefix + event : event;
190
+
191
+ if (!this._events[evt]) return false;
192
+
193
+ var listeners = this._events[evt]
194
+ , len = arguments.length
195
+ , args
196
+ , i;
197
+
198
+ if (listeners.fn) {
199
+ if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
200
+
201
+ switch (len) {
202
+ case 1: return listeners.fn.call(listeners.context), true;
203
+ case 2: return listeners.fn.call(listeners.context, a1), true;
204
+ case 3: return listeners.fn.call(listeners.context, a1, a2), true;
205
+ case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
206
+ case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
207
+ case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
208
+ }
209
+
210
+ for (i = 1, args = new Array(len -1); i < len; i++) {
211
+ args[i - 1] = arguments[i];
212
+ }
213
+
214
+ listeners.fn.apply(listeners.context, args);
215
+ } else {
216
+ var length = listeners.length
217
+ , j;
218
+
219
+ for (i = 0; i < length; i++) {
220
+ if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
221
+
222
+ switch (len) {
223
+ case 1: listeners[i].fn.call(listeners[i].context); break;
224
+ case 2: listeners[i].fn.call(listeners[i].context, a1); break;
225
+ case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
226
+ case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
227
+ default:
228
+ if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
229
+ args[j - 1] = arguments[j];
230
+ }
231
+
232
+ listeners[i].fn.apply(listeners[i].context, args);
233
+ }
234
+ }
235
+ }
236
+
237
+ return true;
238
+ };
239
+
240
+ /**
241
+ * Add a listener for a given event.
242
+ *
243
+ * @param {(String|Symbol)} event The event name.
244
+ * @param {Function} fn The listener function.
245
+ * @param {*} [context=this] The context to invoke the listener with.
246
+ * @returns {EventEmitter} `this`.
247
+ * @public
248
+ */
249
+ EventEmitter.prototype.on = function on(event, fn, context) {
250
+ return addListener(this, event, fn, context, false);
251
+ };
252
+
253
+ /**
254
+ * Add a one-time listener for a given event.
255
+ *
256
+ * @param {(String|Symbol)} event The event name.
257
+ * @param {Function} fn The listener function.
258
+ * @param {*} [context=this] The context to invoke the listener with.
259
+ * @returns {EventEmitter} `this`.
260
+ * @public
261
+ */
262
+ EventEmitter.prototype.once = function once(event, fn, context) {
263
+ return addListener(this, event, fn, context, true);
264
+ };
265
+
266
+ /**
267
+ * Remove the listeners of a given event.
268
+ *
269
+ * @param {(String|Symbol)} event The event name.
270
+ * @param {Function} fn Only remove the listeners that match this function.
271
+ * @param {*} context Only remove the listeners that have this context.
272
+ * @param {Boolean} once Only remove one-time listeners.
273
+ * @returns {EventEmitter} `this`.
274
+ * @public
275
+ */
276
+ EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
277
+ var evt = prefix ? prefix + event : event;
278
+
279
+ if (!this._events[evt]) return this;
280
+ if (!fn) {
281
+ clearEvent(this, evt);
282
+ return this;
283
+ }
284
+
285
+ var listeners = this._events[evt];
286
+
287
+ if (listeners.fn) {
288
+ if (
289
+ listeners.fn === fn &&
290
+ (!once || listeners.once) &&
291
+ (!context || listeners.context === context)
292
+ ) {
293
+ clearEvent(this, evt);
294
+ }
295
+ } else {
296
+ for (var i = 0, events = [], length = listeners.length; i < length; i++) {
297
+ if (
298
+ listeners[i].fn !== fn ||
299
+ (once && !listeners[i].once) ||
300
+ (context && listeners[i].context !== context)
301
+ ) {
302
+ events.push(listeners[i]);
303
+ }
304
+ }
305
+
306
+ //
307
+ // Reset the array, or remove it completely if we have no more listeners.
308
+ //
309
+ if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
310
+ else clearEvent(this, evt);
311
+ }
312
+
313
+ return this;
314
+ };
315
+
316
+ /**
317
+ * Remove all listeners, or those of the specified event.
318
+ *
319
+ * @param {(String|Symbol)} [event] The event name.
320
+ * @returns {EventEmitter} `this`.
321
+ * @public
322
+ */
323
+ EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
324
+ var evt;
325
+
326
+ if (event) {
327
+ evt = prefix ? prefix + event : event;
328
+ if (this._events[evt]) clearEvent(this, evt);
329
+ } else {
330
+ this._events = new Events();
331
+ this._eventsCount = 0;
332
+ }
333
+
334
+ return this;
335
+ };
336
+
337
+ //
338
+ // Alias methods names because people roll like that.
339
+ //
340
+ EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
341
+ EventEmitter.prototype.addListener = EventEmitter.prototype.on;
342
+
343
+ //
344
+ // Expose the prefix.
345
+ //
346
+ EventEmitter.prefixed = prefix;
347
+
348
+ //
349
+ // Allow `EventEmitter` to be imported as module namespace.
350
+ //
351
+ EventEmitter.EventEmitter = EventEmitter;
352
+
353
+ //
354
+ // Expose the module.
355
+ //
356
+ {
357
+ module.exports = EventEmitter;
358
+ }
359
+ } (eventemitter3));
360
+
361
+ var eventemitter3Exports = eventemitter3.exports;
362
+
363
+ var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
364
+ return (mod && mod.__esModule) ? mod : { "default": mod };
365
+ };
366
+ Object.defineProperty(adapter$1, "__esModule", { value: true });
367
+ adapter$1.Adapter = adapter$1.AdapterState = adapter$1.WalletReadyState = adapter$1.EventEmitter = void 0;
368
+ const eventemitter3_1 = __importDefault(eventemitter3Exports);
369
+ adapter$1.EventEmitter = eventemitter3_1.default;
370
+ /**
371
+ * Wallet ready state.
372
+ */
373
+ var WalletReadyState;
374
+ (function (WalletReadyState) {
375
+ /**
376
+ * Adapter will start to check if wallet exists after adapter instance is created.
377
+ */
378
+ WalletReadyState["Loading"] = "Loading";
379
+ /**
380
+ * When checking ends and wallet is not found, readyState will be NotFound.
381
+ */
382
+ WalletReadyState["NotFound"] = "NotFound";
383
+ /**
384
+ * When checking ends and wallet is found, readyState will be Found.
385
+ */
386
+ WalletReadyState["Found"] = "Found";
387
+ })(WalletReadyState || (adapter$1.WalletReadyState = WalletReadyState = {}));
388
+ /**
389
+ * Adapter state
390
+ */
391
+ var AdapterState;
392
+ (function (AdapterState) {
393
+ /**
394
+ * If adapter is checking the wallet, the state is Loading.
395
+ */
396
+ AdapterState["Loading"] = "Loading";
397
+ /**
398
+ * If wallet is not installed, the state is NotFound.
399
+ */
400
+ AdapterState["NotFound"] = "NotFound";
401
+ /**
402
+ * If wallet is installed but is not connected to current Dapp, the state is Disconnected.
403
+ */
404
+ AdapterState["Disconnect"] = "Disconnected";
405
+ /**
406
+ * Wallet is connected to current Dapp.
407
+ */
408
+ AdapterState["Connected"] = "Connected";
409
+ })(AdapterState || (adapter$1.AdapterState = AdapterState = {}));
410
+ class Adapter extends eventemitter3_1.default {
411
+ get connected() {
412
+ return this.state === AdapterState.Connected;
413
+ }
414
+ /**
415
+ * Some wallets such as TronLink don't support disconnect() method.
416
+ */
417
+ disconnect() {
418
+ console.info("The current adapter doesn't support disconnect by DApp.");
419
+ return Promise.resolve();
420
+ }
421
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
422
+ multiSign(...args) {
423
+ return Promise.reject("The current wallet doesn't support multiSign.");
424
+ }
425
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
426
+ switchChain(_chainId) {
427
+ return Promise.reject("The current wallet doesn't support switch chain.");
428
+ }
429
+ }
430
+ adapter$1.Adapter = Adapter;
431
+
432
+ var errors = {};
433
+
434
+ Object.defineProperty(errors, "__esModule", { value: true });
435
+ errors.WalletGetNetworkError = errors.WalletSwitchChainError = errors.WalletWindowClosedError = errors.WalletWalletLoadError = errors.WalletSignTransactionError = errors.WalletSignMessageError = errors.WalletDisconnectionError = errors.WalletConnectionError = errors.WalletDisconnectedError = errors.WalletNotSelectedError = errors.WalletNotFoundError = errors.WalletError = void 0;
436
+ class WalletError extends Error {
437
+ constructor(message, error) {
438
+ super(message);
439
+ this.error = error;
440
+ }
441
+ }
442
+ errors.WalletError = WalletError;
443
+ /**
444
+ * Occurs when wallet is not installed.
445
+ */
446
+ class WalletNotFoundError extends WalletError {
447
+ constructor() {
448
+ super(...arguments);
449
+ this.name = 'WalletNotFoundError';
450
+ this.message = 'The wallet is not found.';
451
+ }
452
+ }
453
+ errors.WalletNotFoundError = WalletNotFoundError;
454
+ /**
455
+ * Occurs when connect to a wallet but there is no wallet selected.
456
+ */
457
+ class WalletNotSelectedError extends WalletError {
458
+ constructor() {
459
+ super(...arguments);
460
+ this.name = 'WalletNotSelectedError';
461
+ this.message = 'No wallet is selected. Please select a wallet.';
462
+ }
463
+ }
464
+ errors.WalletNotSelectedError = WalletNotSelectedError;
465
+ /**
466
+ * Occurs when wallet is disconnected.
467
+ * Used by some wallets which won't connect automatically when call `signMessage()` or `signTransaction()`.
468
+ */
469
+ class WalletDisconnectedError extends WalletError {
470
+ constructor() {
471
+ super(...arguments);
472
+ this.name = 'WalletDisconnectedError';
473
+ this.message = 'The wallet is disconnected. Please connect first.';
474
+ }
475
+ }
476
+ errors.WalletDisconnectedError = WalletDisconnectedError;
477
+ /**
478
+ * Occurs when try to connect a wallet.
479
+ */
480
+ class WalletConnectionError extends WalletError {
481
+ constructor() {
482
+ super(...arguments);
483
+ this.name = 'WalletConnectionError';
484
+ }
485
+ }
486
+ errors.WalletConnectionError = WalletConnectionError;
487
+ /**
488
+ * Occurs when try to disconnect a wallet.
489
+ */
490
+ class WalletDisconnectionError extends WalletError {
491
+ constructor() {
492
+ super(...arguments);
493
+ this.name = 'WalletDisconnectionError';
494
+ }
495
+ }
496
+ errors.WalletDisconnectionError = WalletDisconnectionError;
497
+ /**
498
+ * Occurs when call `signMessage()`.
499
+ */
500
+ class WalletSignMessageError extends WalletError {
501
+ constructor() {
502
+ super(...arguments);
503
+ this.name = 'WalletSignMessageError';
504
+ }
505
+ }
506
+ errors.WalletSignMessageError = WalletSignMessageError;
507
+ /**
508
+ * Occurs when call `signTransaction()`.
509
+ */
510
+ class WalletSignTransactionError extends WalletError {
511
+ constructor() {
512
+ super(...arguments);
513
+ this.name = 'WalletSignTransactionError';
514
+ }
515
+ }
516
+ errors.WalletSignTransactionError = WalletSignTransactionError;
517
+ /**
518
+ * Occurs when load wallet
519
+ */
520
+ class WalletWalletLoadError extends WalletError {
521
+ constructor() {
522
+ super(...arguments);
523
+ this.name = 'WalletWalletLoadError';
524
+ }
525
+ }
526
+ errors.WalletWalletLoadError = WalletWalletLoadError;
527
+ /**
528
+ * Occurs when walletconnect QR window is closed.
529
+ */
530
+ class WalletWindowClosedError extends WalletError {
531
+ constructor() {
532
+ super(...arguments);
533
+ this.name = 'WalletWindowClosedError';
534
+ this.message = 'The QR window is closed.';
535
+ }
536
+ }
537
+ errors.WalletWindowClosedError = WalletWindowClosedError;
538
+ /**
539
+ * Occurs when request wallet to switch chain.
540
+ */
541
+ class WalletSwitchChainError extends WalletError {
542
+ constructor() {
543
+ super(...arguments);
544
+ this.name = 'WalletSwitchChainError';
545
+ }
546
+ }
547
+ errors.WalletSwitchChainError = WalletSwitchChainError;
548
+ /**
549
+ * Occurs when get network infomation.
550
+ */
551
+ class WalletGetNetworkError extends WalletError {
552
+ constructor() {
553
+ super(...arguments);
554
+ this.name = 'WalletGetNetworkError';
555
+ }
556
+ }
557
+ errors.WalletGetNetworkError = WalletGetNetworkError;
558
+
559
+ var types$1 = {};
560
+
561
+ Object.defineProperty(types$1, "__esModule", { value: true });
562
+ types$1.ChainNetwork = types$1.NetworkType = void 0;
563
+ var NetworkType;
564
+ (function (NetworkType) {
565
+ NetworkType["Mainnet"] = "Mainnet";
566
+ NetworkType["Shasta"] = "Shasta";
567
+ NetworkType["Nile"] = "Nile";
568
+ /**
569
+ * When use custom node
570
+ */
571
+ NetworkType["Unknown"] = "Unknown";
572
+ })(NetworkType || (types$1.NetworkType = NetworkType = {}));
573
+ var ChainNetwork;
574
+ (function (ChainNetwork) {
575
+ ChainNetwork["Mainnet"] = "Mainnet";
576
+ ChainNetwork["Shasta"] = "Shasta";
577
+ ChainNetwork["Nile"] = "Nile";
578
+ })(ChainNetwork || (types$1.ChainNetwork = ChainNetwork = {}));
579
+
580
+ var utils$2 = {};
581
+
582
+ Object.defineProperty(utils$2, "__esModule", { value: true });
583
+ utils$2.isInBrowser = isInBrowser;
584
+ utils$2.checkAdapterState = checkAdapterState;
585
+ utils$2.isInMobileBrowser = isInMobileBrowser;
586
+ /**
587
+ * check simply if current environment is browser or not
588
+ * @returns boolean
589
+ */
590
+ function isInBrowser() {
591
+ return typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
592
+ }
593
+ /**
594
+ *
595
+ * @param {Function} check funcion to check if wallet is installed. return true if wallet is detected.
596
+ * @returns
597
+ */
598
+ function checkAdapterState(check) {
599
+ if (!isInBrowser())
600
+ return;
601
+ const disposers = [];
602
+ function dispose() {
603
+ for (const dispose of disposers) {
604
+ dispose();
605
+ }
606
+ }
607
+ function checkAndDispose() {
608
+ if (check()) {
609
+ dispose();
610
+ }
611
+ }
612
+ const interval = setInterval(checkAndDispose, 500);
613
+ disposers.push(() => clearInterval(interval));
614
+ if (document.readyState === 'loading') {
615
+ document.addEventListener('DOMContentLoaded', checkAndDispose, { once: true });
616
+ disposers.push(() => document.removeEventListener('DOMContentLoaded', checkAndDispose));
617
+ }
618
+ if (document.readyState !== 'complete') {
619
+ window.addEventListener('load', checkAndDispose, { once: true });
620
+ disposers.push(() => window.removeEventListener('load', checkAndDispose));
621
+ }
622
+ checkAndDispose();
623
+ // stop all task after 1min
624
+ setTimeout(dispose, 60 * 1000);
625
+ }
626
+ /**
627
+ * Simplily detect mobile device
628
+ */
629
+ function isInMobileBrowser() {
630
+ return (typeof navigator !== 'undefined' &&
631
+ navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i));
632
+ }
633
+
634
+ (function (exports) {
635
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
636
+ if (k2 === undefined) k2 = k;
637
+ var desc = Object.getOwnPropertyDescriptor(m, k);
638
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
639
+ desc = { enumerable: true, get: function() { return m[k]; } };
640
+ }
641
+ Object.defineProperty(o, k2, desc);
642
+ }) : (function(o, m, k, k2) {
643
+ if (k2 === undefined) k2 = k;
644
+ o[k2] = m[k];
645
+ }));
646
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
647
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
648
+ };
649
+ Object.defineProperty(exports, "__esModule", { value: true });
650
+ __exportStar(adapter$1, exports);
651
+ __exportStar(errors, exports);
652
+ __exportStar(types$1, exports);
653
+ __exportStar(utils$2, exports);
654
+
655
+ } (cjs$1));
656
+
657
+ var cjs = {};
658
+
659
+ var adapter = {};
660
+
661
+ var utils$1 = {};
662
+
663
+ var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
664
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
665
+ return new (P || (P = Promise))(function (resolve, reject) {
666
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
667
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
668
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
669
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
670
+ });
671
+ };
672
+ Object.defineProperty(utils$1, "__esModule", { value: true });
673
+ utils$1.supportTron = supportTron;
674
+ utils$1.supportTronLink = supportTronLink;
675
+ utils$1.isInTronLinkApp = isInTronLinkApp;
676
+ utils$1.openTronLink = openTronLink;
677
+ utils$1.waitTronwebReady = waitTronwebReady;
678
+ const tronwallet_abstract_adapter_1 = cjs$1;
679
+ function supportTron() {
680
+ return !!(window.tron && window.tron.isTronLink);
681
+ }
682
+ function supportTronLink() {
683
+ return !!(supportTron() || window.tronLink || window.tronWeb);
684
+ }
685
+ /**
686
+ * Detect if in TronLinkApp
687
+ * Tron DApp running in the DApp Explorer injects iTron objects automatically to offer customized App service.
688
+ * See [here](https://docs.tronlink.org/tronlink-app/dapp-support/dapp-explorer)
689
+ */
690
+ function isInTronLinkApp() {
691
+ return (0, tronwallet_abstract_adapter_1.isInBrowser)() && typeof window.iTron !== 'undefined';
692
+ }
693
+ function openTronLink({ dappIcon, dappName } = { dappIcon: '', dappName: '' }) {
694
+ if (!supportTronLink() && (0, tronwallet_abstract_adapter_1.isInMobileBrowser)() && !isInTronLinkApp()) {
695
+ let defaultDappName = '', defaultDappIcon = '';
696
+ try {
697
+ defaultDappName = document.title;
698
+ const link = document.querySelector('link[rel*="icon"]');
699
+ if (link) {
700
+ defaultDappIcon = new URL(link.getAttribute('href') || '', location.href).toString();
701
+ }
702
+ }
703
+ catch (e) {
704
+ // console.error(e);
705
+ }
706
+ const { origin, pathname, search, hash } = window.location;
707
+ const url = origin + pathname + search + (hash.includes('?') ? hash : `${hash}?_=1`);
708
+ const params = {
709
+ action: 'open',
710
+ actionId: Date.now() + '',
711
+ callbackUrl: 'http://someurl.com', // no need callback
712
+ dappIcon: dappIcon || defaultDappIcon,
713
+ dappName: dappName || defaultDappName,
714
+ url,
715
+ protocol: 'TronLink',
716
+ version: '1.0',
717
+ chainId: '0x2b6653dc',
718
+ };
719
+ window.location.href = `tronlinkoutside://pull.activity?param=${encodeURIComponent(JSON.stringify(params))}`;
720
+ return true;
721
+ }
722
+ return false;
723
+ }
724
+ function waitTronwebReady(tronObj) {
725
+ return __awaiter(this, void 0, void 0, function* () {
726
+ return new Promise((resolve, reject) => {
727
+ const interval = setInterval(() => {
728
+ if (tronObj.tronWeb) {
729
+ clearInterval(interval);
730
+ clearTimeout(timeout);
731
+ resolve();
732
+ }
733
+ }, 50);
734
+ const timeout = setTimeout(() => {
735
+ clearInterval(interval);
736
+ reject('`window.tron.tronweb` is not ready.');
737
+ }, 2000);
738
+ });
739
+ });
740
+ }
741
+
742
+ (function (exports) {
743
+ var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
744
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
745
+ return new (P || (P = Promise))(function (resolve, reject) {
746
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
747
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
748
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
749
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
750
+ });
751
+ };
752
+ Object.defineProperty(exports, "__esModule", { value: true });
753
+ exports.TronLinkAdapter = exports.TronLinkAdapterName = exports.chainIdNetworkMap = void 0;
754
+ exports.getNetworkInfoByTronWeb = getNetworkInfoByTronWeb;
755
+ const tronwallet_abstract_adapter_1 = cjs$1;
756
+ const utils_js_1 = utils$1;
757
+ exports.chainIdNetworkMap = {
758
+ '0x2b6653dc': tronwallet_abstract_adapter_1.NetworkType.Mainnet,
759
+ '0x94a9059e': tronwallet_abstract_adapter_1.NetworkType.Shasta,
760
+ '0xcd8690dc': tronwallet_abstract_adapter_1.NetworkType.Nile,
761
+ };
762
+ function getNetworkInfoByTronWeb(tronWeb) {
763
+ return __awaiter(this, void 0, void 0, function* () {
764
+ var _a, _b, _c;
765
+ const { blockID = '' } = yield tronWeb.trx.getBlockByNumber(0);
766
+ const chainId = `0x${blockID.slice(-8)}`;
767
+ return {
768
+ networkType: exports.chainIdNetworkMap[chainId] || tronwallet_abstract_adapter_1.NetworkType.Unknown,
769
+ chainId,
770
+ fullNode: ((_a = tronWeb.fullNode) === null || _a === void 0 ? void 0 : _a.host) || '',
771
+ solidityNode: ((_b = tronWeb.solidityNode) === null || _b === void 0 ? void 0 : _b.host) || '',
772
+ eventServer: ((_c = tronWeb.eventServer) === null || _c === void 0 ? void 0 : _c.host) || '',
773
+ };
774
+ });
775
+ }
776
+ exports.TronLinkAdapterName = 'TronLink';
777
+ class TronLinkAdapter extends tronwallet_abstract_adapter_1.Adapter {
778
+ // record if first connect event has emitted or not
779
+ constructor(config = {}) {
780
+ super();
781
+ this.name = exports.TronLinkAdapterName;
782
+ this.url = 'https://www.tronlink.org/';
783
+ this.icon = 'data:image/png;base64,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';
784
+ this._readyState = (0, tronwallet_abstract_adapter_1.isInBrowser)() ? tronwallet_abstract_adapter_1.WalletReadyState.Loading : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
785
+ this._state = tronwallet_abstract_adapter_1.AdapterState.Loading;
786
+ // https://github.com/tronprotocol/tips/blob/master/tip-1193.md
787
+ this._supportNewTronProtocol = false;
788
+ this._tronLinkMessageHandler = (e) => {
789
+ var _a, _b, _c, _d, _e;
790
+ const message = (_a = e.data) === null || _a === void 0 ? void 0 : _a.message;
791
+ if (!message) {
792
+ return;
793
+ }
794
+ if (message.action === 'accountsChanged') {
795
+ setTimeout(() => {
796
+ var _a;
797
+ const preAddr = this.address || '';
798
+ if ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.ready) {
799
+ const address = message.data.address;
800
+ this.setAddress(address);
801
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
802
+ }
803
+ else {
804
+ this.setAddress(null);
805
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
806
+ }
807
+ this.emit('accountsChanged', this.address || '', preAddr);
808
+ if (!preAddr && this.address) {
809
+ this.emit('connect', this.address);
810
+ }
811
+ else if (preAddr && !this.address) {
812
+ this.emit('disconnect');
813
+ }
814
+ }, 200);
815
+ }
816
+ else if (message.action === 'setNode') {
817
+ this.emit('chainChanged', { chainId: ((_c = (_b = message.data) === null || _b === void 0 ? void 0 : _b.node) === null || _c === void 0 ? void 0 : _c.chainId) || '' });
818
+ }
819
+ else if (message.action === 'connect') {
820
+ const address = ((_e = (_d = this._wallet.tronWeb) === null || _d === void 0 ? void 0 : _d.defaultAddress) === null || _e === void 0 ? void 0 : _e.base58) || '';
821
+ this.setAddress(address);
822
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
823
+ this.emit('connect', address);
824
+ }
825
+ else if (message.action === 'disconnect') {
826
+ this.setAddress(null);
827
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
828
+ this.emit('disconnect');
829
+ }
830
+ };
831
+ this._onChainChanged = (data) => {
832
+ this.emit('chainChanged', data);
833
+ };
834
+ this._onAccountsChanged = () => {
835
+ var _a, _b, _c;
836
+ const preAddr = this.address || '';
837
+ const curAddr = (((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.tronWeb) && ((_c = (_b = this._wallet) === null || _b === void 0 ? void 0 : _b.tronWeb.defaultAddress) === null || _c === void 0 ? void 0 : _c.base58)) || '';
838
+ if (!curAddr) {
839
+ // change to a new address and if it's disconnected, data will be empty
840
+ // tronlink will emit accountsChanged many times, only process when connected
841
+ this.setAddress(null);
842
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
843
+ }
844
+ else {
845
+ const address = curAddr;
846
+ this.setAddress(address);
847
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
848
+ }
849
+ this.emit('accountsChanged', this.address || '', preAddr);
850
+ if (!preAddr && this.address) {
851
+ this.emit('connect', this.address);
852
+ }
853
+ else if (preAddr && !this.address) {
854
+ this.emit('disconnect');
855
+ }
856
+ };
857
+ this._checkPromise = null;
858
+ this._updateWallet = () => {
859
+ var _a, _b, _c, _d, _e, _f, _g, _h;
860
+ let state = this.state;
861
+ let address = this.address;
862
+ if ((0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
863
+ if (window.tronLink) {
864
+ this._wallet = window.tronLink;
865
+ }
866
+ else {
867
+ this._wallet = {
868
+ ready: !!((_a = window.tronWeb) === null || _a === void 0 ? void 0 : _a.defaultAddress),
869
+ tronWeb: window.tronWeb,
870
+ request: () => Promise.resolve(true),
871
+ };
872
+ }
873
+ address = ((_c = (_b = this._wallet.tronWeb) === null || _b === void 0 ? void 0 : _b.defaultAddress) === null || _c === void 0 ? void 0 : _c.base58) || null;
874
+ state = address ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
875
+ }
876
+ else if (window.tron && window.tron.isTronLink) {
877
+ this._supportNewTronProtocol = true;
878
+ this._wallet = window.tron;
879
+ this._listenTronEvent();
880
+ address = (this._wallet.tronWeb && ((_e = (_d = this._wallet.tronWeb) === null || _d === void 0 ? void 0 : _d.defaultAddress) === null || _e === void 0 ? void 0 : _e.base58)) || null;
881
+ state = address ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
882
+ }
883
+ else if (window.tronLink) {
884
+ this._wallet = window.tronLink;
885
+ this._listenTronLinkEvent();
886
+ address = ((_g = (_f = this._wallet.tronWeb) === null || _f === void 0 ? void 0 : _f.defaultAddress) === null || _g === void 0 ? void 0 : _g.base58) || null;
887
+ state = this._wallet.ready ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
888
+ }
889
+ else if (window.tronWeb) {
890
+ // fake tronLink
891
+ this._wallet = {
892
+ ready: window.tronWeb.ready,
893
+ tronWeb: window.tronWeb,
894
+ request: () => Promise.resolve(true),
895
+ };
896
+ address = ((_h = this._wallet.tronWeb.defaultAddress) === null || _h === void 0 ? void 0 : _h.base58) || null;
897
+ state = this._wallet.ready ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
898
+ }
899
+ else {
900
+ // no tronlink support
901
+ this._wallet = null;
902
+ address = null;
903
+ state = tronwallet_abstract_adapter_1.AdapterState.NotFound;
904
+ }
905
+ // In TronLink App, account should be connected
906
+ if ((0, tronwallet_abstract_adapter_1.isInMobileBrowser)() && state === tronwallet_abstract_adapter_1.AdapterState.Disconnect) {
907
+ this.checkForWalletReadyForApp();
908
+ }
909
+ this.setAddress(address);
910
+ this.setState(state);
911
+ };
912
+ this.checkReadyInterval = null;
913
+ const { checkTimeout = 30 * 1000, dappIcon = '', dappName = '', openUrlWhenWalletNotFound = true, openTronLinkAppOnMobile = true, } = config;
914
+ if (typeof checkTimeout !== 'number') {
915
+ throw new Error('[TronLinkAdapter] config.checkTimeout should be a number');
916
+ }
917
+ this.config = {
918
+ checkTimeout,
919
+ openTronLinkAppOnMobile,
920
+ openUrlWhenWalletNotFound,
921
+ dappIcon,
922
+ dappName,
923
+ };
924
+ this._connecting = false;
925
+ this._wallet = null;
926
+ this._address = null;
927
+ if (!(0, tronwallet_abstract_adapter_1.isInBrowser)()) {
928
+ this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
929
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.NotFound);
930
+ return;
931
+ }
932
+ if ((0, utils_js_1.supportTron)() || ((0, tronwallet_abstract_adapter_1.isInMobileBrowser)() && (window.tronLink || window.tronWeb))) {
933
+ this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.Found;
934
+ this._updateWallet();
935
+ }
936
+ else {
937
+ this._checkWallet().then(() => {
938
+ if (this.connected) {
939
+ this.emit('connect', this.address || '');
940
+ }
941
+ });
942
+ }
943
+ }
944
+ get address() {
945
+ return this._address;
946
+ }
947
+ get state() {
948
+ return this._state;
949
+ }
950
+ get readyState() {
951
+ return this._readyState;
952
+ }
953
+ get connecting() {
954
+ return this._connecting;
955
+ }
956
+ /**
957
+ * Get network information used by TronLink.
958
+ * @returns {Network} Current network information.
959
+ */
960
+ network() {
961
+ return __awaiter(this, void 0, void 0, function* () {
962
+ var _a;
963
+ try {
964
+ yield this._checkWallet();
965
+ if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected)
966
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
967
+ const tronWeb = ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.tronWeb) || window.tronWeb;
968
+ if (!tronWeb)
969
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
970
+ try {
971
+ return yield getNetworkInfoByTronWeb(tronWeb);
972
+ }
973
+ catch (e) {
974
+ throw new tronwallet_abstract_adapter_1.WalletGetNetworkError(e === null || e === void 0 ? void 0 : e.message, e);
975
+ }
976
+ }
977
+ catch (e) {
978
+ this.emit('error', e);
979
+ throw e;
980
+ }
981
+ });
982
+ }
983
+ connect() {
984
+ return __awaiter(this, void 0, void 0, function* () {
985
+ var _a, _b;
986
+ try {
987
+ this.checkIfOpenTronLink();
988
+ if (this.connected || this.connecting)
989
+ return;
990
+ yield this._checkWallet();
991
+ if (this.state === tronwallet_abstract_adapter_1.AdapterState.NotFound) {
992
+ if (this.config.openUrlWhenWalletNotFound !== false && (0, tronwallet_abstract_adapter_1.isInBrowser)()) {
993
+ window.open(this.url, '_blank');
994
+ }
995
+ throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
996
+ }
997
+ // lower version only support window.tronWeb, no window.tronLink
998
+ if (!this._wallet)
999
+ return;
1000
+ this._connecting = true;
1001
+ if (this._supportNewTronProtocol) {
1002
+ const wallet = this._wallet;
1003
+ try {
1004
+ const res = yield wallet.request({ method: 'eth_requestAccounts' });
1005
+ const address = res[0];
1006
+ this.setAddress(address);
1007
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
1008
+ this._listenTronEvent();
1009
+ if (!this._wallet.tronWeb) {
1010
+ yield (0, utils_js_1.waitTronwebReady)(this._wallet);
1011
+ }
1012
+ }
1013
+ catch (error) {
1014
+ let message = (error === null || error === void 0 ? void 0 : error.message) || error || 'Connect TronLink wallet failed.';
1015
+ if (error.code === -32002) {
1016
+ message =
1017
+ 'The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.';
1018
+ }
1019
+ if (error.code === 4001) {
1020
+ message = 'The user rejected connection.';
1021
+ }
1022
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError(message, error);
1023
+ }
1024
+ }
1025
+ else if (window.tronLink) {
1026
+ const wallet = this._wallet;
1027
+ try {
1028
+ const res = yield wallet.request({ method: 'tron_requestAccounts' });
1029
+ if (!res) {
1030
+ // 1. wallet is locked
1031
+ // 2. tronlink is first installed and there is no wallet account
1032
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('TronLink wallet is locked or no wallet account is avaliable.');
1033
+ }
1034
+ if (res.code === 4000) {
1035
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.');
1036
+ }
1037
+ if (res.code === 4001) {
1038
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('The user rejected connection.');
1039
+ }
1040
+ }
1041
+ catch (error) {
1042
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError(error === null || error === void 0 ? void 0 : error.message, error);
1043
+ }
1044
+ const address = ((_a = wallet.tronWeb.defaultAddress) === null || _a === void 0 ? void 0 : _a.base58) || '';
1045
+ this.setAddress(address);
1046
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
1047
+ this._listenTronLinkEvent();
1048
+ }
1049
+ else if (window.tronWeb) {
1050
+ const wallet = this._wallet;
1051
+ const address = ((_b = wallet.tronWeb.defaultAddress) === null || _b === void 0 ? void 0 : _b.base58) || '';
1052
+ this.setAddress(address);
1053
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
1054
+ }
1055
+ else {
1056
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('Cannot connect wallet.');
1057
+ }
1058
+ this.connected && this.emit('connect', this.address || '');
1059
+ }
1060
+ catch (error) {
1061
+ this.emit('error', error);
1062
+ throw error;
1063
+ }
1064
+ finally {
1065
+ this._connecting = false;
1066
+ }
1067
+ });
1068
+ }
1069
+ disconnect() {
1070
+ return __awaiter(this, void 0, void 0, function* () {
1071
+ if (this._supportNewTronProtocol) {
1072
+ this._stopListenTronEvent();
1073
+ }
1074
+ else {
1075
+ this._stopListenTronLinkEvent();
1076
+ }
1077
+ if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected) {
1078
+ return;
1079
+ }
1080
+ this.setAddress(null);
1081
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
1082
+ this.emit('disconnect');
1083
+ });
1084
+ }
1085
+ signTransaction(transaction, privateKey) {
1086
+ return __awaiter(this, void 0, void 0, function* () {
1087
+ try {
1088
+ const wallet = yield this.checkAndGetWallet();
1089
+ try {
1090
+ return yield wallet.tronWeb.trx.sign(transaction, privateKey);
1091
+ }
1092
+ catch (error) {
1093
+ if (error instanceof Error) {
1094
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error.message, error);
1095
+ }
1096
+ else {
1097
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error, new Error(error));
1098
+ }
1099
+ }
1100
+ }
1101
+ catch (error) {
1102
+ this.emit('error', error);
1103
+ throw error;
1104
+ }
1105
+ });
1106
+ }
1107
+ multiSign(transaction, privateKey, permissionId) {
1108
+ return __awaiter(this, void 0, void 0, function* () {
1109
+ try {
1110
+ const wallet = yield this.checkAndGetWallet();
1111
+ try {
1112
+ return yield wallet.tronWeb.trx.multiSign(transaction, privateKey, permissionId);
1113
+ }
1114
+ catch (error) {
1115
+ if (error instanceof Error) {
1116
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error.message, error);
1117
+ }
1118
+ else {
1119
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error, new Error(error));
1120
+ }
1121
+ }
1122
+ }
1123
+ catch (error) {
1124
+ this.emit('error', error);
1125
+ throw error;
1126
+ }
1127
+ });
1128
+ }
1129
+ signMessage(message, privateKey) {
1130
+ return __awaiter(this, void 0, void 0, function* () {
1131
+ try {
1132
+ const wallet = yield this.checkAndGetWallet();
1133
+ try {
1134
+ return yield wallet.tronWeb.trx.signMessageV2(message, privateKey);
1135
+ }
1136
+ catch (error) {
1137
+ if (error instanceof Error) {
1138
+ throw new tronwallet_abstract_adapter_1.WalletSignMessageError(error.message, error);
1139
+ }
1140
+ else {
1141
+ throw new tronwallet_abstract_adapter_1.WalletSignMessageError(error, new Error(error));
1142
+ }
1143
+ }
1144
+ }
1145
+ catch (error) {
1146
+ this.emit('error', error);
1147
+ throw error;
1148
+ }
1149
+ });
1150
+ }
1151
+ /**
1152
+ * Switch to target chain. If current chain is the same as target chain, the call will success immediately.
1153
+ * Available chainIds:
1154
+ * - Mainnet: 0x2b6653dc
1155
+ * - Shasta: 0x94a9059e
1156
+ * - Nile: 0xcd8690dc
1157
+ * @param chainId chainId
1158
+ */
1159
+ switchChain(chainId) {
1160
+ return __awaiter(this, void 0, void 0, function* () {
1161
+ try {
1162
+ yield this._checkWallet();
1163
+ if (this.state === tronwallet_abstract_adapter_1.AdapterState.NotFound) {
1164
+ if (this.config.openUrlWhenWalletNotFound !== false && (0, tronwallet_abstract_adapter_1.isInBrowser)()) {
1165
+ window.open(this.url, '_blank');
1166
+ }
1167
+ throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
1168
+ }
1169
+ if (!this._supportNewTronProtocol) {
1170
+ throw new tronwallet_abstract_adapter_1.WalletSwitchChainError("Current version of TronLink doesn't support switch chain operation.");
1171
+ }
1172
+ const wallet = this._wallet;
1173
+ try {
1174
+ yield wallet.request({
1175
+ method: 'wallet_switchEthereumChain',
1176
+ params: [{ chainId }],
1177
+ });
1178
+ }
1179
+ catch (e) {
1180
+ throw new tronwallet_abstract_adapter_1.WalletSwitchChainError((e === null || e === void 0 ? void 0 : e.message) || e, e instanceof Error ? e : new Error(e));
1181
+ }
1182
+ }
1183
+ catch (error) {
1184
+ this.emit('error', error);
1185
+ throw error;
1186
+ }
1187
+ });
1188
+ }
1189
+ checkAndGetWallet() {
1190
+ return __awaiter(this, void 0, void 0, function* () {
1191
+ this.checkIfOpenTronLink();
1192
+ yield this._checkWallet();
1193
+ if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected)
1194
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
1195
+ const wallet = this._wallet;
1196
+ if (!wallet || !wallet.tronWeb)
1197
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
1198
+ return wallet;
1199
+ });
1200
+ }
1201
+ _listenTronLinkEvent() {
1202
+ this._stopListenTronLinkEvent();
1203
+ window.addEventListener('message', this._tronLinkMessageHandler);
1204
+ }
1205
+ _stopListenTronLinkEvent() {
1206
+ window.removeEventListener('message', this._tronLinkMessageHandler);
1207
+ }
1208
+ checkIfOpenTronLink() {
1209
+ const { dappName = '', dappIcon = '' } = this.config;
1210
+ if (this.config.openTronLinkAppOnMobile === false) {
1211
+ return;
1212
+ }
1213
+ if ((0, utils_js_1.openTronLink)({ dappIcon, dappName })) {
1214
+ throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
1215
+ }
1216
+ }
1217
+ // following code is for TIP-1193
1218
+ _listenTronEvent() {
1219
+ this._stopListenTronEvent();
1220
+ this._stopListenTronLinkEvent();
1221
+ const wallet = this._wallet;
1222
+ wallet.on('chainChanged', this._onChainChanged);
1223
+ wallet.on('accountsChanged', this._onAccountsChanged);
1224
+ }
1225
+ _stopListenTronEvent() {
1226
+ const wallet = this._wallet;
1227
+ wallet.removeListener('chainChanged', this._onChainChanged);
1228
+ wallet.removeListener('accountsChanged', this._onAccountsChanged);
1229
+ }
1230
+ /**
1231
+ * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
1232
+ * @returns if wallet exists
1233
+ */
1234
+ _checkWallet() {
1235
+ if (this.readyState === tronwallet_abstract_adapter_1.WalletReadyState.Found) {
1236
+ return Promise.resolve(true);
1237
+ }
1238
+ if (this._checkPromise) {
1239
+ return this._checkPromise;
1240
+ }
1241
+ const interval = 100;
1242
+ const checkTronTimes = Math.floor(2000 / interval);
1243
+ const maxTimes = Math.floor(this.config.checkTimeout / interval);
1244
+ let times = 0, timer;
1245
+ this._checkPromise = new Promise((resolve) => {
1246
+ const check = () => {
1247
+ times++;
1248
+ const isSupport = times < checkTronTimes && !(0, tronwallet_abstract_adapter_1.isInMobileBrowser)() ? (0, utils_js_1.supportTron)() : (0, utils_js_1.supportTronLink)();
1249
+ if (isSupport || times > maxTimes) {
1250
+ timer && clearInterval(timer);
1251
+ this._readyState = isSupport ? tronwallet_abstract_adapter_1.WalletReadyState.Found : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
1252
+ this._updateWallet();
1253
+ this.emit('readyStateChanged', this.readyState);
1254
+ resolve(isSupport);
1255
+ }
1256
+ };
1257
+ timer = setInterval(check, interval);
1258
+ check();
1259
+ });
1260
+ return this._checkPromise;
1261
+ }
1262
+ checkForWalletReadyForApp() {
1263
+ if (this.checkReadyInterval) {
1264
+ return;
1265
+ }
1266
+ let times = 0;
1267
+ const maxTimes = Math.floor(this.config.checkTimeout / 200);
1268
+ const check = () => {
1269
+ var _a, _b;
1270
+ if (window.tronLink ? (_a = window.tronLink.tronWeb) === null || _a === void 0 ? void 0 : _a.defaultAddress : (_b = window.tronWeb) === null || _b === void 0 ? void 0 : _b.defaultAddress) {
1271
+ this.checkReadyInterval && clearInterval(this.checkReadyInterval);
1272
+ this.checkReadyInterval = null;
1273
+ this._updateWallet();
1274
+ this.emit('connect', this.address || '');
1275
+ }
1276
+ else if (times > maxTimes) {
1277
+ this.checkReadyInterval && clearInterval(this.checkReadyInterval);
1278
+ this.checkReadyInterval = null;
1279
+ }
1280
+ else {
1281
+ times++;
1282
+ }
1283
+ };
1284
+ this.checkReadyInterval = setInterval(check, 200);
1285
+ }
1286
+ setAddress(address) {
1287
+ this._address = address;
1288
+ }
1289
+ setState(state) {
1290
+ const preState = this.state;
1291
+ if (state !== preState) {
1292
+ this._state = state;
1293
+ this.emit('stateChanged', state);
1294
+ }
1295
+ }
1296
+ }
1297
+ exports.TronLinkAdapter = TronLinkAdapter;
1298
+
1299
+ } (adapter));
1300
+
1301
+ var types = {};
1302
+
1303
+ Object.defineProperty(types, "__esModule", { value: true });
1304
+
1305
+ (function (exports) {
1306
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
1307
+ if (k2 === undefined) k2 = k;
1308
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1309
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1310
+ desc = { enumerable: true, get: function() { return m[k]; } };
1311
+ }
1312
+ Object.defineProperty(o, k2, desc);
1313
+ }) : (function(o, m, k, k2) {
1314
+ if (k2 === undefined) k2 = k;
1315
+ o[k2] = m[k];
1316
+ }));
1317
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
1318
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1319
+ };
1320
+ Object.defineProperty(exports, "__esModule", { value: true });
1321
+ __exportStar(adapter, exports);
1322
+ __exportStar(types, exports);
1323
+ __exportStar(utils$1, exports);
1324
+
1325
+ } (cjs));
1326
+
1327
+ var utils = {};
1328
+
1329
+ (function (exports) {
1330
+ Object.defineProperty(exports, "__esModule", { value: true });
1331
+ exports.isTrustApp = void 0;
1332
+ exports.supportTrust = supportTrust;
1333
+ exports.openTrustWallet = openTrustWallet;
1334
+ const tronwallet_abstract_adapter_1 = cjs$1;
1335
+ function supportTrust() {
1336
+ return typeof window !== 'undefined' && !!(window.trustwallet && window.trustwallet.tronLink);
1337
+ }
1338
+ const isTrustApp = function () {
1339
+ if (typeof window !== 'undefined' && typeof window.navigator !== 'undefined') {
1340
+ return /Trust/i.test(window.navigator.userAgent);
1341
+ }
1342
+ return false;
1343
+ };
1344
+ exports.isTrustApp = isTrustApp;
1345
+ function openTrustWallet() {
1346
+ if (!(0, exports.isTrustApp)() && (0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
1347
+ window.location.href = 'https://link.trustwallet.com?source=' + encodeURIComponent(window.location.href);
1348
+ return true;
1349
+ }
1350
+ return false;
1351
+ }
1352
+
1353
+ } (utils));
1354
+
1355
+ (function (exports) {
1356
+ var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {
1357
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1358
+ return new (P || (P = Promise))(function (resolve, reject) {
1359
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1360
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1361
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1362
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1363
+ });
1364
+ };
1365
+ Object.defineProperty(exports, "__esModule", { value: true });
1366
+ exports.TrustAdapter = exports.TrustAdapterName = void 0;
1367
+ const tronwallet_abstract_adapter_1 = cjs$1;
1368
+ const tronwallet_adapter_tronlink_1 = cjs;
1369
+ const utils_js_1 = utils;
1370
+ exports.TrustAdapterName = 'Trust';
1371
+ class TrustAdapter extends tronwallet_abstract_adapter_1.Adapter {
1372
+ constructor(config = {}) {
1373
+ super();
1374
+ this.name = exports.TrustAdapterName;
1375
+ this.url = 'https://trustwallet.com';
1376
+ this.icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTgiIGhlaWdodD0iNjUiIHZpZXdCb3g9IjAgMCA1OCA2NSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgOS4zODk0OUwyOC44OTA3IDBWNjUuMDA0MkM4LjI1NDUgNTYuMzM2OSAwIDM5LjcyNDggMCAzMC4zMzUzVjkuMzg5NDlaIiBmaWxsPSIjMDUwMEZGIi8+CjxwYXRoIGQ9Ik01Ny43ODIyIDkuMzg5NDlMMjguODkxNSAwVjY1LjAwNDJDNDkuNTI3NyA1Ni4zMzY5IDU3Ljc4MjIgMzkuNzI0OCA1Ny43ODIyIDMwLjMzNTNWOS4zODk0OVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yMjAxXzY5NDIpIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjIwMV82OTQyIiB4MT0iNTEuMzYxNSIgeTE9Ii00LjE1MjkzIiB4Mj0iMjkuNTM4NCIgeTI9IjY0LjUxNDciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjAyMTEyIiBzdG9wLWNvbG9yPSIjMDAwMEZGIi8+CjxzdG9wIG9mZnNldD0iMC4wNzYyNDIzIiBzdG9wLWNvbG9yPSIjMDA5NEZGIi8+CjxzdG9wIG9mZnNldD0iMC4xNjMwODkiIHN0b3AtY29sb3I9IiM0OEZGOTEiLz4KPHN0b3Agb2Zmc2V0PSIwLjQyMDA0OSIgc3RvcC1jb2xvcj0iIzAwOTRGRiIvPgo8c3RvcCBvZmZzZXQ9IjAuNjgyODg2IiBzdG9wLWNvbG9yPSIjMDAzOEZGIi8+CjxzdG9wIG9mZnNldD0iMC45MDI0NjUiIHN0b3AtY29sb3I9IiMwNTAwRkYiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K';
1377
+ this._readyState = (0, tronwallet_abstract_adapter_1.isInBrowser)() ? tronwallet_abstract_adapter_1.WalletReadyState.Loading : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
1378
+ this._state = tronwallet_abstract_adapter_1.AdapterState.Loading;
1379
+ this.messageHandler = (e) => {
1380
+ var _a, _b, _c;
1381
+ const message = (_a = e.data) === null || _a === void 0 ? void 0 : _a.message;
1382
+ if (!message) {
1383
+ return;
1384
+ }
1385
+ if (message.action === 'accountsChanged') {
1386
+ setTimeout(() => {
1387
+ var _a;
1388
+ const preAddr = this.address || '';
1389
+ if ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.ready) {
1390
+ const address = message.data.address;
1391
+ this.setAddress(address);
1392
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
1393
+ }
1394
+ else {
1395
+ this.setAddress(null);
1396
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
1397
+ }
1398
+ const address = this.address || '';
1399
+ if (address !== preAddr) {
1400
+ this.emit('accountsChanged', this.address || '', preAddr);
1401
+ }
1402
+ if (!preAddr && this.address) {
1403
+ this.emit('connect', this.address);
1404
+ }
1405
+ else if (preAddr && !this.address) {
1406
+ this.emit('disconnect');
1407
+ }
1408
+ }, 200);
1409
+ }
1410
+ else if (message.action === 'connect') {
1411
+ const isCurConnected = this.connected;
1412
+ const preAddress = this.address || '';
1413
+ const address = ((_c = (_b = this._wallet.tronWeb) === null || _b === void 0 ? void 0 : _b.defaultAddress) === null || _c === void 0 ? void 0 : _c.base58) || '';
1414
+ this.setAddress(address);
1415
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
1416
+ if (!isCurConnected) {
1417
+ this.emit('connect', address);
1418
+ }
1419
+ else if (address !== preAddress) {
1420
+ this.emit('accountsChanged', this.address || '', preAddress);
1421
+ }
1422
+ }
1423
+ else if (message.action === 'disconnect') {
1424
+ this.setAddress(null);
1425
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
1426
+ this.emit('disconnect');
1427
+ }
1428
+ };
1429
+ this._checkPromise = null;
1430
+ this._updateWallet = () => {
1431
+ var _a, _b;
1432
+ let state = this.state;
1433
+ let address = this.address;
1434
+ if ((0, utils_js_1.supportTrust)()) {
1435
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1436
+ this._wallet = window.trustwallet.tronLink;
1437
+ this._listenEvent();
1438
+ address = ((_b = (_a = this._wallet.tronWeb) === null || _a === void 0 ? void 0 : _a.defaultAddress) === null || _b === void 0 ? void 0 : _b.base58) || null;
1439
+ state = this._wallet.ready ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
1440
+ }
1441
+ else {
1442
+ this._wallet = null;
1443
+ address = null;
1444
+ state = tronwallet_abstract_adapter_1.AdapterState.NotFound;
1445
+ }
1446
+ this.setAddress(address);
1447
+ this.setState(state);
1448
+ };
1449
+ const { checkTimeout = 2 * 1000, openUrlWhenWalletNotFound = true, openAppWithDeeplink = true } = config;
1450
+ if (typeof checkTimeout !== 'number') {
1451
+ throw new Error('[TrustAdapter] config.checkTimeout should be a number');
1452
+ }
1453
+ this.config = {
1454
+ checkTimeout,
1455
+ openAppWithDeeplink,
1456
+ openUrlWhenWalletNotFound,
1457
+ };
1458
+ this._connecting = false;
1459
+ this._wallet = null;
1460
+ this._address = null;
1461
+ if (!(0, tronwallet_abstract_adapter_1.isInBrowser)()) {
1462
+ this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
1463
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.NotFound);
1464
+ return;
1465
+ }
1466
+ if ((0, utils_js_1.supportTrust)()) {
1467
+ this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.Found;
1468
+ this._updateWallet();
1469
+ }
1470
+ else {
1471
+ this._checkWallet().then(() => {
1472
+ if (this.connected) {
1473
+ this.emit('connect', this.address || '');
1474
+ }
1475
+ });
1476
+ }
1477
+ }
1478
+ get address() {
1479
+ return this._address;
1480
+ }
1481
+ get state() {
1482
+ return this._state;
1483
+ }
1484
+ get readyState() {
1485
+ return this._readyState;
1486
+ }
1487
+ get connecting() {
1488
+ return this._connecting;
1489
+ }
1490
+ /**
1491
+ * Get network information used by Trust.
1492
+ * @returns {Network} Current network information.
1493
+ */
1494
+ network() {
1495
+ return __awaiter(this, void 0, void 0, function* () {
1496
+ try {
1497
+ yield this._checkWallet();
1498
+ if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected)
1499
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
1500
+ const wallet = this._wallet;
1501
+ if (!wallet || !wallet.tronWeb)
1502
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
1503
+ try {
1504
+ return yield (0, tronwallet_adapter_tronlink_1.getNetworkInfoByTronWeb)(wallet.tronWeb);
1505
+ }
1506
+ catch (e) {
1507
+ throw new tronwallet_abstract_adapter_1.WalletGetNetworkError(e === null || e === void 0 ? void 0 : e.message, e);
1508
+ }
1509
+ }
1510
+ catch (e) {
1511
+ this.emit('error', e);
1512
+ throw e;
1513
+ }
1514
+ });
1515
+ }
1516
+ connect() {
1517
+ return __awaiter(this, void 0, void 0, function* () {
1518
+ var _a;
1519
+ try {
1520
+ this.checkIfopenTrustWallet();
1521
+ if (this.connected || this.connecting)
1522
+ return;
1523
+ yield this._checkWallet();
1524
+ if (this.state === tronwallet_abstract_adapter_1.AdapterState.NotFound) {
1525
+ if (this.config.openUrlWhenWalletNotFound !== false && (0, tronwallet_abstract_adapter_1.isInBrowser)()) {
1526
+ window.open(this.url, '_blank');
1527
+ }
1528
+ throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
1529
+ }
1530
+ if (!this._wallet)
1531
+ return;
1532
+ this._connecting = true;
1533
+ const wallet = this._wallet;
1534
+ try {
1535
+ const res = yield wallet.request({ method: 'tron_requestAccounts' });
1536
+ if (!res) {
1537
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('Request connect error.');
1538
+ }
1539
+ if (res.code === 4000) {
1540
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('The same DApp has already initiated a request to connect to trustwallet, and the pop-up window has not been closed.');
1541
+ }
1542
+ if (res.code === 4001) {
1543
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError('The user rejected connection.');
1544
+ }
1545
+ }
1546
+ catch (error) {
1547
+ throw new tronwallet_abstract_adapter_1.WalletConnectionError(error === null || error === void 0 ? void 0 : error.message, error);
1548
+ }
1549
+ const address = ((_a = wallet.tronWeb.defaultAddress) === null || _a === void 0 ? void 0 : _a.base58) || '';
1550
+ this.setAddress(address);
1551
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
1552
+ this._listenEvent();
1553
+ this.connected && this.emit('connect', this.address || '');
1554
+ }
1555
+ catch (error) {
1556
+ this.emit('error', error);
1557
+ throw error;
1558
+ }
1559
+ finally {
1560
+ this._connecting = false;
1561
+ }
1562
+ });
1563
+ }
1564
+ disconnect() {
1565
+ return __awaiter(this, void 0, void 0, function* () {
1566
+ this._stopListenEvent();
1567
+ if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected) {
1568
+ return;
1569
+ }
1570
+ this.setAddress(null);
1571
+ this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
1572
+ this.emit('disconnect');
1573
+ });
1574
+ }
1575
+ signTransaction(transaction, privateKey) {
1576
+ return __awaiter(this, void 0, void 0, function* () {
1577
+ try {
1578
+ const wallet = yield this.checkAndGetWallet();
1579
+ try {
1580
+ return yield wallet.tronWeb.trx.sign(transaction, privateKey);
1581
+ }
1582
+ catch (error) {
1583
+ if (error instanceof Error) {
1584
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error.message, error);
1585
+ }
1586
+ else {
1587
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error, new Error(error));
1588
+ }
1589
+ }
1590
+ }
1591
+ catch (error) {
1592
+ this.emit('error', error);
1593
+ throw error;
1594
+ }
1595
+ });
1596
+ }
1597
+ multiSign(transaction, privateKey, permissionId) {
1598
+ return __awaiter(this, void 0, void 0, function* () {
1599
+ try {
1600
+ const wallet = yield this.checkAndGetWallet();
1601
+ try {
1602
+ return yield wallet.tronWeb.trx.multiSign(transaction, privateKey, permissionId);
1603
+ }
1604
+ catch (error) {
1605
+ if (error instanceof Error) {
1606
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error.message, error);
1607
+ }
1608
+ else {
1609
+ throw new tronwallet_abstract_adapter_1.WalletSignTransactionError(error, new Error(error));
1610
+ }
1611
+ }
1612
+ }
1613
+ catch (error) {
1614
+ this.emit('error', error);
1615
+ throw error;
1616
+ }
1617
+ });
1618
+ }
1619
+ signMessage(message, privateKey) {
1620
+ return __awaiter(this, void 0, void 0, function* () {
1621
+ try {
1622
+ const wallet = yield this.checkAndGetWallet();
1623
+ try {
1624
+ return yield wallet.tronWeb.trx.signMessageV2(message, privateKey);
1625
+ }
1626
+ catch (error) {
1627
+ if (error instanceof Error) {
1628
+ throw new tronwallet_abstract_adapter_1.WalletSignMessageError(error.message, error);
1629
+ }
1630
+ else {
1631
+ throw new tronwallet_abstract_adapter_1.WalletSignMessageError(error, new Error(error));
1632
+ }
1633
+ }
1634
+ }
1635
+ catch (error) {
1636
+ this.emit('error', error);
1637
+ throw error;
1638
+ }
1639
+ });
1640
+ }
1641
+ checkAndGetWallet() {
1642
+ return __awaiter(this, void 0, void 0, function* () {
1643
+ this.checkIfopenTrustWallet();
1644
+ yield this._checkWallet();
1645
+ if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected)
1646
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
1647
+ const wallet = this._wallet;
1648
+ if (!wallet || !wallet.tronWeb)
1649
+ throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
1650
+ return wallet;
1651
+ });
1652
+ }
1653
+ _listenEvent() {
1654
+ this._stopListenEvent();
1655
+ window.addEventListener('message', this.messageHandler);
1656
+ }
1657
+ _stopListenEvent() {
1658
+ window.removeEventListener('message', this.messageHandler);
1659
+ }
1660
+ checkIfopenTrustWallet() {
1661
+ if (this.config.openAppWithDeeplink === false) {
1662
+ return;
1663
+ }
1664
+ if ((0, utils_js_1.openTrustWallet)()) {
1665
+ throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
1666
+ }
1667
+ }
1668
+ /**
1669
+ * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
1670
+ * @returns if trustwallet exists
1671
+ */
1672
+ _checkWallet() {
1673
+ if (this.readyState === tronwallet_abstract_adapter_1.WalletReadyState.Found) {
1674
+ return Promise.resolve(true);
1675
+ }
1676
+ if (this._checkPromise) {
1677
+ return this._checkPromise;
1678
+ }
1679
+ const interval = 100;
1680
+ const maxTimes = Math.floor(this.config.checkTimeout / interval);
1681
+ let times = 0, timer;
1682
+ this._checkPromise = new Promise((resolve) => {
1683
+ const check = () => {
1684
+ times++;
1685
+ const isSupport = (0, utils_js_1.supportTrust)();
1686
+ if (isSupport || times > maxTimes) {
1687
+ timer && clearInterval(timer);
1688
+ this._readyState = isSupport ? tronwallet_abstract_adapter_1.WalletReadyState.Found : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
1689
+ this._updateWallet();
1690
+ this.emit('readyStateChanged', this.readyState);
1691
+ resolve(isSupport);
1692
+ }
1693
+ };
1694
+ timer = setInterval(check, interval);
1695
+ check();
1696
+ });
1697
+ return this._checkPromise;
1698
+ }
1699
+ setAddress(address) {
1700
+ this._address = address;
1701
+ }
1702
+ setState(state) {
1703
+ const preState = this.state;
1704
+ if (state !== preState) {
1705
+ this._state = state;
1706
+ this.emit('stateChanged', state);
1707
+ }
1708
+ }
1709
+ }
1710
+ exports.TrustAdapter = TrustAdapter;
1711
+
1712
+ } (adapter$2));
1713
+
1714
+ (function (exports) {
1715
+ var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
1716
+ if (k2 === undefined) k2 = k;
1717
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1718
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1719
+ desc = { enumerable: true, get: function() { return m[k]; } };
1720
+ }
1721
+ Object.defineProperty(o, k2, desc);
1722
+ }) : (function(o, m, k, k2) {
1723
+ if (k2 === undefined) k2 = k;
1724
+ o[k2] = m[k];
1725
+ }));
1726
+ var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
1727
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1728
+ };
1729
+ Object.defineProperty(exports, "__esModule", { value: true });
1730
+ __exportStar(adapter$2, exports);
1731
+ __exportStar(utils, exports);
1732
+
1733
+ } (cjs$2));
1734
+
1735
+ var index = /*@__PURE__*/getDefaultExportFromCjs(cjs$2);
1736
+
1737
+ return index;
1738
+
1739
+ }));