@mocanetwork/airkit-connector 1.9.0-beta.1 → 1.9.0-beta.3

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.
@@ -94,7 +94,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
94
94
  var e = new Error(message);
95
95
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
96
96
  };
97
- var version$2 = "1.9.0-beta.1";
97
+ var version$2 = "1.9.0-beta.3";
98
98
  var airkitPackage = {
99
99
  version: version$2
100
100
  };
@@ -138,6 +138,10 @@ const AirAuthMessageTypes = {
138
138
  RECOVERY_RESPONSE: "air_auth_recovery_response",
139
139
  ISSUE_ON_BEHALF_NEW_USER_CONFIRMATION_REQUEST: "air_auth_issue_on_behalf_new_user_confirmation_request",
140
140
  ISSUE_ON_BEHALF_NEW_USER_CONFIRMATION_RESPONSE: "air_auth_issue_on_behalf_new_user_confirmation_response",
141
+ REMOVE_SIGNER_SIGNATURE_REQUEST: "air_auth_remove_signer_signature_request",
142
+ REMOVE_SIGNER_SIGNATURE_RESPONSE: "air_auth_remove_signer_signature_response",
143
+ RESET_WALLET_REQUEST: "air_auth_reset_wallet_request",
144
+ RESET_WALLET_RESPONSE: "air_auth_reset_wallet_response",
141
145
  EXPIRED_LOGOUT_REQUEST: "air_auth_expired_logout_request"
142
146
  };
143
147
  const AirCredentialMessageTypes = {
@@ -168,6 +172,12 @@ const AirRecoveryMessageTypes = {
168
172
  RECOVERY_IFRAME_VISIBILITY_REQUEST: "air_recovery_iframe_visibility_request",
169
173
  UPDATE_SESSION_CONFIG_REQUEST: "air_recovery_update_session_config_request",
170
174
  UPDATE_SESSION_CONFIG_RESPONSE: "air_recovery_update_session_config_response",
175
+ GET_AGENT_KEYS_REQUEST: "air_recovery_get_agent_keys_request",
176
+ GET_AGENT_KEYS_RESPONSE: "air_recovery_get_agent_keys_response",
177
+ REGISTER_AGENT_KEY_REQUEST: "air_recovery_register_agent_key_request",
178
+ REGISTER_AGENT_KEY_RESPONSE: "air_recovery_register_agent_key_response",
179
+ REMOVE_AGENT_KEY_REQUEST: "air_recovery_remove_agent_key_request",
180
+ REMOVE_AGENT_KEY_RESPONSE: "air_recovery_remove_agent_key_response",
171
181
  LOGOUT_REQUEST: "air_recovery_logout_request",
172
182
  LOGOUT_RESPONSE: "air_recovery_logout_response"
173
183
  };
@@ -1850,7 +1860,7 @@ class ProviderMessageService extends MessageServiceBase {
1850
1860
  });
1851
1861
  }
1852
1862
  async sendWalletProviderRequest(payload) {
1853
- const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter(msg => msg.payload.method === payload.method)));
1863
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter(msg => msg.payload.method === payload.method && msg.payload.requestId === payload.requestId)));
1854
1864
  await this.sendMessage({
1855
1865
  type: AirWalletProviderMessageTypes.REQUEST,
1856
1866
  payload
@@ -1862,7 +1872,7 @@ _a$4 = ProviderMessageService;
1862
1872
  _ProviderMessageService_instance = {
1863
1873
  value: void 0
1864
1874
  };
1865
- var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
1875
+ var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_currentChainId, _AirWalletProvider_emit, _AirWalletProvider_getAddressForCurrentChain, _AirWalletProvider_parseChainId;
1866
1876
  class AirWalletProvider {
1867
1877
  constructor({
1868
1878
  ensureWallet,
@@ -1875,9 +1885,16 @@ class AirWalletProvider {
1875
1885
  _AirWalletProvider_getLoginResult.set(this, void 0);
1876
1886
  _AirWalletProvider_ensureWallet.set(this, void 0);
1877
1887
  _AirWalletProvider_eventListeners.set(this, void 0);
1888
+ _AirWalletProvider_currentChainId.set(this, null);
1878
1889
  this.startEventMessageListening = async walletIframe => {
1879
1890
  await __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
1880
1891
  __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.EVENT)).subscribe(message => {
1892
+ if (message.payload.event === "chainChanged") {
1893
+ const parsedChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_parseChainId).call(this, message.payload.data);
1894
+ if (parsedChainId !== null) {
1895
+ __classPrivateFieldSet(this, _AirWalletProvider_currentChainId, parsedChainId);
1896
+ }
1897
+ }
1881
1898
  __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1882
1899
  });
1883
1900
  };
@@ -1914,8 +1931,12 @@ class AirWalletProvider {
1914
1931
  if (!loginResult) {
1915
1932
  throw new UnauthorizedProviderError("User is not logged in");
1916
1933
  }
1917
- if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this) && loginResult?.abstractAccountAddress) {
1918
- return [loginResult.abstractAccountAddress];
1934
+ // Early return optimization: return cached address from login result if wallet not yet initialized
1935
+ if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this)) {
1936
+ const address = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_getAddressForCurrentChain).call(this, loginResult);
1937
+ if (address) {
1938
+ return [address];
1939
+ }
1919
1940
  }
1920
1941
  const skipWalletLoginMethods = ["eth_chainId"];
1921
1942
  try {
@@ -1937,6 +1958,12 @@ class AirWalletProvider {
1937
1958
  if (!response.success) {
1938
1959
  throw ensureProviderRpcError(response.payload);
1939
1960
  }
1961
+ if (method === "eth_chainId") {
1962
+ const parsedChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_parseChainId).call(this, response.payload.response);
1963
+ if (parsedChainId !== null) {
1964
+ __classPrivateFieldSet(this, _AirWalletProvider_currentChainId, parsedChainId);
1965
+ }
1966
+ }
1940
1967
  return response.payload.response;
1941
1968
  }
1942
1969
  on(eventName, listener) {
@@ -1960,7 +1987,7 @@ class AirWalletProvider {
1960
1987
  });
