@mocanetwork/airkit 0.6.0-beta.0 → 1.1.0-beta.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.
@@ -34,117 +34,6 @@ function __extends(d, b) {
34
34
  }
35
35
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36
36
  }
37
- function __awaiter(thisArg, _arguments, P, generator) {
38
- function adopt(value) {
39
- return value instanceof P ? value : new P(function (resolve) {
40
- resolve(value);
41
- });
42
- }
43
- return new (P || (P = Promise))(function (resolve, reject) {
44
- function fulfilled(value) {
45
- try {
46
- step(generator.next(value));
47
- } catch (e) {
48
- reject(e);
49
- }
50
- }
51
- function rejected(value) {
52
- try {
53
- step(generator["throw"](value));
54
- } catch (e) {
55
- reject(e);
56
- }
57
- }
58
- function step(result) {
59
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
60
- }
61
- step((generator = generator.apply(thisArg, _arguments || [])).next());
62
- });
63
- }
64
- function __generator(thisArg, body) {
65
- var _ = {
66
- label: 0,
67
- sent: function () {
68
- if (t[0] & 1) throw t[1];
69
- return t[1];
70
- },
71
- trys: [],
72
- ops: []
73
- },
74
- f,
75
- y,
76
- t,
77
- g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
78
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () {
79
- return this;
80
- }), g;
81
- function verb(n) {
82
- return function (v) {
83
- return step([n, v]);
84
- };
85
- }
86
- function step(op) {
87
- if (f) throw new TypeError("Generator is already executing.");
88
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
89
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
90
- if (y = 0, t) op = [op[0] & 2, t.value];
91
- switch (op[0]) {
92
- case 0:
93
- case 1:
94
- t = op;
95
- break;
96
- case 4:
97
- _.label++;
98
- return {
99
- value: op[1],
100
- done: false
101
- };
102
- case 5:
103
- _.label++;
104
- y = op[1];
105
- op = [0];
106
- continue;
107
- case 7:
108
- op = _.ops.pop();
109
- _.trys.pop();
110
- continue;
111
- default:
112
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
113
- _ = 0;
114
- continue;
115
- }
116
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
117
- _.label = op[1];
118
- break;
119
- }
120
- if (op[0] === 6 && _.label < t[1]) {
121
- _.label = t[1];
122
- t = op;
123
- break;
124
- }
125
- if (t && _.label < t[2]) {
126
- _.label = t[2];
127
- _.ops.push(op);
128
- break;
129
- }
130
- if (t[2]) _.ops.pop();
131
- _.trys.pop();
132
- continue;
133
- }
134
- op = body.call(thisArg, _);
135
- } catch (e) {
136
- op = [6, e];
137
- y = 0;
138
- } finally {
139
- f = t = 0;
140
- }
141
- if (op[0] & 5) throw op[1];
142
- return {
143
- value: op[0] ? op[1] : undefined,
144
- done: true
145
- };
146
- }
147
- }
148
37
  function __values(o) {
149
38
  var s = typeof Symbol === "function" && Symbol.iterator,
150
39
  m = s && o[s],
@@ -192,75 +81,6 @@ function __spreadArray(to, from, pack) {
192
81
  }
193
82
  return to.concat(ar || Array.prototype.slice.call(from));
194
83
  }
