@mocanetwork/airkit-connector 1.9.0-beta.2 → 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.2";
97
+ var version$2 = "1.9.0-beta.3";
98
98
  var airkitPackage = {
99
99
  version: version$2
100
100
  };
@@ -172,6 +172,12 @@ const AirRecoveryMessageTypes = {
172
172
  RECOVERY_IFRAME_VISIBILITY_REQUEST: "air_recovery_iframe_visibility_request",
173
173
  UPDATE_SESSION_CONFIG_REQUEST: "air_recovery_update_session_config_request",
174
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",
175
181
  LOGOUT_REQUEST: "air_recovery_logout_request",
176
182
  LOGOUT_RESPONSE: "air_recovery_logout_response"
177
183
  };
@@ -1866,7 +1872,7 @@ _a$4 = ProviderMessageService;
1866
1872
  _ProviderMessageService_instance = {
1867
1873
  value: void 0
1868
1874
  };
1869
- 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;
1870
1876
  class AirWalletProvider {
1871
1877
  constructor({
1872
1878
  ensureWallet,
@@ -1879,9 +1885,16 @@ class AirWalletProvider {
1879
1885
  _AirWalletProvider_getLoginResult.set(this, void 0);
1880
1886
  _AirWalletProvider_ensureWallet.set(this, void 0);
1881
1887
  _AirWalletProvider_eventListeners.set(this, void 0);
1888
+ _AirWalletProvider_currentChainId.set(this, null);
1882
1889
  this.startEventMessageListening = async walletIframe => {
1883
1890
  await __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
1884
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
+ }
1885
1898
  __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1886
1899
  });
1887
1900
  };
@@ -1918,8 +1931,12 @@ class AirWalletProvider {
1918
1931
  if (!loginResult) {
1919
1932
  throw new UnauthorizedProviderError("User is not logged in");
1920
1933
  }
1921
- if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this) && loginResult?.abstractAccountAddress) {
1922
- 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
+ }
1923
1940
  }
1924
1941
  const skipWalletLoginMethods = ["eth_chainId"];
1925
1942
  try {
@@ -1941,6 +1958,12 @@ class AirWalletProvider {
1941
1958
  if (!response.success) {
1942
1959
  throw ensureProviderRpcError(response.payload);
1943
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
+ }
1944
1967
  return response.payload.response;
1945
1968
  }
1946
1969
  on(eventName, listener) {
@@ -1964,7 +1987,7 @@ class AirWalletProvider {
1964
1987
  });
1965
1988
  }