1961
1988
  }
1962
1989
  }
1963
- _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isWalletInitialized = new WeakMap(), _AirWalletProvider_getLoginResult = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1990
+ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isWalletInitialized = new WeakMap(), _AirWalletProvider_getLoginResult = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_currentChainId = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1964
1991
  (__classPrivateFieldGet$1(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach(listener => {
1965
1992
  try {
1966
1993
  return listener(...args);
@@ -1968,6 +1995,30 @@ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_is
1968
1995
  log$1.warn(error);
1969
1996
  }
1970
1997
  });
1998
+ }, _AirWalletProvider_getAddressForCurrentChain = function _AirWalletProvider_getAddressForCurrentChain(loginResult) {
1999
+ const currentChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_currentChainId, "f");
2000
+ // If we have the new addresses array and current chainId, look up by chain
2001
+ if (loginResult.abstractAccountAddresses && currentChainId !== null) {
2002
+ const chainIdStr = String(currentChainId);
2003
+ const addressEntry = loginResult.abstractAccountAddresses.find(entry => entry.chainIds.includes(chainIdStr));
2004
+ if (addressEntry) {
2005
+ return addressEntry.address;
2006
+ }
2007
+ }
2008
+ // Fallback to legacy single address (backward compatibility)
2009
+ return loginResult.abstractAccountAddress;
2010
+ }, _AirWalletProvider_parseChainId = function _AirWalletProvider_parseChainId(chainId) {
2011
+ if (typeof chainId === "number") {
2012
+ return Number.isFinite(chainId) ? chainId : null;
2013
+ }
2014
+ if (typeof chainId === "bigint") {
2015
+ return Number(chainId);
2016
+ }
2017
+ if (typeof chainId !== "string" || !chainId) {
2018
+ return null;
2019
+ }
2020
+ const parsed = chainId.startsWith("0x") ? parseInt(chainId, 16) : parseInt(chainId, 10);
2021
+ return Number.isNaN(parsed) ? null : parsed;
1971
2022
  };
1972
2023
  var _a$3, _AuthMessageService_instance;
1973
2024
  const ALLOWED_AUTH_MESSAGES = [AirAuthMessageTypes.INITIALIZATION_RESPONSE, AirAuthMessageTypes.LOGIN_RESPONSE, AirAuthMessageTypes.SETUP_WALLET_REQUEST, AirAuthMessageTypes.SETUP_RECOVERY_REQUEST, AirAuthMessageTypes.SETUP_CREDENTIAL_REQUEST, AirAuthMessageTypes.LOGOUT_RESPONSE, AirAuthMessageTypes.UPDATE_SESSION_CONFIG_RESPONSE, AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE, AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE, AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE, AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST, AirAuthMessageTypes.START_RECOVERY_RESPONSE, AirAuthMessageTypes.EXPIRED_LOGOUT_REQUEST];
@@ -2275,6 +2326,29 @@ class RecoveryMessageService extends MessageServiceBase {
2275
2326
  });
2276
2327
  return response;
2277
2328
  }
2329
+ async sendGetAgentKeysRequest() {
2330
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.GET_AGENT_KEYS_RESPONSE)));
2331
+ await this.sendMessage({
2332
+ type: AirRecoveryMessageTypes.GET_AGENT_KEYS_REQUEST
2333
+ });
2334
+ return response;
2335
+ }
2336
+ async sendRegisterAgentKeyRequest(payload) {
2337
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.REGISTER_AGENT_KEY_RESPONSE)));
2338
+ await this.sendMessage({
2339
+ type: AirRecoveryMessageTypes.REGISTER_AGENT_KEY_REQUEST,
2340
+ payload
2341
+ });
2342
+ return response;
2343
+ }
2344
+ async sendRemoveAgentKeyRequest(payload) {
2345
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.REMOVE_AGENT_KEY_RESPONSE)));
2346
+ await this.sendMessage({
2347
+ type: AirRecoveryMessageTypes.REMOVE_AGENT_KEY_REQUEST,
2348
+ payload
2349
+ });
2350
+ return response;
2351
+ }
2278
2352
  async open(element) {
2279
2353
  await this._open({
2280
2354
  window: element.contentWindow,
@@ -2799,9 +2873,6 @@ class AirService {
2799
2873
  case AirAuthMessageTypes.SETUP_CREDENTIAL_REQUEST:
2800
2874
  {
2801
2875
  try {
2802
- await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, {
2803
- skipWalletLogin: true
2804
- });
2805
2876
  await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2806
2877
  await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendSetupCredentialSuccessResponse();
2807
2878
  } catch (err) {
@@ -2872,10 +2943,6 @@ class AirService {
2872
2943
  });
2873
2944
  if (payload.success === true) {
2874
2945
  __classPrivateFieldSet(this, _AirService_loginResult, __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_createLoginResult).call(this, payload));
2875
- if (payload.needsWalletRestart === true) {
2876
- await Promise.all([__classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this), __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_cleanUpCredential).call(this)]);
2877
- void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2878
- }
2879
2946
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedIn).call(this);
2880
2947
  return __classPrivateFieldGet$1(this, _AirService_loginResult, "f");
2881
2948
  }
@@ -2995,6 +3062,43 @@ class AirService {
2995
3062
  throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2996
3063
  }
2997
3064
  }
