@imtbl/passport 2.10.7-alpha.5 → 2.10.7-alpha.6

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.
@@ -9,6 +9,6 @@ export { JsonRpcError, ProviderErrorCode, ProviderEvent, RpcErrorCode } from '@i
9
9
  import Y from 'jwt-decode';
10
10
  import { convertToSignableToken, signRaw } from '@imtbl/toolkit';
11
11
 
12
- function J(i){return "code"in i&&"message"in i}var o=class extends Error{type;constructor(e,r){super(e),this.type=r;}},f=async(i,e)=>{try{return await i()}catch(r){let t;throw r instanceof o&&r.type==="SERVICE_UNAVAILABLE_ERROR"?new o(r.message,r.type):(isAxiosError(r)&&r.response?.data&&J(r.response.data)?t=r.response.data.message:t=r.message,new o(t,e))}};var C=i=>{if(!i.idToken)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");let r=Y(i.idToken).passport;if(!r?.imx_eth_address||!r?.imx_stark_address||!r?.imx_user_admin_address)throw new o("User has not been registered with StarkEx","USER_NOT_REGISTERED_ERROR");return {...i,imx:{ethAddress:r.imx_eth_address,starkAddress:r.imx_stark_address,userAdminAddress:r.imx_user_admin_address}}};var v=async i=>f(async()=>{let e=await generateLegacyStarkPrivateKey(i);return createStarkSigner(e)},"WALLET_CONNECTION_ERROR");async function w({user:i,starkSigner:e,request:r,exchangesApi:t}){return f(async()=>{let{ethAddress:a}=i.imx,s=r.amount,l=await t.getExchangeSignableTransfer({id:r.transactionID,getSignableTransferRequest:{sender:a,token:convertToSignableToken(r),amount:s,receiver:r.receiver}}),n=await e.getAddress(),{payload_hash:m}=l.data,p=await e.signMessage(m),c={sender_stark_key:l.data.sender_stark_key||n,sender_vault_id:l.data.sender_vault_id,receiver_stark_key:l.data.receiver_stark_key,receiver_vault_id:l.data.receiver_vault_id,asset_id:l.data.asset_id,amount:l.data.amount,nonce:l.data.nonce,expiration_timestamp:l.data.expiration_timestamp,stark_signature:p},u={Authorization:`Bearer ${i.accessToken}`},d=await t.createExchangeTransfer({id:r.transactionID,createTransferRequest:c},{headers:u});return {sent_signature:d?.data.sent_signature,status:d?.data.status?.toString(),time:d?.data.time,transfer_id:d?.data.transfer_id}},"EXCHANGE_TRANSFER_ERROR")}var L="ERC721";async function N({starkSigner:i,user:e,request:r,ordersApi:t,guardianClient:a}){return f(async()=>{let{ethAddress:s}=e.imx,l=r.sell.type===L?"1":r.sell.amount,n=r.buy.type===L?"1":r.buy.amount,m={Authorization:`Bearer ${e.accessToken}`},p={user:s,amount_buy:n,token_buy:convertToSignableToken(r.buy),amount_sell:l,token_sell:convertToSignableToken(r.sell),fees:r.fees,split_fees:!0,expiration_timestamp:r.expiration_timestamp},c=await t.getSignableOrder({getSignableOrderRequestV3:p},{headers:m});await a.evaluateTransaction(c.data.payload_hash);let{payload_hash:u}=c.data,d=await i.signMessage(u),h=c.data,y={createOrderRequest:{include_fees:!0,fees:r.fees,stark_signature:d,amount_buy:h.amount_buy,amount_sell:h.amount_sell,asset_id_buy:h.asset_id_buy,asset_id_sell:h.asset_id_sell,expiration_timestamp:h.expiration_timestamp,nonce:h.nonce,stark_key:h.stark_key,vault_id_buy:h.vault_id_buy,vault_id_sell:h.vault_id_sell}};return {...(await t.createOrderV3(y,{headers:m})).data}},"CREATE_ORDER_ERROR")}async function D({user:i,starkSigner:e,request:r,ordersApi:t,guardianClient:a}){return f(async()=>{let s={order_id:r.order_id},l={Authorization:`Bearer ${i.accessToken}`},n=await t.getSignableCancelOrderV3({getSignableCancelOrderRequest:s},{headers:l});await a.evaluateTransaction(n.data.payload_hash);let{payload_hash:m}=n.data,p=await e.signMessage(m),c=await t.cancelOrderV3({id:r.order_id.toString(),cancelOrderRequest:{order_id:r.order_id,stark_signature:p}},{headers:l});return {order_id:c.data.order_id,status:c.data.status}},"CANCEL_ORDER_ERROR")}async function I({ethSigner:i,starkSigner:e,imxApiClients:r},t){return f(async()=>{let[a,s]=await Promise.all([i.getAddress(),e.getAddress()]),l=await r.usersApi.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:s}}),{signable_message:n,payload_hash:m}=l.data,[p,c]=await Promise.all([signRaw(n,i),e.signMessage(m)]);return (await r.usersApi.registerPassportUserV2({authorization:`Bearer ${t}`,registerPassportUserRequest:{eth_signature:p,ether_key:a,stark_signature:c,stark_key:s}})).data},"USER_REGISTRATION_ERROR")}async function M({request:i,tradesApi:e,user:r,starkSigner:t,guardianClient:a}){return f(async()=>{let{ethAddress:s}=r.imx,l={expiration_timestamp:i.expiration_timestamp,fees:i.fees,order_id:i.order_id,user:s},n={Authorization:`Bearer ${r.accessToken}`},m=await e.getSignableTrade({getSignableTradeRequest:l},{headers:n});await a.evaluateTransaction(m.data.payload_hash);let{payload_hash:p}=m.data,c=await t.signMessage(p),{data:u}=m,d={createTradeRequest:{include_fees:!0,fees:i?.fees,stark_signature:c,order_id:i?.order_id,fee_info:u.fee_info,amount_buy:u.amount_buy,amount_sell:u.amount_sell,asset_id_buy:u.asset_id_buy,asset_id_sell:u.asset_id_sell,expiration_timestamp:u.expiration_timestamp,nonce:u.nonce,stark_key:u.stark_key,vault_id_buy:u.vault_id_buy,vault_id_sell:u.vault_id_sell}},{data:h}=await e.createTradeV3(d,{headers:n});return h},"CREATE_TRADE_ERROR")}var B="ERC721";async function W({request:i,transfersApi:e,starkSigner:r,user:t,guardianClient:a}){return f(async()=>{let s=i.type===B?"1":i.amount,l={sender:t.imx.ethAddress,token:convertToSignableToken(i),amount:s,receiver:i.receiver},n={Authorization:`Bearer ${t.accessToken}`},m=await e.getSignableTransferV1({getSignableTransferRequest:l},{headers:n});await a.evaluateTransaction(m.data.payload_hash);let p=m.data,{payload_hash:c}=p,u=await r.signMessage(c),d=await r.getAddress(),y={createTransferRequest:{sender_stark_key:p.sender_stark_key||d,sender_vault_id:p.sender_vault_id,receiver_stark_key:p.receiver_stark_key,receiver_vault_id:p.receiver_vault_id,asset_id:p.asset_id,amount:p.amount,nonce:p.nonce,expiration_timestamp:p.expiration_timestamp,stark_signature:u}},{data:A}=await e.createTransferV1(y,{headers:n});return {sent_signature:A.sent_signature,status:A.status?.toString(),time:A.time,transfer_id:A.transfer_id}},"TRANSFER_ERROR")}async function K({user:i,starkSigner:e,request:r,transfersApi:t,guardianClient:a}){return f(async()=>{let{ethAddress:s}=i.imx,l=r.map(d=>({amount:"1",token:convertToSignableToken({type:B,tokenId:d.tokenId,tokenAddress:d.tokenAddress}),receiver:d.receiver})),n={Authorization:`Bearer ${i.accessToken}`},m=await t.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:s,signable_requests:l}},{headers:n});await a.evaluateTransaction(m.data.signable_responses[0]?.payload_hash);let p=await Promise.all(m.data.signable_responses.map(async d=>{let h=await e.signMessage(d.payload_hash);return {sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:h}})),c={sender_stark_key:m.data.sender_stark_key,requests:p};return {transfer_ids:(await t.createTransfer({createTransferRequestV2:c},{headers:n}))?.data.transfer_ids}},"TRANSFER_ERROR")}async function X(i){await retryWithDelay(async()=>{let e=await i.forceUserRefresh();if(!e)return Promise.reject(new Error("user wallet addresses not exist"));try{return C(e),e}catch{return Promise.reject(new Error("user wallet addresses not exist"))}});}async function S(i,e,r,t,a){return f(async()=>{try{let s=await I({ethSigner:i,starkSigner:e,imxApiClients:a},r.accessToken);return await X(t),s}catch(s){if(ae.isAxiosError(s)&&s.response?.status===409)return await X(t),{tx_hash:""};throw s}},"USER_REGISTRATION_ERROR")}var E=async(i,e,r=!0,t=!0)=>{let a=trackFlow("passport",e,r);try{return await i(a)}catch(s){throw s instanceof Error?trackError("passport",e,s,{flowId:a.details.flowId}):a.addEvent("errored"),s}finally{t&&a.addEvent("End");}};var x=class{authManager;immutableXClient;guardianClient;imxApiClients;magicTEESigner;imxGuardianClient;starkSigner;signerInitialisationError;constructor({authManager:e,immutableXClient:r,passportEventEmitter:t,magicTEESigner:a,imxApiClients:s,guardianClient:l,imxGuardianClient:n}){this.authManager=e,this.immutableXClient=r,this.magicTEESigner=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=n,this.#i(),t.on(AuthEvents.LOGGED_OUT,this.handleLogout);}handleLogout=()=>{this.starkSigner=void 0;};#i(){this.starkSigner=new Promise(async e=>{try{e(await v(this.magicTEESigner));}catch(r){this.signerInitialisationError=r,e(void 0);}});}async#r(){let e=await this.authManager.getUser();if(!e||!this.starkSigner)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");return e}async#t(){let e=await this.starkSigner;if(typeof e>"u")throw typeof this.signerInitialisationError<"u"?this.signerInitialisationError:new Error("Signers failed to initialise");return e}async#e(){let[e,r]=await Promise.all([this.#r(),this.#t()]);return {user:C(e),starkSigner:r}}async transfer(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return W({request:e,user:r,starkSigner:t,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxTransfer")}async registerOffchain(){return E(async()=>{let[e,r]=await Promise.all([this.#r(),this.#t()]);return await S(this.magicTEESigner,r,C(e),this.authManager,this.imxApiClients)},"imxRegisterOffchain")}async isRegisteredOffchain(){return E(async()=>{try{let e=await this.#r();return !!C(e).imx}catch(e){if(e instanceof o&&e.type==="USER_NOT_REGISTERED_ERROR")return !1;throw e}},"imxIsRegisteredOffchain")}isRegisteredOnchain(){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async createOrder(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return N({request:e,user:r,starkSigner:t,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCreateOrder")}async cancelOrder(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return D({request:e,user:r,starkSigner:t,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCancelOrder")}async createTrade(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return M({request:e,user:r,starkSigner:t,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.imxGuardianClient})})(),"imxCreateTrade")}async batchNftTransfer(e){return E(()=>this.guardianClient.withConfirmationScreenTask({width:480,height:784})(async()=>{let{user:r,starkSigner:t}=await this.#e();return K({request:e,user:r,starkSigner:t,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxBatchNftTransfer")}async exchangeTransfer(e){return E(async()=>{let{user:r,starkSigner:t}=await this.#e();return w({request:e,user:r,starkSigner:t,exchangesApi:this.immutableXClient.exchangeApi})},"imxExchangeTransfer")}deposit(e){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}prepareWithdrawal(e){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}completeWithdrawal(e,r){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async getAddress(){return E(async()=>{let e=await this.#r(),r=C(e);return Promise.resolve(r.imx.ethAddress)},"imxGetAddress")}};var T=class{authManager;immutableXClient;magicTEESigner;passportEventEmitter;imxApiClients;guardianClient;imxGuardianClient;constructor({authManager:e,immutableXClient:r,magicTEESigner:t,passportEventEmitter:a,imxApiClients:s,guardianClient:l,imxGuardianClient:n}){this.authManager=e,this.immutableXClient=r,this.magicTEESigner=t,this.passportEventEmitter=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=n;}async getProvider(){let e=await this.authManager.getUserOrLogin();return this.createProviderInstance(e)}async getProviderSilent(){let e=await this.authManager.getUser();return e?this.createProviderInstance(e):null}async createProviderInstance(e){if(!e.idToken)throw new o("Failed to initialise","WALLET_CONNECTION_ERROR");return new x({authManager:this.authManager,immutableXClient:this.immutableXClient,passportEventEmitter:this.passportEventEmitter,magicTEESigner:this.magicTEESigner,imxApiClients:this.imxApiClients,guardianClient:this.guardianClient,imxGuardianClient:this.imxGuardianClient})}};var q=(i,e,r)=>{let t=e.map(a=>!i[a]&&a).filter(a=>a).join(", ");if(t!==""){let a=r?`${r} - ${t} cannot be null`:`${t} cannot be null`;throw new o(a,"INVALID_CONFIGURATION")}},P=class{authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:t,jsonRpcReferrer:a,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...n}){if(q(n,["clientId","redirectUri"]),this.oidcConfiguration=n,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=t||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=a,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)q(r,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.imxPublicApiDomain=r.imxPublicApiDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:createConfig({basePath:r.indexerMrBasePath}),orderBook:createConfig({basePath:r.orderBookMrBasePath}),passport:createConfig({basePath:r.passportMrBasePath})};else switch(e.environment){case Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getProduction();break}case Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getSandbox();break}}}};var ce="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",O=class{authManager;guardianApi;confirmationScreen;crossSdkBridgeEnabled;constructor({authManager:e,guardianApi:r,confirmationScreen:t,crossSdkBridgeEnabled:a=!1}){this.authManager=e,this.guardianApi=r,this.confirmationScreen=t,this.crossSdkBridgeEnabled=a;}async evaluateTransaction(e){let r=await this.authManager.getUser();if(!r)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");let t=C(r),a={Authorization:`Bearer ${t.accessToken}`};try{if(!(await retryWithDelay(async()=>this.guardianApi.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:a}),{finallyFn:()=>{this.confirmationScreen.closeWindow();}})).data.id)throw new o("Transaction does not exist","TRANSFER_ERROR");let n=await this.guardianApi.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:a}),{confirmationRequired:m}=n.data;if(m){if(this.crossSdkBridgeEnabled)throw new o(ce,"TRANSACTION_REJECTED");if(!(await this.confirmationScreen.requestConfirmation(e,t.imx.ethAddress,mr.TransactionApprovalRequestChainTypeEnum.Starkex)).confirmed)throw new o("Transaction rejected by user","TRANSACTION_REJECTED")}else this.confirmationScreen.closeWindow();}catch(s){throw ae.isAxiosError(s)&&s.response?.status===403?new o("Service unavailable","SERVICE_UNAVAILABLE_ERROR"):s}}};var Se=i=>i.overrides?createConfig({basePath:i.overrides.imxPublicApiDomain}):i.baseConfig.environment===Environment.SANDBOX?imxApiConfig.getSandbox():imxApiConfig.getProduction(),be=i=>{if(i.overrides?.imxApiClients)return i.overrides.imxApiClients;let e=Se(i);return new ImxApiClients(e)},ke=i=>{let e=new P(i),r=new Auth({...i,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled,popupOverlayOptions:i.popupOverlayOptions,passportDomain:e.passportDomain}),t=r.getAuthManager(),a=r.getConfig(),s=new ConfirmationScreen(a),l=new WalletConfiguration({passportDomain:e.passportDomain,zkEvmRpcUrl:e.zkEvmRpcUrl,relayerUrl:e.relayerUrl,indexerMrBasePath:e.multiRollupConfig.indexer.basePath||e.passportDomain,jsonRpcReferrer:i.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:i.forceScwDeployBeforeMessageSignature,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled}),n=new MultiRollupApiClients(e.multiRollupConfig),m=i.overrides?i.overrides.immutableXClient:new IMXClient({baseConfig:i.baseConfig}),p=new GuardianClient({config:l,authManager:t,guardianApi:n.guardianApi,authConfig:a}),c=new O({authManager:t,guardianApi:n.guardianApi,confirmationScreen:s,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled||!1}),u=new MagicTeeApiClients({basePath:e.magicTeeBasePath,timeout:e.magicTeeTimeout,magicPublishableApiKey:e.magicPublishableApiKey,magicProviderId:e.magicProviderId}),d=new MagicTEESigner(t,u),h=be(i),y=new T({authManager:t,immutableXClient:m,magicTEESigner:d,passportEventEmitter:r.eventEmitter,imxApiClients:h,guardianClient:p,imxGuardianClient:c});return {passportConfig:e,auth:r,passportImxProviderFactory:y,environment:i.baseConfig.environment,walletConfig:l}},k=class{auth;passportImxProviderFactory;multiRollupApiClients;environment;passportConfig;constructor(e){let r=ke(e);this.auth=r.auth,this.passportImxProviderFactory=r.passportImxProviderFactory,this.passportConfig=r.passportConfig,this.multiRollupApiClients=new MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=r.environment,setPassportClientId(e.clientId);}async connectImxSilent(){return E(()=>this.passportImxProviderFactory.getProviderSilent(),"connectImxSilent",!1)}async connectImx(){return E(()=>this.passportImxProviderFactory.getProvider(),"connectImx",!1)}async connectEvm(e={announceProvider:!0}){return E(async()=>{let r=this.passportConfig.overrides,t;return r?.zkEvmChainId?t={chainId:r.zkEvmChainId,name:r.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:r.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===Environment.PRODUCTION?t={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:t={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await connectWallet({auth:this.auth,chains:[t],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let r=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,t=await this.auth.login(r);return t?t.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return (await this.auth.getUser())?.profile}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,r){return this.auth.loginWithPKCEFlow(e,r)}async loginWithPKCEFlowCallback(e,r){return (await this.auth.loginWithPKCEFlowCallback(e,r)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return E(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let r={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:r})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let r=a=>typeof a=="object"&&a!==null&&"code"in a&&"message"in a,t=trackFlow("passport","linkExternalWallet",!1);try{let a=await this.auth.getUser();if(!a)throw new o("User is not logged in","NOT_LOGGED_IN_ERROR");let s=isUserZkEvm(a);if(!(()=>{try{return C(a),!0}catch(c){if(c instanceof o&&c.type==="USER_NOT_REGISTERED_ERROR")return !1;throw c}})()&&!s)throw new o("User has not been registered","USER_NOT_REGISTERED_ERROR");let n={Authorization:`Bearer ${a.accessToken}`},m={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:m},{headers:n})).data}}catch(a){if(a instanceof Error?trackError("passport","linkExternalWallet",a):t.addEvent("errored"),isAxiosError(a)&&a.response){if(a.response.data&&r(a.response.data)){let{code:l,message:n}=a.response.data;switch(l){case"ALREADY_LINKED":throw new o(n,"LINK_WALLET_ALREADY_LINKED_ERROR");case"MAX_WALLETS_LINKED":throw new o(n,"LINK_WALLET_MAX_WALLETS_LINKED_ERROR");case"DUPLICATE_NONCE":throw new o(n,"LINK_WALLET_DUPLICATE_NONCE_ERROR");case"VALIDATION_ERROR":throw new o(n,"LINK_WALLET_VALIDATION_ERROR");default:throw new o(n,"LINK_WALLET_GENERIC_ERROR")}}else if(a.response.status)throw new o(`Link wallet request failed with status code ${a.response.status}`,"LINK_WALLET_GENERIC_ERROR")}let s="Link wallet request failed";throw a instanceof Error&&(s+=`: ${a.message}`),new o(s,"LINK_WALLET_GENERIC_ERROR")}finally{t.addEvent("End");}}};var H=(r=>(r.OptedIn="opted_in",r.Unsubscribed="unsubscribed",r))(H||{});
12
+ function J(t){return "code"in t&&"message"in t}var n=class extends Error{type;constructor(e,r){super(e),this.type=r;}},f=async(t,e)=>{try{return await t()}catch(r){let i;throw r instanceof n&&r.type==="SERVICE_UNAVAILABLE_ERROR"?new n(r.message,r.type):(isAxiosError(r)&&r.response?.data&&J(r.response.data)?i=r.response.data.message:i=r.message,new n(i,e))}};var C=t=>{if(!t.idToken)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");let r=Y(t.idToken).passport;if(!r?.imx_eth_address||!r?.imx_stark_address||!r?.imx_user_admin_address)throw new n("User has not been registered with StarkEx","USER_NOT_REGISTERED_ERROR");return {...t,imx:{ethAddress:r.imx_eth_address,starkAddress:r.imx_stark_address,userAdminAddress:r.imx_user_admin_address}}};var v=async t=>f(async()=>{let e=await generateLegacyStarkPrivateKey(t);return createStarkSigner(e)},"WALLET_CONNECTION_ERROR");async function w({user:t,starkSigner:e,request:r,exchangesApi:i}){return f(async()=>{let{ethAddress:a}=t.imx,s=r.amount,l=await i.getExchangeSignableTransfer({id:r.transactionID,getSignableTransferRequest:{sender:a,token:convertToSignableToken(r),amount:s,receiver:r.receiver}}),o=await e.getAddress(),{payload_hash:m}=l.data,p=await e.signMessage(m),c={sender_stark_key:l.data.sender_stark_key||o,sender_vault_id:l.data.sender_vault_id,receiver_stark_key:l.data.receiver_stark_key,receiver_vault_id:l.data.receiver_vault_id,asset_id:l.data.asset_id,amount:l.data.amount,nonce:l.data.nonce,expiration_timestamp:l.data.expiration_timestamp,stark_signature:p},u={Authorization:`Bearer ${t.accessToken}`},d=await i.createExchangeTransfer({id:r.transactionID,createTransferRequest:c},{headers:u});return {sent_signature:d?.data.sent_signature,status:d?.data.status?.toString(),time:d?.data.time,transfer_id:d?.data.transfer_id}},"EXCHANGE_TRANSFER_ERROR")}var L="ERC721";async function N({starkSigner:t,user:e,request:r,ordersApi:i,guardianClient:a}){return f(async()=>{let{ethAddress:s}=e.imx,l=r.sell.type===L?"1":r.sell.amount,o=r.buy.type===L?"1":r.buy.amount,m={Authorization:`Bearer ${e.accessToken}`},p={user:s,amount_buy:o,token_buy:convertToSignableToken(r.buy),amount_sell:l,token_sell:convertToSignableToken(r.sell),fees:r.fees,split_fees:!0,expiration_timestamp:r.expiration_timestamp},c=await i.getSignableOrder({getSignableOrderRequestV3:p},{headers:m});await a.evaluateTransaction(c.data.payload_hash);let{payload_hash:u}=c.data,d=await t.signMessage(u),h=c.data,O={createOrderRequest:{include_fees:!0,fees:r.fees,stark_signature:d,amount_buy:h.amount_buy,amount_sell:h.amount_sell,asset_id_buy:h.asset_id_buy,asset_id_sell:h.asset_id_sell,expiration_timestamp:h.expiration_timestamp,nonce:h.nonce,stark_key:h.stark_key,vault_id_buy:h.vault_id_buy,vault_id_sell:h.vault_id_sell}};return {...(await i.createOrderV3(O,{headers:m})).data}},"CREATE_ORDER_ERROR")}async function D({user:t,starkSigner:e,request:r,ordersApi:i,guardianClient:a}){return f(async()=>{let s={order_id:r.order_id},l={Authorization:`Bearer ${t.accessToken}`},o=await i.getSignableCancelOrderV3({getSignableCancelOrderRequest:s},{headers:l});await a.evaluateTransaction(o.data.payload_hash);let{payload_hash:m}=o.data,p=await e.signMessage(m),c=await i.cancelOrderV3({id:r.order_id.toString(),cancelOrderRequest:{order_id:r.order_id,stark_signature:p}},{headers:l});return {order_id:c.data.order_id,status:c.data.status}},"CANCEL_ORDER_ERROR")}async function I({ethSigner:t,starkSigner:e,imxApiClients:r},i){return f(async()=>{let[a,s]=await Promise.all([t.getAddress(),e.getAddress()]),l=await r.usersApi.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:s}}),{signable_message:o,payload_hash:m}=l.data,[p,c]=await Promise.all([signRaw(o,t),e.signMessage(m)]);return (await r.usersApi.registerPassportUserV2({authorization:`Bearer ${i}`,registerPassportUserRequest:{eth_signature:p,ether_key:a,stark_signature:c,stark_key:s}})).data},"USER_REGISTRATION_ERROR")}async function G({request:t,tradesApi:e,user:r,starkSigner:i,guardianClient:a}){return f(async()=>{let{ethAddress:s}=r.imx,l={expiration_timestamp:t.expiration_timestamp,fees:t.fees,order_id:t.order_id,user:s},o={Authorization:`Bearer ${r.accessToken}`},m=await e.getSignableTrade({getSignableTradeRequest:l},{headers:o});await a.evaluateTransaction(m.data.payload_hash);let{payload_hash:p}=m.data,c=await i.signMessage(p),{data:u}=m,d={createTradeRequest:{include_fees:!0,fees:t?.fees,stark_signature:c,order_id:t?.order_id,fee_info:u.fee_info,amount_buy:u.amount_buy,amount_sell:u.amount_sell,asset_id_buy:u.asset_id_buy,asset_id_sell:u.asset_id_sell,expiration_timestamp:u.expiration_timestamp,nonce:u.nonce,stark_key:u.stark_key,vault_id_buy:u.vault_id_buy,vault_id_sell:u.vault_id_sell}},{data:h}=await e.createTradeV3(d,{headers:o});return h},"CREATE_TRADE_ERROR")}var B="ERC721";async function W({request:t,transfersApi:e,starkSigner:r,user:i,guardianClient:a}){return f(async()=>{let s=t.type===B?"1":t.amount,l={sender:i.imx.ethAddress,token:convertToSignableToken(t),amount:s,receiver:t.receiver},o={Authorization:`Bearer ${i.accessToken}`},m=await e.getSignableTransferV1({getSignableTransferRequest:l},{headers:o});await a.evaluateTransaction(m.data.payload_hash);let p=m.data,{payload_hash:c}=p,u=await r.signMessage(c),d=await r.getAddress(),O={createTransferRequest:{sender_stark_key:p.sender_stark_key||d,sender_vault_id:p.sender_vault_id,receiver_stark_key:p.receiver_stark_key,receiver_vault_id:p.receiver_vault_id,asset_id:p.asset_id,amount:p.amount,nonce:p.nonce,expiration_timestamp:p.expiration_timestamp,stark_signature:u}},{data:y}=await e.createTransferV1(O,{headers:o});return {sent_signature:y.sent_signature,status:y.status?.toString(),time:y.time,transfer_id:y.transfer_id}},"TRANSFER_ERROR")}async function K({user:t,starkSigner:e,request:r,transfersApi:i,guardianClient:a}){return f(async()=>{let{ethAddress:s}=t.imx,l=r.map(d=>({amount:"1",token:convertToSignableToken({type:B,tokenId:d.tokenId,tokenAddress:d.tokenAddress}),receiver:d.receiver})),o={Authorization:`Bearer ${t.accessToken}`},m=await i.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:s,signable_requests:l}},{headers:o});await a.evaluateTransaction(m.data.signable_responses[0]?.payload_hash);let p=await Promise.all(m.data.signable_responses.map(async d=>{let h=await e.signMessage(d.payload_hash);return {sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:h}})),c={sender_stark_key:m.data.sender_stark_key,requests:p};return {transfer_ids:(await i.createTransfer({createTransferRequestV2:c},{headers:o}))?.data.transfer_ids}},"TRANSFER_ERROR")}async function X(t){await retryWithDelay(async()=>{let e=await t.forceUserRefresh();if(!e)return Promise.reject(new Error("user wallet addresses not exist"));try{return C(e),e}catch{return Promise.reject(new Error("user wallet addresses not exist"))}});}async function S(t,e,r,i,a){return f(async()=>{try{let s=await I({ethSigner:t,starkSigner:e,imxApiClients:a},r.accessToken);return await X(i),s}catch(s){if(ae.isAxiosError(s)&&s.response?.status===409)return await X(i),{tx_hash:""};throw s}},"USER_REGISTRATION_ERROR")}var E=async(t,e,r=!0,i=!0)=>{let a=trackFlow("passport",e,r);try{return await t(a)}catch(s){throw s instanceof Error?trackError("passport",e,s,{flowId:a.details.flowId}):a.addEvent("errored"),s}finally{i&&a.addEvent("End");}};var x=class{auth;immutableXClient;guardianClient;imxApiClients;magicTEESigner;imxGuardianClient;starkSigner;signerInitialisationError;constructor({auth:e,immutableXClient:r,passportEventEmitter:i,magicTEESigner:a,imxApiClients:s,guardianClient:l,imxGuardianClient:o}){this.auth=e,this.immutableXClient=r,this.magicTEESigner=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=o,this.#i(),i.on(AuthEvents.LOGGED_OUT,this.handleLogout);}handleLogout=()=>{this.starkSigner=void 0;};#i(){this.starkSigner=new Promise(async e=>{try{e(await v(this.magicTEESigner));}catch(r){this.signerInitialisationError=r,e(void 0);}});}async#r(){let e=await this.auth.getUser();if(!e||!this.starkSigner)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");return e}async#t(){let e=await this.starkSigner;if(typeof e>"u")throw typeof this.signerInitialisationError<"u"?this.signerInitialisationError:new Error("Signers failed to initialise");return e}async#e(){let[e,r]=await Promise.all([this.#r(),this.#t()]);return {user:C(e),starkSigner:r}}async transfer(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return W({request:e,user:r,starkSigner:i,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxTransfer")}async registerOffchain(){return E(async()=>{let[e,r]=await Promise.all([this.#r(),this.#t()]);return await S(this.magicTEESigner,r,C(e),this.auth,this.imxApiClients)},"imxRegisterOffchain")}async isRegisteredOffchain(){return E(async()=>{try{let e=await this.#r();return !!C(e).imx}catch(e){if(e instanceof n&&e.type==="USER_NOT_REGISTERED_ERROR")return !1;throw e}},"imxIsRegisteredOffchain")}isRegisteredOnchain(){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async createOrder(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return N({request:e,user:r,starkSigner:i,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCreateOrder")}async cancelOrder(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return D({request:e,user:r,starkSigner:i,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCancelOrder")}async createTrade(e){return E(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return G({request:e,user:r,starkSigner:i,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.imxGuardianClient})})(),"imxCreateTrade")}async batchNftTransfer(e){return E(()=>this.guardianClient.withConfirmationScreenTask({width:480,height:784})(async()=>{let{user:r,starkSigner:i}=await this.#e();return K({request:e,user:r,starkSigner:i,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxBatchNftTransfer")}async exchangeTransfer(e){return E(async()=>{let{user:r,starkSigner:i}=await this.#e();return w({request:e,user:r,starkSigner:i,exchangesApi:this.immutableXClient.exchangeApi})},"imxExchangeTransfer")}deposit(e){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}prepareWithdrawal(e){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}completeWithdrawal(e,r){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async getAddress(){return E(async()=>{let e=await this.#r(),r=C(e);return Promise.resolve(r.imx.ethAddress)},"imxGetAddress")}};var A=class{auth;immutableXClient;magicTEESigner;passportEventEmitter;imxApiClients;guardianClient;imxGuardianClient;constructor({auth:e,immutableXClient:r,magicTEESigner:i,passportEventEmitter:a,imxApiClients:s,guardianClient:l,imxGuardianClient:o}){this.auth=e,this.immutableXClient=r,this.magicTEESigner=i,this.passportEventEmitter=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=o;}async getProvider(){let e=await this.auth.getUserOrLogin();return this.createProviderInstance(e)}async getProviderSilent(){let e=await this.auth.getUser();return e?this.createProviderInstance(e):null}async createProviderInstance(e){if(!e.idToken)throw new n("Failed to initialise","WALLET_CONNECTION_ERROR");return new x({auth:this.auth,immutableXClient:this.immutableXClient,passportEventEmitter:this.passportEventEmitter,magicTEESigner:this.magicTEESigner,imxApiClients:this.imxApiClients,guardianClient:this.guardianClient,imxGuardianClient:this.imxGuardianClient})}};var q=(t,e,r)=>{let i=e.map(a=>!t[a]&&a).filter(a=>a).join(", ");if(i!==""){let a=r?`${r} - ${i} cannot be null`:`${i} cannot be null`;throw new n(a,"INVALID_CONFIGURATION")}},T=class{authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:i,jsonRpcReferrer:a,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...o}){if(q(o,["clientId","redirectUri"]),this.oidcConfiguration=o,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=a,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)q(r,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.imxPublicApiDomain=r.imxPublicApiDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:createConfig({basePath:r.indexerMrBasePath}),orderBook:createConfig({basePath:r.orderBookMrBasePath}),passport:createConfig({basePath:r.passportMrBasePath})};else switch(e.environment){case Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getProduction();break}case Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getSandbox();break}}}};var ce="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",P=class{auth;guardianApi;confirmationScreen;crossSdkBridgeEnabled;constructor({auth:e,guardianApi:r,confirmationScreen:i,crossSdkBridgeEnabled:a=!1}){this.auth=e,this.guardianApi=r,this.confirmationScreen=i,this.crossSdkBridgeEnabled=a;}async evaluateTransaction(e){let r=await this.auth.getUser();if(!r)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");let i=C(r),a={Authorization:`Bearer ${i.accessToken}`};try{if(!(await retryWithDelay(async()=>this.guardianApi.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:a}),{finallyFn:()=>{this.confirmationScreen.closeWindow();}})).data.id)throw new n("Transaction does not exist","TRANSFER_ERROR");let o=await this.guardianApi.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:a}),{confirmationRequired:m}=o.data;if(m){if(this.crossSdkBridgeEnabled)throw new n(ce,"TRANSACTION_REJECTED");if(!(await this.confirmationScreen.requestConfirmation(e,i.imx.ethAddress,mr.TransactionApprovalRequestChainTypeEnum.Starkex)).confirmed)throw new n("Transaction rejected by user","TRANSACTION_REJECTED")}else this.confirmationScreen.closeWindow();}catch(s){throw ae.isAxiosError(s)&&s.response?.status===403?new n("Service unavailable","SERVICE_UNAVAILABLE_ERROR"):s}}};var Se=t=>t.overrides?createConfig({basePath:t.overrides.imxPublicApiDomain}):t.baseConfig.environment===Environment.SANDBOX?imxApiConfig.getSandbox():imxApiConfig.getProduction(),be=t=>{if(t.overrides?.imxApiClients)return t.overrides.imxApiClients;let e=Se(t);return new ImxApiClients(e)},ke=t=>{let e=new T(t),r=new Auth({...t,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled,popupOverlayOptions:t.popupOverlayOptions,passportDomain:e.passportDomain}),i=r.getConfig(),a=new ConfirmationScreen(i),s=new WalletConfiguration({passportDomain:e.passportDomain,zkEvmRpcUrl:e.zkEvmRpcUrl,relayerUrl:e.relayerUrl,indexerMrBasePath:e.multiRollupConfig.indexer.basePath||e.passportDomain,jsonRpcReferrer:t.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:t.forceScwDeployBeforeMessageSignature,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled}),l=new MultiRollupApiClients(e.multiRollupConfig),o=t.overrides?t.overrides.immutableXClient:new IMXClient({baseConfig:t.baseConfig}),m=new GuardianClient({config:s,auth:r,guardianApi:l.guardianApi,authConfig:i}),p=new P({auth:r,guardianApi:l.guardianApi,confirmationScreen:a,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled||!1}),c=new MagicTeeApiClients({basePath:e.magicTeeBasePath,timeout:e.magicTeeTimeout,magicPublishableApiKey:e.magicPublishableApiKey,magicProviderId:e.magicProviderId}),u=new MagicTEESigner(r,c),d=be(t),h=new A({auth:r,immutableXClient:o,magicTEESigner:u,passportEventEmitter:r.eventEmitter,imxApiClients:d,guardianClient:m,imxGuardianClient:p});return {passportConfig:e,auth:r,passportImxProviderFactory:h,environment:t.baseConfig.environment,walletConfig:s}},k=class{auth;passportImxProviderFactory;multiRollupApiClients;environment;passportConfig;constructor(e){let r=ke(e);this.auth=r.auth,this.passportImxProviderFactory=r.passportImxProviderFactory,this.passportConfig=r.passportConfig,this.multiRollupApiClients=new MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=r.environment,setPassportClientId(e.clientId);}async connectImxSilent(){return E(()=>this.passportImxProviderFactory.getProviderSilent(),"connectImxSilent",!1)}async connectImx(){return E(()=>this.passportImxProviderFactory.getProvider(),"connectImx",!1)}async connectEvm(e={announceProvider:!0}){return E(async()=>{let r=this.passportConfig.overrides,i;return r?.zkEvmChainId?i={chainId:r.zkEvmChainId,name:r.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:r.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===Environment.PRODUCTION?i={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:i={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await connectWallet({auth:this.auth,chains:[i],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:"IMX",announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let r=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,i=await this.auth.login(r);return i?i.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return (await this.auth.getUser())?.profile}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,r){return this.auth.loginWithPKCEFlow(e,r)}async loginWithPKCEFlowCallback(e,r){return (await this.auth.loginWithPKCEFlowCallback(e,r)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return E(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let r={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:r})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let r=a=>typeof a=="object"&&a!==null&&"code"in a&&"message"in a,i=trackFlow("passport","linkExternalWallet",!1);try{let a=await this.auth.getUser();if(!a)throw new n("User is not logged in","NOT_LOGGED_IN_ERROR");let s=isUserZkEvm(a);if(!(()=>{try{return C(a),!0}catch(c){if(c instanceof n&&c.type==="USER_NOT_REGISTERED_ERROR")return !1;throw c}})()&&!s)throw new n("User has not been registered","USER_NOT_REGISTERED_ERROR");let o={Authorization:`Bearer ${a.accessToken}`},m={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:m},{headers:o})).data}}catch(a){if(a instanceof Error?trackError("passport","linkExternalWallet",a):i.addEvent("errored"),isAxiosError(a)&&a.response){if(a.response.data&&r(a.response.data)){let{code:l,message:o}=a.response.data;switch(l){case"ALREADY_LINKED":throw new n(o,"LINK_WALLET_ALREADY_LINKED_ERROR");case"MAX_WALLETS_LINKED":throw new n(o,"LINK_WALLET_MAX_WALLETS_LINKED_ERROR");case"DUPLICATE_NONCE":throw new n(o,"LINK_WALLET_DUPLICATE_NONCE_ERROR");case"VALIDATION_ERROR":throw new n(o,"LINK_WALLET_VALIDATION_ERROR");default:throw new n(o,"LINK_WALLET_GENERIC_ERROR")}}else if(a.response.status)throw new n(`Link wallet request failed with status code ${a.response.status}`,"LINK_WALLET_GENERIC_ERROR")}let s="Link wallet request failed";throw a instanceof Error&&(s+=`: ${a.message}`),new n(s,"LINK_WALLET_GENERIC_ERROR")}finally{i.addEvent("End");}}};var H=(r=>(r.OptedIn="opted_in",r.Unsubscribed="unsubscribed",r))(H||{});
13
13
 
