@magic-sdk/provider 33.6.0 → 33.6.1-canary.6b718fc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/es/index.js CHANGED
@@ -2,5 +2,5 @@ var zt=Object.create;var $e=Object.defineProperty;var Yt=Object.getOwnPropertyDe
2
2
  - Extension \`${t.name}\` supports version(s) \`${n}\``:n||(e+=`
3
3
  - Extension \`${t.name}\` does not support ${h.platform} environments.`)}),new O(K.IncompatibleExtensions,e)}function yt(r){let e=t=>{let n=t+1,s=n%10,i=n%100;return s===1&&i!==11?`${n}st`:s===2&&i!==12?`${n}nd`:s===3&&i!==13?`${n}rd`:`${n}th`};return new O(K.InvalidArgument,`Invalid ${e(r.argument)} argument given to \`${r.procedure}\`.
4
4
  Expected: \`${r.expected}\`
5
- Received: \`${r.received}\``)}function Bn(){return new _(he.DuplicateIframe,"Duplicate iframes found.")}function Rt(){return new _(he.SyncWeb3Method,"Non-async web3 methods are deprecated in web3 > 1.0 and are not supported by the Magic web3 provider. Please use an async method instead.")}function vt(){return new _(he.ReactNativeEndpointConfiguration,`CUSTOM DOMAINS ARE NOT SUPPORTED WHEN USING MAGIC SDK WITH REACT NATIVE! The \`endpoint\` parameter SHOULD NOT be provided. The Magic \`<iframe>\` is automatically wrapped by a WebView pointed at \`${h.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function Tt(r){let{method:e,removalVersions:t,useInstead:n}=r,s=t[h.sdkName],i=n?` Use \`${n}\` instead.`:"",o=`\`${e}\` will be removed from \`${h.sdkName}\` in version \`${s}\`.${i}`;return new _(he.DeprecationNotice,o)}import{MagicPayloadMethod as M,DeviceVerificationEventEmit as kt,LoginWithEmailOTPEventEmit as N,UpdateEmailEventEmit as V,RecencyCheckEventEmit as q,LoginWithSmsOTPEventEmit as A}from"@magic-sdk/types";import{MagicOutgoingWindowMessage as fn,MagicIncomingWindowMessage as yn,MagicPayloadMethod as Rn,routeToMagicMethods as vn}from"@magic-sdk/types";import{RPCErrorCode as un}from"@magic-sdk/types";function*zr(){let r=0;for(;;)r<Number.MAX_SAFE_INTEGER?yield++r:r=0}var Yr=zr();function Qr(){return Math.floor(Math.random()*1e5)+1}function _e(){return h.sdkName==="@magic-sdk/react-native-bare"||h.sdkName==="@magic-sdk/react-native-expo"?Qr():Yr.next().value}var Ee={};rr(Ee,{clear:()=>Zr,getItem:()=>v,iterate:()=>ke,key:()=>tn,keys:()=>rn,length:()=>en,removeItem:()=>C,setItem:()=>S});var ge;function k(r){return async(...e)=>(ge||(ge=await h.configureStorage()),await ge.ready(),ge[r](...e))}var v=k("getItem"),S=k("setItem"),C=k("removeItem"),Zr=k("clear"),en=k("length"),tn=k("key"),rn=k("keys"),ke=k("iterate");function Pt(){let r=window.crypto.getRandomValues(new Uint8Array(16));r[6]=r[6]&15|64,r[8]=r[8]&191|128;let e="";return e+=r[0].toString(16),e+=r[1].toString(16),e+=r[2].toString(16),e+=r[3].toString(16),e+="-",e+=r[4].toString(16),e+=r[5].toString(16),e+="-",e+=r[6].toString(16),e+=r[7].toString(16),e+="-",e+=r[8].toString(16),e+=r[9].toString(16),e+="-",e+=r[10].toString(16),e+=r[11].toString(16),e+=r[12].toString(16),e+=r[13].toString(16),e+=r[14].toString(16),e+=r[15].toString(16),e}var qe="STORE_KEY_PRIVATE_KEY",fe="STORE_KEY_PUBLIC_JWK",bt="ECDSA",nn="P-256",sn={name:bt,namedCurve:nn};function ne(){let r=typeof window<"u"&&!!window.crypto,e=r&&!!window.crypto.subtle;return r&&e}function wt(){C(fe),C(qe)}async function St(){let r=await on();if(!r){console.info("unable to creat kee publicy or webcrypto is unsupported");return}let{subtle:e}=window.crypto,t=await v(qe);if(!t||!e){console.info("unable to find private key or webcrypto unsupported");return}let n={iat:Math.floor(new Date().getTime()/1e3),jti:Pt()},i={protected:It(JSON.stringify({typ:"dpop+jwt",alg:"ES256",jwk:r})),claims:It(JSON.stringify(n))},o=cn(`${i.protected}.${i.claims}`),a={name:bt,hash:{name:"SHA-256"}},c=dn(new Uint8Array(await e.sign(a,t,o)));return`${i.protected}.${i.claims}.${c}`}async function on(){if(!ne()){console.info("webcrypto is not supported");return}return await v(fe)||await an(),v(fe)}async function an(){let{subtle:r}=window.crypto,e=await r.generateKey(sn,!1,["sign"]),t=await r.exportKey("jwk",e.publicKey);await S(qe,e.privateKey),await S(fe,t)}function It(r){return Mt(ln(r))}function cn(r){return new TextEncoder().encode(r)}function Mt(r){return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function ln(r){return encodeURIComponent(r).replace(/%([0-9A-F]{2})/g,(t,n)=>String.fromCharCode(parseInt(n,16)))}function dn(r){let e="";return r.forEach(t=>{e+=String.fromCharCode(t)}),Mt(e)}var xt=Symbol("Payload pre-processed by Magic SDK");function Ct(r){return Object.defineProperty(r,xt,{value:!0,enumerable:!1}),r}function pn(r){return!!r[xt]}function U(r){return pn(r)||(r.jsonrpc=r.jsonrpc??"2.0",r.id=_e(),r.method=r.method??"noop",r.params=r.params??[],Ct(r)),r}function p(r,e=[]){return Ct({params:e,method:r,jsonrpc:"2.0",id:_e()})}var j=class r{_jsonrpc;_id;_result;_error;constructor(e){e instanceof r?(this._jsonrpc=e.payload.jsonrpc,this._id=e.payload.id,this._result=e.payload.result,this._error=e.payload.error):ut(e)?(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=e.result,this._error=e.error):(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=void 0,this._error=void 0)}applyError(e){return this._error=e,this}applyResult(e){return this._result=e,this}get hasError(){return this._error?.code===un.DpopInvalidated&&wt(),typeof this._error<"u"&&this._error!==null}get hasResult(){return typeof this._result<"u"}get payload(){return{jsonrpc:this._jsonrpc,id:this._id,result:this._result,error:this._error}}};import{UserEventsEmit as gn,UserEventsOnReceived as En}from"@magic-sdk/types";var $t=sr(At()),We=class extends $t.default{};function Re(){let r=new We;return{emitter:r,createChainingEmitterMethod:(n,s)=>(...i)=>(r[n].apply(r,i),s),createBoundEmitterMethod:n=>(...s)=>r[n].apply(r,s)}}var Lt=Symbol("isPromiEvent");function Ot(r){return!!r[Lt]}function E(r){let e=ie(r),{createBoundEmitterMethod:t,createChainingEmitterMethod:n}=Re(),s=Symbol("Promise.then"),i=Symbol("Promise.catch"),o=Symbol("Promise.finally"),a=(l,u)=>(...b)=>{let w=u[l].apply(u,b);return c(w)},c=l=>Object.assign(l,{[Lt]:!0,[s]:l[s]||l.then,[i]:l[i]||l.catch,[o]:l[o]||l.finally,then:a(s,l),catch:a(i,l),finally:a(o,l),on:n("on",l),once:n("once",l),addListener:n("addListener",l),off:n("off",l),removeListener:n("removeListener",l),removeAllListeners:n("removeAllListeners",l),emit:t("emit"),eventNames:t("eventNames"),listeners:t("listeners"),listenerCount:t("listenerCount")}),d=c(e.then(l=>(d.emit("done",l),d.emit("settled"),l),l=>{throw d.emit("error",l),d.emit("settled"),l}));return d.on(En.ClosedByUser,()=>{d.emit(gn.ClosedByUser)}),d}function ie(r){return new Promise((e,t)=>{let n=r(e,t);Promise.resolve(n).catch(t)})}var f=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){return this.sdk.thirdPartyWallets.isConnected&&!vn.includes(e.method)?this.requestThirdPartyWallets(e):this.requestOverlay(e)}requestThirdPartyWallets(e){return E((n,s)=>{this.sdk.thirdPartyWallets.requestOverride(e).then(n).catch(s)})}requestOverlay(e){let t=this.overlay.post(fn.MAGIC_HANDLE_REQUEST,U(e)),n=E((i,o)=>{t.then(a=>{if(s(),a.hasError)o(new G(a.payload.error));else if(a.hasResult)i(a.payload.result);else throw gt()}).catch(a=>{s(),o(a)})}),s=this.overlay.on(yn.MAGIC_HANDLE_EVENT,i=>{let{response:o}=i.data;if(o.id===e.id&&o.result?.event){let{event:a,params:c=[]}=o.result;n.emit(a,...c)}});return n}createIntermediaryEvent(e,t){return s=>{let i=p(Rn.IntermediaryEvent,[{payloadId:t,eventType:e,args:s}]);this.request(i)}}};function _t(r,e){let[t]=r.split(".").map(Number);return t>=e}var Tn={"magic-sdk":"v18.0.0","@magic-sdk/react-native":"v14.0.0","@magic-sdk/react-native-bare":"v19.0.0","@magic-sdk/react-native-expo":"v19.0.0"},ve=class extends f{loginWithMagicLink(e){let t=h.sdkName==="@magic-sdk/react-native"||h.sdkName==="@magic-sdk/react-native-bare"||h.sdkName==="@magic-sdk/react-native-expo";if(t&&_t(h.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utilize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&Tt({method:"auth.loginWithMagicLink()",removalVersions:Tn,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:n,showUI:s=!0,redirectURI:i,overrides:o,lifespan:a}=e,c=p(this.sdk.testMode?M.LoginWithMagicLinkTestMode:M.LoginWithMagicLink,[{email:n,showUI:s,redirectURI:i,overrides:o,lifespan:a}]);return this.request(c)}loginWithSMS(e){let{phoneNumber:t,showUI:n=!0,lifespan:s}=e,i=p(this.sdk.testMode?M.LoginWithSmsTestMode:M.LoginWithSms,[{phoneNumber:t,showUI:n,lifespan:s}]),o=this.request(i);return!n&&o&&(o.on(A.VerifySmsOtp,a=>{this.createIntermediaryEvent(A.VerifySmsOtp,i.id)(a)}),o.on(A.VerifyMFACode,a=>{this.createIntermediaryEvent(A.VerifyMFACode,i.id)(a)}),o.on(A.LostDevice,()=>{this.createIntermediaryEvent(A.LostDevice,i.id)()}),o.on(A.VerifyRecoveryCode,a=>{this.createIntermediaryEvent(A.VerifyRecoveryCode,i.id)(a)}),o.on(A.Cancel,()=>{this.createIntermediaryEvent(A.Cancel,i.id)()})),o}loginWithEmailOTP(e){let{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}=e,a=p(this.sdk.testMode?M.LoginWithEmailOTPTestMode:M.LoginWithEmailOTP,[{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}]),c=this.request(a);return!s&&c&&c.on(kt.Retry,()=>{this.createIntermediaryEvent(kt.Retry,a.id)()}),!n&&c&&(c.on(N.VerifyEmailOtp,d=>{this.createIntermediaryEvent(N.VerifyEmailOtp,a.id)(d)}),c.on(N.VerifyMFACode,d=>{this.createIntermediaryEvent(N.VerifyMFACode,a.id)(d)}),c.on(N.LostDevice,()=>{this.createIntermediaryEvent(N.LostDevice,a.id)()}),c.on(N.VerifyRecoveryCode,d=>{this.createIntermediaryEvent(N.VerifyRecoveryCode,a.id)(d)}),c.on(N.Cancel,()=>{this.createIntermediaryEvent(N.Cancel,a.id)()})),c}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:n}=e||{},s=t??"";if(!t&&h.platform==="web"){s=window.location.search;let o=window.location.origin+window.location.pathname;window.history.replaceState(null,"",o)}let i=p(this.sdk.testMode?M.LoginWithCredentialTestMode:M.LoginWithCredential,[s,n]);return this.request(i)}setAuthorizationToken(e){let t=p(M.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:n=!0}=e,s=p(this.sdk.testMode?M.UpdateEmailTestMode:M.UpdateEmail,[{email:t,showUI:n}]),i=this.request(s);return n||(i.on(q.Retry,()=>{this.createIntermediaryEvent(q.Retry,s.id)()}),i.on(q.Cancel,()=>{this.createIntermediaryEvent(q.Cancel,s.id)()}),i.on(q.VerifyEmailOtp,o=>{this.createIntermediaryEvent(q.VerifyEmailOtp,s.id)(o)}),i.on(q.VerifyMFACode,o=>{this.createIntermediaryEvent(q.VerifyMFACode,s.id)(o)}),i.on(V.RetryWithNewEmail,o=>{this.createIntermediaryEvent(V.RetryWithNewEmail,s.id)(o)}),i.on(V.Cancel,()=>{this.createIntermediaryEvent(V.Cancel,s.id)()}),i.on(V.VerifyEmailOtp,o=>{this.createIntermediaryEvent(V.VerifyEmailOtp,s.id)(o)})),i}};import{MagicPayloadMethod as y,EnableMFAEventEmit as Pe,DisableMFAEventEmit as B,RecencyCheckEventEmit as Ft,RecoveryFactorEventEmit as D,RecoverAccountEventEmit as W,UpdateEmailEventEmit as H}from"@magic-sdk/types";var Ue="ds",Fe="ek",Je="iv",Ge="AES-GCM",Pn=256;async function Te(){let r=[];await ke((e,t,n)=>{t.startsWith(`${Ue}_`)&&r.push(t)});for(let e of r)await C(e)}function qt(r){let e="",t=new Uint8Array(r),n=t.byteLength;for(let s=0;s<n;s++)e+=String.fromCharCode(t[s]);return window.btoa(e)}function Dt(r){let e=window.atob(r),t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}async function In(){if(!ne()){console.info("webcrypto is not supported");return}let{crypto:r}=window,e=await v(Je);return e||r.getRandomValues(new Uint8Array(12))}async function bn(){if(!ne()){console.info("webcrypto is not supported");return}let{subtle:r}=window.crypto,e=await v(Fe);return e||await r.generateKey({name:Ge,length:Pn},!1,["encrypt","decrypt"])}async function Wt(r,e){let t=await In(),n=await bn();if(!t||!n||!r)return;let s=Dt(r),{subtle:i}=window.crypto,o=await i.encrypt({name:Ge,iv:t},n,s),a=qt(o);await S(`${Ue}_${e}`,a),await S(Fe,n),await S(Je,t)}async function Ut(r){let e=await v(`${Ue}_${r}`),t=await v(Je),n=await v(Fe);if(!t||!e||!n||!ne())return;let{subtle:s}=window.crypto,i=await s.decrypt({name:Ge,iv:t},n,Dt(e));return qt(i)}function Ke(r,e){return e?new URL(r,e):new URL(r)}var Ie=class extends f{getIdToken(e){let t=p(this.sdk.testMode?y.GetIdTokenTestMode:y.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=p(this.sdk.testMode?y.GenerateIdTokenTestMode:y.GenerateIdToken,[e]);return this.request(t)}getInfo(){let e=p(y.GetInfo,[]);return this.request(e)}isLoggedIn(){return E(async(e,t)=>{try{let n=!1;this.sdk.useStorageCache&&(n=await v(this.localForageIsLoggedInKey)==="true",n&&e(!0));let s=p(this.sdk.testMode?y.IsLoggedInTestMode:y.IsLoggedIn),i=await this.request(s);this.sdk.useStorageCache&&(i?S(this.localForageIsLoggedInKey,!0):C(this.localForageIsLoggedInKey),n&&!i&&this.emitUserLoggedOut(!0)),e(i)}catch(n){t(n)}})}logout(){return C(this.localForageIsLoggedInKey),C("rt"),Te(),E(async(e,t)=>{try{let n=p(this.sdk.testMode?y.LogoutTestMode:y.Logout),s=await this.request(n);this.sdk.useStorageCache&&this.emitUserLoggedOut(s),e(s)}catch(n){t(n)}})}requestInfoWithUI(e){let t=p(y.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let{showUI:t=!0}=e||{},n=p(this.sdk.testMode?y.UserSettingsTestMode:y.UserSettings,[e]),s=this.request(n);return!t&&s&&(s.on(D.SendNewPhoneNumber,i=>{this.createIntermediaryEvent(D.SendNewPhoneNumber,n.id)(i)}),s.on(D.SendOtpCode,i=>{this.createIntermediaryEvent(D.SendOtpCode,n.id)(i)}),s.on(D.StartEditPhoneNumber,()=>{this.createIntermediaryEvent(D.StartEditPhoneNumber,n.id)()}),s.on(D.Cancel,()=>{this.createIntermediaryEvent(D.Cancel,n.id)()}),s.on(Ft.VerifyEmailOtp,i=>{this.createIntermediaryEvent(Ft.VerifyEmailOtp,n.id)(i)})),s}recoverAccount(e){let{email:t,showUI:n}=e,s=p(this.sdk.testMode?y.RecoverAccountTestMode:y.RecoverAccount,[{email:t,showUI:n}]),i=this.request(s);return!n&&i&&(i.on(W.Cancel,()=>{this.createIntermediaryEvent(W.Cancel,s.id)()}),i.on(W.ResendSms,()=>{this.createIntermediaryEvent(W.ResendSms,s.id)()}),i.on(W.VerifyOtp,o=>{this.createIntermediaryEvent(W.VerifyOtp,s.id)(o)}),i.on(W.UpdateEmail,o=>{this.createIntermediaryEvent(W.UpdateEmail,s.id)(o)}),i.on(H.Cancel,()=>{this.createIntermediaryEvent(H.Cancel,s.id)()}),i.on(H.RetryWithNewEmail,o=>{this.createIntermediaryEvent(H.RetryWithNewEmail,s.id)(o)}),i.on(H.VerifyEmailOtp,o=>{this.createIntermediaryEvent(H.VerifyEmailOtp,s.id)(o)})),i}revealEVMPrivateKey(){let e=p(y.RevealPK,[{chain:"ETH"}]);return this.request(e)}revealPrivateKey(){throw new Error("revealPrivateKey() has been decommissioned. For EVM chains, use `user.revealEVMPrivateKey()` instead. For non-EVM chains, use `[extension].revealPrivateKey()` instead.")}onUserLoggedOut(e){this.userLoggedOutCallbacks.push(e)}enableMFA(e){let{showUI:t=!0}=e,n=p(y.EnableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(Pe.VerifyMFACode,i=>{this.createIntermediaryEvent(Pe.VerifyMFACode,n.id)(i)}),s.on(Pe.Cancel,()=>{this.createIntermediaryEvent(Pe.Cancel,n.id)()})),s}disableMFA(e){let{showUI:t=!0}=e,n=p(y.DisableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(B.VerifyMFACode,i=>{this.createIntermediaryEvent(B.VerifyMFACode,n.id)(i)}),s.on(B.LostDevice,i=>{this.createIntermediaryEvent(B.LostDevice,n.id)(i)}),s.on(B.Cancel,()=>{this.createIntermediaryEvent(B.Cancel,n.id)()})),s}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}localForageIsLoggedInKey="magic_auth_is_logged_in";userLoggedOutCallbacks=[]};import{MagicPayloadMethod as L}from"@magic-sdk/types";var be=class extends f{connectWithUI(e){let t=E(async(n,s)=>{try{let i=p(L.Login,[{enabledWallets:this.sdk.thirdPartyWallets.enabledWallets,...e}]),o=this.request(i);this.sdk.thirdPartyWallets.eventListeners.forEach(({event:c,callback:d})=>{o.on(c,()=>d(i.id))}),o.on("id-token-created",c=>{t.emit("id-token-created",c)});let a=await o;a.error&&s(a),n(a)}catch(i){s(i)}});return t}showUI(e){return this.request(p(L.ShowUI,[e]))}showAddress(){return this.request(p(L.ShowAddress))}showSendTokensUI(){return this.request(p(L.ShowSendTokensUI))}showOnRamp(){return this.request(p(L.ShowOnRamp))}showNFTs(){return this.request(p(L.ShowNFTs))}showBalances(){return this.request(p(L.ShowBalances))}sign7702Authorization(e){return this.request(p(L.Sign7702Authorization,[e]))}send7702Transaction(e){return this.request(p(L.Send7702Transaction,[e]))}};import{LocalStorageKeys as F,MagicPayloadMethod as we}from"@magic-sdk/types";var Se=class extends f{eventListeners=[];enabledWallets={};isConnected=!1;resetThirdPartyWalletState(){localStorage.removeItem(F.PROVIDER),localStorage.removeItem(F.ADDRESS),localStorage.removeItem(F.CHAIN_ID),this.isConnected=!1}requestOverride(e){if(e.method===we.Login)return this.resetThirdPartyWalletState(),super.request(e);if(e.method===we.GetInfo)return this.getInfo(e);if(e.method===we.IsLoggedIn)return this.isLoggedIn(e);if(e.method===we.Logout)return this.logout(e);switch(localStorage.getItem(F.PROVIDER)){case"web3modal":return this.web3modalRequest(e);case"magic-widget":return this.magicWidgetRequest(e);default:return this.resetThirdPartyWalletState(),super.request(e)}}isLoggedIn(e){switch(localStorage.getItem(F.PROVIDER)){case"web3modal":return this.web3modalIsLoggedIn();case"magic-widget":return super.requestOverlay(e);default:return this.resetThirdPartyWalletState(),super.request(e)}}getInfo(e){switch(localStorage.getItem(F.PROVIDER)){case"web3modal":return this.web3modalGetInfo();case"magic-widget":return super.requestOverlay(e);default:return this.resetThirdPartyWalletState(),super.request(e)}}logout(e){let t=localStorage.getItem(F.PROVIDER);switch(this.resetThirdPartyWalletState(),t){case"web3modal":return this.web3modalLogout();case"magic-widget":return this.magicWidgetLogout(e);default:return super.request(e)}}web3modalRequest(e){return E((t,n)=>{this.sdk.web3modal.modal.getWalletProvider().request(e).then(t).catch(n)})}web3modalIsLoggedIn(){return E(e=>{let t=this.sdk.web3modal.modal.getStatus();if(t==="connected"&&e(!0),t==="disconnected"&&(this.resetThirdPartyWalletState(),e(!1)),t==="reconnecting"){let n=this.sdk.web3modal.modal.subscribeProvider(({status:s})=>{s==="connected"&&(n(),e(!0)),s==="disconnected"&&(n(),this.resetThirdPartyWalletState(),e(!1))})}})}formatWeb3modalGetInfoResponse(){let e=this.sdk.web3modal.modal.getWalletInfo()?.name,t=this.sdk.web3modal.modal.getAddress();return{email:null,issuer:`did:ethr:${t}`,phoneNumber:null,isMfaEnabled:!1,recoveryFactors:[],walletType:e||"web3modal",firstLoginAt:null,wallets:{ethereum:{publicAddress:t,subAccounts:[]}}}}web3modalGetInfo(){return E((e,t)=>{let n=this.sdk.web3modal.modal.getStatus();if(n==="connected"&&e(this.formatWeb3modalGetInfoResponse()),n==="disconnected"&&(this.resetThirdPartyWalletState(),t("Magic RPC Error: [-32603] Internal error: User denied account access.")),n==="reconnecting"){let s=this.sdk.web3modal.modal.subscribeProvider(({status:i})=>{i==="connected"&&(s(),e(this.formatWeb3modalGetInfoResponse())),i==="disconnected"&&(s(),this.resetThirdPartyWalletState(),t("Magic RPC Error: [-32603] Internal error: User denied account access."))})}})}web3modalLogout(){return E(async e=>{try{await this.sdk.web3modal.modal.disconnect()}catch(t){console.error(t)}e(!0)})}magicWidgetRequest(e){return e.method?.startsWith("eth_")||["personal_sign"].includes(e.method)?E((s,i)=>{this.sdk.walletKit.walletRequest(e).then(s).catch(o=>i(new G(o)))}):super.requestOverlay(e)}magicWidgetLogout(e){return E(async t=>{try{this.sdk.walletKit.clearConnectedState()}catch(n){console.error(n)}return super.requestOverlay(e)})}handleIframeThirdPartyWalletRequest(e){this.magicWidgetRequest(e.payload).then(t=>{this.overlay.postThirdPartyWalletResponse({id:e.payload.id,jsonrpc:"2.0",result:t})}).catch(t=>{this.overlay.postThirdPartyWalletResponse({id:e.payload.id,jsonrpc:"2.0",error:{code:t.code||-32603,message:t.message||"Internal error",data:t.data}})})}};import{MagicPayloadMethod as wn}from"@magic-sdk/types";var{createBoundEmitterMethod:Me,createChainingEmitterMethod:X}=Re(),xe=class extends f{isMagic=!0;sendAsync(e,t){if(!t)throw yt({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e)){let s=e.map(i=>U(i)).map(i=>this.request(i).then(o=>({jsonrpc:i.jsonrpc??"2.0",id:i.id??null,result:o,error:null})).catch(o=>({jsonrpc:i.jsonrpc??"2.0",id:i.id??null,error:o})));Promise.all(s).then(i=>{t(null,i)})}else this.request(U(e)).then(n=>{t(null,{jsonrpc:e.jsonrpc??"2.0",id:e.id??null,result:n,error:null})}).catch(n=>{t(n,{jsonrpc:e.jsonrpc??"2.0",id:e.id??null,error:n})})}send(e,t){if(typeof e=="string"){let s=p(e,Array.isArray(t)?t:[]);return this.request(s)}if(Array.isArray(e)||t){this.sendAsync(e,t);return}let n=Rt();return n.log(),new j(e).applyError({code:-32603,message:n.rawMessage}).payload}enable(){let e=p(wn.Login);return this.request(e)}request(e){return this.prefixPayloadMethodForTestMode(e),super.request(e)}prefixPayloadMethodForTestMode(e){let t="testMode/eth/";this.sdk.testMode&&(e.method=`${t}${e.method}`)}on=X("on",this);once=X("once",this);addListener=X("addListener",this);off=X("off",this);removeListener=X("removeListener",this);removeAllListeners=X("removeAllListeners",this);emit=Me("emit");eventNames=Me("eventNames");listeners=Me("listeners");listenerCount=Me("listenerCount")};import{MagicPayloadMethod as je,NftCheckoutIntermediaryEvents as Ce}from"@magic-sdk/types";var Ne=class extends f{purchase(e){let t=p(je.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=this.sdk.thirdPartyWallets.isConnected,n=p(je.NFTCheckout,[{...e,walletProvider:t?"web3modal":"magic"}]),s=this.request(n);return t&&(s.on(Ce.Initiated,async i=>{try{let o=await this.request({method:"eth_sendTransaction",params:[i]});this.createIntermediaryEvent(Ce.Success,n.id)(o)}catch{this.createIntermediaryEvent(Ce.Failure,n.id)()}}),s.on(Ce.Disconnect,()=>{this.sdk.thirdPartyWallets.resetThirdPartyWalletState(),s.emit("disconnect")})),s}transfer(e){let t=p(je.NFTTransfer,[e]);return this.request(t)}};function Jt(r){return r.compat&&r.compat[h.sdkName]!=null?typeof r.compat[h.sdkName]=="string"?ct(lt(h.version),r.compat[h.sdkName]):!!r.compat[h.sdkName]:!0}function Sn(r,e,t){return!e&&!t?`${r}_eth_mainnet`:t?`${r}_${JSON.stringify(t)}`:e?typeof e=="string"?`${r}_eth_${e}`:`${r}_${e.rpcUrl}_${e.chainId}_${e.chainType}`:`${r}_unknown`}function Mn(r){let e=r?.extensions??[],t={},n=[];if(Array.isArray(e)?e.forEach(s=>{Jt(s)?(s.init(this),s.name&&(this[s.name]=s),te(s.config)||(t[s.name]=s.config)):n.push(s)}):Object.keys(e).forEach(s=>{if(Jt(e[s])){e[s].init(this);let i=e[s];this[s]=i,te(i.config)||(t[e[s].name]=i.config)}else n.push(e[s])}),n.length)throw ft(n);return t}var Ve=class r{constructor(e,t){this.apiKey=e;if(!e)throw mt();h.platform==="react-native"&&t?.endpoint&&vt().log();let{defaultEndpoint:n,version:s}=h;this.testMode=!!t?.testMode,this.useStorageCache=!!t?.useStorageCache,this.endpoint=Ke(t?.endpoint??n).origin,this.auth=new ve(this),this.user=new Ie(this),this.wallet=new be(this),this.nft=new Ne(this),this.thirdPartyWallets=new Se(this),this.rpcProvider=new xe(this);let i=Mn.call(this,t);this.parameters=de({API_KEY:this.apiKey,DOMAIN_ORIGIN:typeof window<"u"&&window?.location?window?.location.origin:"",ETH_NETWORK:t?.network,host:Ke(this.endpoint).host,sdk:ht[h.sdkName],version:s,ext:te(i)?void 0:i,locale:t?.locale||"en_US",authConfig:t?.authConfig?{...t.authConfig}:void 0,...h.bundleId?{bundleId:h.bundleId}:{},meta:t?.meta}),this.networkHash=Sn(this.apiKey,t?.network,te(i)?void 0:i),t?.deferPreload||this.preload()}static __overlays__=new Map;endpoint;parameters;networkHash;testMode;useStorageCache;auth;user;wallet;nft;thirdPartyWallets;rpcProvider;get overlay(){if(!r.__overlays__.has(this.parameters)){let e=new h.ViewController(this.endpoint,this.parameters,this.networkHash);e.init(),e.onThirdPartyWalletRequest(t=>this.thirdPartyWallets.handleIframeThirdPartyWalletRequest(t)),r.__overlays__.set(this.parameters,e)}return r.__overlays__.get(this.parameters)}async preload(){await this.overlay.waitForReady()}};import{MagicIncomingWindowMessage as oe,MagicOutgoingWindowMessage as Be,SDKWarningCode as Cn}from"@magic-sdk/types";function xn(r,e){return e&&Array.isArray(r)?r.find(t=>t.id===e):r}function Gt(r,e){let t=e.data.response?.id,n=xn(r,t);if(t&&n){let s=new j(n).applyResult(e.data.response.result).applyError(e.data.response.error);return{id:t,response:s}}return{}}function Kt(r,e){let t=null;return function(...n){t&&clearTimeout(t),t=setTimeout(()=>{r(...n)},e)}}var Nn=1e3,Vt=60*Nn,jt=5*Vt,An=60*Vt,He=class{constructor(e,t,n){this.endpoint=e;this.parameters=t;this.networkHash=n;this.listen()}isReadyForRequest=!1;messageHandlers=new Set;isConnectedToInternet=!0;lastPongTime=null;heartbeatIntervalTimer=null;heartbeatDebounce=Kt(()=>{this.endpoint==="https://auth.magic.link/"&&this.heartBeatCheck()},An);thirdPartyWalletRequestHandler=()=>{};async post(e,t){return ie(async(n,s)=>{if(!this.isConnectedToInternet){let l=me();s(l)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let i=[],o=Array.isArray(t)?t.map(l=>l.id):[],a=await this.createMagicRequest(`${e}-${this.parameters}`,t,this.networkHash);await this._post(a);let c=l=>u=>{let{id:b,response:w}=Gt(t,u);if(this.persistMagicEventRefreshToken(u),w?.payload.error?.message==="User denied account access.")Te();else if(u.data.deviceShare){let{deviceShare:Xt}=u.data;Wt(Xt,this.networkHash)}b&&w&&Array.isArray(t)&&o.includes(b)?(i.push(w),i.length===t.length&&(l(),n(i))):b&&w&&!Array.isArray(t)&&b===t.id&&(l(),n(w))},d=this.on(oe.MAGIC_HANDLE_RESPONSE,c(()=>d()))})}async postThirdPartyWalletResponse(e){return ie(async(t,n)=>{if(!this.isConnectedToInternet){let i=me();n(i)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let s={msgType:`${Be.MAGIC_THIRD_PARTY_WALLET_RESPONSE}-${this.parameters}`,response:e};await this._post(s),t()})}async postThirdPartyWalletUpdate(e){return ie(async(t,n)=>{if(!this.isConnectedToInternet){let o=me();n(o)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let s=JSON.parse(JSON.stringify(e,(o,a)=>typeof a=="function"?void 0:a)),i={msgType:`${Be.MAGIC_THIRD_PARTY_WALLET_UPDATE}-${this.parameters}`,details:s};await this._post(i),t()})}on(e,t){let n=t.bind(window),s=i=>{i.data.msgType===`${e}-${this.parameters}`&&n(i)};return this.messageHandlers.add(s),()=>this.messageHandlers.delete(s)}waitForReady(){return new Promise(e=>{let t=this.on(oe.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()})})}onThirdPartyWalletRequest(e){this.thirdPartyWalletRequestHandler=e}listen(){this.on(oe.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(oe.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(oe.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new _(Cn.ProductAnnouncement,e.data.response.result.product_announcement).log()})}heartBeatCheck(){let e=!0,t=async()=>{let n={msgType:`${Be.MAGIC_PING}-${this.parameters}`,payload:[]};await this._post(n)};this.heartbeatIntervalTimer=setInterval(async()=>{if(this.lastPongTime){if(Date.now()-this.lastPongTime>jt*2){this.reloadRelayer(),e=!0;return}}else if(!e){this.reloadRelayer(),e=!0;return}await t(),e=!1},jt)}stopHeartBeat(){this.heartbeatDebounce(),this.lastPongTime=null,this.heartbeatIntervalTimer&&(clearInterval(this.heartbeatIntervalTimer),this.heartbeatIntervalTimer=null)}async persistMagicEventRefreshToken(e){e.data.rt&&await S("rt",e.data.rt)}async createMagicRequest(e,t,n){let s={msgType:e,payload:t},i=await this.getRT(),o=await this.getJWT(),a=await this.getDecryptedDeviceShare(n);return o&&(s.jwt=o),o&&i&&(s.rt=i),a&&(s.deviceShare=a),s}async getJWT(){if(h.platform==="web")try{let e=await v("jwt");return e||await St()}catch(e){return console.error("webcrypto error",e),null}else return null}async getRT(){return await v("rt")}async getDecryptedDeviceShare(e){return await Ut(e)}};import{MagicPayloadMethod as Bt}from"@magic-sdk/types";var Ht=["request","overlay","sdk"];function $n(r){let e=Object.getPrototypeOf(r),t=[e];for(;e&&e!==f.prototype;)e=Object.getPrototypeOf(e),t.push(e);return t}var Xe=class extends f{compat;__sdk_access_field_descriptors__=new Map;__is_initialized__=!1;utils={createPromiEvent:E,isPromiEvent:Ot,encodeJSON:de,decodeJSON:dt,createJsonRpcRequestPayload:p,standardizeJsonRpcRequestPayload:U,storage:Ee};constructor(){super(void 0);let e=[this,...$n(this)];Ht.forEach(t=>{let n=e.map(a=>Object.getOwnPropertyDescriptor(a,t)),s=n.findIndex(a=>!!a),i=s>0,o=n[s];o&&(this.__sdk_access_field_descriptors__.set(t,{descriptor:o,isPrototypeField:i}),Object.defineProperty(this,t,{configurable:!0,get:()=>{throw Et(t)}}))})}init(e){this.__is_initialized__||(Ht.forEach(t=>{if(this.__sdk_access_field_descriptors__.has(t)){let{descriptor:n,isPrototypeField:s}=this.__sdk_access_field_descriptors__.get(t);s?delete this[t]:Object.defineProperty(this,t,n)}}),this.sdk=e,this.__is_initialized__=!0)}createDeprecationWarning(e){let{method:t,removalVersion:n,useInstead:s}=e,i=s?` Use \`${s}\` instead.`:"",o=`\`${t}\` will be removed from this Extension in version \`${n}\`.${i}`;return new re(this,"DEPRECATION_NOTICE",o)}createWarning(e,t){return new re(this,e,t)}createError(e,t,n){return new pe(this,e,t,n)}},Ae=class extends Xe{},ze=class{static Internal=Ae},Ye=class extends Ae{constructor(t){super();this.config=t;this.chain=t.chainType}chain;getPublicAddress(){return this.request(this.utils.createJsonRpcRequestPayload(Bt.GetMultichainPublicAddress,[{chain:this.chain}]))}revealPrivateKey(){return this.request(this.utils.createJsonRpcRequestPayload(Bt.RevealPK,[{chain:this.chain}]))}};export{ze as Extension,pe as MagicExtensionError,re as MagicExtensionWarning,G as MagicRPCError,O as MagicSDKError,_ as MagicSDKWarning,Ye as MultichainExtension,Ve as SDKBase,qe as STORE_KEY_PRIVATE_KEY,fe as STORE_KEY_PUBLIC_JWK,We as TypedEmitter,He as ViewController,wt as clearKeys,Tt as createDeprecationWarning,Bn as createDuplicateIframeWarning,Et as createExtensionNotInitializedError,ft as createIncompatibleExtensionsError,yt as createInvalidArgumentError,St as createJwt,gt as createMalformedResponseError,mt as createMissingApiKeyError,me as createModalNotReadyError,E as createPromiEvent,ie as createPromise,vt as createReactNativeEndpointConfigurationWarning,Hr as createSDK,Rt as createSynchronousWeb3MethodWarning,Re as createTypedEmitter,Ke as createURL,dt as decodeJSON,de as encodeJSON,_e as getPayloadId,te as isEmpty,pt as isJsonRpcErrorCode,Wn as isJsonRpcRequestPayload,ut as isJsonRpcResponsePayload,Un as isMagicPayloadMethod,_t as isMajorVersionAtLeast,Ot as isPromiEvent,ne as isWebCryptoSupported,Ee as storage,Pt as uuid};
5
+ Received: \`${r.received}\``)}function Bn(){return new _(he.DuplicateIframe,"Duplicate iframes found.")}function Rt(){return new _(he.SyncWeb3Method,"Non-async web3 methods are deprecated in web3 > 1.0 and are not supported by the Magic web3 provider. Please use an async method instead.")}function vt(){return new _(he.ReactNativeEndpointConfiguration,`CUSTOM DOMAINS ARE NOT SUPPORTED WHEN USING MAGIC SDK WITH REACT NATIVE! The \`endpoint\` parameter SHOULD NOT be provided. The Magic \`<iframe>\` is automatically wrapped by a WebView pointed at \`${h.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function Tt(r){let{method:e,removalVersions:t,useInstead:n}=r,s=t[h.sdkName],i=n?` Use \`${n}\` instead.`:"",o=`\`${e}\` will be removed from \`${h.sdkName}\` in version \`${s}\`.${i}`;return new _(he.DeprecationNotice,o)}import{MagicPayloadMethod as M,DeviceVerificationEventEmit as kt,LoginWithEmailOTPEventEmit as N,UpdateEmailEventEmit as V,RecencyCheckEventEmit as q,LoginWithSmsOTPEventEmit as A}from"@magic-sdk/types";import{MagicOutgoingWindowMessage as fn,MagicIncomingWindowMessage as yn,MagicPayloadMethod as Rn,routeToMagicMethods as vn}from"@magic-sdk/types";import{RPCErrorCode as un}from"@magic-sdk/types";function*zr(){let r=0;for(;;)r<Number.MAX_SAFE_INTEGER?yield++r:r=0}var Yr=zr();function Qr(){return Math.floor(Math.random()*1e5)+1}function _e(){return h.sdkName==="@magic-sdk/react-native-bare"||h.sdkName==="@magic-sdk/react-native-expo"?Qr():Yr.next().value}var Ee={};rr(Ee,{clear:()=>Zr,getItem:()=>v,iterate:()=>ke,key:()=>tn,keys:()=>rn,length:()=>en,removeItem:()=>C,setItem:()=>S});var ge;function k(r){return async(...e)=>(ge||(ge=await h.configureStorage()),await ge.ready(),ge[r](...e))}var v=k("getItem"),S=k("setItem"),C=k("removeItem"),Zr=k("clear"),en=k("length"),tn=k("key"),rn=k("keys"),ke=k("iterate");function Pt(){let r=window.crypto.getRandomValues(new Uint8Array(16));r[6]=r[6]&15|64,r[8]=r[8]&191|128;let e="";return e+=r[0].toString(16),e+=r[1].toString(16),e+=r[2].toString(16),e+=r[3].toString(16),e+="-",e+=r[4].toString(16),e+=r[5].toString(16),e+="-",e+=r[6].toString(16),e+=r[7].toString(16),e+="-",e+=r[8].toString(16),e+=r[9].toString(16),e+="-",e+=r[10].toString(16),e+=r[11].toString(16),e+=r[12].toString(16),e+=r[13].toString(16),e+=r[14].toString(16),e+=r[15].toString(16),e}var qe="STORE_KEY_PRIVATE_KEY",fe="STORE_KEY_PUBLIC_JWK",bt="ECDSA",nn="P-256",sn={name:bt,namedCurve:nn};function ne(){let r=typeof window<"u"&&!!window.crypto,e=r&&!!window.crypto.subtle;return r&&e}function wt(){C(fe),C(qe)}async function St(){let r=await on();if(!r){console.info("unable to creat kee publicy or webcrypto is unsupported");return}let{subtle:e}=window.crypto,t=await v(qe);if(!t||!e){console.info("unable to find private key or webcrypto unsupported");return}let n={iat:Math.floor(new Date().getTime()/1e3),jti:Pt()},i={protected:It(JSON.stringify({typ:"dpop+jwt",alg:"ES256",jwk:r})),claims:It(JSON.stringify(n))},o=cn(`${i.protected}.${i.claims}`),a={name:bt,hash:{name:"SHA-256"}},c=dn(new Uint8Array(await e.sign(a,t,o)));return`${i.protected}.${i.claims}.${c}`}async function on(){if(!ne()){console.info("webcrypto is not supported");return}return await v(fe)||await an(),v(fe)}async function an(){let{subtle:r}=window.crypto,e=await r.generateKey(sn,!1,["sign"]),t=await r.exportKey("jwk",e.publicKey);await S(qe,e.privateKey),await S(fe,t)}function It(r){return Mt(ln(r))}function cn(r){return new TextEncoder().encode(r)}function Mt(r){return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function ln(r){return encodeURIComponent(r).replace(/%([0-9A-F]{2})/g,(t,n)=>String.fromCharCode(parseInt(n,16)))}function dn(r){let e="";return r.forEach(t=>{e+=String.fromCharCode(t)}),Mt(e)}var xt=Symbol("Payload pre-processed by Magic SDK");function Ct(r){return Object.defineProperty(r,xt,{value:!0,enumerable:!1}),r}function pn(r){return!!r[xt]}function U(r){return pn(r)||(r.jsonrpc=r.jsonrpc??"2.0",r.id=_e(),r.method=r.method??"noop",r.params=r.params??[],Ct(r)),r}function p(r,e=[]){return Ct({params:e,method:r,jsonrpc:"2.0",id:_e()})}var j=class r{_jsonrpc;_id;_result;_error;constructor(e){e instanceof r?(this._jsonrpc=e.payload.jsonrpc,this._id=e.payload.id,this._result=e.payload.result,this._error=e.payload.error):ut(e)?(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=e.result,this._error=e.error):(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=void 0,this._error=void 0)}applyError(e){return this._error=e,this}applyResult(e){return this._result=e,this}get hasError(){return this._error?.code===un.DpopInvalidated&&wt(),typeof this._error<"u"&&this._error!==null}get hasResult(){return typeof this._result<"u"}get payload(){return{jsonrpc:this._jsonrpc,id:this._id,result:this._result,error:this._error}}};import{UserEventsEmit as gn,UserEventsOnReceived as En}from"@magic-sdk/types";var $t=sr(At()),We=class extends $t.default{};function Re(){let r=new We;return{emitter:r,createChainingEmitterMethod:(n,s)=>(...i)=>(r[n].apply(r,i),s),createBoundEmitterMethod:n=>(...s)=>r[n].apply(r,s)}}var Lt=Symbol("isPromiEvent");function Ot(r){return!!r[Lt]}function E(r){let e=ie(r),{createBoundEmitterMethod:t,createChainingEmitterMethod:n}=Re(),s=Symbol("Promise.then"),i=Symbol("Promise.catch"),o=Symbol("Promise.finally"),a=(l,u)=>(...b)=>{let w=u[l].apply(u,b);return c(w)},c=l=>Object.assign(l,{[Lt]:!0,[s]:l[s]||l.then,[i]:l[i]||l.catch,[o]:l[o]||l.finally,then:a(s,l),catch:a(i,l),finally:a(o,l),on:n("on",l),once:n("once",l),addListener:n("addListener",l),off:n("off",l),removeListener:n("removeListener",l),removeAllListeners:n("removeAllListeners",l),emit:t("emit"),eventNames:t("eventNames"),listeners:t("listeners"),listenerCount:t("listenerCount")}),d=c(e.then(l=>(d.emit("done",l),d.emit("settled"),l),l=>{throw d.emit("error",l),d.emit("settled"),l}));return d.on(En.ClosedByUser,()=>{d.emit(gn.ClosedByUser)}),d}function ie(r){return new Promise((e,t)=>{let n=r(e,t);Promise.resolve(n).catch(t)})}var f=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){return this.sdk.thirdPartyWallets.isConnected&&!vn.includes(e.method)?this.requestThirdPartyWallets(e):this.requestOverlay(e)}requestThirdPartyWallets(e){return E((n,s)=>{this.sdk.thirdPartyWallets.requestOverride(e).then(n).catch(s)})}requestOverlay(e){let t=this.overlay.post(fn.MAGIC_HANDLE_REQUEST,U(e)),n=E((i,o)=>{t.then(a=>{if(s(),a.hasError)o(new G(a.payload.error));else if(a.hasResult)i(a.payload.result);else throw gt()}).catch(a=>{s(),o(a)})}),s=this.overlay.on(yn.MAGIC_HANDLE_EVENT,i=>{let{response:o}=i.data;if(o.id===e.id&&o.result?.event){let{event:a,params:c=[]}=o.result;n.emit(a,...c)}});return n}createIntermediaryEvent(e,t){return s=>{let i=p(Rn.IntermediaryEvent,[{payloadId:t,eventType:e,args:s}]);this.request(i)}}};function _t(r,e){let[t]=r.split(".").map(Number);return t>=e}var Tn={"magic-sdk":"v18.0.0","@magic-sdk/react-native":"v14.0.0","@magic-sdk/react-native-bare":"v19.0.0","@magic-sdk/react-native-expo":"v19.0.0"},ve=class extends f{loginWithMagicLink(e){let t=h.sdkName==="@magic-sdk/react-native"||h.sdkName==="@magic-sdk/react-native-bare"||h.sdkName==="@magic-sdk/react-native-expo";if(t&&_t(h.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utilize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&Tt({method:"auth.loginWithMagicLink()",removalVersions:Tn,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:n,showUI:s=!0,redirectURI:i,overrides:o,lifespan:a}=e,c=p(this.sdk.testMode?M.LoginWithMagicLinkTestMode:M.LoginWithMagicLink,[{email:n,showUI:s,redirectURI:i,overrides:o,lifespan:a}]);return this.request(c)}loginWithSMS(e){let{phoneNumber:t,showUI:n=!0,lifespan:s}=e,i=p(this.sdk.testMode?M.LoginWithSmsTestMode:M.LoginWithSms,[{phoneNumber:t,showUI:n,lifespan:s}]),o=this.request(i);return!n&&o&&(o.on(A.VerifySmsOtp,a=>{this.createIntermediaryEvent(A.VerifySmsOtp,i.id)(a)}),o.on(A.VerifyMFACode,a=>{this.createIntermediaryEvent(A.VerifyMFACode,i.id)(a)}),o.on(A.LostDevice,()=>{this.createIntermediaryEvent(A.LostDevice,i.id)()}),o.on(A.VerifyRecoveryCode,a=>{this.createIntermediaryEvent(A.VerifyRecoveryCode,i.id)(a)}),o.on(A.Cancel,()=>{this.createIntermediaryEvent(A.Cancel,i.id)()})),o}loginWithEmailOTP(e){let{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}=e,a=p(this.sdk.testMode?M.LoginWithEmailOTPTestMode:M.LoginWithEmailOTP,[{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}]),c=this.request(a);return!s&&c&&c.on(kt.Retry,()=>{this.createIntermediaryEvent(kt.Retry,a.id)()}),!n&&c&&(c.on(N.VerifyEmailOtp,d=>{this.createIntermediaryEvent(N.VerifyEmailOtp,a.id)(d)}),c.on(N.VerifyMFACode,d=>{this.createIntermediaryEvent(N.VerifyMFACode,a.id)(d)}),c.on(N.LostDevice,()=>{this.createIntermediaryEvent(N.LostDevice,a.id)()}),c.on(N.VerifyRecoveryCode,d=>{this.createIntermediaryEvent(N.VerifyRecoveryCode,a.id)(d)}),c.on(N.Cancel,()=>{this.createIntermediaryEvent(N.Cancel,a.id)()})),c}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:n}=e||{},s=t??"";if(!t&&h.platform==="web"){s=window.location.search;let o=window.location.origin+window.location.pathname;window.history.replaceState(null,"",o)}let i=p(this.sdk.testMode?M.LoginWithCredentialTestMode:M.LoginWithCredential,[s,n]);return this.request(i)}setAuthorizationToken(e){let t=p(M.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:n=!0}=e,s=p(this.sdk.testMode?M.UpdateEmailTestMode:M.UpdateEmail,[{email:t,showUI:n}]),i=this.request(s);return n||(i.on(q.Retry,()=>{this.createIntermediaryEvent(q.Retry,s.id)()}),i.on(q.Cancel,()=>{this.createIntermediaryEvent(q.Cancel,s.id)()}),i.on(q.VerifyEmailOtp,o=>{this.createIntermediaryEvent(q.VerifyEmailOtp,s.id)(o)}),i.on(q.VerifyMFACode,o=>{this.createIntermediaryEvent(q.VerifyMFACode,s.id)(o)}),i.on(V.RetryWithNewEmail,o=>{this.createIntermediaryEvent(V.RetryWithNewEmail,s.id)(o)}),i.on(V.Cancel,()=>{this.createIntermediaryEvent(V.Cancel,s.id)()}),i.on(V.VerifyEmailOtp,o=>{this.createIntermediaryEvent(V.VerifyEmailOtp,s.id)(o)})),i}};import{MagicPayloadMethod as y,EnableMFAEventEmit as Pe,DisableMFAEventEmit as B,RecencyCheckEventEmit as Ft,RecoveryFactorEventEmit as D,RecoverAccountEventEmit as W,UpdateEmailEventEmit as H}from"@magic-sdk/types";var Ue="ds",Fe="ek",Je="iv",Ge="AES-GCM",Pn=256;async function Te(){let r=[];await ke((e,t,n)=>{t.startsWith(`${Ue}_`)&&r.push(t)});for(let e of r)await C(e)}function qt(r){let e="",t=new Uint8Array(r),n=t.byteLength;for(let s=0;s<n;s++)e+=String.fromCharCode(t[s]);return window.btoa(e)}function Dt(r){let e=window.atob(r),t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}async function In(){if(!ne()){console.info("webcrypto is not supported");return}let{crypto:r}=window,e=await v(Je);return e||r.getRandomValues(new Uint8Array(12))}async function bn(){if(!ne()){console.info("webcrypto is not supported");return}let{subtle:r}=window.crypto,e=await v(Fe);return e||await r.generateKey({name:Ge,length:Pn},!1,["encrypt","decrypt"])}async function Wt(r,e){let t=await In(),n=await bn();if(!t||!n||!r)return;let s=Dt(r),{subtle:i}=window.crypto,o=await i.encrypt({name:Ge,iv:t},n,s),a=qt(o);await S(`${Ue}_${e}`,a),await S(Fe,n),await S(Je,t)}async function Ut(r){let e=await v(`${Ue}_${r}`),t=await v(Je),n=await v(Fe);if(!t||!e||!n||!ne())return;let{subtle:s}=window.crypto,i=await s.decrypt({name:Ge,iv:t},n,Dt(e));return qt(i)}function Ke(r,e){return e?new URL(r,e):new URL(r)}var Ie=class extends f{getIdToken(e){let t=p(this.sdk.testMode?y.GetIdTokenTestMode:y.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=p(this.sdk.testMode?y.GenerateIdTokenTestMode:y.GenerateIdToken,[e]);return this.request(t)}getInfo(){let e=p(y.GetInfo,[]);return this.request(e)}isLoggedIn(){return E(async(e,t)=>{try{let n=!1;this.sdk.useStorageCache&&(n=await v(this.localForageIsLoggedInKey)==="true",n&&e(!0));let s=p(this.sdk.testMode?y.IsLoggedInTestMode:y.IsLoggedIn),i=await this.request(s);this.sdk.useStorageCache&&(i?S(this.localForageIsLoggedInKey,!0):C(this.localForageIsLoggedInKey),n&&!i&&this.emitUserLoggedOut(!0)),e(i)}catch(n){t(n)}})}logout(){return C(this.localForageIsLoggedInKey),C("rt"),Te(),E(async(e,t)=>{try{let n=p(this.sdk.testMode?y.LogoutTestMode:y.Logout),s=await this.request(n);this.sdk.useStorageCache&&this.emitUserLoggedOut(s),e(s)}catch(n){t(n)}})}requestInfoWithUI(e){let t=p(y.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let{showUI:t=!0}=e||{},n=p(this.sdk.testMode?y.UserSettingsTestMode:y.UserSettings,[e]),s=this.request(n);return!t&&s&&(s.on(D.SendNewPhoneNumber,i=>{this.createIntermediaryEvent(D.SendNewPhoneNumber,n.id)(i)}),s.on(D.SendOtpCode,i=>{this.createIntermediaryEvent(D.SendOtpCode,n.id)(i)}),s.on(D.StartEditPhoneNumber,()=>{this.createIntermediaryEvent(D.StartEditPhoneNumber,n.id)()}),s.on(D.Cancel,()=>{this.createIntermediaryEvent(D.Cancel,n.id)()}),s.on(Ft.VerifyEmailOtp,i=>{this.createIntermediaryEvent(Ft.VerifyEmailOtp,n.id)(i)})),s}recoverAccount(e){let{email:t,showUI:n}=e,s=p(this.sdk.testMode?y.RecoverAccountTestMode:y.RecoverAccount,[{email:t,showUI:n}]),i=this.request(s);return!n&&i&&(i.on(W.Cancel,()=>{this.createIntermediaryEvent(W.Cancel,s.id)()}),i.on(W.ResendSms,()=>{this.createIntermediaryEvent(W.ResendSms,s.id)()}),i.on(W.VerifyOtp,o=>{this.createIntermediaryEvent(W.VerifyOtp,s.id)(o)}),i.on(W.UpdateEmail,o=>{this.createIntermediaryEvent(W.UpdateEmail,s.id)(o)}),i.on(H.Cancel,()=>{this.createIntermediaryEvent(H.Cancel,s.id)()}),i.on(H.RetryWithNewEmail,o=>{this.createIntermediaryEvent(H.RetryWithNewEmail,s.id)(o)}),i.on(H.VerifyEmailOtp,o=>{this.createIntermediaryEvent(H.VerifyEmailOtp,s.id)(o)})),i}revealEVMPrivateKey(){let e=p(y.RevealPK,[{chain:"ETH"}]);return this.request(e)}revealPrivateKey(){throw new Error("revealPrivateKey() has been decommissioned. For EVM chains, use `user.revealEVMPrivateKey()` instead. For non-EVM chains, use `[extension].revealPrivateKey()` instead.")}onUserLoggedOut(e){this.userLoggedOutCallbacks.push(e)}enableMFA(e){let{showUI:t=!0}=e,n=p(y.EnableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(Pe.VerifyMFACode,i=>{this.createIntermediaryEvent(Pe.VerifyMFACode,n.id)(i)}),s.on(Pe.Cancel,()=>{this.createIntermediaryEvent(Pe.Cancel,n.id)()})),s}disableMFA(e){let{showUI:t=!0}=e,n=p(y.DisableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(B.VerifyMFACode,i=>{this.createIntermediaryEvent(B.VerifyMFACode,n.id)(i)}),s.on(B.LostDevice,i=>{this.createIntermediaryEvent(B.LostDevice,n.id)(i)}),s.on(B.Cancel,()=>{this.createIntermediaryEvent(B.Cancel,n.id)()})),s}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}localForageIsLoggedInKey="magic_auth_is_logged_in";userLoggedOutCallbacks=[]};import{MagicPayloadMethod as L}from"@magic-sdk/types";var be=class extends f{connectWithUI(e){let t=E(async(n,s)=>{try{let i=p(L.Login,[{enabledWallets:this.sdk.thirdPartyWallets.enabledWallets,...e}]),o=this.request(i);this.sdk.thirdPartyWallets.eventListeners.forEach(({event:c,callback:d})=>{o.on(c,()=>d(i.id))}),o.on("id-token-created",c=>{t.emit("id-token-created",c)});let a=await o;a.error&&s(a),n(a)}catch(i){s(i)}});return t}showUI(e){return this.request(p(L.ShowUI,[e]))}showAddress(){return this.request(p(L.ShowAddress))}showSendTokensUI(){return this.request(p(L.ShowSendTokensUI))}showOnRamp(){return this.request(p(L.ShowOnRamp))}showNFTs(){return this.request(p(L.ShowNFTs))}showBalances(){return this.request(p(L.ShowBalances))}sign7702Authorization(e){return this.request(p(L.Sign7702Authorization,[e]))}send7702Transaction(e){return this.request(p(L.Send7702Transaction,[e]))}};import{LocalStorageKeys as F,MagicPayloadMethod as we}from"@magic-sdk/types";var Se=class extends f{eventListeners=[];enabledWallets={};isConnected=!1;resetThirdPartyWalletState(){localStorage.removeItem(F.PROVIDER),localStorage.removeItem(F.ADDRESS),localStorage.removeItem(F.CHAIN_ID),this.isConnected=!1}requestOverride(e){if(e.method===we.Login)return this.resetThirdPartyWalletState(),super.request(e);if(e.method===we.GetInfo)return this.getInfo(e);if(e.method===we.IsLoggedIn)return this.isLoggedIn(e);if(e.method===we.Logout)return this.logout(e);switch(localStorage.getItem(F.PROVIDER)){case"web3modal":return this.web3modalRequest(e);case"magic-widget":return this.magicWidgetRequest(e);default:return this.resetThirdPartyWalletState(),super.request(e)}}isLoggedIn(e){switch(localStorage.getItem(F.PROVIDER)){case"web3modal":return this.web3modalIsLoggedIn();case"magic-widget":return super.requestOverlay(e);default:return this.resetThirdPartyWalletState(),super.request(e)}}getInfo(e){switch(localStorage.getItem(F.PROVIDER)){case"web3modal":return this.web3modalGetInfo();case"magic-widget":return super.requestOverlay(e);default:return this.resetThirdPartyWalletState(),super.request(e)}}logout(e){let t=localStorage.getItem(F.PROVIDER);switch(this.resetThirdPartyWalletState(),t){case"web3modal":return this.web3modalLogout();case"magic-widget":return this.magicWidgetLogout(e);default:return super.request(e)}}web3modalRequest(e){return E((t,n)=>{this.sdk.web3modal.modal.getWalletProvider().request(e).then(t).catch(n)})}web3modalIsLoggedIn(){return E(e=>{let t=this.sdk.web3modal.modal.getStatus();if(t==="connected"&&e(!0),t==="disconnected"&&(this.resetThirdPartyWalletState(),e(!1)),t==="reconnecting"){let n=this.sdk.web3modal.modal.subscribeProvider(({status:s})=>{s==="connected"&&(n(),e(!0)),s==="disconnected"&&(n(),this.resetThirdPartyWalletState(),e(!1))})}})}formatWeb3modalGetInfoResponse(){let e=this.sdk.web3modal.modal.getWalletInfo()?.name,t=this.sdk.web3modal.modal.getAddress();return{email:null,issuer:`did:ethr:${t}`,phoneNumber:null,isMfaEnabled:!1,recoveryFactors:[],walletType:e||"web3modal",firstLoginAt:null,wallets:{ethereum:{publicAddress:t,subAccounts:[]}}}}web3modalGetInfo(){return E((e,t)=>{let n=this.sdk.web3modal.modal.getStatus();if(n==="connected"&&e(this.formatWeb3modalGetInfoResponse()),n==="disconnected"&&(this.resetThirdPartyWalletState(),t("Magic RPC Error: [-32603] Internal error: User denied account access.")),n==="reconnecting"){let s=this.sdk.web3modal.modal.subscribeProvider(({status:i})=>{i==="connected"&&(s(),e(this.formatWeb3modalGetInfoResponse())),i==="disconnected"&&(s(),this.resetThirdPartyWalletState(),t("Magic RPC Error: [-32603] Internal error: User denied account access."))})}})}web3modalLogout(){return E(async e=>{try{await this.sdk.web3modal.modal.disconnect()}catch(t){console.error(t)}e(!0)})}magicWidgetRequest(e){return["eth_","wallet_","net_","web3_"].some(i=>e.method?.startsWith(i))||["personal_sign"].includes(e.method)?E((i,o)=>{this.sdk.walletKit.walletRequest(e).then(i).catch(a=>o(new G(a)))}):super.requestOverlay(e)}magicWidgetLogout(e){return E(async t=>{try{this.sdk.walletKit.clearConnectedState()}catch(n){console.error(n)}return super.requestOverlay(e)})}handleIframeThirdPartyWalletRequest(e){this.magicWidgetRequest(e.payload).then(t=>{this.overlay.postThirdPartyWalletResponse({id:e.payload.id,jsonrpc:"2.0",result:t})}).catch(t=>{this.overlay.postThirdPartyWalletResponse({id:e.payload.id,jsonrpc:"2.0",error:{code:t.code||-32603,message:t.message||"Internal error",data:t.data}})})}};import{MagicPayloadMethod as wn}from"@magic-sdk/types";var{createBoundEmitterMethod:Me,createChainingEmitterMethod:X}=Re(),xe=class extends f{isMagic=!0;sendAsync(e,t){if(!t)throw yt({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e)){let s=e.map(i=>U(i)).map(i=>this.request(i).then(o=>({jsonrpc:i.jsonrpc??"2.0",id:i.id??null,result:o,error:null})).catch(o=>({jsonrpc:i.jsonrpc??"2.0",id:i.id??null,error:o})));Promise.all(s).then(i=>{t(null,i)})}else this.request(U(e)).then(n=>{t(null,{jsonrpc:e.jsonrpc??"2.0",id:e.id??null,result:n,error:null})}).catch(n=>{t(n,{jsonrpc:e.jsonrpc??"2.0",id:e.id??null,error:n})})}send(e,t){if(typeof e=="string"){let s=p(e,Array.isArray(t)?t:[]);return this.request(s)}if(Array.isArray(e)||t){this.sendAsync(e,t);return}let n=Rt();return n.log(),new j(e).applyError({code:-32603,message:n.rawMessage}).payload}enable(){let e=p(wn.Login);return this.request(e)}request(e){return this.prefixPayloadMethodForTestMode(e),super.request(e)}prefixPayloadMethodForTestMode(e){let t="testMode/eth/";this.sdk.testMode&&(e.method=`${t}${e.method}`)}on=X("on",this);once=X("once",this);addListener=X("addListener",this);off=X("off",this);removeListener=X("removeListener",this);removeAllListeners=X("removeAllListeners",this);emit=Me("emit");eventNames=Me("eventNames");listeners=Me("listeners");listenerCount=Me("listenerCount")};import{MagicPayloadMethod as je,NftCheckoutIntermediaryEvents as Ce}from"@magic-sdk/types";var Ne=class extends f{purchase(e){let t=p(je.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=this.sdk.thirdPartyWallets.isConnected,n=p(je.NFTCheckout,[{...e,walletProvider:t?"web3modal":"magic"}]),s=this.request(n);return t&&(s.on(Ce.Initiated,async i=>{try{let o=await this.request({method:"eth_sendTransaction",params:[i]});this.createIntermediaryEvent(Ce.Success,n.id)(o)}catch{this.createIntermediaryEvent(Ce.Failure,n.id)()}}),s.on(Ce.Disconnect,()=>{this.sdk.thirdPartyWallets.resetThirdPartyWalletState(),s.emit("disconnect")})),s}transfer(e){let t=p(je.NFTTransfer,[e]);return this.request(t)}};function Jt(r){return r.compat&&r.compat[h.sdkName]!=null?typeof r.compat[h.sdkName]=="string"?ct(lt(h.version),r.compat[h.sdkName]):!!r.compat[h.sdkName]:!0}function Sn(r,e,t){return!e&&!t?`${r}_eth_mainnet`:t?`${r}_${JSON.stringify(t)}`:e?typeof e=="string"?`${r}_eth_${e}`:`${r}_${e.rpcUrl}_${e.chainId}_${e.chainType}`:`${r}_unknown`}function Mn(r){let e=r?.extensions??[],t={},n=[];if(Array.isArray(e)?e.forEach(s=>{Jt(s)?(s.init(this),s.name&&(this[s.name]=s),te(s.config)||(t[s.name]=s.config)):n.push(s)}):Object.keys(e).forEach(s=>{if(Jt(e[s])){e[s].init(this);let i=e[s];this[s]=i,te(i.config)||(t[e[s].name]=i.config)}else n.push(e[s])}),n.length)throw ft(n);return t}var Ve=class r{constructor(e,t){this.apiKey=e;if(!e)throw mt();h.platform==="react-native"&&t?.endpoint&&vt().log();let{defaultEndpoint:n,version:s}=h;this.testMode=!!t?.testMode,this.useStorageCache=!!t?.useStorageCache,this.endpoint=Ke(t?.endpoint??n).origin,this.auth=new ve(this),this.user=new Ie(this),this.wallet=new be(this),this.nft=new Ne(this),this.thirdPartyWallets=new Se(this),this.rpcProvider=new xe(this);let i=Mn.call(this,t);this.parameters=de({API_KEY:this.apiKey,DOMAIN_ORIGIN:typeof window<"u"&&window?.location?window?.location.origin:"",ETH_NETWORK:t?.network,host:Ke(this.endpoint).host,sdk:ht[h.sdkName],version:s,ext:te(i)?void 0:i,locale:t?.locale||"en_US",authConfig:t?.authConfig?{...t.authConfig}:void 0,...h.bundleId?{bundleId:h.bundleId}:{},meta:t?.meta}),this.networkHash=Sn(this.apiKey,t?.network,te(i)?void 0:i),t?.deferPreload||this.preload()}static __overlays__=new Map;endpoint;parameters;networkHash;testMode;useStorageCache;auth;user;wallet;nft;thirdPartyWallets;rpcProvider;get overlay(){if(!r.__overlays__.has(this.parameters)){let e=new h.ViewController(this.endpoint,this.parameters,this.networkHash);e.init(),e.onThirdPartyWalletRequest(t=>this.thirdPartyWallets.handleIframeThirdPartyWalletRequest(t)),r.__overlays__.set(this.parameters,e)}return r.__overlays__.get(this.parameters)}async preload(){await this.overlay.waitForReady()}};import{MagicIncomingWindowMessage as oe,MagicOutgoingWindowMessage as Be,SDKWarningCode as Cn}from"@magic-sdk/types";function xn(r,e){return e&&Array.isArray(r)?r.find(t=>t.id===e):r}function Gt(r,e){let t=e.data.response?.id,n=xn(r,t);if(t&&n){let s=new j(n).applyResult(e.data.response.result).applyError(e.data.response.error);return{id:t,response:s}}return{}}function Kt(r,e){let t=null;return function(...n){t&&clearTimeout(t),t=setTimeout(()=>{r(...n)},e)}}var Nn=1e3,Vt=60*Nn,jt=5*Vt,An=60*Vt,He=class{constructor(e,t,n){this.endpoint=e;this.parameters=t;this.networkHash=n;this.listen()}isReadyForRequest=!1;messageHandlers=new Set;isConnectedToInternet=!0;lastPongTime=null;heartbeatIntervalTimer=null;heartbeatDebounce=Kt(()=>{this.endpoint==="https://auth.magic.link/"&&this.heartBeatCheck()},An);thirdPartyWalletRequestHandler=()=>{};async post(e,t){return ie(async(n,s)=>{if(!this.isConnectedToInternet){let l=me();s(l)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let i=[],o=Array.isArray(t)?t.map(l=>l.id):[],a=await this.createMagicRequest(`${e}-${this.parameters}`,t,this.networkHash);await this._post(a);let c=l=>u=>{let{id:b,response:w}=Gt(t,u);if(this.persistMagicEventRefreshToken(u),w?.payload.error?.message==="User denied account access.")Te();else if(u.data.deviceShare){let{deviceShare:Xt}=u.data;Wt(Xt,this.networkHash)}b&&w&&Array.isArray(t)&&o.includes(b)?(i.push(w),i.length===t.length&&(l(),n(i))):b&&w&&!Array.isArray(t)&&b===t.id&&(l(),n(w))},d=this.on(oe.MAGIC_HANDLE_RESPONSE,c(()=>d()))})}async postThirdPartyWalletResponse(e){return ie(async(t,n)=>{if(!this.isConnectedToInternet){let i=me();n(i)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let s={msgType:`${Be.MAGIC_THIRD_PARTY_WALLET_RESPONSE}-${this.parameters}`,response:e};await this._post(s),t()})}async postThirdPartyWalletUpdate(e){return ie(async(t,n)=>{if(!this.isConnectedToInternet){let o=me();n(o)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let s=JSON.parse(JSON.stringify(e,(o,a)=>typeof a=="function"?void 0:a)),i={msgType:`${Be.MAGIC_THIRD_PARTY_WALLET_UPDATE}-${this.parameters}`,details:s};await this._post(i),t()})}on(e,t){let n=t.bind(window),s=i=>{i.data.msgType===`${e}-${this.parameters}`&&n(i)};return this.messageHandlers.add(s),()=>this.messageHandlers.delete(s)}waitForReady(){return new Promise(e=>{let t=this.on(oe.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()})})}onThirdPartyWalletRequest(e){this.thirdPartyWalletRequestHandler=e}listen(){this.on(oe.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(oe.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(oe.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new _(Cn.ProductAnnouncement,e.data.response.result.product_announcement).log()})}heartBeatCheck(){let e=!0,t=async()=>{let n={msgType:`${Be.MAGIC_PING}-${this.parameters}`,payload:[]};await this._post(n)};this.heartbeatIntervalTimer=setInterval(async()=>{if(this.lastPongTime){if(Date.now()-this.lastPongTime>jt*2){this.reloadRelayer(),e=!0;return}}else if(!e){this.reloadRelayer(),e=!0;return}await t(),e=!1},jt)}stopHeartBeat(){this.heartbeatDebounce(),this.lastPongTime=null,this.heartbeatIntervalTimer&&(clearInterval(this.heartbeatIntervalTimer),this.heartbeatIntervalTimer=null)}async persistMagicEventRefreshToken(e){e.data.rt&&await S("rt",e.data.rt)}async createMagicRequest(e,t,n){let s={msgType:e,payload:t},i=await this.getRT(),o=await this.getJWT(),a=await this.getDecryptedDeviceShare(n);return o&&(s.jwt=o),o&&i&&(s.rt=i),a&&(s.deviceShare=a),s}async getJWT(){if(h.platform==="web")try{let e=await v("jwt");return e||await St()}catch(e){return console.error("webcrypto error",e),null}else return null}async getRT(){return await v("rt")}async getDecryptedDeviceShare(e){return await Ut(e)}};import{MagicPayloadMethod as Bt}from"@magic-sdk/types";var Ht=["request","overlay","sdk"];function $n(r){let e=Object.getPrototypeOf(r),t=[e];for(;e&&e!==f.prototype;)e=Object.getPrototypeOf(e),t.push(e);return t}var Xe=class extends f{compat;__sdk_access_field_descriptors__=new Map;__is_initialized__=!1;utils={createPromiEvent:E,isPromiEvent:Ot,encodeJSON:de,decodeJSON:dt,createJsonRpcRequestPayload:p,standardizeJsonRpcRequestPayload:U,storage:Ee};constructor(){super(void 0);let e=[this,...$n(this)];Ht.forEach(t=>{let n=e.map(a=>Object.getOwnPropertyDescriptor(a,t)),s=n.findIndex(a=>!!a),i=s>0,o=n[s];o&&(this.__sdk_access_field_descriptors__.set(t,{descriptor:o,isPrototypeField:i}),Object.defineProperty(this,t,{configurable:!0,get:()=>{throw Et(t)}}))})}init(e){this.__is_initialized__||(Ht.forEach(t=>{if(this.__sdk_access_field_descriptors__.has(t)){let{descriptor:n,isPrototypeField:s}=this.__sdk_access_field_descriptors__.get(t);s?delete this[t]:Object.defineProperty(this,t,n)}}),this.sdk=e,this.__is_initialized__=!0)}createDeprecationWarning(e){let{method:t,removalVersion:n,useInstead:s}=e,i=s?` Use \`${s}\` instead.`:"",o=`\`${t}\` will be removed from this Extension in version \`${n}\`.${i}`;return new re(this,"DEPRECATION_NOTICE",o)}createWarning(e,t){return new re(this,e,t)}createError(e,t,n){return new pe(this,e,t,n)}},Ae=class extends Xe{},ze=class{static Internal=Ae},Ye=class extends Ae{constructor(t){super();this.config=t;this.chain=t.chainType}chain;getPublicAddress(){return this.request(this.utils.createJsonRpcRequestPayload(Bt.GetMultichainPublicAddress,[{chain:this.chain}]))}revealPrivateKey(){return this.request(this.utils.createJsonRpcRequestPayload(Bt.RevealPK,[{chain:this.chain}]))}};export{ze as Extension,pe as MagicExtensionError,re as MagicExtensionWarning,G as MagicRPCError,O as MagicSDKError,_ as MagicSDKWarning,Ye as MultichainExtension,Ve as SDKBase,qe as STORE_KEY_PRIVATE_KEY,fe as STORE_KEY_PUBLIC_JWK,We as TypedEmitter,He as ViewController,wt as clearKeys,Tt as createDeprecationWarning,Bn as createDuplicateIframeWarning,Et as createExtensionNotInitializedError,ft as createIncompatibleExtensionsError,yt as createInvalidArgumentError,St as createJwt,gt as createMalformedResponseError,mt as createMissingApiKeyError,me as createModalNotReadyError,E as createPromiEvent,ie as createPromise,vt as createReactNativeEndpointConfigurationWarning,Hr as createSDK,Rt as createSynchronousWeb3MethodWarning,Re as createTypedEmitter,Ke as createURL,dt as decodeJSON,de as encodeJSON,_e as getPayloadId,te as isEmpty,pt as isJsonRpcErrorCode,Wn as isJsonRpcRequestPayload,ut as isJsonRpcResponsePayload,Un as isMagicPayloadMethod,_t as isMajorVersionAtLeast,Ot as isPromiEvent,ne as isWebCryptoSupported,Ee as storage,Pt as uuid};
6
6
  //# sourceMappingURL=index.js.map