3065
+ async getAgentKeys() {
3066
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3067
+ const {
3068
+ payload
3069
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendGetAgentKeysRequest();
3070
+ if (payload.success === false) {
3071
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3072
+ }
3073
+ return payload.agentKeys;
3074
+ }
3075
+ async registerAgentKey(publicKey) {
3076
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3077
+ const {
3078
+ payload
3079
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendRegisterAgentKeyRequest({
3080
+ publicKey
3081
+ });
3082
+ if (payload.success === false) {
3083
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3084
+ }
3085
+ return {
3086
+ id: payload.id,
3087
+ publicKey: payload.publicKey,
3088
+ createdAt: payload.createdAt
3089
+ };
3090
+ }
3091
+ async removeAgentKey(id) {
3092
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3093
+ const {
3094
+ payload
3095
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendRemoveAgentKeyRequest({
3096
+ id
3097
+ });
3098
+ if (payload.success === false) {
3099
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3100
+ }
3101
+ }
2998
3102
  async getUserInfo() {
2999
3103
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertLoggedIn).call(this);
3000
3104
  const info = await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
@@ -3009,7 +3113,7 @@ class AirService {
3009
3113
  id: info.payload.user.id,
3010
3114
  abstractAccountAddress: info.payload.user.abstractAccountAddress,
3011
3115
  email: info.payload.user.email,
3012
- isMFASetup: info.payload.user.isMFASetup
3116
+ isMFASetup: info.payload.user.activeMfaMethods.length > 0
3013
3117
  }
3014
3118
  };
3015
3119
  }
@@ -3128,9 +3232,12 @@ class AirService {
3128
3232
  authToken,
3129
3233
  programId,
3130
3234
  redirectUrl,
3131
- requestDisclosure,
3235
+ fieldsToDisclose,
3132
3236
  offchain
3133
3237
  }) {
3238
+ if (Array.isArray(fieldsToDisclose) && fieldsToDisclose.length === 0) {
3239
+ throw new AirServiceError("CLIENT_ERROR", "fieldsToDisclose array must contain at least one field");
3240
+ }
3134
3241
  await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
3135
3242
  const {
3136
3243
  payload
@@ -3138,7 +3245,7 @@ class AirService {
3138
3245
  partnerToken: authToken,
3139
3246
  programId,
3140
3247
  redirectUrl,
3141
- requestDisclosure,
3248
+ fieldsToDisclose,
3142
3249
  offchain
3143
3250
  });
3144
3251
  if (payload.success === false) {
@@ -3154,7 +3261,9 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3154
3261
  if (!this.isLoggedIn) throw new AirServiceError("NOT_LOGGED_IN", "User not logged in");
3155
3262
  }, _AirService_ensureCredential = async function _AirService_ensureCredential() {
3156
3263
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertInitialized).call(this);
3157
- void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
3264
+ void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, {
3265
+ skipWalletLogin: true
3266
+ });
3158
3267
  try {
3159
3268
  if (!__classPrivateFieldGet$1(this, _AirService_credentialsInitialization, "f")) __classPrivateFieldSet(this, _AirService_credentialsInitialization, __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_initializeCredentials).call(this), "f");
3160
3269
  await __classPrivateFieldGet$1(this, _AirService_credentialsInitialization, "f");
@@ -3399,8 +3508,9 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3399
3508
  isLoggedIn: true,
3400
3509
  id: payload.id,
3401
3510
  abstractAccountAddress: payload.abstractAccountAddress,
3511
+ abstractAccountAddresses: payload.abstractAccountAddresses,
3402
3512
  token: payload.partnerAccessToken,
3403
- isMFASetup: payload.isMFASetup
3513
+ isMFASetup: payload.activeMfaMethods.length > 0
3404
3514
  };
3405
3515
  }, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
3406
3516
  if ("isWalletLoggedIn" in payload && !payload.isWalletLoggedIn) {
@@ -3411,7 +3521,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3411
3521
  }
3412
3522
  return {
3413
3523
  abstractAccountAddress: payload.addresses.aa,
3414
- isMFASetup: payload.isMFASetup
3524
+ isMFASetup: payload.activeMfaMethods.length > 0
3415
3525
  };
3416
3526
  }, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
3417
3527
  // Logout auth session
@@ -92,7 +92,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
92
92
  var e = new Error(message);
93
93
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
94
94
  };
95
- var version$2 = "1.9.0-beta.1";
95
+ var version$2 = "1.9.0-beta.3";
96
96
  var airkitPackage = {
97
97
  version: version$2
98
98
  };
@@ -136,6 +136,10 @@ const AirAuthMessageTypes = {
136
136
  RECOVERY_RESPONSE: "air_auth_recovery_response",
137
137
  ISSUE_ON_BEHALF_NEW_USER_CONFIRMATION_REQUEST: "air_auth_issue_on_behalf_new_user_confirmation_request",
138
138
  ISSUE_ON_BEHALF_NEW_USER_CONFIRMATION_RESPONSE: "air_auth_issue_on_behalf_new_user_confirmation_response",
139
+ REMOVE_SIGNER_SIGNATURE_REQUEST: "air_auth_remove_signer_signature_request",
140
+ REMOVE_SIGNER_SIGNATURE_RESPONSE: "air_auth_remove_signer_signature_response",
141
+ RESET_WALLET_REQUEST: "air_auth_reset_wallet_request",
142
+ RESET_WALLET_RESPONSE: "air_auth_reset_wallet_response",
139
143
  EXPIRED_LOGOUT_REQUEST: "air_auth_expired_logout_request"
140
144
  };
141
145
  const AirCredentialMessageTypes = {
@@ -166,6 +170,12 @@ const AirRecoveryMessageTypes = {
166
170
  RECOVERY_IFRAME_VISIBILITY_REQUEST: "air_recovery_iframe_visibility_request",
167
171
  UPDATE_SESSION_CONFIG_REQUEST: "air_recovery_update_session_config_request",
168
172
  UPDATE_SESSION_CONFIG_RESPONSE: "air_recovery_update_session_config_response",
173
+ GET_AGENT_KEYS_REQUEST: "air_recovery_get_agent_keys_request",
174
+ GET_AGENT_KEYS_RESPONSE: "air_recovery_get_agent_keys_response",
175
+ REGISTER_AGENT_KEY_REQUEST: "air_recovery_register_agent_key_request",
176
+ REGISTER_AGENT_KEY_RESPONSE: "air_recovery_register_agent_key_response",
177
+ REMOVE_AGENT_KEY_REQUEST: "air_recovery_remove_agent_key_request",
178
+ REMOVE_AGENT_KEY_RESPONSE: "air_recovery_remove_agent_key_response",
169
179
  LOGOUT_REQUEST: "air_recovery_logout_request",
170
180
  LOGOUT_RESPONSE: "air_recovery_logout_response"
171
181
  };
@@ -1848,7 +1858,7 @@ class ProviderMessageService extends MessageServiceBase {
1848
1858
  });
1849
1859
  }
