@0xsequence/provider 0.40.2 → 0.40.5

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.
@@ -593,19 +593,19 @@ class WalletRequestHandler {
593
593
  let sig = ''; // Message must be prefixed with "\x19Ethereum Signed Message:\n"
594
594
  // as defined by EIP-191
595
595
 
596
- message = prefixEIP191Message(message); // TODO:
596
+ const prefixedMessage = prefixEIP191Message(message); // TODO:
597
597
  // if (process.env.TEST_MODE === 'true' && this.prompter === null) {
598
598
 
599
599
  if (_this.prompter === null) {
600
600
  // prompter is null, so we'll sign from here
601
- sig = await signer.signMessage(ethers.ethers.utils.arrayify(message), chainId);
601
+ sig = await signer.signMessage(prefixedMessage, chainId);
602
602
  } else {
603
603
  const promptResultForDeployment = await _this.handleConfirmWalletDeployPrompt(_this.prompter, signer, chainId);
604
604
 
605
605
  if (promptResultForDeployment) {
606
606
  sig = await _this.prompter.promptSignMessage({
607
607
  chainId: chainId,
608
- message
608
+ message: prefixedMessage
609
609
  }, _this.connectOptions);
610
610
  }
611
611
  }
@@ -3145,6 +3145,257 @@ class BaseInjectedTransport extends eventemitter2.EventEmitter2 {
3145
3145
 
3146
3146
  }
3147
3147
 
3148
+ /**
3149
+ * This will redirect console logs from Sequence.js & the wallet to the Unreal console, for debugging purposes.
3150
+ */
3151
+ function overrideLogs(side) {
3152
+ var _window$ue;
3153
+
3154
+ if ((_window$ue = window.ue) != null && _window$ue.sequencewallettransport && !window.logsOverriddenForUnreal) {
3155
+ var _window$ue2;
3156
+
3157
+ const t = (_window$ue2 = window.ue) == null ? void 0 : _window$ue2.sequencewallettransport;
3158
+
3159
+ console.log = (...args) => {
3160
+ t.logfromjs(`${side}: ${stringify(args)}`);
3161
+ };
3162
+
3163
+ console.warn = (...args) => {
3164
+ t.warnfromjs(`${side}: ${stringify(args)}`);
3165
+ };
3166
+
3167
+ console.error = (...args) => {
3168
+ t.errorfromjs(`${side}: ${stringify(args)}`);
3169
+ };
3170
+
3171
+ window.logsOverriddenForUnreal = true;
3172
+ }
3173
+ }
3174
+
3175
+ function stringify(things) {
3176
+ return things.map(a => typeof a === 'object' ? a instanceof Error ? a.message : JSON.stringify(a) : String(a)).join(' ');
3177
+ }
3178
+
3179
+ let registeredUnrealMessageProvider; // all lowercase is an annoying limitation of Unreal CEF BindUObject
3180
+
3181
+ /**
3182
+ * Initialized on dApp side
3183
+ */
3184
+ class UnrealMessageProvider extends BaseProviderTransport {
3185
+ constructor(walletAppURL) {
3186
+ super();
3187
+ this.walletURL = void 0;
3188
+
3189
+ this.register = () => {
3190
+ var _window$ue;
3191
+
3192
+ overrideLogs('dapp');
3193
+
3194
+ if (registeredUnrealMessageProvider) {
3195
+ // overriding the registered message provider
3196
+ registeredUnrealMessageProvider.unregister();
3197
+ registeredUnrealMessageProvider = this;
3198
+ } // listen for incoming messages from wallet
3199
+
3200
+
3201
+ if ((_window$ue = window.ue) != null && _window$ue.sequencewallettransport) {
3202
+ window.ue.sequencewallettransport.onmessagefromwallet = this.onUnrealCallback;
3203
+ }
3204
+
3205
+ registeredUnrealMessageProvider = this;
3206
+ this._registered = true;
3207
+ console.log('registering transport!');
3208
+ };
3209
+
3210
+ this.unregister = () => {
3211
+ var _window$ue2, _window$ue2$sequencew;
3212
+
3213
+ this._registered = false;
3214
+ this.closeWallet(); // disable message listener
3215
+
3216
+ if (registeredUnrealMessageProvider === this) {
3217
+ registeredUnrealMessageProvider = undefined;
3218
+ }
3219
+
3220
+ if (((_window$ue2 = window.ue) == null ? void 0 : (_window$ue2$sequencew = _window$ue2.sequencewallettransport) == null ? void 0 : _window$ue2$sequencew.onmessagefromwallet) === this.onUnrealCallback) {
3221
+ delete window.ue.sequencewallettransport.onmessagefromwallet;
3222
+ } // clear event listeners
3223
+
3224
+
3225
+ this.events.removeAllListeners();
3226
+ };
3227
+
3228
+ this.openWallet = (path, intent, networkId) => {
3229
+ if (this.isOpened()) {
3230
+ // TODO focus wallet
3231
+ console.log('wallet already open!');
3232
+ return;
3233
+ }
3234
+
3235
+ console.log('opening wallet!'); // Instantiate new walletURL for this call
3236
+
3237
+ const walletURL = new URL(this.walletURL.href);
3238
+ const windowSessionParams = new WindowSessionParams();
3239
+
3240
+ if (path) {
3241
+ walletURL.pathname = path.toLowerCase();
3242
+ } // Set session, intent and network id on walletURL
3243
+
3244
+
3245
+ this._init = exports.InitState.NIL;
3246
+ this._sessionId = `${performance.now()}`;
3247
+ windowSessionParams.set('sid', this._sessionId);
3248
+
3249
+ if (intent) {
3250
+ // encode intent as base64 url-encoded param
3251
+ windowSessionParams.set('intent', utils.base64EncodeObject(intent));
3252
+ }
3253
+
3254
+ if (networkId) {
3255
+ windowSessionParams.set('net', `${networkId}`);
3256
+ } // serialize params
3257
+
3258
+
3259
+ walletURL.search = windowSessionParams.toString();
3260
+ console.log('opening wallet to', walletURL.href);
3261
+ window.open(walletURL.href);
3262
+ };
3263
+
3264
+ this.onUnrealCallback = message => {
3265
+ if (!message) {
3266
+ throw new Error('ProviderMessage object is empty');
3267
+ } // handle message with base message provider
3268
+
3269
+
3270
+ this.handleMessage(message);
3271
+ };
3272
+
3273
+ this.walletURL = new URL(walletAppURL);
3274
+ }
3275
+
3276
+ closeWallet() {
3277
+ this.close();
3278
+ } // onmessage, receives ProviderMessageResponse from the wallet unreal transport
3279
+
3280
+
3281
+ // all lowercase is an annoying limitation of Unreal CEF BindUObject
3282
+ sendMessage(message) {
3283
+ var _window$ue3, _window$ue3$sequencew;
3284
+
3285
+ const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
3286
+ console.log('Sending message to wallet:', postedMessage);
3287
+ (_window$ue3 = window.ue) == null ? void 0 : (_window$ue3$sequencew = _window$ue3.sequencewallettransport) == null ? void 0 : _window$ue3$sequencew.sendmessagetowallet(postedMessage);
3288
+ }
3289
+
3290
+ }
3291
+
3292
+ /**
3293
+ * Initialized on Wallet side
3294
+ */
3295
+ class UnrealMessageHandler extends BaseWalletTransport {
3296
+ constructor(walletRequestHandler) {
3297
+ super(walletRequestHandler);
3298
+
3299
+ this.onMessageFromUnreal = request => {
3300
+ // Wallet always expects json-rpc request messages from a dapp
3301
+ utils.logger.debug('RECEIVED MESSAGE', request); // Handle message via the base transport
3302
+
3303
+ this.handleMessage(request);
3304
+ };
3305
+
3306
+ this.getUnrealTransportSession = windowParams => {
3307
+ const params = new WindowSessionParams(windowParams);
3308
+ return {
3309
+ sessionId: params.get('sid'),
3310
+ networkId: params.get('net'),
3311
+ intent: utils.base64DecodeObject(params.get('intent'))
3312
+ };
3313
+ };
3314
+
3315
+ this._init = exports.InitState.NIL;
3316
+ }
3317
+
3318
+ async register(windowHref) {
3319
+ var _window$ue;
3320
+
3321
+ if (((_window$ue = window.ue) == null ? void 0 : _window$ue.sequencewallettransport) === undefined) {
3322
+ return;
3323
+ }
3324
+
3325
+ overrideLogs('wallet'); // record open details (sessionId + default network) from the window url
3326
+
3327
+ const {
3328
+ search: rawParams
3329
+ } = new URL(windowHref || window.location.href);
3330
+ let session = this.getUnrealTransportSession(rawParams); // provider should always include sid when opening a new window
3331
+
3332
+ const isNewWindowSession = !!session.sessionId; // attempt to restore previous session in the case of a redirect or window reload
3333
+
3334
+ if (!isNewWindowSession) {
3335
+ session = await this.getCachedTransportSession();
3336
+ }
3337
+
3338
+ if (!session) {
3339
+ utils.logger.error('unreal session is undefined');
3340
+ return;
3341
+ } // listen for window-transport requests
3342
+
3343
+
3344
+ window.ue.sequencewallettransport.onmessagefromsequencejs = this.onMessageFromUnreal;
3345
+ this._registered = true; // send open event to the app which opened us
3346
+
3347
+ this.open(session).then(opened => {
3348
+ if (!opened) {
3349
+ var _session;
3350
+
3351
+ const err = `failed to open to network ${(_session = session) == null ? void 0 : _session.networkId}`;
3352
+ utils.logger.error(err);
3353
+ this.notifyClose({
3354
+ message: err
3355
+ });
3356
+ window.close();
3357
+ }
3358
+ }).catch(e => {
3359
+ var _session2;
3360
+
3361
+ const err = `failed to open to network ${(_session2 = session) == null ? void 0 : _session2.networkId}, due to: ${e}`;
3362
+ utils.logger.error(err);
3363
+ this.notifyClose({
3364
+ message: err
3365
+ });
3366
+ window.close();
3367
+ });
3368
+ }
3369
+
3370
+ unregister() {
3371
+ var _window$ue2, _window$ue2$sequencew;
3372
+
3373
+ if (((_window$ue2 = window.ue) == null ? void 0 : (_window$ue2$sequencew = _window$ue2.sequencewallettransport) == null ? void 0 : _window$ue2$sequencew.onmessagefromsequencejs) === this.onMessageFromUnreal) {
3374
+ delete window.ue.sequencewallettransport.onmessagefromsequencejs;
3375
+ }
3376
+
3377
+ this._registered = false;
3378
+ } // onmessage is called when (the wallet) receives request messages from the dapp
3379
+ // over the unreal json-messaging transport
3380
+
3381
+
3382
+ // sendMessage sends message to the dapp window
3383
+ sendMessage(message) {
3384
+ var _window$ue3, _window$ue3$sequencew;
3385
+
3386
+ if (message.type !== exports.EventType.INIT && this._init !== exports.InitState.OK) {
3387
+ utils.logger.error('impossible state, should not be calling postMessage until inited');
3388
+ return;
3389
+ } // prepare payload
3390
+
3391
+
3392
+ const payload = JSON.stringify(message); // post-message to app.
3393
+
3394
+ (_window$ue3 = window.ue) == null ? void 0 : (_window$ue3$sequencew = _window$ue3.sequencewallettransport) == null ? void 0 : _window$ue3$sequencew.sendmessagetosequencejs(payload);
3395
+ }
3396
+
3397
+ }
3398
+
3148
3399
  class WalletUtils {
3149
3400
  constructor(walletProvider) {
3150
3401
  var _this = this;
@@ -3250,7 +3501,7 @@ class Wallet {
3250
3501
  this.providers = void 0;
3251
3502
 
3252
3503
  this.init = () => {
3253
- var _this$config$transpor, _this$config$transpor2, _this$config$transpor3, _this$config$transpor4, _this$config$transpor5, _this$config$transpor6;
3504
+ var _this$config$transpor, _this$config$transpor2, _this$config$transpor3, _this$config$transpor4, _this$config$transpor5, _this$config$transpor6, _this$config$transpor7, _this$config$transpor8;
3254
3505
 
3255
3506
  if (this.transport.provider) {
3256
3507
  // init must have already been called
@@ -3282,6 +3533,11 @@ class Wallet {
3282
3533
  // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3283
3534
  }
3284
3535
 
3536
+ if ((_this$config$transpor7 = this.config.transports) != null && (_this$config$transpor8 = _this$config$transpor7.unrealTransport) != null && _this$config$transpor8.enabled) {
3537
+ this.transport.unrealMessageProvider = new UnrealMessageProvider(this.config.walletAppURL);
3538
+ this.transport.messageProvider.add(this.transport.unrealMessageProvider);
3539
+ }
3540
+
3285
3541
  this.transport.messageProvider.register(); // .....
3286
3542
 
3287
3543
  this.transport.allowProvider = network.allowProviderMiddleware(request => {
@@ -3839,6 +4095,8 @@ exports.ProxyMessageChannel = ProxyMessageChannel;
3839
4095
  exports.ProxyMessageChannelPort = ProxyMessageChannelPort;
3840
4096
  exports.ProxyMessageHandler = ProxyMessageHandler;
3841
4097
  exports.ProxyMessageProvider = ProxyMessageProvider;
4098
+ exports.UnrealMessageHandler = UnrealMessageHandler;
4099
+ exports.UnrealMessageProvider = UnrealMessageProvider;
3842
4100
  exports.Wallet = Wallet;
3843
4101
  exports.WalletRequestHandler = WalletRequestHandler;
3844
4102
  exports.Web3Provider = Web3Provider;
@@ -593,19 +593,19 @@ class WalletRequestHandler {
593
593
  let sig = ''; // Message must be prefixed with "\x19Ethereum Signed Message:\n"
594
594
  // as defined by EIP-191
595
595
 
596
- message = prefixEIP191Message(message); // TODO:
596
+ const prefixedMessage = prefixEIP191Message(message); // TODO:
597
597
  // if (process.env.TEST_MODE === 'true' && this.prompter === null) {
598
598
 
599
599
  if (_this.prompter === null) {
600
600
  // prompter is null, so we'll sign from here
601
- sig = await signer.signMessage(ethers.ethers.utils.arrayify(message), chainId);
601
+ sig = await signer.signMessage(prefixedMessage, chainId);
602
602
  } else {
603
603
  const promptResultForDeployment = await _this.handleConfirmWalletDeployPrompt(_this.prompter, signer, chainId);
604
604
 
605
605
  if (promptResultForDeployment) {
606
606
  sig = await _this.prompter.promptSignMessage({
607
607
  chainId: chainId,
608
- message
608
+ message: prefixedMessage
609
609
  }, _this.connectOptions);
610
610
  }
611
611
  }
@@ -3145,6 +3145,257 @@ class BaseInjectedTransport extends eventemitter2.EventEmitter2 {
3145
3145
 
3146
3146
  }
3147
3147
 
3148
+ /**
3149
+ * This will redirect console logs from Sequence.js & the wallet to the Unreal console, for debugging purposes.
3150
+ */
3151
+ function overrideLogs(side) {
3152
+ var _window$ue;
3153
+
3154
+ if ((_window$ue = window.ue) != null && _window$ue.sequencewallettransport && !window.logsOverriddenForUnreal) {
3155
+ var _window$ue2;
3156
+
3157
+ const t = (_window$ue2 = window.ue) == null ? void 0 : _window$ue2.sequencewallettransport;
3158
+
3159
+ console.log = (...args) => {
3160
+ t.logfromjs(`${side}: ${stringify(args)}`);
3161
+ };
3162
+
3163
+ console.warn = (...args) => {
3164
+ t.warnfromjs(`${side}: ${stringify(args)}`);
3165
+ };
3166
+
3167
+ console.error = (...args) => {
3168
+ t.errorfromjs(`${side}: ${stringify(args)}`);
3169
+ };
3170
+
3171
+ window.logsOverriddenForUnreal = true;
3172
+ }
3173
+ }
3174
+
3175
+ function stringify(things) {
3176
+ return things.map(a => typeof a === 'object' ? a instanceof Error ? a.message : JSON.stringify(a) : String(a)).join(' ');
3177
+ }
3178
+
3179
+ let registeredUnrealMessageProvider; // all lowercase is an annoying limitation of Unreal CEF BindUObject
3180
+
3181
+ /**
3182
+ * Initialized on dApp side
3183
+ */
3184
+ class UnrealMessageProvider extends BaseProviderTransport {
3185
+ constructor(walletAppURL) {
3186
+ super();
3187
+ this.walletURL = void 0;
3188
+
3189
+ this.register = () => {
3190
+ var _window$ue;
3191
+
3192
+ overrideLogs('dapp');
3193
+
3194
+ if (registeredUnrealMessageProvider) {
3195
+ // overriding the registered message provider
3196
+ registeredUnrealMessageProvider.unregister();
3197
+ registeredUnrealMessageProvider = this;
3198
+ } // listen for incoming messages from wallet
3199
+
3200
+
3201
+ if ((_window$ue = window.ue) != null && _window$ue.sequencewallettransport) {
3202
+ window.ue.sequencewallettransport.onmessagefromwallet = this.onUnrealCallback;
3203
+ }
3204
+
3205
+ registeredUnrealMessageProvider = this;
3206
+ this._registered = true;
3207
+ console.log('registering transport!');
3208
+ };
3209
+
3210
+ this.unregister = () => {
3211
+ var _window$ue2, _window$ue2$sequencew;
3212
+
3213
+ this._registered = false;
3214
+ this.closeWallet(); // disable message listener
3215
+
3216
+ if (registeredUnrealMessageProvider === this) {
3217
+ registeredUnrealMessageProvider = undefined;
3218
+ }
3219
+
3220
+ if (((_window$ue2 = window.ue) == null ? void 0 : (_window$ue2$sequencew = _window$ue2.sequencewallettransport) == null ? void 0 : _window$ue2$sequencew.onmessagefromwallet) === this.onUnrealCallback) {
3221
+ delete window.ue.sequencewallettransport.onmessagefromwallet;
3222
+ } // clear event listeners
3223
+
3224
+
3225
+ this.events.removeAllListeners();
3226
+ };
3227
+
3228
+ this.openWallet = (path, intent, networkId) => {
3229
+ if (this.isOpened()) {
3230
+ // TODO focus wallet
3231
+ console.log('wallet already open!');
3232
+ return;
3233
+ }
3234
+
3235
+ console.log('opening wallet!'); // Instantiate new walletURL for this call
3236
+
3237
+ const walletURL = new URL(this.walletURL.href);
3238
+ const windowSessionParams = new WindowSessionParams();
3239
+
3240
+ if (path) {
3241
+ walletURL.pathname = path.toLowerCase();
3242
+ } // Set session, intent and network id on walletURL
3243
+
3244
+
3245
+ this._init = exports.InitState.NIL;
3246
+ this._sessionId = `${performance.now()}`;
3247
+ windowSessionParams.set('sid', this._sessionId);
3248
+
3249
+ if (intent) {
3250
+ // encode intent as base64 url-encoded param
3251
+ windowSessionParams.set('intent', utils.base64EncodeObject(intent));
3252
+ }
3253
+
3254
+ if (networkId) {
3255
+ windowSessionParams.set('net', `${networkId}`);
3256
+ } // serialize params
3257
+
3258
+
3259
+ walletURL.search = windowSessionParams.toString();
3260
+ console.log('opening wallet to', walletURL.href);
3261
+ window.open(walletURL.href);
3262
+ };
3263
+
3264
+ this.onUnrealCallback = message => {
3265
+ if (!message) {
3266
+ throw new Error('ProviderMessage object is empty');
3267
+ } // handle message with base message provider
3268
+
3269
+
3270
+ this.handleMessage(message);
3271
+ };
3272
+
3273
+ this.walletURL = new URL(walletAppURL);
3274
+ }
3275
+
3276
+ closeWallet() {
3277
+ this.close();
3278
+ } // onmessage, receives ProviderMessageResponse from the wallet unreal transport
3279
+
3280
+
3281
+ // all lowercase is an annoying limitation of Unreal CEF BindUObject
3282
+ sendMessage(message) {
3283
+ var _window$ue3, _window$ue3$sequencew;
3284
+
3285
+ const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
3286
+ console.log('Sending message to wallet:', postedMessage);
3287
+ (_window$ue3 = window.ue) == null ? void 0 : (_window$ue3$sequencew = _window$ue3.sequencewallettransport) == null ? void 0 : _window$ue3$sequencew.sendmessagetowallet(postedMessage);
3288
+ }
3289
+
3290
+ }
3291
+
3292
+ /**
3293
+ * Initialized on Wallet side
3294
+ */
3295
+ class UnrealMessageHandler extends BaseWalletTransport {
3296
+ constructor(walletRequestHandler) {
3297
+ super(walletRequestHandler);
3298
+
3299
+ this.onMessageFromUnreal = request => {
3300
+ // Wallet always expects json-rpc request messages from a dapp
3301
+ utils.logger.debug('RECEIVED MESSAGE', request); // Handle message via the base transport
3302
+
3303
+ this.handleMessage(request);
3304
+ };
3305
+
3306
+ this.getUnrealTransportSession = windowParams => {
3307
+ const params = new WindowSessionParams(windowParams);
3308
+ return {
3309
+ sessionId: params.get('sid'),
3310
+ networkId: params.get('net'),
3311
+ intent: utils.base64DecodeObject(params.get('intent'))
3312
+ };
3313
+ };
3314
+
3315
+ this._init = exports.InitState.NIL;
3316
+ }
3317
+
3318
+ async register(windowHref) {
3319
+ var _window$ue;
3320
+
3321
+ if (((_window$ue = window.ue) == null ? void 0 : _window$ue.sequencewallettransport) === undefined) {
3322
+ return;
3323
+ }
3324
+
3325
+ overrideLogs('wallet'); // record open details (sessionId + default network) from the window url
3326
+
3327
+ const {
3328
+ search: rawParams
3329
+ } = new URL(windowHref || window.location.href);
3330
+ let session = this.getUnrealTransportSession(rawParams); // provider should always include sid when opening a new window
3331
+
3332
+ const isNewWindowSession = !!session.sessionId; // attempt to restore previous session in the case of a redirect or window reload
3333
+
3334
+ if (!isNewWindowSession) {
3335
+ session = await this.getCachedTransportSession();
3336
+ }
3337
+
3338
+ if (!session) {
3339
+ utils.logger.error('unreal session is undefined');
3340
+ return;
3341
+ } // listen for window-transport requests
3342
+
3343
+
3344
+ window.ue.sequencewallettransport.onmessagefromsequencejs = this.onMessageFromUnreal;
3345
+ this._registered = true; // send open event to the app which opened us
3346
+
3347
+ this.open(session).then(opened => {
3348
+ if (!opened) {
3349
+ var _session;
3350
+
3351
+ const err = `failed to open to network ${(_session = session) == null ? void 0 : _session.networkId}`;
3352
+ utils.logger.error(err);
3353
+ this.notifyClose({
3354
+ message: err
3355
+ });
3356
+ window.close();
3357
+ }
3358
+ }).catch(e => {
3359
+ var _session2;
3360
+
3361
+ const err = `failed to open to network ${(_session2 = session) == null ? void 0 : _session2.networkId}, due to: ${e}`;
3362
+ utils.logger.error(err);
3363
+ this.notifyClose({
3364
+ message: err
3365
+ });
3366
+ window.close();
3367
+ });
3368
+ }
3369
+
3370
+ unregister() {
3371
+ var _window$ue2, _window$ue2$sequencew;
3372
+
3373
+ if (((_window$ue2 = window.ue) == null ? void 0 : (_window$ue2$sequencew = _window$ue2.sequencewallettransport) == null ? void 0 : _window$ue2$sequencew.onmessagefromsequencejs) === this.onMessageFromUnreal) {
3374
+ delete window.ue.sequencewallettransport.onmessagefromsequencejs;
3375
+ }
3376
+
3377
+ this._registered = false;
3378
+ } // onmessage is called when (the wallet) receives request messages from the dapp
3379
+ // over the unreal json-messaging transport
3380
+
3381
+
3382
+ // sendMessage sends message to the dapp window
3383
+ sendMessage(message) {
3384
+ var _window$ue3, _window$ue3$sequencew;
3385
+
3386
+ if (message.type !== exports.EventType.INIT && this._init !== exports.InitState.OK) {
3387
+ utils.logger.error('impossible state, should not be calling postMessage until inited');
3388
+ return;
3389
+ } // prepare payload
3390
+
3391
+
3392
+ const payload = JSON.stringify(message); // post-message to app.
3393
+
3394
+ (_window$ue3 = window.ue) == null ? void 0 : (_window$ue3$sequencew = _window$ue3.sequencewallettransport) == null ? void 0 : _window$ue3$sequencew.sendmessagetosequencejs(payload);
3395
+ }
3396
+
3397
+ }
3398
+
3148
3399
  class WalletUtils {
3149
3400
  constructor(walletProvider) {
3150
3401
  var _this = this;
@@ -3250,7 +3501,7 @@ class Wallet {
3250
3501
  this.providers = void 0;
3251
3502
 
3252
3503
  this.init = () => {
3253
- var _this$config$transpor, _this$config$transpor2, _this$config$transpor3, _this$config$transpor4, _this$config$transpor5, _this$config$transpor6;
3504
+ var _this$config$transpor, _this$config$transpor2, _this$config$transpor3, _this$config$transpor4, _this$config$transpor5, _this$config$transpor6, _this$config$transpor7, _this$config$transpor8;
3254
3505
 
3255
3506
  if (this.transport.provider) {
3256
3507
  // init must have already been called
@@ -3282,6 +3533,11 @@ class Wallet {
3282
3533
  // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3283
3534
  }
3284
3535
 
3536
+ if ((_this$config$transpor7 = this.config.transports) != null && (_this$config$transpor8 = _this$config$transpor7.unrealTransport) != null && _this$config$transpor8.enabled) {
3537
+ this.transport.unrealMessageProvider = new UnrealMessageProvider(this.config.walletAppURL);
3538
+ this.transport.messageProvider.add(this.transport.unrealMessageProvider);
3539
+ }
3540
+
3285
3541
  this.transport.messageProvider.register(); // .....
3286
3542
 
3287
3543
  this.transport.allowProvider = network.allowProviderMiddleware(request => {
@@ -3839,6 +4095,8 @@ exports.ProxyMessageChannel = ProxyMessageChannel;
3839
4095
  exports.ProxyMessageChannelPort = ProxyMessageChannelPort;
3840
4096
  exports.ProxyMessageHandler = ProxyMessageHandler;
3841
4097
  exports.ProxyMessageProvider = ProxyMessageProvider;
4098
+ exports.UnrealMessageHandler = UnrealMessageHandler;
4099
+ exports.UnrealMessageProvider = UnrealMessageProvider;
3842
4100
  exports.Wallet = Wallet;
3843
4101
  exports.WalletRequestHandler = WalletRequestHandler;
3844
4102
  exports.Web3Provider = Web3Provider;