1966
1989
  }
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) {
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) {
1968
1991
  (__classPrivateFieldGet$1(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach(listener => {
1969
1992
  try {
1970
1993
  return listener(...args);
@@ -1972,6 +1995,30 @@ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_is
1972
1995
  log$1.warn(error);
1973
1996
  }
1974
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;
1975
2022
  };
1976
2023
  var _a$3, _AuthMessageService_instance;
1977
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];
@@ -2279,6 +2326,29 @@ class RecoveryMessageService extends MessageServiceBase {
2279
2326
  });
2280
2327
  return response;
2281
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
+ }
2282
2352
  async open(element) {
2283
2353
  await this._open({
2284
2354
  window: element.contentWindow,
@@ -2992,6 +3062,43 @@ class AirService {
2992
3062
  throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2993
3063
  }
2994
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
+ }
2995
3102
  async getUserInfo() {
2996
3103
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertLoggedIn).call(this);
2997
3104
  const info = await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
@@ -3401,6 +3508,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3401
3508
  isLoggedIn: true,
3402
3509
  id: payload.id,
3403
3510
  abstractAccountAddress: payload.abstractAccountAddress,
3511
+ abstractAccountAddresses: payload.abstractAccountAddresses,
3404
3512
  token: payload.partnerAccessToken,
3405
3513
  isMFASetup: payload.activeMfaMethods.length > 0
3406
3514
  };
@@ -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.2";
95
+ var version$2 = "1.9.0-beta.3";
96
96
  var airkitPackage = {
97
97
  version: version$2
98
98
  };
@@ -170,6 +170,12 @@ const AirRecoveryMessageTypes = {
170
170
  RECOVERY_IFRAME_VISIBILITY_REQUEST: "air_recovery_iframe_visibility_request",
171
171
  UPDATE_SESSION_CONFIG_REQUEST: "air_recovery_update_session_config_request",
172
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",
173
179
  LOGOUT_REQUEST: "air_recovery_logout_request",
174
180
  LOGOUT_RESPONSE: "air_recovery_logout_response"
175
181
  };
@@ -1864,7 +1870,7 @@ _a$4 = ProviderMessageService;
1864
1870
  _ProviderMessageService_instance = {
1865
1871
  value: void 0
1866
1872
  };
1867
- 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;
1868
1874
  class AirWalletProvider {
1869
1875
  constructor({
1870
1876
  ensureWallet,
@@ -1877,9 +1883,16 @@ class AirWalletProvider {
1877
1883
  _AirWalletProvider_getLoginResult.set(this, void 0);
1878
1884
  _AirWalletProvider_ensureWallet.set(this, void 0);
1879
1885
  _AirWalletProvider_eventListeners.set(this, void 0);
1886
+ _AirWalletProvider_currentChainId.set(this, null);
1880
1887
  this.startEventMessageListening = async walletIframe => {
1881
1888
  await __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
1882
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
+ }
1883
1896
  __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1884
1897
  });
1885
1898
  };
@@ -1916,8 +1929,12 @@ class AirWalletProvider {
1916
1929
  if (!loginResult) {
1917
1930
  throw new UnauthorizedProviderError("User is not logged in");
1918
1931
  }
1919
- if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this) && loginResult?.abstractAccountAddress) {
1920
- 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
+ }
1921
1938
  }
1922
1939
  const skipWalletLoginMethods = ["eth_chainId"];
1923
1940
  try {
@@ -1939,6 +1956,12 @@ class AirWalletProvider {
1939
1956
  if (!response.success) {
1940
1957
  throw ensureProviderRpcError(response.payload);
1941
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
+ }
1942
1965
  return response.payload.response;
1943
1966
  }
1944
1967
  on(eventName, listener) {
@@ -1962,7 +1985,7 @@ class AirWalletProvider {
1962
1985
  });
1963
1986
  }
1964
1987
  }
1965
- _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) {
1966
1989
  (__classPrivateFieldGet$1(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach(listener => {
1967
1990
  try {
1968
1991
  return listener(...args);
@@ -1970,6 +1993,30 @@ _AirWalletProvider_providerMessageService = new WeakMap(), _AirWalletProvider_is
1970
1993
  log$1.warn(error);
1971
1994
  }
1972
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;
1973
2020
  };
1974
2021
  var _a$3, _AuthMessageService_instance;
1975
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];
@@ -2277,6 +2324,29 @@ class RecoveryMessageService extends MessageServiceBase {
2277
2324
  });
2278
2325
  return response;
2279
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
+ }
2280
2350
  async open(element) {
2281
2351
  await this._open({
2282
2352
  window: element.contentWindow,
@@ -2990,6 +3060,43 @@ class AirService {
2990
3060
  throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2991
3061
  }
2992
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
+ }
2993
3100
  async getUserInfo() {
2994
3101
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertLoggedIn).call(this);
2995
3102
  const info = await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
@@ -3399,6 +3506,7 @@ _AirService_loginResult = new WeakMap(), _AirService_buildEnv = new WeakMap(), _
3399
3506
  isLoggedIn: true,
3400
3507
  id: payload.id,
3401
3508
  abstractAccountAddress: payload.abstractAccountAddress,
3509
+ abstractAccountAddresses: payload.abstractAccountAddresses,
3402
3510
  token: payload.partnerAccessToken,
3403
3511
  isMFASetup: payload.activeMfaMethods.length > 0
3404
3512
  };
@@ -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.2";
101
+ var version$2 = "1.9.0-beta.3";
102
102
  var airkitPackage = {
103
103
  version: version$2
104
104
  };
@@ -176,6 +176,12 @@
176
176
  RECOVERY_IFRAME_VISIBILITY_REQUEST: "air_recovery_iframe_visibility_request",
177
177
  UPDATE_SESSION_CONFIG_REQUEST: "air_recovery_update_session_config_request",
178
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",
179
185
  LOGOUT_REQUEST: "air_recovery_logout_request",
180
186
  LOGOUT_RESPONSE: "air_recovery_logout_response"
181
187
  };
@@ -1870,7 +1876,7 @@
1870
1876
  _ProviderMessageService_instance = {
1871
1877
  value: void 0
1872
1878
  };
1873
- 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;
1874
1880
  class AirWalletProvider {
1875
1881
  constructor({
1876
1882
  ensureWallet,
@@ -1883,9 +1889,16 @@
1883
1889
  _AirWalletProvider_getLoginResult.set(this, void 0);
1884
1890
  _AirWalletProvider_ensureWallet.set(this, void 0);
1885
1891
  _AirWalletProvider_eventListeners.set(this, void 0);
1892
+ _AirWalletProvider_currentChainId.set(this, null);
1886
1893
  this.startEventMessageListening = async walletIframe => {
1887
1894
  await __classPrivateFieldGet$1(this, _AirWalletProvider_providerMessageService, "f").open(walletIframe);
1888
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
+ }
1889
1902
  __classPrivateFieldGet$1(this, _AirWalletProvider_instances, "m", _AirWalletProvider_emit).call(this, message.payload.event, ...[message.payload.data]);
1890
1903
  });
1891
1904
  };
@@ -1922,8 +1935,12 @@
1922
1935
  if (!loginResult) {
1923
1936
  throw new UnauthorizedProviderError("User is not logged in");
1924
1937
  }
1925
- if ((method === "eth_accounts" || method === "eth_requestAccounts") && !__classPrivateFieldGet$1(this, _AirWalletProvider_isWalletInitialized, "f").call(this) && loginResult?.abstractAccountAddress) {
1926
- 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
+ }
1927
1944
  }