1850
1860
  async sendWalletProviderRequest(payload) {
1851
- const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter(msg => msg.payload.method === payload.method)));
1861
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter(msg => msg.payload.method === payload.method && msg.payload.requestId === payload.requestId)));
1852
1862
  await this.sendMessage({
1853
1863
  type: AirWalletProviderMessageTypes.REQUEST,
1854
1864
  payload
@@ -1860,7 +1870,7 @@ _a$4 = ProviderMessageService;
1860
1870
  _ProviderMessageService_instance = {
1861
1871
  value: void 0
1862
1872
  };
1863
- var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
1873
+ var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_currentChainId, _AirWalletProvider_emit, _AirWalletProvider_getAddressForCurrentChain, _AirWalletProvider_parseChainId;
1864
1874
  class AirWalletProvider {
1865
1875
  constructor({
1866
1876
  ensureWallet,
@@ -1873,9 +1883,16 @@ class AirWalletProvider {
1873
1883
  _AirWalletProvider_getLoginResult.set(this, void 0);
1874
1884
  _AirWalletProvider_ensureWallet.set(this, void 0);
1875
1885
  _AirWalletProvider_eventListeners.set(this, void 0);
1886
+ _AirWalletProvider_currentChainId.set(this, null);
1876
1887
  this.startEventMessageListening = async walletIframe => {
1877
1888
  await __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
1878
1889
  __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.EVENT)).subscribe(message => {
1890
+ if (message.payload.event === "chainChanged") {
1891
+ const parsedChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_parseChainId).call(this, message.payload.data);
1892
+ if (parsedChainId !== null) {
1893
+ __classPrivateFieldSet(this, _AirWalletProvider_currentChainId, parsedChainId);
1894
+ }
1895
+ }
1879
1896
  __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1880
1897
  });
1881
1898
  };
@@ -1912,8 +1929,12 @@ class AirWalletProvider {
1912
1929
  if (!loginResult) {
1913
1930
  throw new UnauthorizedProviderError("User is not logged in");
1914
1931
  }
1915
- if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this) && loginResult?.abstractAccountAddress) {
1916
- return [loginResult.abstractAccountAddress];
1932
+ // Early return optimization: return cached address from login result if wallet not yet initialized
1933
+ if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this)) {
1934
+ const address = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_getAddressForCurrentChain).call(this, loginResult);
1935
+ if (address) {
1936
+ return [address];
1937
+ }
1917
1938
  }
1918
1939
  const skipWalletLoginMethods = ["eth_chainId"];
1919
1940
  try {
@@ -1935,6 +1956,12 @@ class AirWalletProvider {
1935
1956
  if (!response.success) {
1936
1957
  throw ensureProviderRpcError(response.payload);
1937
1958
  }
1959
+ if (method === "eth_chainId") {
1960
+ const parsedChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_parseChainId).call(this, response.payload.response);
1961
+ if (parsedChainId !== null) {
1962
+ __classPrivateFieldSet(this, _AirWalletProvider_currentChainId, parsedChainId);
1963
+ }
1964
+ }
1938
1965
  return response.payload.response;
1939
1966
  }
1940
1967
  on(eventName, listener) {
@@ -1958,7 +1985,7 @@ class AirWalletProvider {
1958
1985
  });
1959
1986
  }
1960
1987
  }
1961
- _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isWalletInitialized = new WeakMap(), _AirWalletProvider_getLoginResult = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1988
+ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isWalletInitialized = new WeakMap(), _AirWalletProvider_getLoginResult = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_currentChainId = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1962
1989
  (__classPrivateFieldGet$1(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach(listener => {
1963
1990
  try {
1964
1991
  return listener(...args);
@@ -1966,6 +1993,30 @@ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_is
1966
1993
  log$1.warn(error);
1967
1994
  }
1968
1995
  });
1996
+ }, _AirWalletProvider_getAddressForCurrentChain = function _AirWalletProvider_getAddressForCurrentChain(loginResult) {
1997
+ const currentChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_currentChainId, "f");
1998
+ // If we have the new addresses array and current chainId, look up by chain
1999
+ if (loginResult.abstractAccountAddresses && currentChainId !== null) {
2000
+ const chainIdStr = String(currentChainId);
2001
+ const addressEntry = loginResult.abstractAccountAddresses.find(entry => entry.chainIds.includes(chainIdStr));
2002
+ if (addressEntry) {
2003
+ return addressEntry.address;
2004
+ }
2005
+ }
2006
+ // Fallback to legacy single address (backward compatibility)
2007
+ return loginResult.abstractAccountAddress;
2008
+ }, _AirWalletProvider_parseChainId = function _AirWalletProvider_parseChainId(chainId) {
2009
+ if (typeof chainId === "number") {
2010
+ return Number.isFinite(chainId) ? chainId : null;
2011
+ }
2012
+ if (typeof chainId === "bigint") {
2013
+ return Number(chainId);
2014
+ }
2015
+ if (typeof chainId !== "string" || !chainId) {
2016
+ return null;
2017
+ }
2018
+ const parsed = chainId.startsWith("0x") ? parseInt(chainId, 16) : parseInt(chainId, 10);
2019
+ return Number.isNaN(parsed) ? null : parsed;
1969
2020
  };
1970
2021
  var _a$3, _AuthMessageService_instance;
1971
2022
  const ALLOWED_AUTH_MESSAGES = [AirAuthMessageTypes.INITIALIZATION_RESPONSE, AirAuthMessageTypes.LOGIN_RESPONSE, AirAuthMessageTypes.SETUP_WALLET_REQUEST, AirAuthMessageTypes.SETUP_RECOVERY_REQUEST, AirAuthMessageTypes.SETUP_CREDENTIAL_REQUEST, AirAuthMessageTypes.LOGOUT_RESPONSE, AirAuthMessageTypes.UPDATE_SESSION_CONFIG_RESPONSE, AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE, AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE, AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE, AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST, AirAuthMessageTypes.START_RECOVERY_RESPONSE, AirAuthMessageTypes.EXPIRED_LOGOUT_REQUEST];
@@ -2273,6 +2324,29 @@ class RecoveryMessageService extends MessageServiceBase {
2273
2324
  });