195
- function __await(v) {
196
- return this instanceof __await ? (this.v = v, this) : new __await(v);
197
- }
198
- function __asyncGenerator(thisArg, _arguments, generator) {
199
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
200
- var g = generator.apply(thisArg, _arguments || []),
201
- i,
202
- q = [];
203
- return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () {
204
- return this;
205
- }, i;
206
- function awaitReturn(f) {
207
- return function (v) {
208
- return Promise.resolve(v).then(f, reject);
209
- };
210
- }
211
- function verb(n, f) {
212
- if (g[n]) {
213
- i[n] = function (v) {
214
- return new Promise(function (a, b) {
215
- q.push([n, v, a, b]) > 1 || resume(n, v);
216
- });
217
- };
218
- if (f) i[n] = f(i[n]);
219
- }
220
- }
221
- function resume(n, v) {
222
- try {
223
- step(g[n](v));
224
- } catch (e) {
225
- settle(q[0][3], e);
226
- }
227
- }
228
- function step(r) {
229
- r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
230
- }
231
- function fulfill(value) {
232
- resume("next", value);
233
- }
234
- function reject(value) {
235
- resume("throw", value);
236
- }
237
- function settle(f, v) {
238
- if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
239
- }
240
- }
241
- function __asyncValues(o) {
242
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
243
- var m = o[Symbol.asyncIterator],
244
- i;
245
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
246
- return this;
247
- }, i);
248
- function verb(n) {
249
- i[n] = o[n] && function (v) {
250
- return new Promise(function (resolve, reject) {
251
- v = o[n](v), settle(resolve, reject, v.done, v.value);
252
- });
253
- };
254
- }
255
- function settle(resolve, reject, d, v) {
256
- Promise.resolve(v).then(function (v) {
257
- resolve({
258
- value: v,
259
- done: d
260
- });
261
- }, reject);
262
- }
263
- }
264
84
  function __classPrivateFieldGet(receiver, state, kind, f) {
265
85
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
266
86
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
@@ -298,8 +118,11 @@ const AirAuthMessageTypes = {
298
118
  SETUP_WALLET_RESPONSE: "air_auth_setup_wallet_response",
299
119
  SIGN_SIWE_MESSAGE_REQUEST: "air_auth_sign_siwe_message_request",
300
120
  SIGN_SIWE_MESSAGE_RESPONSE: "air_auth_sign_siwe_message_response",
121
+ CROSS_PARTNER_TOKEN_REQUEST: "air_auth_cross_partner_token_request",
122
+ CROSS_PARTNER_TOKEN_RESPONSE: "air_auth_cross_partner_token_response",
301
123
  LOGOUT_REQUEST: "air_auth_logout_request",
302
- LOGOUT_RESPONSE: "air_auth_logout_response"
124
+ LOGOUT_RESPONSE: "air_auth_logout_response",
125
+ RESET_WALLET_COMMUNICATION: "air_auth_reset_wallet_communication"
303
126
  };
304
127
 
305
128
  const AirMessageTypes = {
@@ -308,10 +131,8 @@ const AirMessageTypes = {
308
131
  INITIALIZATION_RESPONSE: "air_initialization_response",
309
132
  INIT_AUTH_COMMUNICATION: "air_init_auth_communication",
310
133
  WALLET_INITIALIZED: "air_wallet_initialized",
311
- LOGIN_REQUEST: "air_login_request",
312
- CLAIM_REQUEST: "air_claim_request",
313
- LOGIN_CLAIM_STATE: "air_login_claim_state",
314
- CLOSE_MODAL: "air_close_modal",
134
+ CLAIM_ID_REQUEST: "air_claim_id_request",
135
+ CLAIM_ID_RESPONSE: "air_claim_id_response",
315
136
  DEPLOY_SMART_ACCOUNT_REQUEST: "air_deploy_smart_account_request",
316
137
  DEPLOY_SMART_ACCOUNT_RESPONSE: "air_deploy_smart_account_response",
317
138
  GRANT_PERMISSIONS_REQUEST: "air_grant_permissions_request",
@@ -320,54 +141,159 @@ const AirMessageTypes = {
320
141
  EXECUTE_ACTION_RESPONSE: "air_execute_action_response",
321
142
  REVOKE_PERMISSIONS_REQUEST: "air_revoke_permissions_request",
322
143
  REVOKE_PERMISSIONS_RESPONSE: "air_revoke_permissions_response",
323
- WALLET_IFRAME_VISIBILITY_REQUEST: "air_wallet_iframe_visibility_request"
144
+ WALLET_IFRAME_VISIBILITY_REQUEST: "air_wallet_iframe_visibility_request",
145
+ IS_SMART_ACCOUNT_DEPLOYED_REQUEST: "air_is_smart_account_deployed_request",
146
+ IS_SMART_ACCOUNT_DEPLOYED_RESPONSE: "air_is_smart_account_deployed_response",
147
+ LOGOUT_REQUEST: "air_logout_request",
148
+ LOGOUT_RESPONSE: "air_logout_response",
149
+ SETUP_MFA_REQUEST: "air_setup_mfa_request"
324
150
  };
325
151
 
326
- function getDefaultExportFromCjs (x) {
327
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
152
+ class BaseError extends Error {
153
+ constructor(name, message, options = {}) {
154
+ const {
155
+ cause,
156
+ context
157
+ } = options;
158
+ super(message || name);
159
+ this.name = name;
160
+ this.stack = cause?.stack;
161
+ this.cause = cause;
162
+ this.context = context;
163
+ }
164
+ toJSON() {
165
+ return {
166
+ name: this.name,
167
+ message: this.message,
168
+ context: this.context,
169
+ cause: this.cause
170
+ };
171
+ }
328
172
  }
329
173
 
330
- var fastDeepEqual;
331
- var hasRequiredFastDeepEqual;
332
- function requireFastDeepEqual() {
333
- if (hasRequiredFastDeepEqual) return fastDeepEqual;
334
- hasRequiredFastDeepEqual = 1;
335
-
336
- // do not edit .js files directly - edit src/index.jst
337
-
338
- fastDeepEqual = function equal(a, b) {
339
- if (a === b) return true;
340
- if (a && b && typeof a == 'object' && typeof b == 'object') {
341
- if (a.constructor !== b.constructor) return false;
342
- var length, i, keys;
343
- if (Array.isArray(a)) {
344
- length = a.length;
345
- if (length != b.length) return false;
346
- for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;
347
- return true;
348
- }
349
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
350
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
351
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
352
- keys = Object.keys(a);
353
- length = keys.length;
354
- if (length !== Object.keys(b).length) return false;
355
- for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
356
- for (i = length; i-- !== 0;) {
357
- var key = keys[i];
358
- if (!equal(a[key], b[key])) return false;
359
- }
360
- return true;
174
+ class AirServiceError extends BaseError {
175
+ static from(error) {
176
+ if (error instanceof AirServiceError) {
177
+ return error;
178
+ }
179
+ else if (error instanceof Object && "message" in error) {
180
+ if (error.message === "User cancelled login") {
181
+ return new AirServiceError("USER_CANCELLED", error.message);
182
+ }
183
+ return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
184
+ }
185
+ return new AirServiceError("UNKNOWN_ERROR");
361
186
  }
362
-
363
- // true if both NaN, false otherwise
364
- return a !== a && b !== b;
365
- };
366
- return fastDeepEqual;
367
187
  }
368
-
369
- var fastDeepEqualExports = requireFastDeepEqual();
370
- var equal = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqualExports);
188
+ class ProviderRpcError extends Error {
189
+ constructor(message) {
190
+ super(message);
191
+ }
192
+ }
193
+ class UserRejectedRequestError extends ProviderRpcError {
194
+ constructor() {
195
+ super(...arguments);
196
+ this.code = 4001;
197
+ this.name = "UserRejectedRequestError";
198
+ }
199
+ }
200
+ class UnauthorizedProviderError extends ProviderRpcError {
201
+ constructor() {
202
+ super(...arguments);
203
+ this.code = 4100;
204
+ this.name = "UnauthorizedProviderError";
205
+ }
206
+ }
207
+ class UnsupportedProviderMethodError extends ProviderRpcError {
208
+ constructor() {
209
+ super(...arguments);
210
+ this.code = 4200;
211
+ this.name = "UnsupportedProviderMethodError";
212
+ }
213
+ }
214
+ class ProviderDisconnectedError extends ProviderRpcError {
215
+ constructor() {
216
+ super(...arguments);
217
+ this.code = 4900;
218
+ this.name = "ProviderDisconnectedError";
219
+ }
220
+ }
221
+ class ChainDisconnectedError extends ProviderRpcError {
222
+ constructor() {
223
+ super(...arguments);
224
+ this.code = 4901;
225
+ this.name = "ChainDisconnectedError";
226
+ }
227
+ }
228
+ class SwitchChainError extends ProviderRpcError {
229
+ constructor() {
230
+ super(...arguments);
231
+ this.code = 4902;
232
+ this.name = "SwitchChainError";
233
+ }
234
+ }
235
+ class InvalidRequestRpcError extends ProviderRpcError {
236
+ constructor() {
237
+ super(...arguments);
238
+ this.code = -32600;
239
+ this.name = "InvalidRequestRpcError";
240
+ }
241
+ }
242
+ class MethodNotFoundRpcError extends ProviderRpcError {
243
+ constructor() {
244
+ super(...arguments);
245
+ this.code = -32601;
246
+ this.name = "MethodNotFoundRpcError";
247
+ }
248
+ }
249
+ class InvalidParamsRpcError extends ProviderRpcError {
250
+ constructor() {
251
+ super(...arguments);
252
+ this.code = -32602;
253
+ this.name = "InvalidParamsRpcError";
254
+ }
255
+ }
256
+ class InternalRpcError extends ProviderRpcError {
257
+ constructor() {
258
+ super(...arguments);
259
+ this.code = -32603;
260
+ this.name = "InternalRpcError";
261
+ }
262
+ }
263
+ function ensureProviderRpcError(value) {
264
+ if (value instanceof ProviderRpcError) {
265
+ return value;
266
+ }
267
+ if (typeof value === "object" &&
268
+ value !== null &&
269
+ "errorCode" in value &&
270
+ "errorMessage" in value) {
271
+ if (typeof value.errorCode === "number" && typeof value.errorMessage === "string") {
272
+ switch (value.errorCode) {
273
+ case 4001:
274
+ return new UserRejectedRequestError(value.errorMessage);
275
+ case 4100:
276
+ return new UnauthorizedProviderError(value.errorMessage);
277
+ case 4200:
278
+ return new UnsupportedProviderMethodError(value.errorMessage);
279
+ case 4900:
280
+ return new ProviderDisconnectedError(value.errorMessage);
281
+ case 4901:
282
+ return new ChainDisconnectedError(value.errorMessage);
283
+ case 4902:
284
+ return new SwitchChainError(value.errorMessage);
285
+ }
286
+ }
287
+ }
288
+ let stringified = "[Unable to stringify the thrown value]";
289
+ try {
290
+ stringified = JSON.stringify(value);
291
+ }
292
+ catch {
293
+ // ignoring failed stringify
294
+ }
295
+ return new InternalRpcError(`Invalid value for ProviderRpcError: ${stringified}`);
296
+ }
371
297
 
372
298
  function isFunction(value) {
373
299
  return typeof value === 'function';
@@ -1049,609 +975,58 @@ var AnonymousSubject = function (_super) {
1049
975
  AnonymousSubject.prototype.error = function (err) {
1050
976
  var _a, _b;
1051
977
  (_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.error) === null || _b === undefined ? undefined : _b.call(_a, err);
1052
- };
1053
- AnonymousSubject.prototype.complete = function () {
1054
- var _a, _b;
1055
- (_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.complete) === null || _b === undefined ? undefined : _b.call(_a);
1056
- };
1057
- AnonymousSubject.prototype._subscribe = function (subscriber) {
1058
- var _a, _b;
1059
- return (_b = (_a = this.source) === null || _a === undefined ? undefined : _a.subscribe(subscriber)) !== null && _b !== undefined ? _b : EMPTY_SUBSCRIPTION;
1060
- };
1061
- return AnonymousSubject;
1062
- }(Subject);
1063
-
1064
- var EMPTY = new Observable(function (subscriber) {
1065
- return subscriber.complete();
1066
- });
1067
-
1068
- function last$1(arr) {
1069
- return arr[arr.length - 1];
1070
- }
1071
- function popResultSelector(args) {
1072
- return isFunction(last$1(args)) ? args.pop() : undefined;
1073
- }
1074
-
1075
- var isArrayLike = function (x) {
1076
- return x && typeof x.length === 'number' && typeof x !== 'function';
1077
- };
1078
-
1079
- function isPromise(value) {
1080
- return isFunction(value === null || value === undefined ? undefined : value.then);
1081
- }
1082
-
1083
- function isInteropObservable(input) {
1084
- return isFunction(input[observable]);
1085
- }
1086
-
1087
- function isAsyncIterable(obj) {
1088
- return Symbol.asyncIterator && isFunction(obj === null || obj === undefined ? undefined : obj[Symbol.asyncIterator]);
1089
- }
1090
-
1091
- function createInvalidObservableTypeError(input) {
1092
- return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
1093
- }
1094
-
1095
- function getSymbolIterator() {
1096
- if (typeof Symbol !== 'function' || !Symbol.iterator) {
1097
- return '@@iterator';
1098
- }
1099
- return Symbol.iterator;
1100
- }
1101
- var iterator = getSymbolIterator();
1102
-
1103
- function isIterable(input) {
1104
- return isFunction(input === null || input === undefined ? undefined : input[iterator]);
1105
- }
1106
-
1107
- function readableStreamLikeToAsyncGenerator(readableStream) {
1108
- return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
1109
- var reader, _a, value, done;
1110
- return __generator(this, function (_b) {
1111
- switch (_b.label) {
1112
- case 0:
1113
- reader = readableStream.getReader();
1114
- _b.label = 1;
1115
- case 1:
1116
- _b.trys.push([1,, 9, 10]);
1117
- _b.label = 2;
1118
- case 2:
1119
- return [4, __await(reader.read())];
1120
- case 3:
1121
- _a = _b.sent(), value = _a.value, done = _a.done;
1122
- if (!done) return [3, 5];
1123
- return [4, __await(undefined)];
1124
- case 4:
1125
- return [2, _b.sent()];
1126
- case 5:
1127
- return [4, __await(value)];
1128
- case 6:
1129
- return [4, _b.sent()];
1130
- case 7:
1131
- _b.sent();
1132
- return [3, 2];
1133
- case 8:
1134
- return [3, 10];
1135
- case 9:
1136
- reader.releaseLock();
1137
- return [7];
1138
- case 10:
1139
- return [2];
1140
- }
1141
- });
1142
- });
1143
- }
1144
- function isReadableStreamLike(obj) {
1145
- return isFunction(obj === null || obj === undefined ? undefined : obj.getReader);
1146
- }
1147
-
1148
- function innerFrom(input) {
1149
- if (input instanceof Observable) {
1150
- return input;
1151
- }
1152
- if (input != null) {
1153
- if (isInteropObservable(input)) {
1154
- return fromInteropObservable(input);
1155
- }
1156
- if (isArrayLike(input)) {
1157
- return fromArrayLike(input);
1158
- }
1159
- if (isPromise(input)) {
1160
- return fromPromise(input);
1161
- }
1162
- if (isAsyncIterable(input)) {
1163
- return fromAsyncIterable(input);
1164
- }
1165
- if (isIterable(input)) {
1166
- return fromIterable(input);
1167
- }
1168
- if (isReadableStreamLike(input)) {
1169
- return fromReadableStreamLike(input);
1170
- }
1171
- }
1172
- throw createInvalidObservableTypeError(input);
1173
- }
1174
- function fromInteropObservable(obj) {
1175
- return new Observable(function (subscriber) {
1176
- var obs = obj[observable]();
1177
- if (isFunction(obs.subscribe)) {
1178
- return obs.subscribe(subscriber);
1179
- }
1180
- throw new TypeError('Provided object does not correctly implement Symbol.observable');
1181
- });
1182
- }
1183
- function fromArrayLike(array) {
1184
- return new Observable(function (subscriber) {
1185
- for (var i = 0; i < array.length && !subscriber.closed; i++) {
1186
- subscriber.next(array[i]);
1187
- }
1188
- subscriber.complete();
1189
- });
1190
- }
1191
- function fromPromise(promise) {
1192
- return new Observable(function (subscriber) {
1193
- promise.then(function (value) {
1194
- if (!subscriber.closed) {
1195
- subscriber.next(value);
1196
- subscriber.complete();
1197
- }
1198
- }, function (err) {
1199
- return subscriber.error(err);
1200
- }).then(null, reportUnhandledError);
1201
- });
1202
- }
1203
- function fromIterable(iterable) {
1204
- return new Observable(function (subscriber) {
1205
- var e_1, _a;
1206
- try {
1207
- for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
1208
- var value = iterable_1_1.value;
1209
- subscriber.next(value);
1210
- if (subscriber.closed) {
1211
- return;
1212
- }
1213
- }
1214
- } catch (e_1_1) {
1215
- e_1 = {
1216
- error: e_1_1
1217
- };
1218
- } finally {
1219
- try {
1220
- if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);
1221
- } finally {
1222
- if (e_1) throw e_1.error;
1223
- }
1224
- }
1225
- subscriber.complete();
1226
- });
1227
- }
1228
- function fromAsyncIterable(asyncIterable) {
1229
- return new Observable(function (subscriber) {
1230
- process(asyncIterable, subscriber).catch(function (err) {
1231
- return subscriber.error(err);
1232
- });
1233
- });
1234
- }
1235
- function fromReadableStreamLike(readableStream) {
1236
- return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));
1237
- }
1238
- function process(asyncIterable, subscriber) {
1239
- var asyncIterable_1, asyncIterable_1_1;
1240
- var e_2, _a;
1241
- return __awaiter(this, undefined, undefined, function () {
1242
- var value, e_2_1;
1243
- return __generator(this, function (_b) {
1244
- switch (_b.label) {
1245
- case 0:
1246
- _b.trys.push([0, 5, 6, 11]);
1247
- asyncIterable_1 = __asyncValues(asyncIterable);
1248
- _b.label = 1;
1249
- case 1:
1250
- return [4, asyncIterable_1.next()];
1251
- case 2:
1252
- if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];
1253
- value = asyncIterable_1_1.value;
1254
- subscriber.next(value);
1255
- if (subscriber.closed) {
1256
- return [2];
1257
- }
1258
- _b.label = 3;
1259
- case 3:
1260
- return [3, 1];
1261
- case 4:
1262
- return [3, 11];
1263
- case 5:
1264
- e_2_1 = _b.sent();
1265
- e_2 = {
1266
- error: e_2_1
1267
- };
1268
- return [3, 11];
1269
- case 6:
1270
- _b.trys.push([6,, 9, 10]);
1271
- if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];
1272
- return [4, _a.call(asyncIterable_1)];
1273
- case 7:
1274
- _b.sent();
1275
- _b.label = 8;
1276
- case 8:
1277
- return [3, 10];
1278
- case 9:
1279
- if (e_2) throw e_2.error;
1280
- return [7];
1281
- case 10:
1282
- return [7];
1283
- case 11:
1284
- subscriber.complete();
1285
- return [2];
1286
- }
1287
- });
1288
- });
1289
- }
1290
-
1291
- var EmptyError = createErrorClass(function (_super) {
1292
- return function EmptyErrorImpl() {
1293
- _super(this);
1294
- this.name = 'EmptyError';
1295
- this.message = 'no elements in sequence';
1296
- };
1297
- });
1298
-
1299
- function lastValueFrom(source, config) {
1300
- return new Promise(function (resolve, reject) {
1301
- var _hasValue = false;
1302
- var _value;
1303
- source.subscribe({
1304
- next: function (value) {
1305
- _value = value;
1306
- _hasValue = true;
1307
- },
1308
- error: reject,
1309
- complete: function () {
1310
- if (_hasValue) {
1311
- resolve(_value);
1312
- } else {
1313
- reject(new EmptyError());
1314
- }
1315
- }
1316
- });
1317
- });
1318
- }
1319
-
1320
- function firstValueFrom(source, config) {
1321
- return new Promise(function (resolve, reject) {
1322
- var subscriber = new SafeSubscriber({
1323
- next: function (value) {
1324
- resolve(value);
1325
- subscriber.unsubscribe();
1326
- },
1327
- error: reject,
1328
- complete: function () {
1329
- {
1330
- reject(new EmptyError());
1331
- }
1332
- }
1333
- });
1334
- source.subscribe(subscriber);
1335
- });
1336
- }
1337
-
1338
- function map(project, thisArg) {
1339
- return operate(function (source, subscriber) {
1340
- var index = 0;
1341
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1342
- subscriber.next(project.call(thisArg, value, index++));
1343
- }));
1344
- });
1345
- }
1346
-
1347
- var isArray$1 = Array.isArray;
1348
- function callOrApply(fn, args) {
1349
- return isArray$1(args) ? fn.apply(undefined, __spreadArray([], __read(args))) : fn(args);
1350
- }
1351
- function mapOneOrManyArgs(fn) {
1352
- return map(function (args) {
1353
- return callOrApply(fn, args);
1354
- });
1355
- }
1356
-
1357
- var isArray = Array.isArray;
1358
- var getPrototypeOf = Object.getPrototypeOf,
1359
- objectProto = Object.prototype,
1360
- getKeys = Object.keys;
1361
- function argsArgArrayOrObject(args) {
1362
- if (args.length === 1) {
1363
- var first_1 = args[0];
1364
- if (isArray(first_1)) {
1365
- return {
1366
- args: first_1,
1367
- keys: null
1368
- };
1369
- }
1370
- if (isPOJO(first_1)) {
1371
- var keys = getKeys(first_1);
1372
- return {
1373
- args: keys.map(function (key) {
1374
- return first_1[key];
1375
- }),
1376
- keys: keys
1377
- };
1378
- }
1379
- }
1380
- return {
1381
- args: args,
1382
- keys: null
1383
- };
1384
- }
1385
- function isPOJO(obj) {
1386
- return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;
1387
- }
1388
-
1389
- function createObject(keys, values) {
1390
- return keys.reduce(function (result, key, i) {
1391
- return result[key] = values[i], result;
1392
- }, {});
1393
- }
1394
-
1395
- function forkJoin() {
1396
- var args = [];
1397
- for (var _i = 0; _i < arguments.length; _i++) {
1398
- args[_i] = arguments[_i];
1399
- }
1400
- var resultSelector = popResultSelector(args);
1401
- var _a = argsArgArrayOrObject(args),
1402
- sources = _a.args,
1403
- keys = _a.keys;
1404
- var result = new Observable(function (subscriber) {
1405
- var length = sources.length;
1406
- if (!length) {
1407
- subscriber.complete();
1408
- return;
1409
- }
1410
- var values = new Array(length);
1411
- var remainingCompletions = length;
1412
- var remainingEmissions = length;
1413
- var _loop_1 = function (sourceIndex) {
1414
- var hasValue = false;
1415
- innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, function (value) {
1416
- if (!hasValue) {
1417
- hasValue = true;
1418
- remainingEmissions--;
1419
- }
1420
- values[sourceIndex] = value;
1421
- }, function () {
1422
- return remainingCompletions--;
1423
- }, undefined, function () {
1424
- if (!remainingCompletions || !hasValue) {
1425
- if (!remainingEmissions) {
1426
- subscriber.next(keys ? createObject(keys, values) : values);
1427
- }
1428
- subscriber.complete();
1429
- }
1430
- }));
1431
- };
1432
- for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {
1433
- _loop_1(sourceIndex);
1434
- }
1435
- });
1436
- return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;
1437
- }
1438
-
1439
- function filter(predicate, thisArg) {
1440
- return operate(function (source, subscriber) {
1441
- var index = 0;
1442
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1443
- return predicate.call(thisArg, value, index++) && subscriber.next(value);
1444
- }));
1445
- });
1446
- }
1447
-
1448
- function defaultIfEmpty(defaultValue) {
1449
- return operate(function (source, subscriber) {
1450
- var hasValue = false;
1451
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1452
- hasValue = true;
1453
- subscriber.next(value);
1454
- }, function () {
1455
- if (!hasValue) {
1456
- subscriber.next(defaultValue);
1457
- }
1458
- subscriber.complete();
1459
- }));
1460
- });
1461
- }
1462
-
1463
- function take(count) {
1464
- return count <= 0 ? function () {
1465
- return EMPTY;
1466
- } : operate(function (source, subscriber) {
1467
- var seen = 0;
1468
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1469
- if (++seen <= count) {
1470
- subscriber.next(value);
1471
- if (count <= seen) {
1472
- subscriber.complete();
1473
- }
1474
- }
1475
- }));
1476
- });
1477
- }
1478
-
1479
- function distinctUntilChanged(comparator, keySelector) {
1480
- if (keySelector === undefined) {
1481
- keySelector = identity;
1482
- }
1483
- comparator = comparator !== null && comparator !== undefined ? comparator : defaultCompare;
1484
- return operate(function (source, subscriber) {
1485
- var previousKey;
1486
- var first = true;
1487
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1488
- var currentKey = keySelector(value);
1489
- if (first || !comparator(previousKey, currentKey)) {
1490
- first = false;
1491
- previousKey = currentKey;
1492
- subscriber.next(value);
1493
- }
1494
- }));
1495
- });
1496
- }
1497
- function defaultCompare(a, b) {
1498
- return a === b;
1499
- }
1500
-
1501
- function throwIfEmpty(errorFactory) {
1502
- if (errorFactory === undefined) {
1503
- errorFactory = defaultErrorFactory;
1504
- }
1505
- return operate(function (source, subscriber) {
1506
- var hasValue = false;
1507
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1508
- hasValue = true;
1509
- subscriber.next(value);
1510
- }, function () {
1511
- return hasValue ? subscriber.complete() : subscriber.error(errorFactory());
1512
- }));
1513
- });
1514
- }
1515
- function defaultErrorFactory() {
1516
- return new EmptyError();
1517
- }
978
+ };
979
+ AnonymousSubject.prototype.complete = function () {
980
+ var _a, _b;
981
+ (_b = (_a = this.destination) === null || _a === undefined ? undefined : _a.complete) === null || _b === undefined ? undefined : _b.call(_a);
982
+ };
983
+ AnonymousSubject.prototype._subscribe = function (subscriber) {
984
+ var _a, _b;
985
+ return (_b = (_a = this.source) === null || _a === undefined ? undefined : _a.subscribe(subscriber)) !== null && _b !== undefined ? _b : EMPTY_SUBSCRIPTION;
986
+ };
987
+ return AnonymousSubject;
988
+ }(Subject);
1518
989
 