1928
1945
  const skipWalletLoginMethods = ["eth_chainId"];
1929
1946
  try {
@@ -1945,6 +1962,12 @@
1945
1962
  if (!response.success) {
1946
1963
  throw ensureProviderRpcError(response.payload);
1947
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
+ }
1948
1971
  return response.payload.response;
1949
1972
  }
1950
1973
  on(eventName, listener) {
@@ -1968,7 +1991,7 @@
1968
1991
  });
1969
1992
  }
1970
1993
  }
1971
- _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) {
1972
1995
  (__classPrivateFieldGet$1(this, _AirWalletProvider_eventListeners, "f")[eventName] || []).forEach(listener => {
1973
1996
  try {
1974
1997
  return listener(...args);
@@ -1976,6 +1999,30 @@
1976
1999
  log$1.warn(error);
1977
2000
  }
1978
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;
1979
2026
  };
1980
2027
  var _a$3, _AuthMessageService_instance;
1981
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];
@@ -2283,6 +2330,29 @@
2283
2330
  });
2284
2331
  return response;
2285
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
+ }
2286
2356
  async open(element) {
2287
2357
  await this._open({
2288
2358
  window: element.contentWindow,
@@ -2996,6 +3066,43 @@
2996
3066
  throw new AirServiceError(result.payload.errorName, result.payload.errorMessage);
2997
3067
  }
2998
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
+ }
2999
3106
  async getUserInfo() {
3000
3107
  __classPrivateFieldGet$1(this, _AirService_instances, "m", _AirService_assertLoggedIn).call(this);
3001
3108
  const info = await __classPrivateFieldGet$1(this, _AirService_authMessagingService, "f").sendPartnerUserInfoRequest();
@@ -3405,6 +3512,7 @@
3405
3512
  isLoggedIn: true,
3406
3513
  id: payload.id,
3407
3514
  abstractAccountAddress: payload.abstractAccountAddress,
3515
+ abstractAccountAddresses: payload.abstractAccountAddresses,
3408
3516
  token: payload.partnerAccessToken,
3409
3517
  isMFASetup: payload.activeMfaMethods.length > 0
3410
3518
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mocanetwork/airkit-connector",
3
- "version": "1.9.0-beta.2",
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.2",
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"