2274
2325
  return response;
2275
2326
  }
2327
+ async sendGetAgentKeysRequest() {
2328
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.GET_AGENT_KEYS_RESPONSE)));
2329
+ await this.sendMessage({
2330
+ type: AirRecoveryMessageTypes.GET_AGENT_KEYS_REQUEST
2331
+ });
2332
+ return response;
2333
+ }
2334
+ async sendRegisterAgentKeyRequest(payload) {
2335
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.REGISTER_AGENT_KEY_RESPONSE)));
2336
+ await this.sendMessage({
2337
+ type: AirRecoveryMessageTypes.REGISTER_AGENT_KEY_REQUEST,
2338
+ payload
2339
+ });
2340
+ return response;
2341
+ }
2342
+ async sendRemoveAgentKeyRequest(payload) {
2343
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.REMOVE_AGENT_KEY_RESPONSE)));
2344
+ await this.sendMessage({
2345
+ type: AirRecoveryMessageTypes.REMOVE_AGENT_KEY_REQUEST,
2346
+ payload
2347
+ });
2348
+ return response;
2349
+ }
2276
2350
  async open(element) {
2277
2351
  await this._open({
2278
2352
  window: element.contentWindow,
@@ -2797,9 +2871,6 @@ class AirService {
2797
2871
  case AirAuthMessageTypes.SETUP_CREDENTIAL_REQUEST:
2798
2872
  {
2799
2873
  try {
2800
- await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, {
2801
- skipWalletLogin: true
2802
- });
2803
2874
  await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2804
2875
  await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendSetupCredentialSuccessResponse();
2805
2876
  } catch (err) {
@@ -2870,10 +2941,6 @@ class AirService {
2870
2941
  });
2871
2942
  if (payload.success === true) {
2872
2943
  __classPrivateFieldSet(this, _AirService_loginResult, __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_createLoginResult).call(this, payload));
2873
- if (payload.needsWalletRestart === true) {
2874
- await Promise.all([__classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this), __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_cleanUpCredential).call(this)]);
2875
- void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2876
- }
2877
2944
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedIn).call(this);
2878
2945
  return __classPrivateFieldGet$1(this, _AirService_loginResult, "f");
2879
2946
  }
@@ -2993,6 +3060,43 @@ class AirService {
2993
3060
  throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2994
3061
  }
2995
3062
  }
3063
+ async getAgentKeys() {
3064
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3065
+ const {
3066
+ payload
3067
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendGetAgentKeysRequest();
3068
+ if (payload.success === false) {
3069
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3070
+ }
3071
+ return payload.agentKeys;
3072
+ }
3073
+ async registerAgentKey(publicKey) {
3074
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3075
+ const {
3076
+ payload
3077
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendRegisterAgentKeyRequest({
3078
+ publicKey
3079
+ });
3080
+ if (payload.success === false) {
3081
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3082
+ }
3083
+ return {
3084
+ id: payload.id,
3085
+ publicKey: payload.publicKey,
3086
+ createdAt: payload.createdAt
3087
+ };
3088
+ }
3089
+ async removeAgentKey(id) {
3090
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3091
+ const {
3092
+ payload
3093
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendRemoveAgentKeyRequest({
3094
+ id
3095
+ });
3096
+ if (payload.success === false) {
3097
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3098
+ }
3099
+ }
2996
3100
  async getUserInfo() {
2997
3101
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertLoggedIn).call(this);
2998
3102
  const info = await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
@@ -3007,7 +3111,7 @@ class AirService {
3007
3111
  id: info.payload.user.id,
3008
3112
  abstractAccountAddress: info.payload.user.abstractAccountAddress,
3009
3113
  email: info.payload.user.email,
3010
- isMFASetup: info.payload.user.isMFASetup
3114
+ isMFASetup: info.payload.user.activeMfaMethods.length > 0
3011
3115
  }
3012
3116
  };
3013
3117
  }
@@ -3126,9 +3230,12 @@ class AirService {
3126
3230
  authToken,
3127
3231
  programId,
3128
3232
  redirectUrl,
3129
- requestDisclosure,
3233
+ fieldsToDisclose,
3130
3234
  offchain
3131
3235
  }) {
3236
+ if (Array.isArray(fieldsToDisclose) && fieldsToDisclose.length === 0) {
3237
+ throw new AirServiceError("CLIENT_ERROR", "fieldsToDisclose array must contain at least one field");
3238
+ }
3132
3239
  await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
3133
3240
  const {
3134
3241
  payload
@@ -3136,7 +3243,7 @@ class AirService {
3136
3243
  partnerToken: authToken,
3137
3244
  programId,
3138
3245
  redirectUrl,
3139
- requestDisclosure,
3246
+ fieldsToDisclose,
3140
3247
  offchain
3141
3248
  });
3142
3249
  if (payload.success === false) {
@@ -3152,7 +3259,9 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3152
3259
  if (!this.isLoggedIn) throw new AirServiceError("NOT_LOGGED_IN", "User not logged in");
3153
3260
  }, _AirService_ensureCredential = async function _AirService_ensureCredential() {
3154
3261
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertInitialized).call(this);
3155
- void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
3262
+ void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, {
3263
+ skipWalletLogin: true
3264
+ });
3156
3265
  try {
3157
3266
  if (!__classPrivateFieldGet$1(this, _AirService_credentialsInitialization, "f")) __classPrivateFieldSet(this, _AirService_credentialsInitialization, __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_initializeCredentials).call(this), "f");
3158
3267
  await __classPrivateFieldGet$1(this, _AirService_credentialsInitialization, "f");
@@ -3397,8 +3506,9 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3397
3506
  isLoggedIn: true,
3398
3507
  id: payload.id,
3399
3508
  abstractAccountAddress: payload.abstractAccountAddress,
3509
+ abstractAccountAddresses: payload.abstractAccountAddresses,
3400
3510
  token: payload.partnerAccessToken,
3401
- isMFASetup: payload.isMFASetup
3511
+ isMFASetup: payload.activeMfaMethods.length > 0
3402
3512
  };
3403
3513
  }, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