14
- export { H as MarketingConsentStatus, k as Passport, o as PassportError };
14
+ export { H as MarketingConsentStatus, k as Passport, n as PassportError };
@@ -15,7 +15,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
  var te__default = /*#__PURE__*/_interopDefault(te);
16
16
  var Z__default = /*#__PURE__*/_interopDefault(Z);
17
17
 
18
- function H(i){return "code"in i&&"message"in i}var o=class extends Error{type;constructor(e,r){super(e),this.type=r;}},R=async(i,e)=>{try{return await i()}catch(r){let t;throw r instanceof o&&r.type==="SERVICE_UNAVAILABLE_ERROR"?new o(r.message,r.type):(te.isAxiosError(r)&&r.response?.data&&H(r.response.data)?t=r.response.data.message:t=r.message,new o(t,e))}};var E=i=>{if(!i.idToken)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");let r=Z__default.default(i.idToken).passport;if(!r?.imx_eth_address||!r?.imx_stark_address||!r?.imx_user_admin_address)throw new o("User has not been registered with StarkEx","USER_NOT_REGISTERED_ERROR");return {...i,imx:{ethAddress:r.imx_eth_address,starkAddress:r.imx_stark_address,userAdminAddress:r.imx_user_admin_address}}};var b=async i=>R(async()=>{let e=await xClient.generateLegacyStarkPrivateKey(i);return xClient.createStarkSigner(e)},"WALLET_CONNECTION_ERROR");async function k({user:i,starkSigner:e,request:r,exchangesApi:t}){return R(async()=>{let{ethAddress:a}=i.imx,s=r.amount,l=await t.getExchangeSignableTransfer({id:r.transactionID,getSignableTransferRequest:{sender:a,token:toolkit.convertToSignableToken(r),amount:s,receiver:r.receiver}}),n=await e.getAddress(),{payload_hash:m}=l.data,p=await e.signMessage(m),c={sender_stark_key:l.data.sender_stark_key||n,sender_vault_id:l.data.sender_vault_id,receiver_stark_key:l.data.receiver_stark_key,receiver_vault_id:l.data.receiver_vault_id,asset_id:l.data.asset_id,amount:l.data.amount,nonce:l.data.nonce,expiration_timestamp:l.data.expiration_timestamp,stark_signature:p},u={Authorization:`Bearer ${i.accessToken}`},d=await t.createExchangeTransfer({id:r.transactionID,createTransferRequest:c},{headers:u});return {sent_signature:d?.data.sent_signature,status:d?.data.status?.toString(),time:d?.data.time,transfer_id:d?.data.transfer_id}},"EXCHANGE_TRANSFER_ERROR")}var w="ERC721";async function U({starkSigner:i,user:e,request:r,ordersApi:t,guardianClient:a}){return R(async()=>{let{ethAddress:s}=e.imx,l=r.sell.type===w?"1":r.sell.amount,n=r.buy.type===w?"1":r.buy.amount,m={Authorization:`Bearer ${e.accessToken}`},p={user:s,amount_buy:n,token_buy:toolkit.convertToSignableToken(r.buy),amount_sell:l,token_sell:toolkit.convertToSignableToken(r.sell),fees:r.fees,split_fees:!0,expiration_timestamp:r.expiration_timestamp},c=await t.getSignableOrder({getSignableOrderRequestV3:p},{headers:m});await a.evaluateTransaction(c.data.payload_hash);let{payload_hash:u}=c.data,d=await i.signMessage(u),g=c.data,_={createOrderRequest:{include_fees:!0,fees:r.fees,stark_signature:d,amount_buy:g.amount_buy,amount_sell:g.amount_sell,asset_id_buy:g.asset_id_buy,asset_id_sell:g.asset_id_sell,expiration_timestamp:g.expiration_timestamp,nonce:g.nonce,stark_key:g.stark_key,vault_id_buy:g.vault_id_buy,vault_id_sell:g.vault_id_sell}};return {...(await t.createOrderV3(_,{headers:m})).data}},"CREATE_ORDER_ERROR")}async function L({user:i,starkSigner:e,request:r,ordersApi:t,guardianClient:a}){return R(async()=>{let s={order_id:r.order_id},l={Authorization:`Bearer ${i.accessToken}`},n=await t.getSignableCancelOrderV3({getSignableCancelOrderRequest:s},{headers:l});await a.evaluateTransaction(n.data.payload_hash);let{payload_hash:m}=n.data,p=await e.signMessage(m),c=await t.cancelOrderV3({id:r.order_id.toString(),cancelOrderRequest:{order_id:r.order_id,stark_signature:p}},{headers:l});return {order_id:c.data.order_id,status:c.data.status}},"CANCEL_ORDER_ERROR")}async function P({ethSigner:i,starkSigner:e,imxApiClients:r},t){return R(async()=>{let[a,s]=await Promise.all([i.getAddress(),e.getAddress()]),l=await r.usersApi.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:s}}),{signable_message:n,payload_hash:m}=l.data,[p,c]=await Promise.all([toolkit.signRaw(n,i),e.signMessage(m)]);return (await r.usersApi.registerPassportUserV2({authorization:`Bearer ${t}`,registerPassportUserRequest:{eth_signature:p,ether_key:a,stark_signature:c,stark_key:s}})).data},"USER_REGISTRATION_ERROR")}async function N({request:i,tradesApi:e,user:r,starkSigner:t,guardianClient:a}){return R(async()=>{let{ethAddress:s}=r.imx,l={expiration_timestamp:i.expiration_timestamp,fees:i.fees,order_id:i.order_id,user:s},n={Authorization:`Bearer ${r.accessToken}`},m=await e.getSignableTrade({getSignableTradeRequest:l},{headers:n});await a.evaluateTransaction(m.data.payload_hash);let{payload_hash:p}=m.data,c=await t.signMessage(p),{data:u}=m,d={createTradeRequest:{include_fees:!0,fees:i?.fees,stark_signature:c,order_id:i?.order_id,fee_info:u.fee_info,amount_buy:u.amount_buy,amount_sell:u.amount_sell,asset_id_buy:u.asset_id_buy,asset_id_sell:u.asset_id_sell,expiration_timestamp:u.expiration_timestamp,nonce:u.nonce,stark_key:u.stark_key,vault_id_buy:u.vault_id_buy,vault_id_sell:u.vault_id_sell}},{data:g}=await e.createTradeV3(d,{headers:n});return g},"CREATE_TRADE_ERROR")}var M="ERC721";async function G({request:i,transfersApi:e,starkSigner:r,user:t,guardianClient:a}){return R(async()=>{let s=i.type===M?"1":i.amount,l={sender:t.imx.ethAddress,token:toolkit.convertToSignableToken(i),amount:s,receiver:i.receiver},n={Authorization:`Bearer ${t.accessToken}`},m=await e.getSignableTransferV1({getSignableTransferRequest:l},{headers:n});await a.evaluateTransaction(m.data.payload_hash);let p=m.data,{payload_hash:c}=p,u=await r.signMessage(c),d=await r.getAddress(),_={createTransferRequest:{sender_stark_key:p.sender_stark_key||d,sender_vault_id:p.sender_vault_id,receiver_stark_key:p.receiver_stark_key,receiver_vault_id:p.receiver_vault_id,asset_id:p.asset_id,amount:p.amount,nonce:p.nonce,expiration_timestamp:p.expiration_timestamp,stark_signature:u}},{data:C}=await e.createTransferV1(_,{headers:n});return {sent_signature:C.sent_signature,status:C.status?.toString(),time:C.time,transfer_id:C.transfer_id}},"TRANSFER_ERROR")}async function B({user:i,starkSigner:e,request:r,transfersApi:t,guardianClient:a}){return R(async()=>{let{ethAddress:s}=i.imx,l=r.map(d=>({amount:"1",token:toolkit.convertToSignableToken({type:M,tokenId:d.tokenId,tokenAddress:d.tokenAddress}),receiver:d.receiver})),n={Authorization:`Bearer ${i.accessToken}`},m=await t.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:s,signable_requests:l}},{headers:n});await a.evaluateTransaction(m.data.signable_responses[0]?.payload_hash);let p=await Promise.all(m.data.signable_responses.map(async d=>{let g=await e.signMessage(d.payload_hash);return {sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:g}})),c={sender_stark_key:m.data.sender_stark_key,requests:p};return {transfer_ids:(await t.createTransfer({createTransferRequestV2:c},{headers:n}))?.data.transfer_ids}},"TRANSFER_ERROR")}async function W(i){await wallet.retryWithDelay(async()=>{let e=await i.forceUserRefresh();if(!e)return Promise.reject(new Error("user wallet addresses not exist"));try{return E(e),e}catch{return Promise.reject(new Error("user wallet addresses not exist"))}});}async function O(i,e,r,t,a){return R(async()=>{try{let s=await P({ethSigner:i,starkSigner:e,imxApiClients:a},r.accessToken);return await W(t),s}catch(s){if(te__default.default.isAxiosError(s)&&s.response?.status===409)return await W(t),{tx_hash:""};throw s}},"USER_REGISTRATION_ERROR")}var h=async(i,e,r=!0,t=!0)=>{let a=metrics.trackFlow("passport",e,r);try{return await i(a)}catch(s){throw s instanceof Error?metrics.trackError("passport",e,s,{flowId:a.details.flowId}):a.addEvent("errored"),s}finally{t&&a.addEvent("End");}};var y=class{authManager;immutableXClient;guardianClient;imxApiClients;magicTEESigner;imxGuardianClient;starkSigner;signerInitialisationError;constructor({authManager:e,immutableXClient:r,passportEventEmitter:t,magicTEESigner:a,imxApiClients:s,guardianClient:l,imxGuardianClient:n}){this.authManager=e,this.immutableXClient=r,this.magicTEESigner=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=n,this.#i(),t.on(auth.AuthEvents.LOGGED_OUT,this.handleLogout);}handleLogout=()=>{this.starkSigner=void 0;};#i(){this.starkSigner=new Promise(async e=>{try{e(await b(this.magicTEESigner));}catch(r){this.signerInitialisationError=r,e(void 0);}});}async#r(){let e=await this.authManager.getUser();if(!e||!this.starkSigner)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");return e}async#t(){let e=await this.starkSigner;if(typeof e>"u")throw typeof this.signerInitialisationError<"u"?this.signerInitialisationError:new Error("Signers failed to initialise");return e}async#e(){let[e,r]=await Promise.all([this.#r(),this.#t()]);return {user:E(e),starkSigner:r}}async transfer(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return G({request:e,user:r,starkSigner:t,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxTransfer")}async registerOffchain(){return h(async()=>{let[e,r]=await Promise.all([this.#r(),this.#t()]);return await O(this.magicTEESigner,r,E(e),this.authManager,this.imxApiClients)},"imxRegisterOffchain")}async isRegisteredOffchain(){return h(async()=>{try{let e=await this.#r();return !!E(e).imx}catch(e){if(e instanceof o&&e.type==="USER_NOT_REGISTERED_ERROR")return !1;throw e}},"imxIsRegisteredOffchain")}isRegisteredOnchain(){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async createOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return U({request:e,user:r,starkSigner:t,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCreateOrder")}async cancelOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return L({request:e,user:r,starkSigner:t,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCancelOrder")}async createTrade(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return N({request:e,user:r,starkSigner:t,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.imxGuardianClient})})(),"imxCreateTrade")}async batchNftTransfer(e){return h(()=>this.guardianClient.withConfirmationScreenTask({width:480,height:784})(async()=>{let{user:r,starkSigner:t}=await this.#e();return B({request:e,user:r,starkSigner:t,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxBatchNftTransfer")}async exchangeTransfer(e){return h(async()=>{let{user:r,starkSigner:t}=await this.#e();return k({request:e,user:r,starkSigner:t,exchangesApi:this.immutableXClient.exchangeApi})},"imxExchangeTransfer")}deposit(e){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}prepareWithdrawal(e){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}completeWithdrawal(e,r){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async getAddress(){return h(async()=>{let e=await this.#r(),r=E(e);return Promise.resolve(r.imx.ethAddress)},"imxGetAddress")}};var A=class{authManager;immutableXClient;magicTEESigner;passportEventEmitter;imxApiClients;guardianClient;imxGuardianClient;constructor({authManager:e,immutableXClient:r,magicTEESigner:t,passportEventEmitter:a,imxApiClients:s,guardianClient:l,imxGuardianClient:n}){this.authManager=e,this.immutableXClient=r,this.magicTEESigner=t,this.passportEventEmitter=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=n;}async getProvider(){let e=await this.authManager.getUserOrLogin();return this.createProviderInstance(e)}async getProviderSilent(){let e=await this.authManager.getUser();return e?this.createProviderInstance(e):null}async createProviderInstance(e){if(!e.idToken)throw new o("Failed to initialise","WALLET_CONNECTION_ERROR");return new y({authManager:this.authManager,immutableXClient:this.immutableXClient,passportEventEmitter:this.passportEventEmitter,magicTEESigner:this.magicTEESigner,imxApiClients:this.imxApiClients,guardianClient:this.guardianClient,imxGuardianClient:this.imxGuardianClient})}};var F=(i,e,r)=>{let t=e.map(a=>!i[a]&&a).filter(a=>a).join(", ");if(t!==""){let a=r?`${r} - ${t} cannot be null`:`${t} cannot be null`;throw new o(a,"INVALID_CONFIGURATION")}},x=class{authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:t,jsonRpcReferrer:a,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...n}){if(F(n,["clientId","redirectUri"]),this.oidcConfiguration=n,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=t||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=a,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)F(r,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.imxPublicApiDomain=r.imxPublicApiDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:generatedClients.createConfig({basePath:r.indexerMrBasePath}),orderBook:generatedClients.createConfig({basePath:r.orderBookMrBasePath}),passport:generatedClients.createConfig({basePath:r.passportMrBasePath})};else switch(e.environment){case config.Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=generatedClients.multiRollupConfig.getProduction();break}case config.Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=generatedClients.multiRollupConfig.getSandbox();break}}}};var pe="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",T=class{authManager;guardianApi;confirmationScreen;crossSdkBridgeEnabled;constructor({authManager:e,guardianApi:r,confirmationScreen:t,crossSdkBridgeEnabled:a=!1}){this.authManager=e,this.guardianApi=r,this.confirmationScreen=t,this.crossSdkBridgeEnabled=a;}async evaluateTransaction(e){let r=await this.authManager.getUser();if(!r)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");let t=E(r),a={Authorization:`Bearer ${t.accessToken}`};try{if(!(await wallet.retryWithDelay(async()=>this.guardianApi.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:a}),{finallyFn:()=>{this.confirmationScreen.closeWindow();}})).data.id)throw new o("Transaction does not exist","TRANSFER_ERROR");let n=await this.guardianApi.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:a}),{confirmationRequired:m}=n.data;if(m){if(this.crossSdkBridgeEnabled)throw new o(pe,"TRANSACTION_REJECTED");if(!(await this.confirmationScreen.requestConfirmation(e,t.imx.ethAddress,generatedClients.mr.TransactionApprovalRequestChainTypeEnum.Starkex)).confirmed)throw new o("Transaction rejected by user","TRANSACTION_REJECTED")}else this.confirmationScreen.closeWindow();}catch(s){throw te__default.default.isAxiosError(s)&&s.response?.status===403?new o("Service unavailable","SERVICE_UNAVAILABLE_ERROR"):s}}};var Oe=i=>i.overrides?generatedClients.createConfig({basePath:i.overrides.imxPublicApiDomain}):i.baseConfig.environment===config.Environment.SANDBOX?generatedClients.imxApiConfig.getSandbox():generatedClients.imxApiConfig.getProduction(),Ie=i=>{if(i.overrides?.imxApiClients)return i.overrides.imxApiClients;let e=Oe(i);return new generatedClients.ImxApiClients(e)},Se=i=>{let e=new x(i),r=new auth.Auth({...i,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled,popupOverlayOptions:i.popupOverlayOptions,passportDomain:e.passportDomain}),t=r.getAuthManager(),a=r.getConfig(),s=new wallet.ConfirmationScreen(a),l=new wallet.WalletConfiguration({passportDomain:e.passportDomain,zkEvmRpcUrl:e.zkEvmRpcUrl,relayerUrl:e.relayerUrl,indexerMrBasePath:e.multiRollupConfig.indexer.basePath||e.passportDomain,jsonRpcReferrer:i.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:i.forceScwDeployBeforeMessageSignature,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled}),n=new generatedClients.MultiRollupApiClients(e.multiRollupConfig),m=i.overrides?i.overrides.immutableXClient:new xClient.IMXClient({baseConfig:i.baseConfig}),p=new wallet.GuardianClient({config:l,authManager:t,guardianApi:n.guardianApi,authConfig:a}),c=new T({authManager:t,guardianApi:n.guardianApi,confirmationScreen:s,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled||!1}),u=new generatedClients.MagicTeeApiClients({basePath:e.magicTeeBasePath,timeout:e.magicTeeTimeout,magicPublishableApiKey:e.magicPublishableApiKey,magicProviderId:e.magicProviderId}),d=new wallet.MagicTEESigner(t,u),g=Ie(i),_=new A({authManager:t,immutableXClient:m,magicTEESigner:d,passportEventEmitter:r.eventEmitter,imxApiClients:g,guardianClient:p,imxGuardianClient:c});return {passportConfig:e,auth:r,passportImxProviderFactory:_,environment:i.baseConfig.environment,walletConfig:l}},S=class{auth;passportImxProviderFactory;multiRollupApiClients;environment;passportConfig;constructor(e){let r=Se(e);this.auth=r.auth,this.passportImxProviderFactory=r.passportImxProviderFactory,this.passportConfig=r.passportConfig,this.multiRollupApiClients=new generatedClients.MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=r.environment,metrics.setPassportClientId(e.clientId);}async connectImxSilent(){return h(()=>this.passportImxProviderFactory.getProviderSilent(),"connectImxSilent",!1)}async connectImx(){return h(()=>this.passportImxProviderFactory.getProvider(),"connectImx",!1)}async connectEvm(e={announceProvider:!0}){return h(async()=>{let r=this.passportConfig.overrides,t;return r?.zkEvmChainId?t={chainId:r.zkEvmChainId,name:r.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:r.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===config.Environment.PRODUCTION?t={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:t={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await wallet.connectWallet({auth:this.auth,chains:[t],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let r=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,t=await this.auth.login(r);return t?t.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return (await this.auth.getUser())?.profile}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,r){return this.auth.loginWithPKCEFlow(e,r)}async loginWithPKCEFlowCallback(e,r){return (await this.auth.loginWithPKCEFlowCallback(e,r)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return h(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let r={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:r})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let r=a=>typeof a=="object"&&a!==null&&"code"in a&&"message"in a,t=metrics.trackFlow("passport","linkExternalWallet",!1);try{let a=await this.auth.getUser();if(!a)throw new o("User is not logged in","NOT_LOGGED_IN_ERROR");let s=auth.isUserZkEvm(a);if(!(()=>{try{return E(a),!0}catch(c){if(c instanceof o&&c.type==="USER_NOT_REGISTERED_ERROR")return !1;throw c}})()&&!s)throw new o("User has not been registered","USER_NOT_REGISTERED_ERROR");let n={Authorization:`Bearer ${a.accessToken}`},m={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:m},{headers:n})).data}}catch(a){if(a instanceof Error?metrics.trackError("passport","linkExternalWallet",a):t.addEvent("errored"),te.isAxiosError(a)&&a.response){if(a.response.data&&r(a.response.data)){let{code:l,message:n}=a.response.data;switch(l){case"ALREADY_LINKED":throw new o(n,"LINK_WALLET_ALREADY_LINKED_ERROR");case"MAX_WALLETS_LINKED":throw new o(n,"LINK_WALLET_MAX_WALLETS_LINKED_ERROR");case"DUPLICATE_NONCE":throw new o(n,"LINK_WALLET_DUPLICATE_NONCE_ERROR");case"VALIDATION_ERROR":throw new o(n,"LINK_WALLET_VALIDATION_ERROR");default:throw new o(n,"LINK_WALLET_GENERIC_ERROR")}}else if(a.response.status)throw new o(`Link wallet request failed with status code ${a.response.status}`,"LINK_WALLET_GENERIC_ERROR")}let s="Link wallet request failed";throw a instanceof Error&&(s+=`: ${a.message}`),new o(s,"LINK_WALLET_GENERIC_ERROR")}finally{t.addEvent("End");}}};var $=(r=>(r.OptedIn="opted_in",r.Unsubscribed="unsubscribed",r))($||{});
18
+ function H(t){return "code"in t&&"message"in t}var n=class extends Error{type;constructor(e,r){super(e),this.type=r;}},R=async(t,e)=>{try{return await t()}catch(r){let i;throw r instanceof n&&r.type==="SERVICE_UNAVAILABLE_ERROR"?new n(r.message,r.type):(te.isAxiosError(r)&&r.response?.data&&H(r.response.data)?i=r.response.data.message:i=r.message,new n(i,e))}};var E=t=>{if(!t.idToken)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");let r=Z__default.default(t.idToken).passport;if(!r?.imx_eth_address||!r?.imx_stark_address||!r?.imx_user_admin_address)throw new n("User has not been registered with StarkEx","USER_NOT_REGISTERED_ERROR");return {...t,imx:{ethAddress:r.imx_eth_address,starkAddress:r.imx_stark_address,userAdminAddress:r.imx_user_admin_address}}};var b=async t=>R(async()=>{let e=await xClient.generateLegacyStarkPrivateKey(t);return xClient.createStarkSigner(e)},"WALLET_CONNECTION_ERROR");async function k({user:t,starkSigner:e,request:r,exchangesApi:i}){return R(async()=>{let{ethAddress:a}=t.imx,s=r.amount,l=await i.getExchangeSignableTransfer({id:r.transactionID,getSignableTransferRequest:{sender:a,token:toolkit.convertToSignableToken(r),amount:s,receiver:r.receiver}}),o=await e.getAddress(),{payload_hash:m}=l.data,p=await e.signMessage(m),c={sender_stark_key:l.data.sender_stark_key||o,sender_vault_id:l.data.sender_vault_id,receiver_stark_key:l.data.receiver_stark_key,receiver_vault_id:l.data.receiver_vault_id,asset_id:l.data.asset_id,amount:l.data.amount,nonce:l.data.nonce,expiration_timestamp:l.data.expiration_timestamp,stark_signature:p},u={Authorization:`Bearer ${t.accessToken}`},d=await i.createExchangeTransfer({id:r.transactionID,createTransferRequest:c},{headers:u});return {sent_signature:d?.data.sent_signature,status:d?.data.status?.toString(),time:d?.data.time,transfer_id:d?.data.transfer_id}},"EXCHANGE_TRANSFER_ERROR")}var w="ERC721";async function U({starkSigner:t,user:e,request:r,ordersApi:i,guardianClient:a}){return R(async()=>{let{ethAddress:s}=e.imx,l=r.sell.type===w?"1":r.sell.amount,o=r.buy.type===w?"1":r.buy.amount,m={Authorization:`Bearer ${e.accessToken}`},p={user:s,amount_buy:o,token_buy:toolkit.convertToSignableToken(r.buy),amount_sell:l,token_sell:toolkit.convertToSignableToken(r.sell),fees:r.fees,split_fees:!0,expiration_timestamp:r.expiration_timestamp},c=await i.getSignableOrder({getSignableOrderRequestV3:p},{headers:m});await a.evaluateTransaction(c.data.payload_hash);let{payload_hash:u}=c.data,d=await t.signMessage(u),g=c.data,T={createOrderRequest:{include_fees:!0,fees:r.fees,stark_signature:d,amount_buy:g.amount_buy,amount_sell:g.amount_sell,asset_id_buy:g.asset_id_buy,asset_id_sell:g.asset_id_sell,expiration_timestamp:g.expiration_timestamp,nonce:g.nonce,stark_key:g.stark_key,vault_id_buy:g.vault_id_buy,vault_id_sell:g.vault_id_sell}};return {...(await i.createOrderV3(T,{headers:m})).data}},"CREATE_ORDER_ERROR")}async function L({user:t,starkSigner:e,request:r,ordersApi:i,guardianClient:a}){return R(async()=>{let s={order_id:r.order_id},l={Authorization:`Bearer ${t.accessToken}`},o=await i.getSignableCancelOrderV3({getSignableCancelOrderRequest:s},{headers:l});await a.evaluateTransaction(o.data.payload_hash);let{payload_hash:m}=o.data,p=await e.signMessage(m),c=await i.cancelOrderV3({id:r.order_id.toString(),cancelOrderRequest:{order_id:r.order_id,stark_signature:p}},{headers:l});return {order_id:c.data.order_id,status:c.data.status}},"CANCEL_ORDER_ERROR")}async function P({ethSigner:t,starkSigner:e,imxApiClients:r},i){return R(async()=>{let[a,s]=await Promise.all([t.getAddress(),e.getAddress()]),l=await r.usersApi.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:s}}),{signable_message:o,payload_hash:m}=l.data,[p,c]=await Promise.all([toolkit.signRaw(o,t),e.signMessage(m)]);return (await r.usersApi.registerPassportUserV2({authorization:`Bearer ${i}`,registerPassportUserRequest:{eth_signature:p,ether_key:a,stark_signature:c,stark_key:s}})).data},"USER_REGISTRATION_ERROR")}async function N({request:t,tradesApi:e,user:r,starkSigner:i,guardianClient:a}){return R(async()=>{let{ethAddress:s}=r.imx,l={expiration_timestamp:t.expiration_timestamp,fees:t.fees,order_id:t.order_id,user:s},o={Authorization:`Bearer ${r.accessToken}`},m=await e.getSignableTrade({getSignableTradeRequest:l},{headers:o});await a.evaluateTransaction(m.data.payload_hash);let{payload_hash:p}=m.data,c=await i.signMessage(p),{data:u}=m,d={createTradeRequest:{include_fees:!0,fees:t?.fees,stark_signature:c,order_id:t?.order_id,fee_info:u.fee_info,amount_buy:u.amount_buy,amount_sell:u.amount_sell,asset_id_buy:u.asset_id_buy,asset_id_sell:u.asset_id_sell,expiration_timestamp:u.expiration_timestamp,nonce:u.nonce,stark_key:u.stark_key,vault_id_buy:u.vault_id_buy,vault_id_sell:u.vault_id_sell}},{data:g}=await e.createTradeV3(d,{headers:o});return g},"CREATE_TRADE_ERROR")}var G="ERC721";async function M({request:t,transfersApi:e,starkSigner:r,user:i,guardianClient:a}){return R(async()=>{let s=t.type===G?"1":t.amount,l={sender:i.imx.ethAddress,token:toolkit.convertToSignableToken(t),amount:s,receiver:t.receiver},o={Authorization:`Bearer ${i.accessToken}`},m=await e.getSignableTransferV1({getSignableTransferRequest:l},{headers:o});await a.evaluateTransaction(m.data.payload_hash);let p=m.data,{payload_hash:c}=p,u=await r.signMessage(c),d=await r.getAddress(),T={createTransferRequest:{sender_stark_key:p.sender_stark_key||d,sender_vault_id:p.sender_vault_id,receiver_stark_key:p.receiver_stark_key,receiver_vault_id:p.receiver_vault_id,asset_id:p.asset_id,amount:p.amount,nonce:p.nonce,expiration_timestamp:p.expiration_timestamp,stark_signature:u}},{data:_}=await e.createTransferV1(T,{headers:o});return {sent_signature:_.sent_signature,status:_.status?.toString(),time:_.time,transfer_id:_.transfer_id}},"TRANSFER_ERROR")}async function B({user:t,starkSigner:e,request:r,transfersApi:i,guardianClient:a}){return R(async()=>{let{ethAddress:s}=t.imx,l=r.map(d=>({amount:"1",token:toolkit.convertToSignableToken({type:G,tokenId:d.tokenId,tokenAddress:d.tokenAddress}),receiver:d.receiver})),o={Authorization:`Bearer ${t.accessToken}`},m=await i.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:s,signable_requests:l}},{headers:o});await a.evaluateTransaction(m.data.signable_responses[0]?.payload_hash);let p=await Promise.all(m.data.signable_responses.map(async d=>{let g=await e.signMessage(d.payload_hash);return {sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:g}})),c={sender_stark_key:m.data.sender_stark_key,requests:p};return {transfer_ids:(await i.createTransfer({createTransferRequestV2:c},{headers:o}))?.data.transfer_ids}},"TRANSFER_ERROR")}async function W(t){await wallet.retryWithDelay(async()=>{let e=await t.forceUserRefresh();if(!e)return Promise.reject(new Error("user wallet addresses not exist"));try{return E(e),e}catch{return Promise.reject(new Error("user wallet addresses not exist"))}});}async function O(t,e,r,i,a){return R(async()=>{try{let s=await P({ethSigner:t,starkSigner:e,imxApiClients:a},r.accessToken);return await W(i),s}catch(s){if(te__default.default.isAxiosError(s)&&s.response?.status===409)return await W(i),{tx_hash:""};throw s}},"USER_REGISTRATION_ERROR")}var h=async(t,e,r=!0,i=!0)=>{let a=metrics.trackFlow("passport",e,r);try{return await t(a)}catch(s){throw s instanceof Error?metrics.trackError("passport",e,s,{flowId:a.details.flowId}):a.addEvent("errored"),s}finally{i&&a.addEvent("End");}};var C=class{auth;immutableXClient;guardianClient;imxApiClients;magicTEESigner;imxGuardianClient;starkSigner;signerInitialisationError;constructor({auth:e,immutableXClient:r,passportEventEmitter:i,magicTEESigner:a,imxApiClients:s,guardianClient:l,imxGuardianClient:o}){this.auth=e,this.immutableXClient=r,this.magicTEESigner=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=o,this.#i(),i.on(auth.AuthEvents.LOGGED_OUT,this.handleLogout);}handleLogout=()=>{this.starkSigner=void 0;};#i(){this.starkSigner=new Promise(async e=>{try{e(await b(this.magicTEESigner));}catch(r){this.signerInitialisationError=r,e(void 0);}});}async#r(){let e=await this.auth.getUser();if(!e||!this.starkSigner)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");return e}async#t(){let e=await this.starkSigner;if(typeof e>"u")throw typeof this.signerInitialisationError<"u"?this.signerInitialisationError:new Error("Signers failed to initialise");return e}async#e(){let[e,r]=await Promise.all([this.#r(),this.#t()]);return {user:E(e),starkSigner:r}}async transfer(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return M({request:e,user:r,starkSigner:i,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxTransfer")}async registerOffchain(){return h(async()=>{let[e,r]=await Promise.all([this.#r(),this.#t()]);return await O(this.magicTEESigner,r,E(e),this.auth,this.imxApiClients)},"imxRegisterOffchain")}async isRegisteredOffchain(){return h(async()=>{try{let e=await this.#r();return !!E(e).imx}catch(e){if(e instanceof n&&e.type==="USER_NOT_REGISTERED_ERROR")return !1;throw e}},"imxIsRegisteredOffchain")}isRegisteredOnchain(){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async createOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return U({request:e,user:r,starkSigner:i,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCreateOrder")}async cancelOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return L({request:e,user:r,starkSigner:i,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCancelOrder")}async createTrade(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return N({request:e,user:r,starkSigner:i,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.imxGuardianClient})})(),"imxCreateTrade")}async batchNftTransfer(e){return h(()=>this.guardianClient.withConfirmationScreenTask({width:480,height:784})(async()=>{let{user:r,starkSigner:i}=await this.#e();return B({request:e,user:r,starkSigner:i,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxBatchNftTransfer")}async exchangeTransfer(e){return h(async()=>{let{user:r,starkSigner:i}=await this.#e();return k({request:e,user:r,starkSigner:i,exchangesApi:this.immutableXClient.exchangeApi})},"imxExchangeTransfer")}deposit(e){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}prepareWithdrawal(e){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}completeWithdrawal(e,r){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async getAddress(){return h(async()=>{let e=await this.#r(),r=E(e);return Promise.resolve(r.imx.ethAddress)},"imxGetAddress")}};var y=class{auth;immutableXClient;magicTEESigner;passportEventEmitter;imxApiClients;guardianClient;imxGuardianClient;constructor({auth:e,immutableXClient:r,magicTEESigner:i,passportEventEmitter:a,imxApiClients:s,guardianClient:l,imxGuardianClient:o}){this.auth=e,this.immutableXClient=r,this.magicTEESigner=i,this.passportEventEmitter=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=o;}async getProvider(){let e=await this.auth.getUserOrLogin();return this.createProviderInstance(e)}async getProviderSilent(){let e=await this.auth.getUser();return e?this.createProviderInstance(e):null}async createProviderInstance(e){if(!e.idToken)throw new n("Failed to initialise","WALLET_CONNECTION_ERROR");return new C({auth:this.auth,immutableXClient:this.immutableXClient,passportEventEmitter:this.passportEventEmitter,magicTEESigner:this.magicTEESigner,imxApiClients:this.imxApiClients,guardianClient:this.guardianClient,imxGuardianClient:this.imxGuardianClient})}};var F=(t,e,r)=>{let i=e.map(a=>!t[a]&&a).filter(a=>a).join(", ");if(i!==""){let a=r?`${r} - ${i} cannot be null`:`${i} cannot be null`;throw new n(a,"INVALID_CONFIGURATION")}},x=class{authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:i,jsonRpcReferrer:a,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...o}){if(F(o,["clientId","redirectUri"]),this.oidcConfiguration=o,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=a,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)F(r,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.imxPublicApiDomain=r.imxPublicApiDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:generatedClients.createConfig({basePath:r.indexerMrBasePath}),orderBook:generatedClients.createConfig({basePath:r.orderBookMrBasePath}),passport:generatedClients.createConfig({basePath:r.passportMrBasePath})};else switch(e.environment){case config.Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=generatedClients.multiRollupConfig.getProduction();break}case config.Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=generatedClients.multiRollupConfig.getSandbox();break}}}};var pe="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",A=class{auth;guardianApi;confirmationScreen;crossSdkBridgeEnabled;constructor({auth:e,guardianApi:r,confirmationScreen:i,crossSdkBridgeEnabled:a=!1}){this.auth=e,this.guardianApi=r,this.confirmationScreen=i,this.crossSdkBridgeEnabled=a;}async evaluateTransaction(e){let r=await this.auth.getUser();if(!r)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");let i=E(r),a={Authorization:`Bearer ${i.accessToken}`};try{if(!(await wallet.retryWithDelay(async()=>this.guardianApi.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:a}),{finallyFn:()=>{this.confirmationScreen.closeWindow();}})).data.id)throw new n("Transaction does not exist","TRANSFER_ERROR");let o=await this.guardianApi.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:a}),{confirmationRequired:m}=o.data;if(m){if(this.crossSdkBridgeEnabled)throw new n(pe,"TRANSACTION_REJECTED");if(!(await this.confirmationScreen.requestConfirmation(e,i.imx.ethAddress,generatedClients.mr.TransactionApprovalRequestChainTypeEnum.Starkex)).confirmed)throw new n("Transaction rejected by user","TRANSACTION_REJECTED")}else this.confirmationScreen.closeWindow();}catch(s){throw te__default.default.isAxiosError(s)&&s.response?.status===403?new n("Service unavailable","SERVICE_UNAVAILABLE_ERROR"):s}}};var Oe=t=>t.overrides?generatedClients.createConfig({basePath:t.overrides.imxPublicApiDomain}):t.baseConfig.environment===config.Environment.SANDBOX?generatedClients.imxApiConfig.getSandbox():generatedClients.imxApiConfig.getProduction(),Ie=t=>{if(t.overrides?.imxApiClients)return t.overrides.imxApiClients;let e=Oe(t);return new generatedClients.ImxApiClients(e)},Se=t=>{let e=new x(t),r=new auth.Auth({...t,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled,popupOverlayOptions:t.popupOverlayOptions,passportDomain:e.passportDomain}),i=r.getConfig(),a=new wallet.ConfirmationScreen(i),s=new wallet.WalletConfiguration({passportDomain:e.passportDomain,zkEvmRpcUrl:e.zkEvmRpcUrl,relayerUrl:e.relayerUrl,indexerMrBasePath:e.multiRollupConfig.indexer.basePath||e.passportDomain,jsonRpcReferrer:t.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:t.forceScwDeployBeforeMessageSignature,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled}),l=new generatedClients.MultiRollupApiClients(e.multiRollupConfig),o=t.overrides?t.overrides.immutableXClient:new xClient.IMXClient({baseConfig:t.baseConfig}),m=new wallet.GuardianClient({config:s,auth:r,guardianApi:l.guardianApi,authConfig:i}),p=new A({auth:r,guardianApi:l.guardianApi,confirmationScreen:a,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled||!1}),c=new generatedClients.MagicTeeApiClients({basePath:e.magicTeeBasePath,timeout:e.magicTeeTimeout,magicPublishableApiKey:e.magicPublishableApiKey,magicProviderId:e.magicProviderId}),u=new wallet.MagicTEESigner(r,c),d=Ie(t),g=new y({auth:r,immutableXClient:o,magicTEESigner:u,passportEventEmitter:r.eventEmitter,imxApiClients:d,guardianClient:m,imxGuardianClient:p});return {passportConfig:e,auth:r,passportImxProviderFactory:g,environment:t.baseConfig.environment,walletConfig:s}},S=class{auth;passportImxProviderFactory;multiRollupApiClients;environment;passportConfig;constructor(e){let r=Se(e);this.auth=r.auth,this.passportImxProviderFactory=r.passportImxProviderFactory,this.passportConfig=r.passportConfig,this.multiRollupApiClients=new generatedClients.MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=r.environment,metrics.setPassportClientId(e.clientId);}async connectImxSilent(){return h(()=>this.passportImxProviderFactory.getProviderSilent(),"connectImxSilent",!1)}async connectImx(){return h(()=>this.passportImxProviderFactory.getProvider(),"connectImx",!1)}async connectEvm(e={announceProvider:!0}){return h(async()=>{let r=this.passportConfig.overrides,i;return r?.zkEvmChainId?i={chainId:r.zkEvmChainId,name:r.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:r.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===config.Environment.PRODUCTION?i={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:i={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await wallet.connectWallet({auth:this.auth,chains:[i],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:"IMX",announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let r=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,i=await this.auth.login(r);return i?i.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return (await this.auth.getUser())?.profile}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,r){return this.auth.loginWithPKCEFlow(e,r)}async loginWithPKCEFlowCallback(e,r){return (await this.auth.loginWithPKCEFlowCallback(e,r)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return h(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let r={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:r})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let r=a=>typeof a=="object"&&a!==null&&"code"in a&&"message"in a,i=metrics.trackFlow("passport","linkExternalWallet",!1);try{let a=await this.auth.getUser();if(!a)throw new n("User is not logged in","NOT_LOGGED_IN_ERROR");let s=auth.isUserZkEvm(a);if(!(()=>{try{return E(a),!0}catch(c){if(c instanceof n&&c.type==="USER_NOT_REGISTERED_ERROR")return !1;throw c}})()&&!s)throw new n("User has not been registered","USER_NOT_REGISTERED_ERROR");let o={Authorization:`Bearer ${a.accessToken}`},m={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:m},{headers:o})).data}}catch(a){if(a instanceof Error?metrics.trackError("passport","linkExternalWallet",a):i.addEvent("errored"),te.isAxiosError(a)&&a.response){if(a.response.data&&r(a.response.data)){let{code:l,message:o}=a.response.data;switch(l){case"ALREADY_LINKED":throw new n(o,"LINK_WALLET_ALREADY_LINKED_ERROR");case"MAX_WALLETS_LINKED":throw new n(o,"LINK_WALLET_MAX_WALLETS_LINKED_ERROR");case"DUPLICATE_NONCE":throw new n(o,"LINK_WALLET_DUPLICATE_NONCE_ERROR");case"VALIDATION_ERROR":throw new n(o,"LINK_WALLET_VALIDATION_ERROR");default:throw new n(o,"LINK_WALLET_GENERIC_ERROR")}}else if(a.response.status)throw new n(`Link wallet request failed with status code ${a.response.status}`,"LINK_WALLET_GENERIC_ERROR")}let s="Link wallet request failed";throw a instanceof Error&&(s+=`: ${a.message}`),new n(s,"LINK_WALLET_GENERIC_ERROR")}finally{i.addEvent("End");}}};var $=(r=>(r.OptedIn="opted_in",r.Unsubscribed="unsubscribed",r))($||{});
19
19
 