1519
- function first(predicate, defaultValue) {
1520
- var hasDefaultValue = arguments.length >= 2;
1521
- return function (source) {
1522
- return source.pipe(identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {
1523
- return new EmptyError();
1524
- }));
990
+ var EmptyError = createErrorClass(function (_super) {
991
+ return function EmptyErrorImpl() {
992
+ _super(this);
993
+ this.name = 'EmptyError';
994
+ this.message = 'no elements in sequence';
1525
995
  };
1526
- }
996
+ });
1527
997
 
1528
- function takeLast(count) {
1529
- return count <= 0 ? function () {
1530
- return EMPTY;
1531
- } : operate(function (source, subscriber) {
1532
- var buffer = [];
1533
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1534
- buffer.push(value);
1535
- count < buffer.length && buffer.shift();
1536
- }, function () {
1537
- var e_1, _a;
1538
- try {
1539
- for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {
1540
- var value = buffer_1_1.value;
1541
- subscriber.next(value);
1542
- }
1543
- } catch (e_1_1) {
1544
- e_1 = {
1545
- error: e_1_1
1546
- };
1547
- } finally {
1548
- try {
1549
- if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);
1550
- } finally {
1551
- if (e_1) throw e_1.error;
998
+ function firstValueFrom(source, config) {
999
+ return new Promise(function (resolve, reject) {
1000
+ var subscriber = new SafeSubscriber({
1001
+ next: function (value) {
1002
+ resolve(value);
1003
+ subscriber.unsubscribe();
1004
+ },
1005
+ error: reject,
1006
+ complete: function () {
1007
+ {
1008
+ reject(new EmptyError());
1552
1009
  }
1553
1010
  }
1554
- subscriber.complete();
1555
- }, undefined, function () {
1556
- buffer = null;
1557
- }));
1011
+ });
1012
+ source.subscribe(subscriber);
1558
1013
  });
1559
1014
  }
1560
1015
 
1561
- function last(predicate, defaultValue) {
1562
- var hasDefaultValue = arguments.length >= 2;
1563
- return function (source) {
1564
- return source.pipe(identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {
1565
- return new EmptyError();
1566
- }));
1567
- };
1568
- }
1569
-
1570
- function takeWhile(predicate, inclusive) {
1016
+ function filter(predicate, thisArg) {
1571
1017
  return operate(function (source, subscriber) {
1572
1018
  var index = 0;
1573
1019
  source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1574
- var result = predicate(value, index++);
1575
- (result || inclusive) && subscriber.next(value);
1576
- !result && subscriber.complete();
1020
+ return predicate.call(thisArg, value, index++) && subscriber.next(value);
1577
1021
  }));
1578
1022
  });