3404
3514
  if ("isWalletLoggedIn" in payload && !payload.isWalletLoggedIn) {
@@ -3409,7 +3519,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3409
3519
  }
3410
3520
  return {
3411
3521
  abstractAccountAddress: payload.addresses.aa,
3412
- isMFASetup: payload.isMFASetup
3522
+ isMFASetup: payload.activeMfaMethods.length > 0
3413
3523
  };
3414
3524
  }, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
3415
3525
  // Logout auth session
@@ -98,7 +98,7 @@
98
98
  var e = new Error(message);
99
99
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
100
100
  };
101
- var version$2 = "1.9.0-beta.1";
101
+ var version$2 = "1.9.0-beta.3";
102
102
  var airkitPackage = {
103
103
  version: version$2
104
104
  };
@@ -142,6 +142,10 @@
142
142
  RECOVERY_RESPONSE: "air_auth_recovery_response",
143
143
  ISSUE_ON_BEHALF_NEW_USER_CONFIRMATION_REQUEST: "air_auth_issue_on_behalf_new_user_confirmation_request",
144
144
  ISSUE_ON_BEHALF_NEW_USER_CONFIRMATION_RESPONSE: "air_auth_issue_on_behalf_new_user_confirmation_response",
145
+ REMOVE_SIGNER_SIGNATURE_REQUEST: "air_auth_remove_signer_signature_request",
146
+ REMOVE_SIGNER_SIGNATURE_RESPONSE: "air_auth_remove_signer_signature_response",
147
+ RESET_WALLET_REQUEST: "air_auth_reset_wallet_request",
148
+ RESET_WALLET_RESPONSE: "air_auth_reset_wallet_response",
145
149
  EXPIRED_LOGOUT_REQUEST: "air_auth_expired_logout_request"
146
150
  };
147
151
  const AirCredentialMessageTypes = {
@@ -172,6 +176,12 @@
172
176
  RECOVERY_IFRAME_VISIBILITY_REQUEST: "air_recovery_iframe_visibility_request",
173
177
  UPDATE_SESSION_CONFIG_REQUEST: "air_recovery_update_session_config_request",
174
178
  UPDATE_SESSION_CONFIG_RESPONSE: "air_recovery_update_session_config_response",
179
+ GET_AGENT_KEYS_REQUEST: "air_recovery_get_agent_keys_request",
180
+ GET_AGENT_KEYS_RESPONSE: "air_recovery_get_agent_keys_response",
181
+ REGISTER_AGENT_KEY_REQUEST: "air_recovery_register_agent_key_request",
182
+ REGISTER_AGENT_KEY_RESPONSE: "air_recovery_register_agent_key_response",
183
+ REMOVE_AGENT_KEY_REQUEST: "air_recovery_remove_agent_key_request",
184
+ REMOVE_AGENT_KEY_RESPONSE: "air_recovery_remove_agent_key_response",
175
185
  LOGOUT_REQUEST: "air_recovery_logout_request",
176
186
  LOGOUT_RESPONSE: "air_recovery_logout_response"
177
187
  };
@@ -1854,7 +1864,7 @@
1854
1864
  });
1855
1865
  }
1856
1866
  async sendWalletProviderRequest(payload) {
1857
- const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter(msg => msg.payload.method === payload.method)));
1867
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.RESPONSE), filter(msg => msg.payload.method === payload.method && msg.payload.requestId === payload.requestId)));
1858
1868
  await this.sendMessage({
1859
1869
  type: AirWalletProviderMessageTypes.REQUEST,
1860
1870
  payload
@@ -1866,7 +1876,7 @@
1866
1876
  _ProviderMessageService_instance = {
1867
1877
  value: void 0
1868
1878
  };
1869
- var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_emit;
1879
+ var _AirWalletProvider_instances, _AirWalletProvider_providerMessageService, _AirWalletProvider_isWalletInitialized, _AirWalletProvider_getLoginResult, _AirWalletProvider_ensureWallet, _AirWalletProvider_eventListeners, _AirWalletProvider_currentChainId, _AirWalletProvider_emit, _AirWalletProvider_getAddressForCurrentChain, _AirWalletProvider_parseChainId;
1870
1880
  class AirWalletProvider {
1871
1881
  constructor({
1872
1882
  ensureWallet,
@@ -1879,9 +1889,16 @@
1879
1889
  _AirWalletProvider_getLoginResult.set(this, void 0);
1880
1890
  _AirWalletProvider_ensureWallet.set(this, void 0);
1881
1891
  _AirWalletProvider_eventListeners.set(this, void 0);
1892
+ _AirWalletProvider_currentChainId.set(this, null);
1882
1893
  this.startEventMessageListening = async walletIframe => {
1883
1894
  await __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
1884
1895
  __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").messages$.pipe(filter(msg => msg.type === AirWalletProviderMessageTypes.EVENT)).subscribe(message => {
1896
+ if (message.payload.event === "chainChanged") {
1897
+ const parsedChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_parseChainId).call(this, message.payload.data);
1898
+ if (parsedChainId !== null) {
1899
+ __classPrivateFieldSet(this, _AirWalletProvider_currentChainId, parsedChainId);
1900
+ }
1901
+ }
1885
1902
  __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1886
1903
  });
1887
1904
  };
@@ -1918,8 +1935,12 @@
1918
1935
  if (!loginResult) {
1919
1936
  throw new UnauthorizedProviderError("User is not logged in");
1920
1937
  }
1921
- if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this) && loginResult?.abstractAccountAddress) {
1922
- return [loginResult.abstractAccountAddress];
1938
+ // Early return optimization: return cached address from login result if wallet not yet initialized
1939
+ if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this)) {
1940
+ const address = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_getAddressForCurrentChain).call(this, loginResult);
1941
+ if (address) {
1942
+ return [address];
1943
+ }
1923
1944
  }
1924
1945
  const skipWalletLoginMethods = ["eth_chainId"];