20
20
  Object.defineProperty(exports, "JsonRpcError", {
21
21
  enumerable: true,
@@ -35,4 +35,4 @@ Object.defineProperty(exports, "RpcErrorCode", {
35
35
  });
36
36
  exports.MarketingConsentStatus = $;
37
37
  exports.Passport = S;
38
- exports.PassportError = o;
38
+ exports.PassportError = n;
@@ -9,6 +9,6 @@ export { JsonRpcError, ProviderErrorCode, ProviderEvent, RpcErrorCode } from '@i
9
9
  import Z from 'jwt-decode';
10
10
  import { convertToSignableToken, signRaw } from '@imtbl/toolkit';
11
11
 
12
- function H(i){return "code"in i&&"message"in i}var o=class extends Error{type;constructor(e,r){super(e),this.type=r;}},R=async(i,e)=>{try{return await i()}catch(r){let t;throw r instanceof o&&r.type==="SERVICE_UNAVAILABLE_ERROR"?new o(r.message,r.type):(isAxiosError(r)&&r.response?.data&&H(r.response.data)?t=r.response.data.message:t=r.message,new o(t,e))}};var E=i=>{if(!i.idToken)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");let r=Z(i.idToken).passport;if(!r?.imx_eth_address||!r?.imx_stark_address||!r?.imx_user_admin_address)throw new o("User has not been registered with StarkEx","USER_NOT_REGISTERED_ERROR");return {...i,imx:{ethAddress:r.imx_eth_address,starkAddress:r.imx_stark_address,userAdminAddress:r.imx_user_admin_address}}};var b=async i=>R(async()=>{let e=await generateLegacyStarkPrivateKey(i);return createStarkSigner(e)},"WALLET_CONNECTION_ERROR");async function k({user:i,starkSigner:e,request:r,exchangesApi:t}){return R(async()=>{let{ethAddress:a}=i.imx,s=r.amount,l=await t.getExchangeSignableTransfer({id:r.transactionID,getSignableTransferRequest:{sender:a,token:convertToSignableToken(r),amount:s,receiver:r.receiver}}),n=await e.getAddress(),{payload_hash:m}=l.data,p=await e.signMessage(m),c={sender_stark_key:l.data.sender_stark_key||n,sender_vault_id:l.data.sender_vault_id,receiver_stark_key:l.data.receiver_stark_key,receiver_vault_id:l.data.receiver_vault_id,asset_id:l.data.asset_id,amount:l.data.amount,nonce:l.data.nonce,expiration_timestamp:l.data.expiration_timestamp,stark_signature:p},u={Authorization:`Bearer ${i.accessToken}`},d=await t.createExchangeTransfer({id:r.transactionID,createTransferRequest:c},{headers:u});return {sent_signature:d?.data.sent_signature,status:d?.data.status?.toString(),time:d?.data.time,transfer_id:d?.data.transfer_id}},"EXCHANGE_TRANSFER_ERROR")}var w="ERC721";async function U({starkSigner:i,user:e,request:r,ordersApi:t,guardianClient:a}){return R(async()=>{let{ethAddress:s}=e.imx,l=r.sell.type===w?"1":r.sell.amount,n=r.buy.type===w?"1":r.buy.amount,m={Authorization:`Bearer ${e.accessToken}`},p={user:s,amount_buy:n,token_buy:convertToSignableToken(r.buy),amount_sell:l,token_sell:convertToSignableToken(r.sell),fees:r.fees,split_fees:!0,expiration_timestamp:r.expiration_timestamp},c=await t.getSignableOrder({getSignableOrderRequestV3:p},{headers:m});await a.evaluateTransaction(c.data.payload_hash);let{payload_hash:u}=c.data,d=await i.signMessage(u),g=c.data,_={createOrderRequest:{include_fees:!0,fees:r.fees,stark_signature:d,amount_buy:g.amount_buy,amount_sell:g.amount_sell,asset_id_buy:g.asset_id_buy,asset_id_sell:g.asset_id_sell,expiration_timestamp:g.expiration_timestamp,nonce:g.nonce,stark_key:g.stark_key,vault_id_buy:g.vault_id_buy,vault_id_sell:g.vault_id_sell}};return {...(await t.createOrderV3(_,{headers:m})).data}},"CREATE_ORDER_ERROR")}async function L({user:i,starkSigner:e,request:r,ordersApi:t,guardianClient:a}){return R(async()=>{let s={order_id:r.order_id},l={Authorization:`Bearer ${i.accessToken}`},n=await t.getSignableCancelOrderV3({getSignableCancelOrderRequest:s},{headers:l});await a.evaluateTransaction(n.data.payload_hash);let{payload_hash:m}=n.data,p=await e.signMessage(m),c=await t.cancelOrderV3({id:r.order_id.toString(),cancelOrderRequest:{order_id:r.order_id,stark_signature:p}},{headers:l});return {order_id:c.data.order_id,status:c.data.status}},"CANCEL_ORDER_ERROR")}async function P({ethSigner:i,starkSigner:e,imxApiClients:r},t){return R(async()=>{let[a,s]=await Promise.all([i.getAddress(),e.getAddress()]),l=await r.usersApi.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:s}}),{signable_message:n,payload_hash:m}=l.data,[p,c]=await Promise.all([signRaw(n,i),e.signMessage(m)]);return (await r.usersApi.registerPassportUserV2({authorization:`Bearer ${t}`,registerPassportUserRequest:{eth_signature:p,ether_key:a,stark_signature:c,stark_key:s}})).data},"USER_REGISTRATION_ERROR")}async function N({request:i,tradesApi:e,user:r,starkSigner:t,guardianClient:a}){return R(async()=>{let{ethAddress:s}=r.imx,l={expiration_timestamp:i.expiration_timestamp,fees:i.fees,order_id:i.order_id,user:s},n={Authorization:`Bearer ${r.accessToken}`},m=await e.getSignableTrade({getSignableTradeRequest:l},{headers:n});await a.evaluateTransaction(m.data.payload_hash);let{payload_hash:p}=m.data,c=await t.signMessage(p),{data:u}=m,d={createTradeRequest:{include_fees:!0,fees:i?.fees,stark_signature:c,order_id:i?.order_id,fee_info:u.fee_info,amount_buy:u.amount_buy,amount_sell:u.amount_sell,asset_id_buy:u.asset_id_buy,asset_id_sell:u.asset_id_sell,expiration_timestamp:u.expiration_timestamp,nonce:u.nonce,stark_key:u.stark_key,vault_id_buy:u.vault_id_buy,vault_id_sell:u.vault_id_sell}},{data:g}=await e.createTradeV3(d,{headers:n});return g},"CREATE_TRADE_ERROR")}var M="ERC721";async function G({request:i,transfersApi:e,starkSigner:r,user:t,guardianClient:a}){return R(async()=>{let s=i.type===M?"1":i.amount,l={sender:t.imx.ethAddress,token:convertToSignableToken(i),amount:s,receiver:i.receiver},n={Authorization:`Bearer ${t.accessToken}`},m=await e.getSignableTransferV1({getSignableTransferRequest:l},{headers:n});await a.evaluateTransaction(m.data.payload_hash);let p=m.data,{payload_hash:c}=p,u=await r.signMessage(c),d=await r.getAddress(),_={createTransferRequest:{sender_stark_key:p.sender_stark_key||d,sender_vault_id:p.sender_vault_id,receiver_stark_key:p.receiver_stark_key,receiver_vault_id:p.receiver_vault_id,asset_id:p.asset_id,amount:p.amount,nonce:p.nonce,expiration_timestamp:p.expiration_timestamp,stark_signature:u}},{data:C}=await e.createTransferV1(_,{headers:n});return {sent_signature:C.sent_signature,status:C.status?.toString(),time:C.time,transfer_id:C.transfer_id}},"TRANSFER_ERROR")}async function B({user:i,starkSigner:e,request:r,transfersApi:t,guardianClient:a}){return R(async()=>{let{ethAddress:s}=i.imx,l=r.map(d=>({amount:"1",token:convertToSignableToken({type:M,tokenId:d.tokenId,tokenAddress:d.tokenAddress}),receiver:d.receiver})),n={Authorization:`Bearer ${i.accessToken}`},m=await t.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:s,signable_requests:l}},{headers:n});await a.evaluateTransaction(m.data.signable_responses[0]?.payload_hash);let p=await Promise.all(m.data.signable_responses.map(async d=>{let g=await e.signMessage(d.payload_hash);return {sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:g}})),c={sender_stark_key:m.data.sender_stark_key,requests:p};return {transfer_ids:(await t.createTransfer({createTransferRequestV2:c},{headers:n}))?.data.transfer_ids}},"TRANSFER_ERROR")}async function W(i){await retryWithDelay(async()=>{let e=await i.forceUserRefresh();if(!e)return Promise.reject(new Error("user wallet addresses not exist"));try{return E(e),e}catch{return Promise.reject(new Error("user wallet addresses not exist"))}});}async function O(i,e,r,t,a){return R(async()=>{try{let s=await P({ethSigner:i,starkSigner:e,imxApiClients:a},r.accessToken);return await W(t),s}catch(s){if(te.isAxiosError(s)&&s.response?.status===409)return await W(t),{tx_hash:""};throw s}},"USER_REGISTRATION_ERROR")}var h=async(i,e,r=!0,t=!0)=>{let a=trackFlow("passport",e,r);try{return await i(a)}catch(s){throw s instanceof Error?trackError("passport",e,s,{flowId:a.details.flowId}):a.addEvent("errored"),s}finally{t&&a.addEvent("End");}};var y=class{authManager;immutableXClient;guardianClient;imxApiClients;magicTEESigner;imxGuardianClient;starkSigner;signerInitialisationError;constructor({authManager:e,immutableXClient:r,passportEventEmitter:t,magicTEESigner:a,imxApiClients:s,guardianClient:l,imxGuardianClient:n}){this.authManager=e,this.immutableXClient=r,this.magicTEESigner=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=n,this.#i(),t.on(AuthEvents.LOGGED_OUT,this.handleLogout);}handleLogout=()=>{this.starkSigner=void 0;};#i(){this.starkSigner=new Promise(async e=>{try{e(await b(this.magicTEESigner));}catch(r){this.signerInitialisationError=r,e(void 0);}});}async#r(){let e=await this.authManager.getUser();if(!e||!this.starkSigner)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");return e}async#t(){let e=await this.starkSigner;if(typeof e>"u")throw typeof this.signerInitialisationError<"u"?this.signerInitialisationError:new Error("Signers failed to initialise");return e}async#e(){let[e,r]=await Promise.all([this.#r(),this.#t()]);return {user:E(e),starkSigner:r}}async transfer(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return G({request:e,user:r,starkSigner:t,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxTransfer")}async registerOffchain(){return h(async()=>{let[e,r]=await Promise.all([this.#r(),this.#t()]);return await O(this.magicTEESigner,r,E(e),this.authManager,this.imxApiClients)},"imxRegisterOffchain")}async isRegisteredOffchain(){return h(async()=>{try{let e=await this.#r();return !!E(e).imx}catch(e){if(e instanceof o&&e.type==="USER_NOT_REGISTERED_ERROR")return !1;throw e}},"imxIsRegisteredOffchain")}isRegisteredOnchain(){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async createOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return U({request:e,user:r,starkSigner:t,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCreateOrder")}async cancelOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return L({request:e,user:r,starkSigner:t,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCancelOrder")}async createTrade(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:t}=await this.#e();return N({request:e,user:r,starkSigner:t,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.imxGuardianClient})})(),"imxCreateTrade")}async batchNftTransfer(e){return h(()=>this.guardianClient.withConfirmationScreenTask({width:480,height:784})(async()=>{let{user:r,starkSigner:t}=await this.#e();return B({request:e,user:r,starkSigner:t,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxBatchNftTransfer")}async exchangeTransfer(e){return h(async()=>{let{user:r,starkSigner:t}=await this.#e();return k({request:e,user:r,starkSigner:t,exchangesApi:this.immutableXClient.exchangeApi})},"imxExchangeTransfer")}deposit(e){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}prepareWithdrawal(e){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}completeWithdrawal(e,r){throw new o("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async getAddress(){return h(async()=>{let e=await this.#r(),r=E(e);return Promise.resolve(r.imx.ethAddress)},"imxGetAddress")}};var A=class{authManager;immutableXClient;magicTEESigner;passportEventEmitter;imxApiClients;guardianClient;imxGuardianClient;constructor({authManager:e,immutableXClient:r,magicTEESigner:t,passportEventEmitter:a,imxApiClients:s,guardianClient:l,imxGuardianClient:n}){this.authManager=e,this.immutableXClient=r,this.magicTEESigner=t,this.passportEventEmitter=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=n;}async getProvider(){let e=await this.authManager.getUserOrLogin();return this.createProviderInstance(e)}async getProviderSilent(){let e=await this.authManager.getUser();return e?this.createProviderInstance(e):null}async createProviderInstance(e){if(!e.idToken)throw new o("Failed to initialise","WALLET_CONNECTION_ERROR");return new y({authManager:this.authManager,immutableXClient:this.immutableXClient,passportEventEmitter:this.passportEventEmitter,magicTEESigner:this.magicTEESigner,imxApiClients:this.imxApiClients,guardianClient:this.guardianClient,imxGuardianClient:this.imxGuardianClient})}};var F=(i,e,r)=>{let t=e.map(a=>!i[a]&&a).filter(a=>a).join(", ");if(t!==""){let a=r?`${r} - ${t} cannot be null`:`${t} cannot be null`;throw new o(a,"INVALID_CONFIGURATION")}},x=class{authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:t,jsonRpcReferrer:a,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...n}){if(F(n,["clientId","redirectUri"]),this.oidcConfiguration=n,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=t||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=a,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)F(r,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.imxPublicApiDomain=r.imxPublicApiDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:createConfig({basePath:r.indexerMrBasePath}),orderBook:createConfig({basePath:r.orderBookMrBasePath}),passport:createConfig({basePath:r.passportMrBasePath})};else switch(e.environment){case Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getProduction();break}case Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getSandbox();break}}}};var pe="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",T=class{authManager;guardianApi;confirmationScreen;crossSdkBridgeEnabled;constructor({authManager:e,guardianApi:r,confirmationScreen:t,crossSdkBridgeEnabled:a=!1}){this.authManager=e,this.guardianApi=r,this.confirmationScreen=t,this.crossSdkBridgeEnabled=a;}async evaluateTransaction(e){let r=await this.authManager.getUser();if(!r)throw new o("User has been logged out","NOT_LOGGED_IN_ERROR");let t=E(r),a={Authorization:`Bearer ${t.accessToken}`};try{if(!(await retryWithDelay(async()=>this.guardianApi.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:a}),{finallyFn:()=>{this.confirmationScreen.closeWindow();}})).data.id)throw new o("Transaction does not exist","TRANSFER_ERROR");let n=await this.guardianApi.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:a}),{confirmationRequired:m}=n.data;if(m){if(this.crossSdkBridgeEnabled)throw new o(pe,"TRANSACTION_REJECTED");if(!(await this.confirmationScreen.requestConfirmation(e,t.imx.ethAddress,mr.TransactionApprovalRequestChainTypeEnum.Starkex)).confirmed)throw new o("Transaction rejected by user","TRANSACTION_REJECTED")}else this.confirmationScreen.closeWindow();}catch(s){throw te.isAxiosError(s)&&s.response?.status===403?new o("Service unavailable","SERVICE_UNAVAILABLE_ERROR"):s}}};var Oe=i=>i.overrides?createConfig({basePath:i.overrides.imxPublicApiDomain}):i.baseConfig.environment===Environment.SANDBOX?imxApiConfig.getSandbox():imxApiConfig.getProduction(),Ie=i=>{if(i.overrides?.imxApiClients)return i.overrides.imxApiClients;let e=Oe(i);return new ImxApiClients(e)},Se=i=>{let e=new x(i),r=new Auth({...i,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled,popupOverlayOptions:i.popupOverlayOptions,passportDomain:e.passportDomain}),t=r.getAuthManager(),a=r.getConfig(),s=new ConfirmationScreen(a),l=new WalletConfiguration({passportDomain:e.passportDomain,zkEvmRpcUrl:e.zkEvmRpcUrl,relayerUrl:e.relayerUrl,indexerMrBasePath:e.multiRollupConfig.indexer.basePath||e.passportDomain,jsonRpcReferrer:i.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:i.forceScwDeployBeforeMessageSignature,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled}),n=new MultiRollupApiClients(e.multiRollupConfig),m=i.overrides?i.overrides.immutableXClient:new IMXClient({baseConfig:i.baseConfig}),p=new GuardianClient({config:l,authManager:t,guardianApi:n.guardianApi,authConfig:a}),c=new T({authManager:t,guardianApi:n.guardianApi,confirmationScreen:s,crossSdkBridgeEnabled:i.crossSdkBridgeEnabled||!1}),u=new MagicTeeApiClients({basePath:e.magicTeeBasePath,timeout:e.magicTeeTimeout,magicPublishableApiKey:e.magicPublishableApiKey,magicProviderId:e.magicProviderId}),d=new MagicTEESigner(t,u),g=Ie(i),_=new A({authManager:t,immutableXClient:m,magicTEESigner:d,passportEventEmitter:r.eventEmitter,imxApiClients:g,guardianClient:p,imxGuardianClient:c});return {passportConfig:e,auth:r,passportImxProviderFactory:_,environment:i.baseConfig.environment,walletConfig:l}},S=class{auth;passportImxProviderFactory;multiRollupApiClients;environment;passportConfig;constructor(e){let r=Se(e);this.auth=r.auth,this.passportImxProviderFactory=r.passportImxProviderFactory,this.passportConfig=r.passportConfig,this.multiRollupApiClients=new MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=r.environment,setPassportClientId(e.clientId);}async connectImxSilent(){return h(()=>this.passportImxProviderFactory.getProviderSilent(),"connectImxSilent",!1)}async connectImx(){return h(()=>this.passportImxProviderFactory.getProvider(),"connectImx",!1)}async connectEvm(e={announceProvider:!0}){return h(async()=>{let r=this.passportConfig.overrides,t;return r?.zkEvmChainId?t={chainId:r.zkEvmChainId,name:r.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:r.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===Environment.PRODUCTION?t={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:t={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await connectWallet({auth:this.auth,chains:[t],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let r=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,t=await this.auth.login(r);return t?t.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return (await this.auth.getUser())?.profile}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,r){return this.auth.loginWithPKCEFlow(e,r)}async loginWithPKCEFlowCallback(e,r){return (await this.auth.loginWithPKCEFlowCallback(e,r)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return h(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let r={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:r})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let r=a=>typeof a=="object"&&a!==null&&"code"in a&&"message"in a,t=trackFlow("passport","linkExternalWallet",!1);try{let a=await this.auth.getUser();if(!a)throw new o("User is not logged in","NOT_LOGGED_IN_ERROR");let s=isUserZkEvm(a);if(!(()=>{try{return E(a),!0}catch(c){if(c instanceof o&&c.type==="USER_NOT_REGISTERED_ERROR")return !1;throw c}})()&&!s)throw new o("User has not been registered","USER_NOT_REGISTERED_ERROR");let n={Authorization:`Bearer ${a.accessToken}`},m={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:m},{headers:n})).data}}catch(a){if(a instanceof Error?trackError("passport","linkExternalWallet",a):t.addEvent("errored"),isAxiosError(a)&&a.response){if(a.response.data&&r(a.response.data)){let{code:l,message:n}=a.response.data;switch(l){case"ALREADY_LINKED":throw new o(n,"LINK_WALLET_ALREADY_LINKED_ERROR");case"MAX_WALLETS_LINKED":throw new o(n,"LINK_WALLET_MAX_WALLETS_LINKED_ERROR");case"DUPLICATE_NONCE":throw new o(n,"LINK_WALLET_DUPLICATE_NONCE_ERROR");case"VALIDATION_ERROR":throw new o(n,"LINK_WALLET_VALIDATION_ERROR");default:throw new o(n,"LINK_WALLET_GENERIC_ERROR")}}else if(a.response.status)throw new o(`Link wallet request failed with status code ${a.response.status}`,"LINK_WALLET_GENERIC_ERROR")}let s="Link wallet request failed";throw a instanceof Error&&(s+=`: ${a.message}`),new o(s,"LINK_WALLET_GENERIC_ERROR")}finally{t.addEvent("End");}}};var $=(r=>(r.OptedIn="opted_in",r.Unsubscribed="unsubscribed",r))($||{});
12
+ function H(t){return "code"in t&&"message"in t}var n=class extends Error{type;constructor(e,r){super(e),this.type=r;}},R=async(t,e)=>{try{return await t()}catch(r){let i;throw r instanceof n&&r.type==="SERVICE_UNAVAILABLE_ERROR"?new n(r.message,r.type):(isAxiosError(r)&&r.response?.data&&H(r.response.data)?i=r.response.data.message:i=r.message,new n(i,e))}};var E=t=>{if(!t.idToken)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");let r=Z(t.idToken).passport;if(!r?.imx_eth_address||!r?.imx_stark_address||!r?.imx_user_admin_address)throw new n("User has not been registered with StarkEx","USER_NOT_REGISTERED_ERROR");return {...t,imx:{ethAddress:r.imx_eth_address,starkAddress:r.imx_stark_address,userAdminAddress:r.imx_user_admin_address}}};var b=async t=>R(async()=>{let e=await generateLegacyStarkPrivateKey(t);return createStarkSigner(e)},"WALLET_CONNECTION_ERROR");async function k({user:t,starkSigner:e,request:r,exchangesApi:i}){return R(async()=>{let{ethAddress:a}=t.imx,s=r.amount,l=await i.getExchangeSignableTransfer({id:r.transactionID,getSignableTransferRequest:{sender:a,token:convertToSignableToken(r),amount:s,receiver:r.receiver}}),o=await e.getAddress(),{payload_hash:m}=l.data,p=await e.signMessage(m),c={sender_stark_key:l.data.sender_stark_key||o,sender_vault_id:l.data.sender_vault_id,receiver_stark_key:l.data.receiver_stark_key,receiver_vault_id:l.data.receiver_vault_id,asset_id:l.data.asset_id,amount:l.data.amount,nonce:l.data.nonce,expiration_timestamp:l.data.expiration_timestamp,stark_signature:p},u={Authorization:`Bearer ${t.accessToken}`},d=await i.createExchangeTransfer({id:r.transactionID,createTransferRequest:c},{headers:u});return {sent_signature:d?.data.sent_signature,status:d?.data.status?.toString(),time:d?.data.time,transfer_id:d?.data.transfer_id}},"EXCHANGE_TRANSFER_ERROR")}var w="ERC721";async function U({starkSigner:t,user:e,request:r,ordersApi:i,guardianClient:a}){return R(async()=>{let{ethAddress:s}=e.imx,l=r.sell.type===w?"1":r.sell.amount,o=r.buy.type===w?"1":r.buy.amount,m={Authorization:`Bearer ${e.accessToken}`},p={user:s,amount_buy:o,token_buy:convertToSignableToken(r.buy),amount_sell:l,token_sell:convertToSignableToken(r.sell),fees:r.fees,split_fees:!0,expiration_timestamp:r.expiration_timestamp},c=await i.getSignableOrder({getSignableOrderRequestV3:p},{headers:m});await a.evaluateTransaction(c.data.payload_hash);let{payload_hash:u}=c.data,d=await t.signMessage(u),g=c.data,T={createOrderRequest:{include_fees:!0,fees:r.fees,stark_signature:d,amount_buy:g.amount_buy,amount_sell:g.amount_sell,asset_id_buy:g.asset_id_buy,asset_id_sell:g.asset_id_sell,expiration_timestamp:g.expiration_timestamp,nonce:g.nonce,stark_key:g.stark_key,vault_id_buy:g.vault_id_buy,vault_id_sell:g.vault_id_sell}};return {...(await i.createOrderV3(T,{headers:m})).data}},"CREATE_ORDER_ERROR")}async function L({user:t,starkSigner:e,request:r,ordersApi:i,guardianClient:a}){return R(async()=>{let s={order_id:r.order_id},l={Authorization:`Bearer ${t.accessToken}`},o=await i.getSignableCancelOrderV3({getSignableCancelOrderRequest:s},{headers:l});await a.evaluateTransaction(o.data.payload_hash);let{payload_hash:m}=o.data,p=await e.signMessage(m),c=await i.cancelOrderV3({id:r.order_id.toString(),cancelOrderRequest:{order_id:r.order_id,stark_signature:p}},{headers:l});return {order_id:c.data.order_id,status:c.data.status}},"CANCEL_ORDER_ERROR")}async function P({ethSigner:t,starkSigner:e,imxApiClients:r},i){return R(async()=>{let[a,s]=await Promise.all([t.getAddress(),e.getAddress()]),l=await r.usersApi.getSignableRegistrationOffchain({getSignableRegistrationRequest:{ether_key:a,stark_key:s}}),{signable_message:o,payload_hash:m}=l.data,[p,c]=await Promise.all([signRaw(o,t),e.signMessage(m)]);return (await r.usersApi.registerPassportUserV2({authorization:`Bearer ${i}`,registerPassportUserRequest:{eth_signature:p,ether_key:a,stark_signature:c,stark_key:s}})).data},"USER_REGISTRATION_ERROR")}async function N({request:t,tradesApi:e,user:r,starkSigner:i,guardianClient:a}){return R(async()=>{let{ethAddress:s}=r.imx,l={expiration_timestamp:t.expiration_timestamp,fees:t.fees,order_id:t.order_id,user:s},o={Authorization:`Bearer ${r.accessToken}`},m=await e.getSignableTrade({getSignableTradeRequest:l},{headers:o});await a.evaluateTransaction(m.data.payload_hash);let{payload_hash:p}=m.data,c=await i.signMessage(p),{data:u}=m,d={createTradeRequest:{include_fees:!0,fees:t?.fees,stark_signature:c,order_id:t?.order_id,fee_info:u.fee_info,amount_buy:u.amount_buy,amount_sell:u.amount_sell,asset_id_buy:u.asset_id_buy,asset_id_sell:u.asset_id_sell,expiration_timestamp:u.expiration_timestamp,nonce:u.nonce,stark_key:u.stark_key,vault_id_buy:u.vault_id_buy,vault_id_sell:u.vault_id_sell}},{data:g}=await e.createTradeV3(d,{headers:o});return g},"CREATE_TRADE_ERROR")}var G="ERC721";async function M({request:t,transfersApi:e,starkSigner:r,user:i,guardianClient:a}){return R(async()=>{let s=t.type===G?"1":t.amount,l={sender:i.imx.ethAddress,token:convertToSignableToken(t),amount:s,receiver:t.receiver},o={Authorization:`Bearer ${i.accessToken}`},m=await e.getSignableTransferV1({getSignableTransferRequest:l},{headers:o});await a.evaluateTransaction(m.data.payload_hash);let p=m.data,{payload_hash:c}=p,u=await r.signMessage(c),d=await r.getAddress(),T={createTransferRequest:{sender_stark_key:p.sender_stark_key||d,sender_vault_id:p.sender_vault_id,receiver_stark_key:p.receiver_stark_key,receiver_vault_id:p.receiver_vault_id,asset_id:p.asset_id,amount:p.amount,nonce:p.nonce,expiration_timestamp:p.expiration_timestamp,stark_signature:u}},{data:_}=await e.createTransferV1(T,{headers:o});return {sent_signature:_.sent_signature,status:_.status?.toString(),time:_.time,transfer_id:_.transfer_id}},"TRANSFER_ERROR")}async function B({user:t,starkSigner:e,request:r,transfersApi:i,guardianClient:a}){return R(async()=>{let{ethAddress:s}=t.imx,l=r.map(d=>({amount:"1",token:convertToSignableToken({type:G,tokenId:d.tokenId,tokenAddress:d.tokenAddress}),receiver:d.receiver})),o={Authorization:`Bearer ${t.accessToken}`},m=await i.getSignableTransfer({getSignableTransferRequestV2:{sender_ether_key:s,signable_requests:l}},{headers:o});await a.evaluateTransaction(m.data.signable_responses[0]?.payload_hash);let p=await Promise.all(m.data.signable_responses.map(async d=>{let g=await e.signMessage(d.payload_hash);return {sender_vault_id:d.sender_vault_id,receiver_stark_key:d.receiver_stark_key,receiver_vault_id:d.receiver_vault_id,asset_id:d.asset_id,amount:d.amount,nonce:d.nonce,expiration_timestamp:d.expiration_timestamp,stark_signature:g}})),c={sender_stark_key:m.data.sender_stark_key,requests:p};return {transfer_ids:(await i.createTransfer({createTransferRequestV2:c},{headers:o}))?.data.transfer_ids}},"TRANSFER_ERROR")}async function W(t){await retryWithDelay(async()=>{let e=await t.forceUserRefresh();if(!e)return Promise.reject(new Error("user wallet addresses not exist"));try{return E(e),e}catch{return Promise.reject(new Error("user wallet addresses not exist"))}});}async function O(t,e,r,i,a){return R(async()=>{try{let s=await P({ethSigner:t,starkSigner:e,imxApiClients:a},r.accessToken);return await W(i),s}catch(s){if(te.isAxiosError(s)&&s.response?.status===409)return await W(i),{tx_hash:""};throw s}},"USER_REGISTRATION_ERROR")}var h=async(t,e,r=!0,i=!0)=>{let a=trackFlow("passport",e,r);try{return await t(a)}catch(s){throw s instanceof Error?trackError("passport",e,s,{flowId:a.details.flowId}):a.addEvent("errored"),s}finally{i&&a.addEvent("End");}};var C=class{auth;immutableXClient;guardianClient;imxApiClients;magicTEESigner;imxGuardianClient;starkSigner;signerInitialisationError;constructor({auth:e,immutableXClient:r,passportEventEmitter:i,magicTEESigner:a,imxApiClients:s,guardianClient:l,imxGuardianClient:o}){this.auth=e,this.immutableXClient=r,this.magicTEESigner=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=o,this.#i(),i.on(AuthEvents.LOGGED_OUT,this.handleLogout);}handleLogout=()=>{this.starkSigner=void 0;};#i(){this.starkSigner=new Promise(async e=>{try{e(await b(this.magicTEESigner));}catch(r){this.signerInitialisationError=r,e(void 0);}});}async#r(){let e=await this.auth.getUser();if(!e||!this.starkSigner)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");return e}async#t(){let e=await this.starkSigner;if(typeof e>"u")throw typeof this.signerInitialisationError<"u"?this.signerInitialisationError:new Error("Signers failed to initialise");return e}async#e(){let[e,r]=await Promise.all([this.#r(),this.#t()]);return {user:E(e),starkSigner:r}}async transfer(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return M({request:e,user:r,starkSigner:i,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxTransfer")}async registerOffchain(){return h(async()=>{let[e,r]=await Promise.all([this.#r(),this.#t()]);return await O(this.magicTEESigner,r,E(e),this.auth,this.imxApiClients)},"imxRegisterOffchain")}async isRegisteredOffchain(){return h(async()=>{try{let e=await this.#r();return !!E(e).imx}catch(e){if(e instanceof n&&e.type==="USER_NOT_REGISTERED_ERROR")return !1;throw e}},"imxIsRegisteredOffchain")}isRegisteredOnchain(){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async createOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return U({request:e,user:r,starkSigner:i,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCreateOrder")}async cancelOrder(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return L({request:e,user:r,starkSigner:i,ordersApi:this.immutableXClient.ordersApi,guardianClient:this.imxGuardianClient})})(),"imxCancelOrder")}async createTrade(e){return h(()=>this.guardianClient.withDefaultConfirmationScreenTask(async()=>{let{user:r,starkSigner:i}=await this.#e();return N({request:e,user:r,starkSigner:i,tradesApi:this.immutableXClient.tradesApi,guardianClient:this.imxGuardianClient})})(),"imxCreateTrade")}async batchNftTransfer(e){return h(()=>this.guardianClient.withConfirmationScreenTask({width:480,height:784})(async()=>{let{user:r,starkSigner:i}=await this.#e();return B({request:e,user:r,starkSigner:i,transfersApi:this.immutableXClient.transfersApi,guardianClient:this.imxGuardianClient})})(),"imxBatchNftTransfer")}async exchangeTransfer(e){return h(async()=>{let{user:r,starkSigner:i}=await this.#e();return k({request:e,user:r,starkSigner:i,exchangesApi:this.immutableXClient.exchangeApi})},"imxExchangeTransfer")}deposit(e){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}prepareWithdrawal(e){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}completeWithdrawal(e,r){throw new n("Operation not supported","OPERATION_NOT_SUPPORTED_ERROR")}async getAddress(){return h(async()=>{let e=await this.#r(),r=E(e);return Promise.resolve(r.imx.ethAddress)},"imxGetAddress")}};var y=class{auth;immutableXClient;magicTEESigner;passportEventEmitter;imxApiClients;guardianClient;imxGuardianClient;constructor({auth:e,immutableXClient:r,magicTEESigner:i,passportEventEmitter:a,imxApiClients:s,guardianClient:l,imxGuardianClient:o}){this.auth=e,this.immutableXClient=r,this.magicTEESigner=i,this.passportEventEmitter=a,this.imxApiClients=s,this.guardianClient=l,this.imxGuardianClient=o;}async getProvider(){let e=await this.auth.getUserOrLogin();return this.createProviderInstance(e)}async getProviderSilent(){let e=await this.auth.getUser();return e?this.createProviderInstance(e):null}async createProviderInstance(e){if(!e.idToken)throw new n("Failed to initialise","WALLET_CONNECTION_ERROR");return new C({auth:this.auth,immutableXClient:this.immutableXClient,passportEventEmitter:this.passportEventEmitter,magicTEESigner:this.magicTEESigner,imxApiClients:this.imxApiClients,guardianClient:this.guardianClient,imxGuardianClient:this.imxGuardianClient})}};var F=(t,e,r)=>{let i=e.map(a=>!t[a]&&a).filter(a=>a).join(", ");if(i!==""){let a=r?`${r} - ${i} cannot be null`:`${i} cannot be null`;throw new n(a,"INVALID_CONFIGURATION")}},x=class{authenticationDomain;passportDomain;imxPublicApiDomain;magicPublishableApiKey;magicProviderId;magicTeeBasePath="https://tee.express.magiclabs.com";magicTeeTimeout=1e4;oidcConfiguration;baseConfig;zkEvmRpcUrl;relayerUrl;multiRollupConfig;crossSdkBridgeEnabled;forceScwDeployBeforeMessageSignature;jsonRpcReferrer;popupOverlayOptions;overrides;constructor({baseConfig:e,overrides:r,crossSdkBridgeEnabled:i,jsonRpcReferrer:a,forceScwDeployBeforeMessageSignature:s,popupOverlayOptions:l,...o}){if(F(o,["clientId","redirectUri"]),this.oidcConfiguration=o,this.baseConfig=e,this.overrides=r,this.crossSdkBridgeEnabled=i||!1,this.forceScwDeployBeforeMessageSignature=s||!1,this.jsonRpcReferrer=a,this.popupOverlayOptions=l||{disableGenericPopupOverlay:!1,disableBlockedPopupOverlay:!1,disableHeadlessLoginPromptOverlay:!1},r)F(r,["authenticationDomain","passportDomain","magicPublishableApiKey","magicProviderId","zkEvmRpcUrl","relayerUrl","imxPublicApiDomain","indexerMrBasePath","orderBookMrBasePath","passportMrBasePath"],"overrides"),this.authenticationDomain=r.authenticationDomain,this.passportDomain=r.passportDomain,this.imxPublicApiDomain=r.imxPublicApiDomain,this.magicPublishableApiKey=r.magicPublishableApiKey,this.magicProviderId=r.magicProviderId,this.zkEvmRpcUrl=r.zkEvmRpcUrl,this.relayerUrl=r.relayerUrl,this.multiRollupConfig={indexer:createConfig({basePath:r.indexerMrBasePath}),orderBook:createConfig({basePath:r.orderBookMrBasePath}),passport:createConfig({basePath:r.passportMrBasePath})};else switch(e.environment){case Environment.PRODUCTION:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.immutable.com",this.imxPublicApiDomain="https://api.immutable.com",this.zkEvmRpcUrl="https://rpc.immutable.com",this.relayerUrl="https://api.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getProduction();break}case Environment.SANDBOX:default:{this.authenticationDomain="https://auth.immutable.com",this.magicPublishableApiKey="pk_live_10F423798A540ED7",this.magicProviderId="aa80b860-8869-4f13-9000-6a6ad3d20017",this.passportDomain="https://passport.sandbox.immutable.com",this.imxPublicApiDomain="https://api.sandbox.immutable.com",this.zkEvmRpcUrl="https://rpc.testnet.immutable.com",this.relayerUrl="https://api.sandbox.immutable.com/relayer-mr",this.multiRollupConfig=multiRollupConfig.getSandbox();break}}}};var pe="Transaction requires confirmation but this functionality is not supported in this environment. Please contact Immutable support if you need to enable this feature.",A=class{auth;guardianApi;confirmationScreen;crossSdkBridgeEnabled;constructor({auth:e,guardianApi:r,confirmationScreen:i,crossSdkBridgeEnabled:a=!1}){this.auth=e,this.guardianApi=r,this.confirmationScreen=i,this.crossSdkBridgeEnabled=a;}async evaluateTransaction(e){let r=await this.auth.getUser();if(!r)throw new n("User has been logged out","NOT_LOGGED_IN_ERROR");let i=E(r),a={Authorization:`Bearer ${i.accessToken}`};try{if(!(await retryWithDelay(async()=>this.guardianApi.getTransactionByID({transactionID:e,chainType:"starkex"},{headers:a}),{finallyFn:()=>{this.confirmationScreen.closeWindow();}})).data.id)throw new n("Transaction does not exist","TRANSFER_ERROR");let o=await this.guardianApi.evaluateTransaction({id:e,transactionEvaluationRequest:{chainType:"starkex"}},{headers:a}),{confirmationRequired:m}=o.data;if(m){if(this.crossSdkBridgeEnabled)throw new n(pe,"TRANSACTION_REJECTED");if(!(await this.confirmationScreen.requestConfirmation(e,i.imx.ethAddress,mr.TransactionApprovalRequestChainTypeEnum.Starkex)).confirmed)throw new n("Transaction rejected by user","TRANSACTION_REJECTED")}else this.confirmationScreen.closeWindow();}catch(s){throw te.isAxiosError(s)&&s.response?.status===403?new n("Service unavailable","SERVICE_UNAVAILABLE_ERROR"):s}}};var Oe=t=>t.overrides?createConfig({basePath:t.overrides.imxPublicApiDomain}):t.baseConfig.environment===Environment.SANDBOX?imxApiConfig.getSandbox():imxApiConfig.getProduction(),Ie=t=>{if(t.overrides?.imxApiClients)return t.overrides.imxApiClients;let e=Oe(t);return new ImxApiClients(e)},Se=t=>{let e=new x(t),r=new Auth({...t,authenticationDomain:e.authenticationDomain,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled,popupOverlayOptions:t.popupOverlayOptions,passportDomain:e.passportDomain}),i=r.getConfig(),a=new ConfirmationScreen(i),s=new WalletConfiguration({passportDomain:e.passportDomain,zkEvmRpcUrl:e.zkEvmRpcUrl,relayerUrl:e.relayerUrl,indexerMrBasePath:e.multiRollupConfig.indexer.basePath||e.passportDomain,jsonRpcReferrer:t.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:t.forceScwDeployBeforeMessageSignature,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled}),l=new MultiRollupApiClients(e.multiRollupConfig),o=t.overrides?t.overrides.immutableXClient:new IMXClient({baseConfig:t.baseConfig}),m=new GuardianClient({config:s,auth:r,guardianApi:l.guardianApi,authConfig:i}),p=new A({auth:r,guardianApi:l.guardianApi,confirmationScreen:a,crossSdkBridgeEnabled:t.crossSdkBridgeEnabled||!1}),c=new MagicTeeApiClients({basePath:e.magicTeeBasePath,timeout:e.magicTeeTimeout,magicPublishableApiKey:e.magicPublishableApiKey,magicProviderId:e.magicProviderId}),u=new MagicTEESigner(r,c),d=Ie(t),g=new y({auth:r,immutableXClient:o,magicTEESigner:u,passportEventEmitter:r.eventEmitter,imxApiClients:d,guardianClient:m,imxGuardianClient:p});return {passportConfig:e,auth:r,passportImxProviderFactory:g,environment:t.baseConfig.environment,walletConfig:s}},S=class{auth;passportImxProviderFactory;multiRollupApiClients;environment;passportConfig;constructor(e){let r=Se(e);this.auth=r.auth,this.passportImxProviderFactory=r.passportImxProviderFactory,this.passportConfig=r.passportConfig,this.multiRollupApiClients=new MultiRollupApiClients(this.passportConfig.multiRollupConfig),this.environment=r.environment,setPassportClientId(e.clientId);}async connectImxSilent(){return h(()=>this.passportImxProviderFactory.getProviderSilent(),"connectImxSilent",!1)}async connectImx(){return h(()=>this.passportImxProviderFactory.getProvider(),"connectImx",!1)}async connectEvm(e={announceProvider:!0}){return h(async()=>{let r=this.passportConfig.overrides,i;return r?.zkEvmChainId?i={chainId:r.zkEvmChainId,name:r.zkEvmChainName||"Dev Chain",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:r.magicTeeBasePath||this.passportConfig.magicTeeBasePath}:this.environment===Environment.PRODUCTION?i={chainId:13371,name:"Immutable zkEVM",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath}:i={chainId:13473,name:"Immutable zkEVM Testnet",rpcUrl:this.passportConfig.zkEvmRpcUrl,relayerUrl:this.passportConfig.relayerUrl,apiUrl:this.passportConfig.multiRollupConfig.indexer.basePath||this.passportConfig.passportDomain,passportDomain:this.passportConfig.passportDomain,magicPublishableApiKey:this.passportConfig.magicPublishableApiKey,magicProviderId:this.passportConfig.magicProviderId,magicTeeBasePath:this.passportConfig.magicTeeBasePath},await connectWallet({auth:this.auth,chains:[i],crossSdkBridgeEnabled:this.passportConfig.crossSdkBridgeEnabled,jsonRpcReferrer:this.passportConfig.jsonRpcReferrer,forceScwDeployBeforeMessageSignature:this.passportConfig.forceScwDeployBeforeMessageSignature,passportEventEmitter:this.auth.eventEmitter,feeTokenSymbol:"IMX",announceProvider:e?.announceProvider??!0})},"connectEvm",!1)}async login(e){let r=e?{useCachedSession:e.useCachedSession,useSilentLogin:e.useSilentLogin,useRedirectFlow:e.useRedirectFlow,directLoginOptions:e.directLoginOptions}:void 0,i=await this.auth.login(r);return i?i.profile:null}async loginCallback(){await this.auth.loginCallback();}async logout(){await this.auth.logout();}async getUserInfo(){return (await this.auth.getUser())?.profile}async getIdToken(){return (await this.auth.getUser())?.idToken}async getAccessToken(){return (await this.auth.getUser())?.accessToken}async loginWithPKCEFlow(e,r){return this.auth.loginWithPKCEFlow(e,r)}async loginWithPKCEFlowCallback(e,r){return (await this.auth.loginWithPKCEFlowCallback(e,r)).profile}async storeTokens(e){return (await this.auth.storeTokens(e)).profile}async getLogoutUrl(){return await this.auth.getLogoutUrl()}async logoutSilentCallback(e){return this.auth.logoutSilentCallback(e)}async getLinkedAddresses(){return h(async()=>{let e=await this.auth.getUser();if(!e?.profile.sub)return [];let r={Authorization:`Bearer ${e.accessToken}`};return (await this.multiRollupApiClients.passportProfileApi.getUserInfo({headers:r})).data.linked_addresses},"getLinkedAddresses",!1)}async linkExternalWallet(e){let r=a=>typeof a=="object"&&a!==null&&"code"in a&&"message"in a,i=trackFlow("passport","linkExternalWallet",!1);try{let a=await this.auth.getUser();if(!a)throw new n("User is not logged in","NOT_LOGGED_IN_ERROR");let s=isUserZkEvm(a);if(!(()=>{try{return E(a),!0}catch(c){if(c instanceof n&&c.type==="USER_NOT_REGISTERED_ERROR")return !1;throw c}})()&&!s)throw new n("User has not been registered","USER_NOT_REGISTERED_ERROR");let o={Authorization:`Bearer ${a.accessToken}`},m={type:e.type,wallet_address:e.walletAddress,signature:e.signature,nonce:e.nonce};return {...(await this.multiRollupApiClients.passportProfileApi.linkWalletV2({linkWalletV2Request:m},{headers:o})).data}}catch(a){if(a instanceof Error?trackError("passport","linkExternalWallet",a):i.addEvent("errored"),isAxiosError(a)&&a.response){if(a.response.data&&r(a.response.data)){let{code:l,message:o}=a.response.data;switch(l){case"ALREADY_LINKED":throw new n(o,"LINK_WALLET_ALREADY_LINKED_ERROR");case"MAX_WALLETS_LINKED":throw new n(o,"LINK_WALLET_MAX_WALLETS_LINKED_ERROR");case"DUPLICATE_NONCE":throw new n(o,"LINK_WALLET_DUPLICATE_NONCE_ERROR");case"VALIDATION_ERROR":throw new n(o,"LINK_WALLET_VALIDATION_ERROR");default:throw new n(o,"LINK_WALLET_GENERIC_ERROR")}}else if(a.response.status)throw new n(`Link wallet request failed with status code ${a.response.status}`,"LINK_WALLET_GENERIC_ERROR")}let s="Link wallet request failed";throw a instanceof Error&&(s+=`: ${a.message}`),new n(s,"LINK_WALLET_GENERIC_ERROR")}finally{i.addEvent("End");}}};var $=(r=>(r.OptedIn="opted_in",r.Unsubscribed="unsubscribed",r))($||{});
13
13
 