1579
1023
  }
1580
1024
 
1581
- function tap(observerOrNext, error, complete) {
1582
- var tapObserver = isFunction(observerOrNext) || error || complete ? {
1583
- next: observerOrNext,
1584
- error: error,
1585
- complete: complete
1586
- } : observerOrNext;
1587
- return tapObserver ? operate(function (source, subscriber) {
1588
- var _a;
1589
- (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
1590
- var isUnsub = true;
1591
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
1592
- var _a;
1593
- (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);
1594
- subscriber.next(value);
1595
- }, function () {
1596
- var _a;
1597
- isUnsub = false;
1598
- (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
1599
- subscriber.complete();
1600
- }, function (err) {
1601
- var _a;
1602
- isUnsub = false;
1603
- (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);
1604
- subscriber.error(err);
1605
- }, function () {
1606
- var _a, _b;
1607
- if (isUnsub) {
1608
- (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
1609
- }
1610
- (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
1611
- }));
1612
- }) : identity;
1613
- }
1614
-
1615
- class BaseError extends Error {
1616
- constructor(name, message, options = {}) {
1617
- const {
1618
- cause,
1619
- context
1620
- } = options;
1621
- super(message || name);
1622
- this.name = name;
1623
- this.stack = cause?.stack;
1624
- this.cause = cause;
1625
- this.context = context;
1626
- }
1627
- toJSON() {
1628
- return {
1629
- name: this.name,
1630
- message: this.message,
1631
- context: this.context,
1632
- cause: this.cause
1633
- };
1634
- }
1635
- }
1636
-
1637
- class AirServiceError extends BaseError {
1638
- static from(error) {
1639
- if (error instanceof AirServiceError) {
1640
- return error;
1641
- }
1642
- else if (error instanceof Object && "message" in error) {
1643
- if (error.message === "User cancelled login") {
1644
- return new AirServiceError("USER_CANCELLED", error.message);
1645
- }
1646
- return new AirServiceError("UNKNOWN_ERROR", error.message.toString());
1647
- }
1648
- return new AirServiceError("UNKNOWN_ERROR");
1649
- }
1650
- }
1651
- class RealmEmbedError extends AirServiceError {
1025
+ function getDefaultExportFromCjs (x) {
1026
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
1652
1027
  }
1653
1028
 
1654
- var loglevel$2 = {exports: {}};
1029
+ var loglevel$1 = {exports: {}};
1655
1030
 
1656
1031
  /*
1657
1032
  * loglevel - https://github.com/pimterry/loglevel
@@ -1659,10 +1034,10 @@ var loglevel$2 = {exports: {}};
1659
1034
  * Copyright (c) 2013 Tim Perry
1660
1035
  * Licensed under the MIT license.
1661
1036
  */
1662
- var loglevel$1 = loglevel$2.exports;
1037
+ var loglevel = loglevel$1.exports;
1663
1038
  var hasRequiredLoglevel;
1664
1039
  function requireLoglevel() {
1665
- if (hasRequiredLoglevel) return loglevel$2.exports;
1040
+ if (hasRequiredLoglevel) return loglevel$1.exports;
1666
1041
  hasRequiredLoglevel = 1;
1667
1042
  (function (module) {
1668
1043
  (function (root, definition) {
@@ -1672,7 +1047,7 @@ function requireLoglevel() {
1672
1047
  } else {
1673
1048
  root.log = definition();
1674
1049
  }
1675
- })(loglevel$1, function () {
1050
+ })(loglevel, function () {
1676
1051
 
1677
1052
  // Slightly dubious tricks to cut down minimized file size
1678
1053
  var noop = function () {};
@@ -1971,42 +1346,44 @@ function requireLoglevel() {
1971
1346
  defaultLogger['default'] = defaultLogger;
1972
1347
  return defaultLogger;
1973
1348
  });
1974
- })(loglevel$2);
1975
- return loglevel$2.exports;
1349
+ })(loglevel$1);
1350
+ return loglevel$1.exports;
1976
1351
  }
1977
1352
 
1978
1353
  var loglevelExports = requireLoglevel();
1979
- var loglevel = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
1354
+ var log$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
1980
1355
 
1981
- var log = loglevel.getLogger("airkit");
1356
+ var log = log$1.getLogger("airkit");
1982
1357
 
1983
1358
  var AirWalletProviderMessageTypes;
1984
1359
  (function (AirWalletProviderMessageTypes) {
1985
1360
  AirWalletProviderMessageTypes["REQUEST"] = "JRPC_REQUEST";
1986
1361
  AirWalletProviderMessageTypes["RESPONSE"] = "JRPC_RESPONSE";
1362
+ AirWalletProviderMessageTypes["EVENT"] = "JRPC_EVENT";
1987
1363
  })(AirWalletProviderMessageTypes || (AirWalletProviderMessageTypes = {}));
1988
1364
 
1989
1365
  const ACCOUNT_MESSAGES = [
1990
1366
  AirMessageTypes.INITIALIZATION_RESPONSE,
1991
1367
  AirMessageTypes.WALLET_INITIALIZED,
1992
- AirMessageTypes.LOGIN_CLAIM_STATE,
1993
- AirMessageTypes.CLOSE_MODAL,
1368
+ AirMessageTypes.CLAIM_ID_RESPONSE,
1369
+ AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE,
1994
1370
  AirMessageTypes.DEPLOY_SMART_ACCOUNT_RESPONSE,
1995
1371
  AirMessageTypes.EXECUTE_ACTION_RESPONSE,
1996
1372
  AirMessageTypes.REVOKE_PERMISSIONS_RESPONSE,
1997
1373
  AirMessageTypes.GRANT_PERMISSIONS_RESPONSE,
1998
1374
  AirMessageTypes.WALLET_INITIALIZED,
1999
- AirMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST
1375
+ AirMessageTypes.WALLET_IFRAME_VISIBILITY_REQUEST,
1376
+ AirMessageTypes.LOGOUT_RESPONSE,
2000
1377
  ];
2001
1378
  const AUTH_MESSAGES = [
1379
+ AirAuthMessageTypes.INITIALIZATION_RESPONSE,
2002
1380
  AirAuthMessageTypes.LOGIN_RESPONSE,
2003
- AirAuthMessageTypes.USER_INFO_RESPONSE,
2004
- AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
2005
1381
  AirAuthMessageTypes.REFRESH_TOKEN_RESPONSE,
2006
- AirAuthMessageTypes.INITIALIZATION_RESPONSE,
1382
+ AirAuthMessageTypes.SETUP_WALLET_REQUEST,
2007
1383
  AirAuthMessageTypes.LOGOUT_RESPONSE,
1384
+ AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE,
1385
+ AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE,
2008
1386
  AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST,
2009
- AirAuthMessageTypes.SETUP_WALLET_REQUEST,
2010
1387
  ];
2011
1388
  class AirMessageService {
2012
1389
  constructor() {
@@ -2023,15 +1400,15 @@ class AirMessageService {
2023
1400
  get messages$() {
2024
1401
  return this.airMessages$.asObservable();
2025
1402
  }
2026
- get loginState$() {
2027
- return this._loginState$;
2028
- }
2029
1403
  get authMessage$() {
2030
1404
  return this._authMessage$.asObservable();
2031
1405
  }
2032
1406
  get providerMessage$() {
2033
1407
  return this._providerMessage$.asObservable();
2034
1408
  }
1409
+ get providerEvent$() {
1410
+ return this._providerEvent$.asObservable();
1411
+ }
2035
1412
  async openAuthObservables({ authIframeOrigin }) {
2036
1413
  this.closeAuthObservables();
2037
1414
  this.setupAuthObservables();
@@ -2054,11 +1431,7 @@ class AirMessageService {
2054
1431
  const handleMessage = async (ev) => {
2055
1432
  if (ev.origin !== walletIframeOrigin || !ev.data || !(ev.data instanceof Object))
2056
1433
  return;
2057
- // filter out torus and communication provider messages
2058
- if ("target" in ev.data &&
2059
- (ev.data.target === "embed_torus" || ev.data.target === "embed_communication"))
2060
- return;
2061
- log.debug("Embed message received from wallet", ev.data);
1434
+ log.debug("Account messages received from wallet frontend", ev.data);
2062
1435
  if (ACCOUNT_MESSAGES.includes(ev.data.type)) {
2063
1436
  this.airMessages$.next(ev.data);
2064
1437
  }
@@ -2072,16 +1445,20 @@ class AirMessageService {
2072
1445
  const handleWalletMessage = async (ev) => {
2073
1446
  if (ev.origin !== walletIframeOrigin || !ev.data || !(ev.data instanceof Object))
2074
1447
  return;
2075
- log.debug("Embed wallet message received from wallet", ev.data);
2076
- if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE)
1448
+ log.debug("Wallet provider messages received from wallet frontend", ev.data);
1449
+ if (ev.data.type === AirWalletProviderMessageTypes.RESPONSE) {
2077
1450
  this._providerMessage$.next(ev.data);
1451
+ }
1452
+ if (ev.data.type === AirWalletProviderMessageTypes.EVENT) {
1453
+ this._providerEvent$.next(ev.data);
1454
+ }
2078
1455
  };
2079
1456
  window.addEventListener("message", handleWalletMessage);
2080
1457
  this.closeWalletMessageListeners = () => {
2081
1458
  window.removeEventListener("message", handleWalletMessage);
2082
1459
  };
2083
1460
  }
2084
- setupIframeCommunication(authIframe, walletIframe) {
1461
+ setupIframeCommunication(authIframe, walletIframe, skipWalletLogin) {
2085
1462
  const channel = new MessageChannel();
2086
1463
  const authOrigin = new URL(authIframe.src).origin;
2087
1464
  authIframe.contentWindow.postMessage({
@@ -2090,42 +1467,10 @@ class AirMessageService {
2090
1467
  const walletOrigin = new URL(walletIframe.src).origin;
2091
1468
  walletIframe.contentWindow.postMessage({
2092
1469
  type: AirMessageTypes.INIT_AUTH_COMMUNICATION,
2093
- }, walletOrigin, [channel.port2]);
2094
- }
2095
- sendLoginRequest(walletIframe, payload) {
2096
- const response = lastValueFrom(this.loginState$.pipe(takeWhile((msg) => (!payload.skipClaimFlow || msg.payload.state !== "connected") &&
2097
- msg.payload.state !== "logged_in" &&
2098
- msg.payload.state !== "claim_flow_cancelled", true), tap((msg) => {
2099
- switch (msg.payload.state) {
2100
- case "claim_flow_cancelled":
2101
- throw new RealmEmbedError(msg.payload.errorName, msg.payload.errorMessage);
2102
- }
2103
- })));
2104
- const { origin } = new URL(walletIframe.src);
2105
- walletIframe.contentWindow.postMessage({
2106
- type: AirMessageTypes.LOGIN_REQUEST,
2107
- payload,
2108
- }, origin);
2109
- return response;
2110
- }
2111
- sendClaimRequest(walletIframe, options) {
2112
- const response = lastValueFrom(forkJoin([
2113
- this.loginState$.pipe(takeWhile((msg) => !["logged_in", "claim_flow_cancelled"].includes(msg.payload.state), true), tap((msg) => {
2114
- if (msg.payload.state === "claim_flow_cancelled") {
2115
- throw new RealmEmbedError(msg.payload.errorName, msg.payload.errorMessage);
2116
- }
2117
- }), last()),
2118
- this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.CLOSE_MODAL), first()),
2119
- ]));
2120
- const { origin } = new URL(walletIframe.src);
2121
- walletIframe.contentWindow.postMessage({
2122
- type: AirMessageTypes.CLAIM_REQUEST,
2123
1470
  payload: {
2124
- token: options?.token,
2125
- claimInBackground: options?.background,
1471
+ skipWalletLogin,
2126
1472
  },
2127
- }, origin);
2128
- return response;
1473
+ }, walletOrigin, [channel.port2]);
2129
1474
  }
2130
1475
  async sendGrantPermissionRequest(walletIframe, policies) {
2131
1476
  const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
@@ -2138,7 +1483,7 @@ class AirMessageService {
2138
1483
  }, origin);
2139
1484
  const result = await response;
2140
1485
  if (result.payload.success === false) {
2141
- throw new RealmEmbedError(result.payload.errorName, result.payload.errorMessage);
1486
+ throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2142
1487
  }
2143
1488
  return result.payload.sessionData;
2144
1489
  }
@@ -2159,7 +1504,7 @@ class AirMessageService {
2159
1504
  }, origin);
2160
1505
  const result = await response;
2161
1506
  if (result.payload.success === false) {
2162
- throw new RealmEmbedError(result.payload.errorName, result.payload.errorMessage);
1507
+ throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2163
1508
  }
2164
1509
  return result.payload.txHash;
2165
1510
  }
@@ -2174,7 +1519,7 @@ class AirMessageService {
2174
1519
  }, origin);
2175
1520
  const result = await response;
2176
1521
  if (result.payload.success === false) {
2177
- throw new RealmEmbedError(result.payload.errorName, result.payload.errorMessage);
1522
+ throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2178
1523
  }
2179
1524
  return result.payload.txHash;
2180
1525
  }
@@ -2186,10 +1531,12 @@ class AirMessageService {
2186
1531
  }, origin);