1925
1946
  try {
@@ -1941,6 +1962,12 @@
1941
1962
  if (!response.success) {
1942
1963
  throw ensureProviderRpcError(response.payload);
1943
1964
  }
1965
+ if (method === "eth_chainId") {
1966
+ const parsedChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_parseChainId).call(this, response.payload.response);
1967
+ if (parsedChainId !== null) {
1968
+ __classPrivateFieldSet(this, _AirWalletProvider_currentChainId, parsedChainId);
1969
+ }
1970
+ }
1944
1971
  return response.payload.response;
1945
1972
  }
1946
1973
  on(eventName, listener) {
@@ -1964,7 +1991,7 @@
1964
1991
  });
1965
1992
  }
1966
1993
  }
1967
- _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isWalletInitialized = new WeakMap(), _AirWalletProvider_getLoginResult = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1994
+ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_isWalletInitialized = new WeakMap(), _AirWalletProvider_getLoginResult = new WeakMap(), _AirWalletProvider_ensureWallet = new WeakMap(), _AirWalletProvider_eventListeners = new WeakMap(), _AirWalletProvider_currentChainId = new WeakMap(), _AirWalletProvider_instances = new WeakSet(), _AirWalletProvider_emit = function _AirWalletProvider_emit(eventName, ...args) {
1968
1995
  (__classPrivateFieldGet$1(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach(listener => {
1969
1996
  try {
1970
1997
  return listener(...args);
@@ -1972,6 +1999,30 @@
1972
1999
  log$1.warn(error);
1973
2000
  }
1974
2001
  });
2002
+ }, _AirWalletProvider_getAddressForCurrentChain = function _AirWalletProvider_getAddressForCurrentChain(loginResult) {
2003
+ const currentChainId = __classPrivateFieldGet$1(this, _AirWalletProvider_currentChainId, "f");
2004
+ // If we have the new addresses array and current chainId, look up by chain
2005
+ if (loginResult.abstractAccountAddresses && currentChainId !== null) {
2006
+ const chainIdStr = String(currentChainId);
2007
+ const addressEntry = loginResult.abstractAccountAddresses.find(entry => entry.chainIds.includes(chainIdStr));
2008
+ if (addressEntry) {
2009
+ return addressEntry.address;
2010
+ }
2011
+ }
2012
+ // Fallback to legacy single address (backward compatibility)
2013
+ return loginResult.abstractAccountAddress;
2014
+ }, _AirWalletProvider_parseChainId = function _AirWalletProvider_parseChainId(chainId) {
2015
+ if (typeof chainId === "number") {
2016
+ return Number.isFinite(chainId) ? chainId : null;
2017
+ }
2018
+ if (typeof chainId === "bigint") {
2019
+ return Number(chainId);
2020
+ }
2021
+ if (typeof chainId !== "string" || !chainId) {
2022
+ return null;
2023
+ }
2024
+ const parsed = chainId.startsWith("0x") ? parseInt(chainId, 16) : parseInt(chainId, 10);
2025
+ return Number.isNaN(parsed) ? null : parsed;
1975
2026
  };
1976
2027
  var _a$3, _AuthMessageService_instance;
1977
2028
  const ALLOWED_AUTH_MESSAGES = [AirAuthMessageTypes.INITIALIZATION_RESPONSE, AirAuthMessageTypes.LOGIN_RESPONSE, AirAuthMessageTypes.SETUP_WALLET_REQUEST, AirAuthMessageTypes.SETUP_RECOVERY_REQUEST, AirAuthMessageTypes.SETUP_CREDENTIAL_REQUEST, AirAuthMessageTypes.LOGOUT_RESPONSE, AirAuthMessageTypes.UPDATE_SESSION_CONFIG_RESPONSE, AirAuthMessageTypes.PARTNER_USER_INFO_RESPONSE, AirAuthMessageTypes.CROSS_PARTNER_TOKEN_RESPONSE, AirAuthMessageTypes.PARTNER_ACCESS_TOKEN_RESPONSE, AirAuthMessageTypes.IFRAME_VISIBILITY_REQUEST, AirAuthMessageTypes.START_RECOVERY_RESPONSE, AirAuthMessageTypes.EXPIRED_LOGOUT_REQUEST];
@@ -2279,6 +2330,29 @@
2279
2330
  });
2280
2331
  return response;
2281
2332
  }
2333
+ async sendGetAgentKeysRequest() {
2334
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.GET_AGENT_KEYS_RESPONSE)));
2335
+ await this.sendMessage({
2336
+ type: AirRecoveryMessageTypes.GET_AGENT_KEYS_REQUEST
2337
+ });
2338
+ return response;
2339
+ }
2340
+ async sendRegisterAgentKeyRequest(payload) {
2341
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.REGISTER_AGENT_KEY_RESPONSE)));
2342
+ await this.sendMessage({
2343
+ type: AirRecoveryMessageTypes.REGISTER_AGENT_KEY_REQUEST,
2344
+ payload
2345
+ });
2346
+ return response;
2347
+ }
2348
+ async sendRemoveAgentKeyRequest(payload) {
2349
+ const response = firstValueFrom(this.messages$.pipe(filter(msg => msg.type === AirRecoveryMessageTypes.REMOVE_AGENT_KEY_RESPONSE)));
2350
+ await this.sendMessage({
2351
+ type: AirRecoveryMessageTypes.REMOVE_AGENT_KEY_REQUEST,
2352
+ payload
2353
+ });
2354
+ return response;
2355
+ }
2282
2356
  async open(element) {
2283
2357
  await this._open({
2284
2358
  window: element.contentWindow,
@@ -2803,9 +2877,6 @@
2803
2877
  case AirAuthMessageTypes.SETUP_CREDENTIAL_REQUEST:
2804
2878
  {
2805
2879
  try {
2806
- await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, {
2807
- skipWalletLogin: true
2808
- });
2809
2880
  await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2810
2881
  await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendSetupCredentialSuccessResponse();
2811
2882
  } catch (err) {
@@ -2876,10 +2947,6 @@
2876
2947
  });
2877
2948
  if (payload.success === true) {
2878
2949
  __classPrivateFieldSet(this, _AirService_loginResult, __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_createLoginResult).call(this, payload));
2879
- if (payload.needsWalletRestart === true) {
2880
- await Promise.all([__classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_cleanUpWallet).call(this), __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_cleanUpCredential).call(this)]);
2881
- void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
2882
- }
2883
2950
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_triggerAirAuthLoggedIn).call(this);
2884
2951
  return __classPrivateFieldGet$1(this, _AirService_loginResult, "f");