14
- export { $ as MarketingConsentStatus, S as Passport, o as PassportError };
14
+ export { $ as MarketingConsentStatus, S as Passport, n as PassportError };
@@ -1,18 +1,18 @@
1
- import { AuthManager } from '@imtbl/auth';
1
+ import { Auth } from '@imtbl/auth';
2
2
  import { mr as MultiRollup } from '@imtbl/generated-clients';
3
3
  import { ConfirmationScreen } from '@imtbl/wallet';
4
4
  type ImxGuardianClientParams = {
5
- authManager: AuthManager;
5
+ auth: Auth;
6
6
  guardianApi: MultiRollup.GuardianApi;
7
7
  confirmationScreen: ConfirmationScreen;
8
8
  crossSdkBridgeEnabled?: boolean;
9
9
  };
10
10
  export declare class ImxGuardianClient {
11
- private readonly authManager;
11
+ private readonly auth;
12
12
  private readonly guardianApi;
13
13
  private readonly confirmationScreen;
14
14
  private readonly crossSdkBridgeEnabled;
15
- constructor({ authManager, guardianApi, confirmationScreen, crossSdkBridgeEnabled, }: ImxGuardianClientParams);
15
+ constructor({ auth, guardianApi, confirmationScreen, crossSdkBridgeEnabled, }: ImxGuardianClientParams);
16
16
  evaluateTransaction(payloadHash: string): Promise<void>;
17
17
  }