2187
1532
  return response;
2188
1533
  }
2189
- async sendUserInfoRequest(authIframe) {
2190
- const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.USER_INFO_RESPONSE)));
2191
- const { origin } = new URL(authIframe.src);
2192
- authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.USER_INFO_REQUEST }, origin);
1534
+ async sendIsSmartAccountDeployedRequest(walletIframe) {
1535
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_RESPONSE)));
1536
+ const { origin } = new URL(walletIframe.src);
1537
+ walletIframe.contentWindow.postMessage({
1538
+ type: AirMessageTypes.IS_SMART_ACCOUNT_DEPLOYED_REQUEST,
1539
+ }, origin);
2193
1540
  return response;
2194
1541
  }
2195
1542
  async sendPartnerUserInfoRequest(authIframe) {
@@ -2210,6 +1557,16 @@ class AirMessageService {
2210
1557
  authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.LOGOUT_REQUEST }, origin);
2211
1558
  return response;
2212
1559
  }
1560
+ async logoutWallet(walletIframe) {
1561
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.LOGOUT_RESPONSE)));
1562
+ const { origin } = new URL(walletIframe.src);
1563
+ walletIframe.contentWindow.postMessage({ type: AirMessageTypes.LOGOUT_REQUEST }, origin);
1564
+ return response;
1565
+ }
1566
+ sendResetAuthServiceWalletCommunication(authIframe) {
1567
+ const { origin: authOrigin } = new URL(authIframe.src);
1568
+ authIframe.contentWindow.postMessage({ type: AirAuthMessageTypes.RESET_WALLET_COMMUNICATION }, authOrigin);
1569
+ }
2213
1570
  async sendAuthInitializationRequest(authIframe, payload) {
2214
1571
  const response = firstValueFrom(this._authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.INITIALIZATION_RESPONSE)));
2215
1572
  const { origin } = new URL(authIframe.src);
@@ -2222,6 +1579,17 @@ class AirMessageService {
2222
1579
  walletIframe.contentWindow.postMessage({ type: AirMessageTypes.INITIALIZATION_REQUEST, payload }, origin);
2223
1580
  return response;
2224
1581
  }
1582
+ async sendCrossPartnerTokenRequest(authIframe, targetPartnerUrl) {
1583
+ const response = firstValueFrom(this.authMessage$.pipe(filter((msg) => msg.type === AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE)));
1584
+ const { origin } = new URL(authIframe.src);
1585
+ authIframe.contentWindow.postMessage({
1586
+ type: AirAuthMessageTypes.CROSS_PARTNER_TOKEN_REQUEST,
1587
+ payload: {
1588
+ targetPartnerUrl,
1589
+ },
1590
+ }, origin);
1591
+ return response;
1592
+ }
2225
1593
  async sendGrantPermissionsRequest(walletIframe, payload) {
2226
1594
  const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.GRANT_PERMISSIONS_RESPONSE)));
2227
1595
  const { origin } = new URL(walletIframe.src);
@@ -2231,6 +1599,12 @@ class AirMessageService {
2231
1599
  onWalletInitialized() {
2232
1600
  return firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.WALLET_INITIALIZED)));
2233
1601
  }