2885
2952
  }
@@ -2999,6 +3066,43 @@
2999
3066
  throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
3000
3067
  }
3001
3068
  }
3069
+ async getAgentKeys() {
3070
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3071
+ const {
3072
+ payload
3073
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendGetAgentKeysRequest();
3074
+ if (payload.success === false) {
3075
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3076
+ }
3077
+ return payload.agentKeys;
3078
+ }
3079
+ async registerAgentKey(publicKey) {
3080
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3081
+ const {
3082
+ payload
3083
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendRegisterAgentKeyRequest({
3084
+ publicKey
3085
+ });
3086
+ if (payload.success === false) {
3087
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3088
+ }
3089
+ return {
3090
+ id: payload.id,
3091
+ publicKey: payload.publicKey,
3092
+ createdAt: payload.createdAt
3093
+ };
3094
+ }
3095
+ async removeAgentKey(id) {
3096
+ await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureRecovery).call(this);
3097
+ const {
3098
+ payload
3099
+ } = await __classPrivateFieldGet$1(this, _AirService_recoveryMessagingService, "f").sendRemoveAgentKeyRequest({
3100
+ id
3101
+ });
3102
+ if (payload.success === false) {
3103
+ throw new AirServiceError(payload.errorName, payload.errorMessage);
3104
+ }
3105
+ }
3002
3106
  async getUserInfo() {
3003
3107
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertLoggedIn).call(this);
3004
3108
  const info = await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
@@ -3013,7 +3117,7 @@
3013
3117
  id: info.payload.user.id,
3014
3118
  abstractAccountAddress: info.payload.user.abstractAccountAddress,
3015
3119
  email: info.payload.user.email,
3016
- isMFASetup: info.payload.user.isMFASetup
3120
+ isMFASetup: info.payload.user.activeMfaMethods.length > 0
3017
3121
  }
3018
3122
  };
3019
3123
  }
@@ -3132,9 +3236,12 @@
3132
3236
  authToken,
3133
3237
  programId,
3134
3238
  redirectUrl,
3135
- requestDisclosure,
3239
+ fieldsToDisclose,
3136
3240
  offchain
3137
3241
  }) {
3242
+ if (Array.isArray(fieldsToDisclose) && fieldsToDisclose.length === 0) {
3243
+ throw new AirServiceError("CLIENT_ERROR", "fieldsToDisclose array must contain at least one field");
3244
+ }
3138
3245
  await __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureCredential).call(this);
3139
3246
  const {
3140
3247
  payload
@@ -3142,7 +3249,7 @@
3142
3249
  partnerToken: authToken,
3143
3250
  programId,
3144
3251
  redirectUrl,
3145
- requestDisclosure,
3252
+ fieldsToDisclose,
3146
3253
  offchain
3147
3254
  });
3148
3255
  if (payload.success === false) {
@@ -3158,7 +3265,9 @@
3158
3265
  if (!this.isLoggedIn) throw new AirServiceError("NOT_LOGGED_IN", "User not logged in");
3159
3266
  }, _AirService_ensureCredential = async function _AirService_ensureCredential() {
3160
3267
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertInitialized).call(this);
3161
- void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this);
3268
+ void __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_ensureWallet).call(this, {
3269
+ skipWalletLogin: true
3270
+ });
3162
3271
  try {
3163
3272
  if (!__classPrivateFieldGet$1(this, _AirService_credentialsInitialization, "f")) __classPrivateFieldSet(this, _AirService_credentialsInitialization, __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_initializeCredentials).call(this), "f");
3164
3273
  await __classPrivateFieldGet$1(this, _AirService_credentialsInitialization, "f");
@@ -3403,8 +3512,9 @@
3403
3512
  isLoggedIn: true,
3404
3513
  id: payload.id,
3405
3514
  abstractAccountAddress: payload.abstractAccountAddress,
3515
+ abstractAccountAddresses: payload.abstractAccountAddresses,
3406
3516
  token: payload.partnerAccessToken,
3407
- isMFASetup: payload.isMFASetup
3517
+ isMFASetup: payload.activeMfaMethods.length > 0
3408
3518
  };
3409
3519
  }, _AirService_createWalletInitializedResult = function _AirService_createWalletInitializedResult(payload) {
3410
3520
  if ("isWalletLoggedIn" in payload && !payload.isWalletLoggedIn) {
@@ -3415,7 +3525,7 @@
3415
3525
  }
3416
3526
  return {
3417
3527
  abstractAccountAddress: payload.addresses.aa,
3418
- isMFASetup: payload.isMFASetup
3528
+ isMFASetup: payload.activeMfaMethods.length > 0
3419
3529
  };
3420
3530
  }, _AirService_cleanUpAuth = async function _AirService_cleanUpAuth() {
3421
3531
  // Logout auth session
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mocanetwork/airkit-connector",
3
- "version": "1.9.0-beta.1",
3
+ "version": "1.9.0-beta.3",
4
4
  "description": "AirKit wagmi connector to connect with the AirService",
5
5
  "main": "dist/airkitConnector.cjs.js",
6
6
  "unpkg": "dist/airkitConnector.umd.min.js",
@@ -24,7 +24,7 @@
24
24
  "check-circular": "madge -c --ts-config=tsconfig.json --extensions ts ./src"
25
25
  },
26
26
  "dependencies": {
27
- "@mocanetwork/airkit": "^1.9.0-beta.1",
27
+ "@mocanetwork/airkit": "^1.9.0-beta.3",
28
28
  "@wagmi/core": "^2.x",
29
29
  "loglevel": "^1.8.1",
30
30
  "viem": "^2.x"
@@ -39,7 +39,7 @@
39
39
  "rollup": "^4.32.0",
40
40
  "ts-node": "^10.9.2",
41
41
  "tslib": "^2.6.2",
42
- "typescript": "^5.3.3"
42
+ "typescript": "~5.8.2"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@wagmi/core": "^2.x",