18
18
  export {};
@@ -2,11 +2,11 @@ import { AnyToken, IMXClient, NftTransferDetails, TokenAmount, UnsignedExchangeT
2
2
  import { IMXProvider } from '@imtbl/x-provider';
3
3
  import { imx, ImxApiClients } from '@imtbl/generated-clients';
4
4
  import { TransactionResponse } from 'ethers';
5
- import { AuthManager, AuthEventMap, TypedEventEmitter } from '@imtbl/auth';
5
+ import { Auth, AuthEventMap, TypedEventEmitter } from '@imtbl/auth';
6
6
  import { GuardianClient, MagicTEESigner } from '@imtbl/wallet';
7
7
  import { ImxGuardianClient } from './imxGuardianClient';
8
8
  export interface PassportImxProviderOptions {
9
- authManager: AuthManager;
9
+ auth: Auth;
10
10
  immutableXClient: IMXClient;
11
11
  passportEventEmitter: TypedEventEmitter<AuthEventMap>;
12
12
  magicTEESigner: MagicTEESigner;
@@ -16,7 +16,7 @@ export interface PassportImxProviderOptions {
16
16
  }
17
17
  export declare class PassportImxProvider implements IMXProvider {
18
18
  #private;
19
- protected readonly authManager: AuthManager;
19
+ protected readonly auth: Auth;
20
20
  private readonly immutableXClient;
21
21
  protected readonly guardianClient: GuardianClient;
22
22
  protected readonly imxApiClients: ImxApiClients;
@@ -30,7 +30,7 @@ export declare class PassportImxProvider implements IMXProvider {
30
30
  */
31
31
  private starkSigner;
32
32
  private signerInitialisationError;
33
- constructor({ authManager, immutableXClient, passportEventEmitter, magicTEESigner, imxApiClients, guardianClient, imxGuardianClient, }: PassportImxProviderOptions);
33
+ constructor({ auth, immutableXClient, passportEventEmitter, magicTEESigner, imxApiClients, guardianClient, imxGuardianClient, }: PassportImxProviderOptions);
34
34
  private handleLogout;
35
35
  transfer(request: UnsignedTransferRequest): Promise<imx.CreateTransferResponseV1>;
36
36
  registerOffchain(): Promise<imx.RegisterUserResponse>;
@@ -1,11 +1,11 @@
1
1
  import { IMXClient } from '@imtbl/x-client';
2
2
  import { IMXProvider } from '@imtbl/x-provider';
3
3
  import { ImxApiClients } from '@imtbl/generated-clients';
4
- import { AuthManager, AuthEventMap, TypedEventEmitter } from '@imtbl/auth';
4
+ import { Auth, AuthEventMap, TypedEventEmitter } from '@imtbl/auth';
5
5
  import { GuardianClient, MagicTEESigner } from '@imtbl/wallet';
6
6
  import { ImxGuardianClient } from './imxGuardianClient';
7
7
  export type PassportImxProviderFactoryInput = {
8
- authManager: AuthManager;
8
+ auth: Auth;
9
9
  immutableXClient: IMXClient;
10
10
  magicTEESigner: MagicTEESigner;
11
11
  passportEventEmitter: TypedEventEmitter<AuthEventMap>;
@@ -14,14 +14,14 @@ export type PassportImxProviderFactoryInput = {
14
14
  imxGuardianClient: ImxGuardianClient;
15
15
  };
16
16
  export declare class PassportImxProviderFactory {
17
- private readonly authManager;
17
+ private readonly auth;
18
18
  private readonly immutableXClient;
19
19
  private readonly magicTEESigner;
20
20
  private readonly passportEventEmitter;
21
21
  readonly imxApiClients: ImxApiClients;
22
22
  private readonly guardianClient;
23
23
  private readonly imxGuardianClient;
24
- constructor({ authManager, immutableXClient, magicTEESigner, passportEventEmitter, imxApiClients, guardianClient, imxGuardianClient, }: PassportImxProviderFactoryInput);
24
+ constructor({ auth, immutableXClient, magicTEESigner, passportEventEmitter, imxApiClients, guardianClient, imxGuardianClient, }: PassportImxProviderFactoryInput);
25
25
  getProvider(): Promise<IMXProvider>;
26
26
  getProviderSilent(): Promise<IMXProvider | null>;
27
27
  private createProviderInstance;
@@ -1,4 +1,4 @@
1
1
  import { ImxApiClients, imx } from '@imtbl/generated-clients';
2
2
  import { EthSigner, StarkSigner } from '@imtbl/x-client';
3
- import { AuthManager, User } from '@imtbl/auth';
4
- export default function registerOffchain(userAdminKeySigner: EthSigner, starkSigner: StarkSigner, unregisteredUser: User, authManager: AuthManager, imxApiClients: ImxApiClients): Promise<imx.RegisterUserResponse>;
3
+ import { Auth, User } from '@imtbl/auth';
4
+ export default function registerOffchain(userAdminKeySigner: EthSigner, starkSigner: StarkSigner, unregisteredUser: User, auth: Auth, imxApiClients: ImxApiClients): Promise<imx.RegisterUserResponse>;
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@imtbl/passport",
3
3
  "description": "Passport module for Immutable SDK",
4
- "version": "2.10.7-alpha.5",
4
+ "version": "2.10.7-alpha.6",
5
5
  "author": "Immutable",
6
6
  "bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
7
7
  "dependencies": {
8
8
  "@0xsequence/abi": "^2.0.25",
9
9
  "@0xsequence/core": "^2.0.25",
10
- "@imtbl/auth": "2.10.7-alpha.5",
11
- "@imtbl/wallet": "2.10.7-alpha.5",
12
- "@imtbl/config": "2.10.7-alpha.5",
13
- "@imtbl/generated-clients": "2.10.7-alpha.5",
14
- "@imtbl/metrics": "2.10.7-alpha.5",
15
- "@imtbl/toolkit": "2.10.7-alpha.5",
16
- "@imtbl/x-client": "2.10.7-alpha.5",
17
- "@imtbl/x-provider": "2.10.7-alpha.5",
10
+ "@imtbl/auth": "2.10.7-alpha.6",
11
+ "@imtbl/wallet": "2.10.7-alpha.6",
12
+ "@imtbl/config": "2.10.7-alpha.6",
13
+ "@imtbl/generated-clients": "2.10.7-alpha.6",
14
+ "@imtbl/metrics": "2.10.7-alpha.6",
15
+ "@imtbl/toolkit": "2.10.7-alpha.6",
16
+ "@imtbl/x-client": "2.10.7-alpha.6",
17
+ "@imtbl/x-provider": "2.10.7-alpha.6",
18
18
  "axios": "^1.6.5",
19
19
  "ethers": "^6.13.4",
20
20
  "jwt-decode": "^3.1.2"