1602
+ async sendClaimIdRequest(walletIframe, payload) {
1603
+ const response = firstValueFrom(this.messages$.pipe(filter((msg) => msg.type === AirMessageTypes.CLAIM_ID_RESPONSE)));
1604
+ const { origin } = new URL(walletIframe.src);
1605
+ walletIframe.contentWindow.postMessage({ type: AirMessageTypes.CLAIM_ID_REQUEST, payload }, origin);
1606
+ return response;
1607
+ }
2234
1608
  async sendWalletProviderRequest(walletIframe, payload) {
2235
1609
  const response = firstValueFrom(this.providerMessage$.pipe(filter((msg) => msg.type === AirWalletProviderMessageTypes.RESPONSE &&
2236
1610
  msg.payload.requestId === payload.requestId)));
@@ -2256,6 +1630,8 @@ class AirMessageService {
2256
1630
  closeWalletObservables() {
2257
1631
  if (this._providerMessage$ && !this._providerMessage$.closed)
2258
1632
  this._providerMessage$.complete();
1633
+ if (this._providerEvent$ && !this._providerEvent$.closed)
1634
+ this._providerEvent$.complete();
2259
1635
  if (this.closeWalletMessageListeners)
2260
1636
  this.closeWalletMessageListeners();
2261
1637
  }
@@ -2264,42 +1640,14 @@ class AirMessageService {
2264
1640
  }
2265
1641
  setupAirObservables() {
2266
1642
  this.airMessages$ = new Subject();
2267
- this._loginState$ = this.airMessages$.pipe(filter((msg) => msg.type === AirMessageTypes.LOGIN_CLAIM_STATE), distinctUntilChanged(equal));
2268
1643
  }
2269
1644
  setupWalletObservables() {
2270
1645
  this._providerMessage$ = new Subject();
1646
+ this._providerEvent$ = new Subject();
2271
1647
  }
2272
1648
  }
2273
1649
  var AirMessageService$1 = AirMessageService.instance;
2274
1650
 
2275
- class ProviderRpcError extends Error {
2276
- constructor(message, code, data) {
2277
- super(message);
2278
- this.code = code;
2279
- this.data = data;
2280
- }
2281
- }
2282
- new ProviderRpcError("Invalid JSON", -32700);
2283
- const ProviderRpcInvalidRequestError = new ProviderRpcError("Invalid request", -32600);
2284
- const ProviderRpcMethodNotFoundError = new ProviderRpcError("Method not found", -32601);
2285
- const ProviderRpcInvalidParamsError = new ProviderRpcError("Invalid params", -32602);
2286
- new ProviderRpcError("Internal error", -32603);
2287
- new ProviderRpcError("User rejected request", 4001);
2288
- new ProviderRpcError("Unauthorized", 4100);
2289
- new ProviderRpcError("Unsupported method", 4200);
2290
- new ProviderRpcError("Disconnected", 4900);
2291
- new ProviderRpcError("Chain Disconnected", 4901);
2292
- function ensureProviderRpcError(value) {
2293
- if (value instanceof ProviderRpcError) return value;
2294
- let stringified = "[Unable to stringify the thrown value]";
2295
- try {
2296
- stringified = JSON.stringify(value);
2297
- } catch {
2298
- // ignoring failed stringify
2299
- }
2300
- return new ProviderRpcError(`This value was not thrown as type ProviderRpcError: ${stringified}`, -32603);
2301
- }
2302
-
2303
1651
  const BUILD_ENV = {
2304
1652
  PRODUCTION: "production",
2305
1653
  STAGING: "staging",
@@ -2310,66 +1658,113 @@ const AIR_URLS = {
2310
1658
  [BUILD_ENV.DEVELOPMENT]: {
2311
1659
  authUrl: "http://localhost:8100",
2312
1660
  walletUrl: "http://localhost:8200",
2313
- legacyWalletUrl: "https://localhost:4050",
2314
1661
  logLevel: "debug",
2315
1662
  },
2316
1663
  [BUILD_ENV.STAGING]: {
2317
1664
  authUrl: "https://auth.staging.air3.com",
2318
1665
  walletUrl: "https://account.staging.air3.com",
2319
- legacyWalletUrl: "https://account.staging.realmnetwork.io",
2320
1666
  logLevel: "info",
2321
1667
  },
2322
1668
  [BUILD_ENV.PRODUCTION]: {
2323
1669
  authUrl: "https://auth.air3.com",
2324
1670
  walletUrl: "https://account.air3.com",
2325
- legacyWalletUrl: "https://account.realmnetwork.io",
2326
1671
  logLevel: "error",
2327
1672
  },
2328
1673
  };
2329
1674
  const isElement = (element) => element instanceof Element || element instanceof Document;
2330
1675
  const randomId = () => Math.random().toString(36).slice(2);
2331
1676
 
2332
- var _AirWalletProvider_walletIframe;
1677
+ var _AirWalletProvider_instances, _AirWalletProvider_isLoggedIn, _AirWalletProvider_ensureWallet, _AirWalletProvider_getWalletIframeController, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
2333
1678
  class AirWalletProvider {
2334
- constructor(walletIframe) {
2335
- _AirWalletProvider_walletIframe.set(this, undefined);
2336
- __classPrivateFieldSet(this, _AirWalletProvider_walletIframe, walletIframe, "f");
1679
+ constructor({ isLoggedIn, ensureWallet, getWalletIframeController, }) {
1680
+ _AirWalletProvider_instances.add(this);
1681
+ _AirWalletProvider_isLoggedIn.set(this, undefined);
1682
+ _AirWalletProvider_ensureWallet.set(this, undefined);
1683
+ _AirWalletProvider_getWalletIframeController.set(this, undefined);
1684
+ _AirWalletProvider_eventListeners.set(this, undefined);
1685
+ this.listenProviderEventMessage = () => {
1686
+ AirMessageService$1.providerEvent$.subscribe((message) => {
1687
+ __classPrivateFieldGet(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1688
+ });
1689
+ };
1690
+ __classPrivateFieldSet(this, _AirWalletProvider_isLoggedIn, isLoggedIn, "f");
1691
+ __classPrivateFieldSet(this, _AirWalletProvider_ensureWallet, ensureWallet, "f");
1692
+ __classPrivateFieldSet(this, _AirWalletProvider_getWalletIframeController, getWalletIframeController, "f");
1693
+ __classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
1694
+ connect: [],
1695
+ disconnect: [],
1696
+ accountsChanged: [],
1697
+ chainChanged: [],
1698
+ message: [],
1699
+ }, "f");
2337
1700
  }
2338
1701
  async request(request) {
2339
1702
  // Check if the request is valid
2340
1703
  if (!request || typeof request !== "object" || Array.isArray(request)) {
2341
- throw ProviderRpcInvalidRequestError;
1704
+ throw new InvalidRequestRpcError("Invalid request");
2342
1705
  }
2343
1706
  const { method, params } = request;
2344
1707
  // Check if the method is valid
2345
1708
  if (typeof method !== "string" || method.length === 0) {
2346
- throw ProviderRpcMethodNotFoundError;
1709
+ throw new MethodNotFoundRpcError("Invalid method");
2347
1710
  }
2348
1711
  // Check if the params are valid
2349
1712
  if (params !== undefined &&
2350
1713
  !Array.isArray(params) &&
2351
1714
  (typeof params !== "object" || params === null)) {
2352
- throw ProviderRpcInvalidParamsError;
1715
+ throw new InvalidParamsRpcError("Invalid params");
1716
+ }
1717
+ // Check if the user is logged in
1718
+ if (!__classPrivateFieldGet(this, _AirWalletProvider_isLoggedIn, "f").call(this)) {
1719
+ throw new UnauthorizedProviderError("User is not logged in");
1720
+ }
1721
+ try {
1722
+ await __classPrivateFieldGet(this, _AirWalletProvider_ensureWallet, "f").call(this);
1723
+ }
1724
+ catch (error) {
1725
+ throw ensureProviderRpcError(error);
2353
1726
  }
2354
1727
  const requestId = randomId();
2355
- const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this, _AirWalletProvider_walletIframe, "f"), {
1728
+ const response = await AirMessageService$1.sendWalletProviderRequest(__classPrivateFieldGet(this, _AirWalletProvider_getWalletIframeController, "f").call(this).iframeElement, {
2356
1729
  requestId,
2357
1730
  ...request,
2358
1731
  });
2359
1732
  if (!response.success) {
2360
- const error = ensureProviderRpcError(response.payload);
2361
- throw error;
1733
+ throw ensureProviderRpcError(response.payload);
2362
1734
  }
2363
1735
  return response.payload.response;
2364
1736
  }
2365
1737
  on(eventName, listener) {
2366
- console.log("on", eventName, listener);
1738
+ __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
1739
+ __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].push(listener);
2367
1740
  }
2368
1741
  removeListener(eventName, listener) {
2369
- console.log("removeListener", eventName, listener);
1742
+ __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || [];
1743
+ const index = __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].indexOf(listener);
1744
+ if (index >= 0) {
1745
+ __classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName].splice(index, 1);
1746
+ }
1747
+ }
1748
+ removeAllListeners() {
1749
+ __classPrivateFieldSet(this, _AirWalletProvider_eventListeners, {
1750
+ connect: [],
1751
+ disconnect: [],
1752
+ accountsChanged: [],
1753
+ chainChanged: [],
1754
+ message: [],
1755
+ }, "f");
2370
1756
  }
2371
1757
  }
2372
- _AirWalletProvider_walletIframe = new WeakMap();
1758
+ _AirWalletProvider_isLoggedIn = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_getWalletIframeController = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1759
+ (__classPrivateFieldGet(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach((listener) => {
1760
+ try {
1761
+ return listener(...args);
1762
+ }
1763
+ catch (error) {
1764
+ log$1.error(error);
1765
+ }
1766
+ });
1767
+ };
2373
1768
 
2374
1769
  class IframeController {
2375
1770
  constructor(iframeUrl, iframeId, state) {
@@ -2434,9 +1829,8 @@ IframeController.defaultState = {
2434
1829
  isVisible: false,
2435
1830
  };
2436
1831
 
2437
- var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_isWalletInitialized, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet;
1832
+ var _AirService_instances, _AirService_loginResult, _AirService_buildEnv, _AirService_enableLogging, _AirService_partnerId, _AirService_authIframeController, _AirService_isAuthInitialized, _AirService_airAuthListener, _AirService_walletIframeController, _AirService_walletInitialization, _AirService_isWalletInitialized, _AirService_walletLoggedInResult, _AirService_airWalletProvider, _AirService_ensureWallet, _AirService_initializeWallet, _AirService_triggerEventListeners, _AirService_triggerAirAuthInitialized, _AirService_triggerAirAuthLoggedIn, _AirService_triggerAirAuthLoggedOut, _AirService_triggerWalletInitialized, _AirService_createLoginResult, _AirService_createWalletInitializedResult, _AirService_cleanUpAuth, _AirService_cleanUpWallet, _AirService_cleanUpAuthWalletCommunication;
2438
1833
  class AirService {
2439
- // #walletRehydrationState: AirRehydrationResult;
2440
1834
  constructor({ partnerId }) {
2441
1835
  _AirService_instances.add(this);
2442
1836
  _AirService_loginResult.set(this, undefined);
@@ -2450,8 +1844,14 @@ class AirService {
2450
1844
  _AirService_walletIframeController.set(this, undefined);
2451
1845
  _AirService_walletInitialization.set(this, undefined);
2452
1846
  _AirService_isWalletInitialized.set(this, false);
1847
+ _AirService_walletLoggedInResult.set(this, undefined);
2453
1848
  _AirService_airWalletProvider.set(this, undefined);
2454
1849
  __classPrivateFieldSet(this, _AirService_partnerId, partnerId, "f");
1850
+ __classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider({
1851
+ isLoggedIn: () => this.isLoggedIn,
1852
+ ensureWallet: __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).bind(this),
1853
+ getWalletIframeController: () => __classPrivateFieldGet(this, _AirService_walletIframeController, "f"),
1854
+ }), "f");
2455
1855
  // this.#modalZIndex = modalZIndex ?? 99999;
2456
1856
  }
2457
1857
  get buildEnv() {
@@ -2463,8 +1863,16 @@ class AirService {
2463
1863
  get isLoggedIn() {
2464
1864
  return !!__classPrivateFieldGet(this, _AirService_loginResult, "f");
2465
1865
  }
2466
- get isWalletLoaded() {
2467
- return __classPrivateFieldGet(this, _AirService_isWalletInitialized, "f");
1866
+ get isWalletInitialized() {
1867
+ return !!__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
1868
+ }
1869
+ get provider() {
1870
+ const provider = __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
1871
+ return {
1872
+ request: provider.request.bind(provider),
1873
+ on: provider.on.bind(provider),
1874
+ removeListener: provider.removeListener.bind(provider),
1875
+ };
2468
1876
  }
2469
1877
  async init({ buildEnv = BUILD_ENV.PRODUCTION, enableLogging = false, skipRehydration = false, }) {
2470
1878
  if (!__classPrivateFieldGet(this, _AirService_partnerId, "f"))
@@ -2492,7 +1900,7 @@ class AirService {
2492
1900
  }
2493
1901
  case AirAuthMessageTypes.SETUP_WALLET_REQUEST: {
2494
1902
  try {
2495
- await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
1903
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, { skipWalletLogin: true });
2496
1904
  __classPrivateFieldGet(this, _AirService_authIframeController, "f").postMessage({
2497
1905
  type: AirAuthMessageTypes.SETUP_WALLET_RESPONSE,
2498
1906
  payload: {
@@ -2527,6 +1935,7 @@ class AirService {
2527
1935
  const { payload } = await AirMessageService$1.sendAuthInitializationRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, {
2528
1936
  partnerId: __classPrivateFieldGet(this, _AirService_partnerId, "f"),
2529
1937
  skipRehydration,
1938
+ partnerDAppUrl: window.location.href,
2530
1939
  });
2531
1940
  if (payload.success === true) {
2532
1941
  resolve(payload);
@@ -2554,11 +1963,6 @@ class AirService {
2554
1963
  }
2555
1964
  return null;
2556
1965
  }
2557
- async cleanUp() {
2558
- await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2559
- await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
2560
- this.clearEventListeners();
2561
- }
2562
1966
  async login(options) {
2563
1967
  if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2564
1968
  throw new Error("Service is not initialized");
@@ -2584,7 +1988,11 @@ class AirService {
2584
1988
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2585
1989
  try {
2586
1990
  log.info("deploySmartAccount");
2587
- await AirMessageService$1.sendDeploySmartAccountRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
1991
+ const { payload } = await AirMessageService$1.sendDeploySmartAccountRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
1992
+ if (payload.success === false) {
1993
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
1994
+ }
1995
+ return { txHash: payload.txHash };
2588
1996
  }
2589
1997
  catch (error) {
2590
1998
  throw AirServiceError.from(error);
@@ -2618,7 +2026,8 @@ class AirService {
2618
2026
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2619
2027
  try {
2620
2028
  log.info("executeAction", params);
2621
- await AirMessageService$1.sendExecuteActionRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, params);
2029
+ const txHash = await AirMessageService$1.sendExecuteActionRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, params);
2030
+ return txHash;
2622
2031
  }
2623
2032
  catch (error) {
2624
2033
  throw AirServiceError.from(error);
@@ -2633,65 +2042,95 @@ class AirService {
2633
2042
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2634
2043
  try {
2635
2044
  log.info("revokePermission", permissionId);
2636
- await AirMessageService$1.sendRevokePermissionsRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, permissionId);
2045
+ const txHash = await AirMessageService$1.sendRevokePermissionsRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, permissionId);
2046
+ return txHash;
2637
2047
  }
2638
2048
  catch (error) {
2639
2049
  throw AirServiceError.from(error);
2640
2050
  }
2641
2051
  }
2642
- async logout() {
2052
+ /**
2053
+ * @experimental This method is experimental and will change in the future.
2054
+ */
2055
+ async isSmartAccountDeployed() {
2643
2056
  if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2644
2057
  throw new Error("Service is not initialized");
2645
- if (!this.isLoggedIn)
2646
- throw new Error("No active session to logout");
2647
- // Clear up wallet
2648
- await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2649
- await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
2650
- __classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
2651
- __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
2652
- }
2653
- async getProvider() {
2654
- if (!this.isLoggedIn)
2655
- return null;
2656
2058
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2657
- return __classPrivateFieldGet(this, _AirService_airWalletProvider, "f");
2059
+ try {
2060
+ const { payload } = await AirMessageService$1.sendIsSmartAccountDeployedRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
2061
+ if (payload.success === false) {
2062
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
2063
+ }
2064
+ return payload.isDeployed;
2065
+ }
2066
+ catch (error) {
2067
+ throw AirServiceError.from(error);
2068
+ }
2069
+ }
2070
+ getProvider() {
2071
+ return this.provider;
2658
2072
  }
2659
2073
  async preloadWallet() {
2660
- return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2074
+ if (__classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"))
2075
+ return __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
2076
+ return await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2661
2077
  }
2662
2078
  async claimAirId(options) {
2663
2079
  await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
2664
- // return this.#realmEmbed.claimRealmId(options);
2665
- log.info("claimAirId", options);
2666
- return null;
2080
+ const result = await AirMessageService$1.sendClaimIdRequest(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, options ?? {});
2081
+ if (result.payload.success === true) {
2082
+ return { airId: result.payload.airId };
2083
+ }
2084
+ throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2667
2085
  }
2668
2086
  async getUserInfo() {
2669
2087
  if (!this.isLoggedIn)
2670
2088
  throw new Error("User not logged in");
2671
- const info = await AirMessageService$1.sendUserInfoRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
2089
+ const info = await AirMessageService$1.sendPartnerUserInfoRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
2672
2090
  if (info.payload.success === false) {
2673
2091
  throw new AirServiceError(info.payload.errorName, info.payload.errorMessage);
2674
2092
  }
2675
2093
  return {
2676
- id: info.payload.id,
2677
- abstractAccountAddress: info.payload.abstractAccountAddress,
2678
- email: info.payload.email,
2679
- airIds: info.payload.airIds,
2094
+ partnerId: info.payload.partnerId,
2095
+ partnerUserId: info.payload.partnerUserId,
2096
+ airId: info.payload.airId,
2097
+ user: {
2098
+ id: info.payload.user.id,
2099
+ abstractAccountAddress: info.payload.user.abstractAccountAddress,
2100
+ email: info.payload.user.email,
2101
+ isMFASetup: info.payload.user.isMFASetup,
2102
+ },
2680
2103
  };
2681
2104
  }
2682
- async getPartnerUserInfo() {
2105
+ async goToPartner(partnerUrl) {
2106
+ if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2107
+ throw new Error("Service is not initialized");
2683
2108
  if (!this.isLoggedIn)
2684
- throw new Error("User not logged in");
2685
- const info = await AirMessageService$1.sendPartnerUserInfoRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
2686
- if (info.payload.success === false) {
2687
- throw new AirServiceError(info.payload.errorName, info.payload.errorMessage);
2109
+ throw new Error("No active session to generate token");
2110
+ const result = await AirMessageService$1.sendCrossPartnerTokenRequest(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, partnerUrl);
2111
+ if (result.payload.success === false) {
2112
+ throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2688
2113
  }
2689
2114
  return {
2690
- partnerId: info.payload.partnerId,
2691
- partnerUserId: info.payload.partnerUserId,
2692
- airId: info.payload.airId,
2115
+ urlWithToken: result.payload.urlWithToken,
2693
2116
  };
2694
2117
  }
2118
+ async logout() {
2119
+ if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2120
+ throw new Error("Service is not initialized");
2121
+ if (!this.isLoggedIn)
2122
+ throw new Error("No active session to logout");
2123
+ // Clear up wallet
2124
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2125
+ await AirMessageService$1.logoutAuth(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement);
2126
+ __classPrivateFieldSet(this, _AirService_loginResult, undefined, "f");
2127
+ __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedOut).call(this);
2128
+ }
2129
+ async cleanUp() {
2130
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2131
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuth).call(this);
2132
+ this.clearEventListeners();
2133
+ }
2695
2134
  on(listener) {
2696
2135
  if (__classPrivateFieldGet(this, _AirService_airAuthListener, "f").indexOf(listener) < 0)
2697
2136
  __classPrivateFieldGet(this, _AirService_airAuthListener, "f").push(listener);
@@ -2712,24 +2151,39 @@ class AirService {
2712
2151
  return null;
2713
2152
  }
2714
2153
  }
2715
- _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletIframeController = new WeakMap(), _AirService_walletInitialization = new WeakMap(), _AirService_isWalletInitialized = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet = async function _AirService_ensureWallet() {
2154
+ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _AirService_enableLogging = new WeakMap(), _AirService_partnerId = new WeakMap(), _AirService_authIframeController = new WeakMap(), _AirService_isAuthInitialized = new WeakMap(), _AirService_airAuthListener = new WeakMap(), _AirService_walletIframeController = new WeakMap(), _AirService_walletInitialization = new WeakMap(), _AirService_isWalletInitialized = new WeakMap(), _AirService_walletLoggedInResult = new WeakMap(), _AirService_airWalletProvider = new WeakMap(), _AirService_instances = new WeakSet(), _AirService_ensureWallet =
2155
+ // Result of this.#walletInitialization:
2156
+ // - If skipWalletLogin is true, it returns the result of empty abstractAccountAddress
2157
+ // - If skipWalletLogin is false, it returns the result of abstractAccountAddress from wallet initialization
2158
+ // - If #ensureWallet is called again, it returns the result of abstractAccountAddress from the second
2159
+ // wallet initialization if this first wallet initialization doesn't have abstractAccountAddress
2160
+ async function _AirService_ensureWallet(option) {
2716
2161
  if (!this.isInitialized)
2717
2162
  throw new Error("Service not initialized");
2718
- if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f")) {
2719
- try {
2720
- __classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this), "f");
2721
- return await __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
2163
+ if (!this.isLoggedIn && !option?.skipWalletLogin)
2164
+ throw new Error("User not logged in");
2165
+ if (!__classPrivateFieldGet(this, _AirService_walletInitialization, "f"))
2166
+ __classPrivateFieldSet(this, _AirService_walletInitialization, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_initializeWallet).call(this, option), "f");
2167
+ try {
2168
+ const result = await __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
2169
+ // Note: Checking for abstractAccountAddress from the result and this.#walletLoggedInResult to avoid race condition
2170
+ if (option?.skipWalletLogin ||
2171
+ result?.abstractAccountAddress ||
2172
+ __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f")?.abstractAccountAddress) {
2173
+ return result || __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f");
2722
2174
  }
2723
- catch (error) {
2724
- __classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
2725
- log.error("Error initializing wallet", error);
2726
- throw error;
2175
+ const walletInitResult = await AirMessageService$1.onWalletInitialized();
2176
+ if (walletInitResult.payload.success !== true) {
2177
+ throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
2727
2178
  }
2179
+ return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload);
2728
2180
  }
2729
- else {
2730
- return __classPrivateFieldGet(this, _AirService_walletInitialization, "f");
2181
+ catch (error) {
2182
+ __classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
2183
+ log.error("Error initializing wallet", error);
2184
+ throw error;
2731
2185
  }
2732
- }, _AirService_initializeWallet = async function _AirService_initializeWallet() {
2186
+ }, _AirService_initializeWallet = async function _AirService_initializeWallet(option) {
2733
2187
  if (__classPrivateFieldGet(this, _AirService_isWalletInitialized, "f"))
2734
2188
  throw new AirServiceError("ALREADY_INITIALISED", "Already initialized");
2735
2189
  const { walletUrl } = AIR_URLS[__classPrivateFieldGet(this, _AirService_buildEnv, "f")];
@@ -2747,6 +2201,23 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
2747
2201
  walletIframeController.updateIframeState();
2748
2202
  break;
2749
2203
  }
2204
+ case AirMessageTypes.WALLET_INITIALIZED: {
2205
+ if (msg.payload.success === true && msg.payload.addresses?.aa) {
2206
+ __classPrivateFieldSet(this, _AirService_walletLoggedInResult, __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, msg.payload), "f");
2207
+ __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, __classPrivateFieldGet(this, _AirService_walletLoggedInResult, "f"));
2208
+ }
2209
+ if (msg.payload.success === false) {
2210
+ if (!__classPrivateFieldGet(this, _AirService_isWalletInitialized, "f")) {
2211
+ // MFA fail case, also reset wallet port
2212
+ __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpAuthWalletCommunication).call(this);
2213
+ }
2214
+ else {
2215
+ // Logout wallet and destroy the wallet iframe
2216
+ await __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this);
2217
+ }
2218
+ }
2219
+ break;
2220
+ }
2750
2221
  }
2751
2222
  });
2752
2223
  await new Promise((resolve, reject) => {
@@ -2769,18 +2240,15 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
2769
2240
  };
2770
2241
  window.addEventListener("message", handleAuthMessage);
2771
2242
  });
2243
+ __classPrivateFieldGet(this, _AirService_airWalletProvider, "f").listenProviderEventMessage();
2772
2244
  const walletInitPromise = AirMessageService$1.onWalletInitialized();
2773
- AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement);
2245
+ AirMessageService$1.setupIframeCommunication(__classPrivateFieldGet(this, _AirService_authIframeController, "f").iframeElement, __classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement, option?.skipWalletLogin ?? false);
2774
2246
  const walletInitResult = await walletInitPromise;
2775
2247
  if (walletInitResult.payload.success !== true) {
2776
2248
  throw new AirServiceError(walletInitResult.payload.errorName, walletInitResult.payload.errorMessage);
2777
2249
  }
2778
- __classPrivateFieldSet(this, _AirService_airWalletProvider, new AirWalletProvider(__classPrivateFieldGet(this, _AirService_walletIframeController, "f").iframeElement), "f");
2779
- const result = {
2780
- abstractAccountAddress: walletInitResult.payload.addresses.aa,
2781
- };
2782
- __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_triggerWalletInitialized).call(this, result);
2783
- return result;
2250
+ __classPrivateFieldSet(this, _AirService_isWalletInitialized, true, "f");
2251
+ return __classPrivateFieldGet(this, _AirService_instances, "m", _AirService_createWalletInitializedResult).call(this, walletInitResult.payload);
2784
2252
  }
2785
2253
  catch (error) {
2786
2254
  log.error("Error initializing wallet", error);
@@ -2811,6 +2279,12 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
2811
2279
  id: payload.id,
2812
2280
  abstractAccountAddress: payload.abstractAccountAddress,
2813
2281
  token: payload.partnerAccessToken,
2282
+ isMFASetup: payload.isMFASetup,
2283
+ };
2284
+ }, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
2285
+ return {
2286
+ abstractAccountAddress: payload.addresses?.aa ?? null,
2287
+ isMFASetup: payload.isMFASetup,
2814
2288
  };
2815
2289
  }, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
2816
2290
  // Logout auth session
@@ -2827,20 +2301,38 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
2827
2301
  }, _AirService_cleanUpWallet = async function _AirService_cleanUpWallet() {
2828
2302
  if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2829
2303
  return;
2830
- // Logout wallet session
2831
- // TODO need to tell wallet to clear preferences?
2832
- // Destroy the wallet iframe
2304
+ // Logout wallet and destroy the wallet iframe
2833
2305
  const walletIframeElement = __classPrivateFieldGet(this, _AirService_walletIframeController, "f")?.iframeElement;
2834
2306
  if (isElement(walletIframeElement) && window.document.body.contains(walletIframeElement)) {
2307
+ await AirMessageService$1.logoutWallet(walletIframeElement);
2835
2308
  __classPrivateFieldGet(this, _AirService_walletIframeController, "f").destroy();
2836
2309
  __classPrivateFieldSet(this, _AirService_walletIframeController, undefined, "f");
2837
2310
  }
2838
2311
  // Close the message service
2839
2312
  AirMessageService$1.closeAirObservables();
2840
- __classPrivateFieldSet(this, _AirService_walletInitialization, null, "f");
2313
+ __classPrivateFieldSet(this, _AirService_walletLoggedInResult, undefined, "f");
2314
+ __classPrivateFieldSet(this, _AirService_walletInitialization, undefined, "f");
2841
2315
  __classPrivateFieldSet(this, _AirService_isWalletInitialized, false, "f");
2316
+ }, _AirService_cleanUpAuthWalletCommunication = function _AirService_cleanUpAuthWalletCommunication() {
2317
+ if (!__classPrivateFieldGet(this, _AirService_isAuthInitialized, "f"))
2318
+ return;
2319
+ const authIframeElement = __classPrivateFieldGet(this, _AirService_authIframeController, "f")?.iframeElement;
2320
+ if (isElement(authIframeElement) && window.document.body.contains(authIframeElement)) {
2321
+ AirMessageService$1.sendResetAuthServiceWalletCommunication(authIframeElement);
2322
+ }
2842
2323
  };
2843
2324
 
2844
2325
  exports.AirService = AirService;
2845
- exports.AirWalletProvider = AirWalletProvider;
2326
+ exports.AirServiceError = AirServiceError;
2846
2327
  exports.BUILD_ENV = BUILD_ENV;
2328
+ exports.ChainDisconnectedError = ChainDisconnectedError;
2329
+ exports.InternalRpcError = InternalRpcError;
2330
+ exports.InvalidParamsRpcError = InvalidParamsRpcError;
2331
+ exports.InvalidRequestRpcError = InvalidRequestRpcError;
2332
+ exports.MethodNotFoundRpcError = MethodNotFoundRpcError;
2333
+ exports.ProviderDisconnectedError = ProviderDisconnectedError;
2334
+ exports.SwitchChainError = SwitchChainError;
2335
+ exports.UnauthorizedProviderError = UnauthorizedProviderError;
2336
+ exports.UnsupportedProviderMethodError = UnsupportedProviderMethodError;
2337
+ exports.UserRejectedRequestError = UserRejectedRequestError;
2338
+ exports.ensureProviderRpcError = ensureProviderRpcError;