@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/cjs/index.js CHANGED
@@ -2,5 +2,5 @@
2
2
  - Extension \`${t.name}\` supports version(s) \`${n}\``:n||(e+=`
3
3
  - Extension \`${t.name}\` does not support ${g.platform} environments.`)}),new _(M.SDKErrorCode.IncompatibleExtensions,e)}function Je(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 _(M.SDKErrorCode.InvalidArgument,`Invalid ${e(r.argument)} argument given to \`${r.procedure}\`.
4
4
  Expected: \`${r.expected}\`
5
- Received: \`${r.received}\``)}function Ur(){return new k(M.SDKWarningCode.DuplicateIframe,"Duplicate iframes found.")}function Ge(){return new k(M.SDKWarningCode.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 Ke(){return new k(M.SDKWarningCode.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 \`${g.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function je(r){let{method:e,removalVersions:t,useInstead:n}=r,s=t[g.sdkName],i=n?` Use \`${n}\` instead.`:"",o=`\`${e}\` will be removed from \`${g.sdkName}\` in version \`${s}\`.${i}`;return new k(M.SDKWarningCode.DeprecationNotice,o)}var d=require("@magic-sdk/types");var W=require("@magic-sdk/types");var bt=require("@magic-sdk/types");function*Fr(){let r=0;for(;;)r<Number.MAX_SAFE_INTEGER?yield++r:r=0}var Jr=Fr();function Gr(){return Math.floor(Math.random()*1e5)+1}function he(){return g.sdkName==="@magic-sdk/react-native-bare"||g.sdkName==="@magic-sdk/react-native-expo"?Gr():Jr.next().value}var ne={};it(ne,{clear:()=>Kr,getItem:()=>T,iterate:()=>Ve,key:()=>Vr,keys:()=>Br,length:()=>jr,removeItem:()=>$,setItem:()=>C});var me;function D(r){return async(...e)=>(me||(me=await g.configureStorage()),await me.ready(),me[r](...e))}var T=D("getItem"),C=D("setItem"),$=D("removeItem"),Kr=D("clear"),jr=D("length"),Vr=D("key"),Br=D("keys"),Ve=D("iterate");function Be(){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 ge="STORE_KEY_PRIVATE_KEY",se="STORE_KEY_PUBLIC_JWK",Pt="ECDSA",Hr="P-256",Xr={name:Pt,namedCurve:Hr};function j(){let r=typeof window<"u"&&!!window.crypto,e=r&&!!window.crypto.subtle;return r&&e}function He(){$(se),$(ge)}async function Xe(){let r=await zr();if(!r){console.info("unable to creat kee publicy or webcrypto is unsupported");return}let{subtle:e}=window.crypto,t=await T(ge);if(!t||!e){console.info("unable to find private key or webcrypto unsupported");return}let n={iat:Math.floor(new Date().getTime()/1e3),jti:Be()},i={protected:Tt(JSON.stringify({typ:"dpop+jwt",alg:"ES256",jwk:r})),claims:Tt(JSON.stringify(n))},o=Qr(`${i.protected}.${i.claims}`),a={name:Pt,hash:{name:"SHA-256"}},c=en(new Uint8Array(await e.sign(a,t,o)));return`${i.protected}.${i.claims}.${c}`}async function zr(){if(!j()){console.info("webcrypto is not supported");return}return await T(se)||await Yr(),T(se)}async function Yr(){let{subtle:r}=window.crypto,e=await r.generateKey(Xr,!1,["sign"]),t=await r.exportKey("jwk",e.publicKey);await C(ge,e.privateKey),await C(se,t)}function Tt(r){return It(Zr(r))}function Qr(r){return new TextEncoder().encode(r)}function It(r){return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function Zr(r){return encodeURIComponent(r).replace(/%([0-9A-F]{2})/g,(t,n)=>String.fromCharCode(parseInt(n,16)))}function en(r){let e="";return r.forEach(t=>{e+=String.fromCharCode(t)}),It(e)}var wt=Symbol("Payload pre-processed by Magic SDK");function St(r){return Object.defineProperty(r,wt,{value:!0,enumerable:!1}),r}function tn(r){return!!r[wt]}function F(r){return tn(r)||(r.jsonrpc=r.jsonrpc??"2.0",r.id=he(),r.method=r.method??"noop",r.params=r.params??[],St(r)),r}function m(r,e=[]){return St({params:e,method:r,jsonrpc:"2.0",id:he()})}var V=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):ke(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===bt.RPCErrorCode.DpopInvalidated&&He(),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}}};var ye=require("@magic-sdk/types");var Ct=Xt(xt()),fe=class extends Ct.default{};function oe(){let r=new fe;return{emitter:r,createChainingEmitterMethod:(n,s)=>(...i)=>(r[n].apply(r,i),s),createBoundEmitterMethod:n=>(...s)=>r[n].apply(r,s)}}var Nt=Symbol("isPromiEvent");function Ye(r){return!!r[Nt]}function f(r){let e=B(r),{createBoundEmitterMethod:t,createChainingEmitterMethod:n}=oe(),s=Symbol("Promise.then"),i=Symbol("Promise.catch"),o=Symbol("Promise.finally"),a=(u,h)=>(...w)=>{let S=h[u].apply(h,w);return c(S)},c=u=>Object.assign(u,{[Nt]:!0,[s]:u[s]||u.then,[i]:u[i]||u.catch,[o]:u[o]||u.finally,then:a(s,u),catch:a(i,u),finally:a(o,u),on:n("on",u),once:n("once",u),addListener:n("addListener",u),off:n("off",u),removeListener:n("removeListener",u),removeAllListeners:n("removeAllListeners",u),emit:t("emit"),eventNames:t("eventNames"),listeners:t("listeners"),listenerCount:t("listenerCount")}),p=c(e.then(u=>(p.emit("done",u),p.emit("settled"),u),u=>{throw p.emit("error",u),p.emit("settled"),u}));return p.on(ye.UserEventsOnReceived.ClosedByUser,()=>{p.emit(ye.UserEventsEmit.ClosedByUser)}),p}function B(r){return new Promise((e,t)=>{let n=r(e,t);Promise.resolve(n).catch(t)})}var R=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){return this.sdk.thirdPartyWallets.isConnected&&!W.routeToMagicMethods.includes(e.method)?this.requestThirdPartyWallets(e):this.requestOverlay(e)}requestThirdPartyWallets(e){return f((n,s)=>{this.sdk.thirdPartyWallets.requestOverride(e).then(n).catch(s)})}requestOverlay(e){let t=this.overlay.post(W.MagicOutgoingWindowMessage.MAGIC_HANDLE_REQUEST,F(e)),n=f((i,o)=>{t.then(a=>{if(s(),a.hasError)o(new U(a.payload.error));else if(a.hasResult)i(a.payload.result);else throw We()}).catch(a=>{s(),o(a)})}),s=this.overlay.on(W.MagicIncomingWindowMessage.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=m(W.MagicPayloadMethod.IntermediaryEvent,[{payloadId:t,eventType:e,args:s}]);this.request(i)}}};function Qe(r,e){let[t]=r.split(".").map(Number);return t>=e}var sn={"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"},Re=class extends R{loginWithMagicLink(e){let t=g.sdkName==="@magic-sdk/react-native"||g.sdkName==="@magic-sdk/react-native-bare"||g.sdkName==="@magic-sdk/react-native-expo";if(t&&Qe(g.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utilize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&je({method:"auth.loginWithMagicLink()",removalVersions:sn,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:n,showUI:s=!0,redirectURI:i,overrides:o,lifespan:a}=e,c=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithMagicLinkTestMode:d.MagicPayloadMethod.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=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithSmsTestMode:d.MagicPayloadMethod.LoginWithSms,[{phoneNumber:t,showUI:n,lifespan:s}]),o=this.request(i);return!n&&o&&(o.on(d.LoginWithSmsOTPEventEmit.VerifySmsOtp,a=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.VerifySmsOtp,i.id)(a)}),o.on(d.LoginWithSmsOTPEventEmit.VerifyMFACode,a=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.VerifyMFACode,i.id)(a)}),o.on(d.LoginWithSmsOTPEventEmit.LostDevice,()=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.LostDevice,i.id)()}),o.on(d.LoginWithSmsOTPEventEmit.VerifyRecoveryCode,a=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.VerifyRecoveryCode,i.id)(a)}),o.on(d.LoginWithSmsOTPEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.Cancel,i.id)()})),o}loginWithEmailOTP(e){let{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}=e,a=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithEmailOTPTestMode:d.MagicPayloadMethod.LoginWithEmailOTP,[{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}]),c=this.request(a);return!s&&c&&c.on(d.DeviceVerificationEventEmit.Retry,()=>{this.createIntermediaryEvent(d.DeviceVerificationEventEmit.Retry,a.id)()}),!n&&c&&(c.on(d.LoginWithEmailOTPEventEmit.VerifyEmailOtp,p=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.VerifyEmailOtp,a.id)(p)}),c.on(d.LoginWithEmailOTPEventEmit.VerifyMFACode,p=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.VerifyMFACode,a.id)(p)}),c.on(d.LoginWithEmailOTPEventEmit.LostDevice,()=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.LostDevice,a.id)()}),c.on(d.LoginWithEmailOTPEventEmit.VerifyRecoveryCode,p=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.VerifyRecoveryCode,a.id)(p)}),c.on(d.LoginWithEmailOTPEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.Cancel,a.id)()})),c}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:n}=e||{},s=t??"";if(!t&&g.platform==="web"){s=window.location.search;let o=window.location.origin+window.location.pathname;window.history.replaceState(null,"",o)}let i=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithCredentialTestMode:d.MagicPayloadMethod.LoginWithCredential,[s,n]);return this.request(i)}setAuthorizationToken(e){let t=m(d.MagicPayloadMethod.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:n=!0}=e,s=m(this.sdk.testMode?d.MagicPayloadMethod.UpdateEmailTestMode:d.MagicPayloadMethod.UpdateEmail,[{email:t,showUI:n}]),i=this.request(s);return n||(i.on(d.RecencyCheckEventEmit.Retry,()=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.Retry,s.id)()}),i.on(d.RecencyCheckEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.Cancel,s.id)()}),i.on(d.RecencyCheckEventEmit.VerifyEmailOtp,o=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.VerifyEmailOtp,s.id)(o)}),i.on(d.RecencyCheckEventEmit.VerifyMFACode,o=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.VerifyMFACode,s.id)(o)}),i.on(d.UpdateEmailEventEmit.RetryWithNewEmail,o=>{this.createIntermediaryEvent(d.UpdateEmailEventEmit.RetryWithNewEmail,s.id)(o)}),i.on(d.UpdateEmailEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.UpdateEmailEventEmit.Cancel,s.id)()}),i.on(d.UpdateEmailEventEmit.VerifyEmailOtp,o=>{this.createIntermediaryEvent(d.UpdateEmailEventEmit.VerifyEmailOtp,s.id)(o)})),i}};var l=require("@magic-sdk/types");var Ze="ds",et="ek",tt="iv",rt="AES-GCM",on=256;async function ve(){let r=[];await Ve((e,t,n)=>{t.startsWith(`${Ze}_`)&&r.push(t)});for(let e of r)await $(e)}function At(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 $t(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 an(){if(!j()){console.info("webcrypto is not supported");return}let{crypto:r}=window,e=await T(tt);return e||r.getRandomValues(new Uint8Array(12))}async function cn(){if(!j()){console.info("webcrypto is not supported");return}let{subtle:r}=window.crypto,e=await T(et);return e||await r.generateKey({name:rt,length:on},!1,["encrypt","decrypt"])}async function Lt(r,e){let t=await an(),n=await cn();if(!t||!n||!r)return;let s=$t(r),{subtle:i}=window.crypto,o=await i.encrypt({name:rt,iv:t},n,s),a=At(o);await C(`${Ze}_${e}`,a),await C(et,n),await C(tt,t)}async function Ot(r){let e=await T(`${Ze}_${r}`),t=await T(tt),n=await T(et);if(!t||!e||!n||!j())return;let{subtle:s}=window.crypto,i=await s.decrypt({name:rt,iv:t},n,$t(e));return At(i)}function Te(r,e){return e?new URL(r,e):new URL(r)}var Pe=class extends R{getIdToken(e){let t=m(this.sdk.testMode?l.MagicPayloadMethod.GetIdTokenTestMode:l.MagicPayloadMethod.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=m(this.sdk.testMode?l.MagicPayloadMethod.GenerateIdTokenTestMode:l.MagicPayloadMethod.GenerateIdToken,[e]);return this.request(t)}getInfo(){let e=m(l.MagicPayloadMethod.GetInfo,[]);return this.request(e)}isLoggedIn(){return f(async(e,t)=>{try{let n=!1;this.sdk.useStorageCache&&(n=await T(this.localForageIsLoggedInKey)==="true",n&&e(!0));let s=m(this.sdk.testMode?l.MagicPayloadMethod.IsLoggedInTestMode:l.MagicPayloadMethod.IsLoggedIn),i=await this.request(s);this.sdk.useStorageCache&&(i?C(this.localForageIsLoggedInKey,!0):$(this.localForageIsLoggedInKey),n&&!i&&this.emitUserLoggedOut(!0)),e(i)}catch(n){t(n)}})}logout(){return $(this.localForageIsLoggedInKey),$("rt"),ve(),f(async(e,t)=>{try{let n=m(this.sdk.testMode?l.MagicPayloadMethod.LogoutTestMode:l.MagicPayloadMethod.Logout),s=await this.request(n);this.sdk.useStorageCache&&this.emitUserLoggedOut(s),e(s)}catch(n){t(n)}})}requestInfoWithUI(e){let t=m(l.MagicPayloadMethod.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let{showUI:t=!0}=e||{},n=m(this.sdk.testMode?l.MagicPayloadMethod.UserSettingsTestMode:l.MagicPayloadMethod.UserSettings,[e]),s=this.request(n);return!t&&s&&(s.on(l.RecoveryFactorEventEmit.SendNewPhoneNumber,i=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.SendNewPhoneNumber,n.id)(i)}),s.on(l.RecoveryFactorEventEmit.SendOtpCode,i=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.SendOtpCode,n.id)(i)}),s.on(l.RecoveryFactorEventEmit.StartEditPhoneNumber,()=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.StartEditPhoneNumber,n.id)()}),s.on(l.RecoveryFactorEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.Cancel,n.id)()}),s.on(l.RecencyCheckEventEmit.VerifyEmailOtp,i=>{this.createIntermediaryEvent(l.RecencyCheckEventEmit.VerifyEmailOtp,n.id)(i)})),s}recoverAccount(e){let{email:t,showUI:n}=e,s=m(this.sdk.testMode?l.MagicPayloadMethod.RecoverAccountTestMode:l.MagicPayloadMethod.RecoverAccount,[{email:t,showUI:n}]),i=this.request(s);return!n&&i&&(i.on(l.RecoverAccountEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.Cancel,s.id)()}),i.on(l.RecoverAccountEventEmit.ResendSms,()=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.ResendSms,s.id)()}),i.on(l.RecoverAccountEventEmit.VerifyOtp,o=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.VerifyOtp,s.id)(o)}),i.on(l.RecoverAccountEventEmit.UpdateEmail,o=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.UpdateEmail,s.id)(o)}),i.on(l.UpdateEmailEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.UpdateEmailEventEmit.Cancel,s.id)()}),i.on(l.UpdateEmailEventEmit.RetryWithNewEmail,o=>{this.createIntermediaryEvent(l.UpdateEmailEventEmit.RetryWithNewEmail,s.id)(o)}),i.on(l.UpdateEmailEventEmit.VerifyEmailOtp,o=>{this.createIntermediaryEvent(l.UpdateEmailEventEmit.VerifyEmailOtp,s.id)(o)})),i}revealEVMPrivateKey(){let e=m(l.MagicPayloadMethod.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=m(l.MagicPayloadMethod.EnableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(l.EnableMFAEventEmit.VerifyMFACode,i=>{this.createIntermediaryEvent(l.EnableMFAEventEmit.VerifyMFACode,n.id)(i)}),s.on(l.EnableMFAEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.EnableMFAEventEmit.Cancel,n.id)()})),s}disableMFA(e){let{showUI:t=!0}=e,n=m(l.MagicPayloadMethod.DisableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(l.DisableMFAEventEmit.VerifyMFACode,i=>{this.createIntermediaryEvent(l.DisableMFAEventEmit.VerifyMFACode,n.id)(i)}),s.on(l.DisableMFAEventEmit.LostDevice,i=>{this.createIntermediaryEvent(l.DisableMFAEventEmit.LostDevice,n.id)(i)}),s.on(l.DisableMFAEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.DisableMFAEventEmit.Cancel,n.id)()})),s}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}localForageIsLoggedInKey="magic_auth_is_logged_in";userLoggedOutCallbacks=[]};var L=require("@magic-sdk/types");var Ie=class extends R{connectWithUI(e){let t=f(async(n,s)=>{try{let i=m(L.MagicPayloadMethod.Login,[{enabledWallets:this.sdk.thirdPartyWallets.enabledWallets,...e}]),o=this.request(i);this.sdk.thirdPartyWallets.eventListeners.forEach(({event:c,callback:p})=>{o.on(c,()=>p(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(m(L.MagicPayloadMethod.ShowUI,[e]))}showAddress(){return this.request(m(L.MagicPayloadMethod.ShowAddress))}showSendTokensUI(){return this.request(m(L.MagicPayloadMethod.ShowSendTokensUI))}showOnRamp(){return this.request(m(L.MagicPayloadMethod.ShowOnRamp))}showNFTs(){return this.request(m(L.MagicPayloadMethod.ShowNFTs))}showBalances(){return this.request(m(L.MagicPayloadMethod.ShowBalances))}sign7702Authorization(e){return this.request(m(L.MagicPayloadMethod.Sign7702Authorization,[e]))}send7702Transaction(e){return this.request(m(L.MagicPayloadMethod.Send7702Transaction,[e]))}};var x=require("@magic-sdk/types");var be=class extends R{eventListeners=[];enabledWallets={};isConnected=!1;resetThirdPartyWalletState(){localStorage.removeItem(x.LocalStorageKeys.PROVIDER),localStorage.removeItem(x.LocalStorageKeys.ADDRESS),localStorage.removeItem(x.LocalStorageKeys.CHAIN_ID),this.isConnected=!1}requestOverride(e){if(e.method===x.MagicPayloadMethod.Login)return this.resetThirdPartyWalletState(),super.request(e);if(e.method===x.MagicPayloadMethod.GetInfo)return this.getInfo(e);if(e.method===x.MagicPayloadMethod.IsLoggedIn)return this.isLoggedIn(e);if(e.method===x.MagicPayloadMethod.Logout)return this.logout(e);switch(localStorage.getItem(x.LocalStorageKeys.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(x.LocalStorageKeys.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(x.LocalStorageKeys.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(x.LocalStorageKeys.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 f((t,n)=>{this.sdk.web3modal.modal.getWalletProvider().request(e).then(t).catch(n)})}web3modalIsLoggedIn(){return f(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 f((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 f(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)?f((s,i)=>{this.sdk.walletKit.walletRequest(e).then(s).catch(o=>i(new U(o)))}):super.requestOverlay(e)}magicWidgetLogout(e){return f(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}})})}};var _t=require("@magic-sdk/types");var{createBoundEmitterMethod:we,createChainingEmitterMethod:H}=oe(),Se=class extends R{isMagic=!0;sendAsync(e,t){if(!t)throw Je({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e)){let s=e.map(i=>F(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(F(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=m(e,Array.isArray(t)?t:[]);return this.request(s)}if(Array.isArray(e)||t){this.sendAsync(e,t);return}let n=Ge();return n.log(),new V(e).applyError({code:-32603,message:n.rawMessage}).payload}enable(){let e=m(_t.MagicPayloadMethod.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=H("on",this);once=H("once",this);addListener=H("addListener",this);off=H("off",this);removeListener=H("removeListener",this);removeAllListeners=H("removeAllListeners",this);emit=we("emit");eventNames=we("eventNames");listeners=we("listeners");listenerCount=we("listenerCount")};var q=require("@magic-sdk/types");var Me=class extends R{purchase(e){let t=m(q.MagicPayloadMethod.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=this.sdk.thirdPartyWallets.isConnected,n=m(q.MagicPayloadMethod.NFTCheckout,[{...e,walletProvider:t?"web3modal":"magic"}]),s=this.request(n);return t&&(s.on(q.NftCheckoutIntermediaryEvents.Initiated,async i=>{try{let o=await this.request({method:"eth_sendTransaction",params:[i]});this.createIntermediaryEvent(q.NftCheckoutIntermediaryEvents.Success,n.id)(o)}catch{this.createIntermediaryEvent(q.NftCheckoutIntermediaryEvents.Failure,n.id)()}}),s.on(q.NftCheckoutIntermediaryEvents.Disconnect,()=>{this.sdk.thirdPartyWallets.resetThirdPartyWalletState(),s.emit("disconnect")})),s}transfer(e){let t=m(q.MagicPayloadMethod.NFTTransfer,[e]);return this.request(t)}};function kt(r){return r.compat&&r.compat[g.sdkName]!=null?typeof r.compat[g.sdkName]=="string"?ft(yt(g.version),r.compat[g.sdkName]):!!r.compat[g.sdkName]:!0}function ln(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 dn(r){let e=r?.extensions??[],t={},n=[];if(Array.isArray(e)?e.forEach(s=>{kt(s)?(s.init(this),s.name&&(this[s.name]=s),G(s.config)||(t[s.name]=s.config)):n.push(s)}):Object.keys(e).forEach(s=>{if(kt(e[s])){e[s].init(this);let i=e[s];this[s]=i,G(i.config)||(t[e[s].name]=i.config)}else n.push(e[s])}),n.length)throw Fe(n);return t}var xe=class r{constructor(e,t){this.apiKey=e;if(!e)throw De();g.platform==="react-native"&&t?.endpoint&&Ke().log();let{defaultEndpoint:n,version:s}=g;this.testMode=!!t?.testMode,this.useStorageCache=!!t?.useStorageCache,this.endpoint=Te(t?.endpoint??n).origin,this.auth=new Re(this),this.user=new Pe(this),this.wallet=new Ie(this),this.nft=new Me(this),this.thirdPartyWallets=new be(this),this.rpcProvider=new Se(this);let i=dn.call(this,t);this.parameters=ee({API_KEY:this.apiKey,DOMAIN_ORIGIN:typeof window<"u"&&window?.location?window?.location.origin:"",ETH_NETWORK:t?.network,host:Te(this.endpoint).host,sdk:vt[g.sdkName],version:s,ext:G(i)?void 0:i,locale:t?.locale||"en_US",authConfig:t?.authConfig?{...t.authConfig}:void 0,...g.bundleId?{bundleId:g.bundleId}:{},meta:t?.meta}),this.networkHash=ln(this.apiKey,t?.network,G(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 g.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()}};var N=require("@magic-sdk/types");function un(r,e){return e&&Array.isArray(r)?r.find(t=>t.id===e):r}function qt(r,e){let t=e.data.response?.id,n=un(r,t);if(t&&n){let s=new V(n).applyResult(e.data.response.result).applyError(e.data.response.error);return{id:t,response:s}}return{}}function Dt(r,e){let t=null;return function(...n){t&&clearTimeout(t),t=setTimeout(()=>{r(...n)},e)}}var pn=1e3,Ut=60*pn,Wt=5*Ut,hn=60*Ut,Ce=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=Dt(()=>{this.endpoint==="https://auth.magic.link/"&&this.heartBeatCheck()},hn);thirdPartyWalletRequestHandler=()=>{};async post(e,t){return B(async(n,s)=>{if(!this.isConnectedToInternet){let u=re();s(u)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let i=[],o=Array.isArray(t)?t.map(u=>u.id):[],a=await this.createMagicRequest(`${e}-${this.parameters}`,t,this.networkHash);await this._post(a);let c=u=>h=>{let{id:w,response:S}=qt(t,h);if(this.persistMagicEventRefreshToken(h),S?.payload.error?.message==="User denied account access.")ve();else if(h.data.deviceShare){let{deviceShare:Jt}=h.data;Lt(Jt,this.networkHash)}w&&S&&Array.isArray(t)&&o.includes(w)?(i.push(S),i.length===t.length&&(u(),n(i))):w&&S&&!Array.isArray(t)&&w===t.id&&(u(),n(S))},p=this.on(N.MagicIncomingWindowMessage.MAGIC_HANDLE_RESPONSE,c(()=>p()))})}async postThirdPartyWalletResponse(e){return B(async(t,n)=>{if(!this.isConnectedToInternet){let i=re();n(i)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let s={msgType:`${N.MagicOutgoingWindowMessage.MAGIC_THIRD_PARTY_WALLET_RESPONSE}-${this.parameters}`,response:e};await this._post(s),t()})}async postThirdPartyWalletUpdate(e){return B(async(t,n)=>{if(!this.isConnectedToInternet){let o=re();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:`${N.MagicOutgoingWindowMessage.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(N.MagicIncomingWindowMessage.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()})})}onThirdPartyWalletRequest(e){this.thirdPartyWalletRequestHandler=e}listen(){this.on(N.MagicIncomingWindowMessage.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(N.MagicIncomingWindowMessage.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(N.MagicIncomingWindowMessage.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new k(N.SDKWarningCode.ProductAnnouncement,e.data.response.result.product_announcement).log()})}heartBeatCheck(){let e=!0,t=async()=>{let n={msgType:`${N.MagicOutgoingWindowMessage.MAGIC_PING}-${this.parameters}`,payload:[]};await this._post(n)};this.heartbeatIntervalTimer=setInterval(async()=>{if(this.lastPongTime){if(Date.now()-this.lastPongTime>Wt*2){this.reloadRelayer(),e=!0;return}}else if(!e){this.reloadRelayer(),e=!0;return}await t(),e=!1},Wt)}stopHeartBeat(){this.heartbeatDebounce(),this.lastPongTime=null,this.heartbeatIntervalTimer&&(clearInterval(this.heartbeatIntervalTimer),this.heartbeatIntervalTimer=null)}async persistMagicEventRefreshToken(e){e.data.rt&&await C("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(g.platform==="web")try{let e=await T("jwt");return e||await Xe()}catch(e){return console.error("webcrypto error",e),null}else return null}async getRT(){return await T("rt")}async getDecryptedDeviceShare(e){return await Ot(e)}};var nt=require("@magic-sdk/types"),Ft=["request","overlay","sdk"];function mn(r){let e=Object.getPrototypeOf(r),t=[e];for(;e&&e!==R.prototype;)e=Object.getPrototypeOf(e),t.push(e);return t}var st=class extends R{compat;__sdk_access_field_descriptors__=new Map;__is_initialized__=!1;utils={createPromiEvent:f,isPromiEvent:Ye,encodeJSON:ee,decodeJSON:_e,createJsonRpcRequestPayload:m,standardizeJsonRpcRequestPayload:F,storage:ne};constructor(){super(void 0);let e=[this,...mn(this)];Ft.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 Ue(t)}}))})}init(e){this.__is_initialized__||(Ft.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 K(this,"DEPRECATION_NOTICE",o)}createWarning(e,t){return new K(this,e,t)}createError(e,t,n){return new te(this,e,t,n)}},Ne=class extends st{},Ae=class{static Internal=Ne},$e=class extends Ne{constructor(t){super();this.config=t;this.chain=t.chainType}chain;getPublicAddress(){return this.request(this.utils.createJsonRpcRequestPayload(nt.MagicPayloadMethod.GetMultichainPublicAddress,[{chain:this.chain}]))}revealPrivateKey(){return this.request(this.utils.createJsonRpcRequestPayload(nt.MagicPayloadMethod.RevealPK,[{chain:this.chain}]))}};
5
+ Received: \`${r.received}\``)}function Ur(){return new k(M.SDKWarningCode.DuplicateIframe,"Duplicate iframes found.")}function Ge(){return new k(M.SDKWarningCode.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 Ke(){return new k(M.SDKWarningCode.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 \`${g.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function je(r){let{method:e,removalVersions:t,useInstead:n}=r,s=t[g.sdkName],i=n?` Use \`${n}\` instead.`:"",o=`\`${e}\` will be removed from \`${g.sdkName}\` in version \`${s}\`.${i}`;return new k(M.SDKWarningCode.DeprecationNotice,o)}var d=require("@magic-sdk/types");var W=require("@magic-sdk/types");var bt=require("@magic-sdk/types");function*Fr(){let r=0;for(;;)r<Number.MAX_SAFE_INTEGER?yield++r:r=0}var Jr=Fr();function Gr(){return Math.floor(Math.random()*1e5)+1}function he(){return g.sdkName==="@magic-sdk/react-native-bare"||g.sdkName==="@magic-sdk/react-native-expo"?Gr():Jr.next().value}var ne={};it(ne,{clear:()=>Kr,getItem:()=>T,iterate:()=>Ve,key:()=>Vr,keys:()=>Br,length:()=>jr,removeItem:()=>$,setItem:()=>C});var me;function D(r){return async(...e)=>(me||(me=await g.configureStorage()),await me.ready(),me[r](...e))}var T=D("getItem"),C=D("setItem"),$=D("removeItem"),Kr=D("clear"),jr=D("length"),Vr=D("key"),Br=D("keys"),Ve=D("iterate");function Be(){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 ge="STORE_KEY_PRIVATE_KEY",se="STORE_KEY_PUBLIC_JWK",Pt="ECDSA",Hr="P-256",Xr={name:Pt,namedCurve:Hr};function j(){let r=typeof window<"u"&&!!window.crypto,e=r&&!!window.crypto.subtle;return r&&e}function He(){$(se),$(ge)}async function Xe(){let r=await zr();if(!r){console.info("unable to creat kee publicy or webcrypto is unsupported");return}let{subtle:e}=window.crypto,t=await T(ge);if(!t||!e){console.info("unable to find private key or webcrypto unsupported");return}let n={iat:Math.floor(new Date().getTime()/1e3),jti:Be()},i={protected:Tt(JSON.stringify({typ:"dpop+jwt",alg:"ES256",jwk:r})),claims:Tt(JSON.stringify(n))},o=Qr(`${i.protected}.${i.claims}`),a={name:Pt,hash:{name:"SHA-256"}},c=en(new Uint8Array(await e.sign(a,t,o)));return`${i.protected}.${i.claims}.${c}`}async function zr(){if(!j()){console.info("webcrypto is not supported");return}return await T(se)||await Yr(),T(se)}async function Yr(){let{subtle:r}=window.crypto,e=await r.generateKey(Xr,!1,["sign"]),t=await r.exportKey("jwk",e.publicKey);await C(ge,e.privateKey),await C(se,t)}function Tt(r){return It(Zr(r))}function Qr(r){return new TextEncoder().encode(r)}function It(r){return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function Zr(r){return encodeURIComponent(r).replace(/%([0-9A-F]{2})/g,(t,n)=>String.fromCharCode(parseInt(n,16)))}function en(r){let e="";return r.forEach(t=>{e+=String.fromCharCode(t)}),It(e)}var wt=Symbol("Payload pre-processed by Magic SDK");function St(r){return Object.defineProperty(r,wt,{value:!0,enumerable:!1}),r}function tn(r){return!!r[wt]}function F(r){return tn(r)||(r.jsonrpc=r.jsonrpc??"2.0",r.id=he(),r.method=r.method??"noop",r.params=r.params??[],St(r)),r}function m(r,e=[]){return St({params:e,method:r,jsonrpc:"2.0",id:he()})}var V=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):ke(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===bt.RPCErrorCode.DpopInvalidated&&He(),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}}};var ye=require("@magic-sdk/types");var Ct=Xt(xt()),fe=class extends Ct.default{};function oe(){let r=new fe;return{emitter:r,createChainingEmitterMethod:(n,s)=>(...i)=>(r[n].apply(r,i),s),createBoundEmitterMethod:n=>(...s)=>r[n].apply(r,s)}}var Nt=Symbol("isPromiEvent");function Ye(r){return!!r[Nt]}function f(r){let e=B(r),{createBoundEmitterMethod:t,createChainingEmitterMethod:n}=oe(),s=Symbol("Promise.then"),i=Symbol("Promise.catch"),o=Symbol("Promise.finally"),a=(u,h)=>(...w)=>{let S=h[u].apply(h,w);return c(S)},c=u=>Object.assign(u,{[Nt]:!0,[s]:u[s]||u.then,[i]:u[i]||u.catch,[o]:u[o]||u.finally,then:a(s,u),catch:a(i,u),finally:a(o,u),on:n("on",u),once:n("once",u),addListener:n("addListener",u),off:n("off",u),removeListener:n("removeListener",u),removeAllListeners:n("removeAllListeners",u),emit:t("emit"),eventNames:t("eventNames"),listeners:t("listeners"),listenerCount:t("listenerCount")}),p=c(e.then(u=>(p.emit("done",u),p.emit("settled"),u),u=>{throw p.emit("error",u),p.emit("settled"),u}));return p.on(ye.UserEventsOnReceived.ClosedByUser,()=>{p.emit(ye.UserEventsEmit.ClosedByUser)}),p}function B(r){return new Promise((e,t)=>{let n=r(e,t);Promise.resolve(n).catch(t)})}var R=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){return this.sdk.thirdPartyWallets.isConnected&&!W.routeToMagicMethods.includes(e.method)?this.requestThirdPartyWallets(e):this.requestOverlay(e)}requestThirdPartyWallets(e){return f((n,s)=>{this.sdk.thirdPartyWallets.requestOverride(e).then(n).catch(s)})}requestOverlay(e){let t=this.overlay.post(W.MagicOutgoingWindowMessage.MAGIC_HANDLE_REQUEST,F(e)),n=f((i,o)=>{t.then(a=>{if(s(),a.hasError)o(new U(a.payload.error));else if(a.hasResult)i(a.payload.result);else throw We()}).catch(a=>{s(),o(a)})}),s=this.overlay.on(W.MagicIncomingWindowMessage.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=m(W.MagicPayloadMethod.IntermediaryEvent,[{payloadId:t,eventType:e,args:s}]);this.request(i)}}};function Qe(r,e){let[t]=r.split(".").map(Number);return t>=e}var sn={"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"},Re=class extends R{loginWithMagicLink(e){let t=g.sdkName==="@magic-sdk/react-native"||g.sdkName==="@magic-sdk/react-native-bare"||g.sdkName==="@magic-sdk/react-native-expo";if(t&&Qe(g.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utilize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&je({method:"auth.loginWithMagicLink()",removalVersions:sn,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:n,showUI:s=!0,redirectURI:i,overrides:o,lifespan:a}=e,c=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithMagicLinkTestMode:d.MagicPayloadMethod.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=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithSmsTestMode:d.MagicPayloadMethod.LoginWithSms,[{phoneNumber:t,showUI:n,lifespan:s}]),o=this.request(i);return!n&&o&&(o.on(d.LoginWithSmsOTPEventEmit.VerifySmsOtp,a=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.VerifySmsOtp,i.id)(a)}),o.on(d.LoginWithSmsOTPEventEmit.VerifyMFACode,a=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.VerifyMFACode,i.id)(a)}),o.on(d.LoginWithSmsOTPEventEmit.LostDevice,()=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.LostDevice,i.id)()}),o.on(d.LoginWithSmsOTPEventEmit.VerifyRecoveryCode,a=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.VerifyRecoveryCode,i.id)(a)}),o.on(d.LoginWithSmsOTPEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.LoginWithSmsOTPEventEmit.Cancel,i.id)()})),o}loginWithEmailOTP(e){let{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}=e,a=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithEmailOTPTestMode:d.MagicPayloadMethod.LoginWithEmailOTP,[{email:t,showUI:n,deviceCheckUI:s,overrides:i,lifespan:o}]),c=this.request(a);return!s&&c&&c.on(d.DeviceVerificationEventEmit.Retry,()=>{this.createIntermediaryEvent(d.DeviceVerificationEventEmit.Retry,a.id)()}),!n&&c&&(c.on(d.LoginWithEmailOTPEventEmit.VerifyEmailOtp,p=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.VerifyEmailOtp,a.id)(p)}),c.on(d.LoginWithEmailOTPEventEmit.VerifyMFACode,p=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.VerifyMFACode,a.id)(p)}),c.on(d.LoginWithEmailOTPEventEmit.LostDevice,()=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.LostDevice,a.id)()}),c.on(d.LoginWithEmailOTPEventEmit.VerifyRecoveryCode,p=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.VerifyRecoveryCode,a.id)(p)}),c.on(d.LoginWithEmailOTPEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.LoginWithEmailOTPEventEmit.Cancel,a.id)()})),c}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:n}=e||{},s=t??"";if(!t&&g.platform==="web"){s=window.location.search;let o=window.location.origin+window.location.pathname;window.history.replaceState(null,"",o)}let i=m(this.sdk.testMode?d.MagicPayloadMethod.LoginWithCredentialTestMode:d.MagicPayloadMethod.LoginWithCredential,[s,n]);return this.request(i)}setAuthorizationToken(e){let t=m(d.MagicPayloadMethod.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:n=!0}=e,s=m(this.sdk.testMode?d.MagicPayloadMethod.UpdateEmailTestMode:d.MagicPayloadMethod.UpdateEmail,[{email:t,showUI:n}]),i=this.request(s);return n||(i.on(d.RecencyCheckEventEmit.Retry,()=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.Retry,s.id)()}),i.on(d.RecencyCheckEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.Cancel,s.id)()}),i.on(d.RecencyCheckEventEmit.VerifyEmailOtp,o=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.VerifyEmailOtp,s.id)(o)}),i.on(d.RecencyCheckEventEmit.VerifyMFACode,o=>{this.createIntermediaryEvent(d.RecencyCheckEventEmit.VerifyMFACode,s.id)(o)}),i.on(d.UpdateEmailEventEmit.RetryWithNewEmail,o=>{this.createIntermediaryEvent(d.UpdateEmailEventEmit.RetryWithNewEmail,s.id)(o)}),i.on(d.UpdateEmailEventEmit.Cancel,()=>{this.createIntermediaryEvent(d.UpdateEmailEventEmit.Cancel,s.id)()}),i.on(d.UpdateEmailEventEmit.VerifyEmailOtp,o=>{this.createIntermediaryEvent(d.UpdateEmailEventEmit.VerifyEmailOtp,s.id)(o)})),i}};var l=require("@magic-sdk/types");var Ze="ds",et="ek",tt="iv",rt="AES-GCM",on=256;async function ve(){let r=[];await Ve((e,t,n)=>{t.startsWith(`${Ze}_`)&&r.push(t)});for(let e of r)await $(e)}function At(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 $t(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 an(){if(!j()){console.info("webcrypto is not supported");return}let{crypto:r}=window,e=await T(tt);return e||r.getRandomValues(new Uint8Array(12))}async function cn(){if(!j()){console.info("webcrypto is not supported");return}let{subtle:r}=window.crypto,e=await T(et);return e||await r.generateKey({name:rt,length:on},!1,["encrypt","decrypt"])}async function Lt(r,e){let t=await an(),n=await cn();if(!t||!n||!r)return;let s=$t(r),{subtle:i}=window.crypto,o=await i.encrypt({name:rt,iv:t},n,s),a=At(o);await C(`${Ze}_${e}`,a),await C(et,n),await C(tt,t)}async function Ot(r){let e=await T(`${Ze}_${r}`),t=await T(tt),n=await T(et);if(!t||!e||!n||!j())return;let{subtle:s}=window.crypto,i=await s.decrypt({name:rt,iv:t},n,$t(e));return At(i)}function Te(r,e){return e?new URL(r,e):new URL(r)}var Pe=class extends R{getIdToken(e){let t=m(this.sdk.testMode?l.MagicPayloadMethod.GetIdTokenTestMode:l.MagicPayloadMethod.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=m(this.sdk.testMode?l.MagicPayloadMethod.GenerateIdTokenTestMode:l.MagicPayloadMethod.GenerateIdToken,[e]);return this.request(t)}getInfo(){let e=m(l.MagicPayloadMethod.GetInfo,[]);return this.request(e)}isLoggedIn(){return f(async(e,t)=>{try{let n=!1;this.sdk.useStorageCache&&(n=await T(this.localForageIsLoggedInKey)==="true",n&&e(!0));let s=m(this.sdk.testMode?l.MagicPayloadMethod.IsLoggedInTestMode:l.MagicPayloadMethod.IsLoggedIn),i=await this.request(s);this.sdk.useStorageCache&&(i?C(this.localForageIsLoggedInKey,!0):$(this.localForageIsLoggedInKey),n&&!i&&this.emitUserLoggedOut(!0)),e(i)}catch(n){t(n)}})}logout(){return $(this.localForageIsLoggedInKey),$("rt"),ve(),f(async(e,t)=>{try{let n=m(this.sdk.testMode?l.MagicPayloadMethod.LogoutTestMode:l.MagicPayloadMethod.Logout),s=await this.request(n);this.sdk.useStorageCache&&this.emitUserLoggedOut(s),e(s)}catch(n){t(n)}})}requestInfoWithUI(e){let t=m(l.MagicPayloadMethod.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let{showUI:t=!0}=e||{},n=m(this.sdk.testMode?l.MagicPayloadMethod.UserSettingsTestMode:l.MagicPayloadMethod.UserSettings,[e]),s=this.request(n);return!t&&s&&(s.on(l.RecoveryFactorEventEmit.SendNewPhoneNumber,i=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.SendNewPhoneNumber,n.id)(i)}),s.on(l.RecoveryFactorEventEmit.SendOtpCode,i=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.SendOtpCode,n.id)(i)}),s.on(l.RecoveryFactorEventEmit.StartEditPhoneNumber,()=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.StartEditPhoneNumber,n.id)()}),s.on(l.RecoveryFactorEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.RecoveryFactorEventEmit.Cancel,n.id)()}),s.on(l.RecencyCheckEventEmit.VerifyEmailOtp,i=>{this.createIntermediaryEvent(l.RecencyCheckEventEmit.VerifyEmailOtp,n.id)(i)})),s}recoverAccount(e){let{email:t,showUI:n}=e,s=m(this.sdk.testMode?l.MagicPayloadMethod.RecoverAccountTestMode:l.MagicPayloadMethod.RecoverAccount,[{email:t,showUI:n}]),i=this.request(s);return!n&&i&&(i.on(l.RecoverAccountEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.Cancel,s.id)()}),i.on(l.RecoverAccountEventEmit.ResendSms,()=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.ResendSms,s.id)()}),i.on(l.RecoverAccountEventEmit.VerifyOtp,o=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.VerifyOtp,s.id)(o)}),i.on(l.RecoverAccountEventEmit.UpdateEmail,o=>{this.createIntermediaryEvent(l.RecoverAccountEventEmit.UpdateEmail,s.id)(o)}),i.on(l.UpdateEmailEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.UpdateEmailEventEmit.Cancel,s.id)()}),i.on(l.UpdateEmailEventEmit.RetryWithNewEmail,o=>{this.createIntermediaryEvent(l.UpdateEmailEventEmit.RetryWithNewEmail,s.id)(o)}),i.on(l.UpdateEmailEventEmit.VerifyEmailOtp,o=>{this.createIntermediaryEvent(l.UpdateEmailEventEmit.VerifyEmailOtp,s.id)(o)})),i}revealEVMPrivateKey(){let e=m(l.MagicPayloadMethod.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=m(l.MagicPayloadMethod.EnableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(l.EnableMFAEventEmit.VerifyMFACode,i=>{this.createIntermediaryEvent(l.EnableMFAEventEmit.VerifyMFACode,n.id)(i)}),s.on(l.EnableMFAEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.EnableMFAEventEmit.Cancel,n.id)()})),s}disableMFA(e){let{showUI:t=!0}=e,n=m(l.MagicPayloadMethod.DisableMFA,[{showUI:t}]),s=this.request(n);return!t&&s&&(s.on(l.DisableMFAEventEmit.VerifyMFACode,i=>{this.createIntermediaryEvent(l.DisableMFAEventEmit.VerifyMFACode,n.id)(i)}),s.on(l.DisableMFAEventEmit.LostDevice,i=>{this.createIntermediaryEvent(l.DisableMFAEventEmit.LostDevice,n.id)(i)}),s.on(l.DisableMFAEventEmit.Cancel,()=>{this.createIntermediaryEvent(l.DisableMFAEventEmit.Cancel,n.id)()})),s}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}localForageIsLoggedInKey="magic_auth_is_logged_in";userLoggedOutCallbacks=[]};var L=require("@magic-sdk/types");var Ie=class extends R{connectWithUI(e){let t=f(async(n,s)=>{try{let i=m(L.MagicPayloadMethod.Login,[{enabledWallets:this.sdk.thirdPartyWallets.enabledWallets,...e}]),o=this.request(i);this.sdk.thirdPartyWallets.eventListeners.forEach(({event:c,callback:p})=>{o.on(c,()=>p(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(m(L.MagicPayloadMethod.ShowUI,[e]))}showAddress(){return this.request(m(L.MagicPayloadMethod.ShowAddress))}showSendTokensUI(){return this.request(m(L.MagicPayloadMethod.ShowSendTokensUI))}showOnRamp(){return this.request(m(L.MagicPayloadMethod.ShowOnRamp))}showNFTs(){return this.request(m(L.MagicPayloadMethod.ShowNFTs))}showBalances(){return this.request(m(L.MagicPayloadMethod.ShowBalances))}sign7702Authorization(e){return this.request(m(L.MagicPayloadMethod.Sign7702Authorization,[e]))}send7702Transaction(e){return this.request(m(L.MagicPayloadMethod.Send7702Transaction,[e]))}};var x=require("@magic-sdk/types");var be=class extends R{eventListeners=[];enabledWallets={};isConnected=!1;resetThirdPartyWalletState(){localStorage.removeItem(x.LocalStorageKeys.PROVIDER),localStorage.removeItem(x.LocalStorageKeys.ADDRESS),localStorage.removeItem(x.LocalStorageKeys.CHAIN_ID),this.isConnected=!1}requestOverride(e){if(e.method===x.MagicPayloadMethod.Login)return this.resetThirdPartyWalletState(),super.request(e);if(e.method===x.MagicPayloadMethod.GetInfo)return this.getInfo(e);if(e.method===x.MagicPayloadMethod.IsLoggedIn)return this.isLoggedIn(e);if(e.method===x.MagicPayloadMethod.Logout)return this.logout(e);switch(localStorage.getItem(x.LocalStorageKeys.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(x.LocalStorageKeys.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(x.LocalStorageKeys.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(x.LocalStorageKeys.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 f((t,n)=>{this.sdk.web3modal.modal.getWalletProvider().request(e).then(t).catch(n)})}web3modalIsLoggedIn(){return f(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 f((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 f(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)?f((i,o)=>{this.sdk.walletKit.walletRequest(e).then(i).catch(a=>o(new U(a)))}):super.requestOverlay(e)}magicWidgetLogout(e){return f(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}})})}};var _t=require("@magic-sdk/types");var{createBoundEmitterMethod:we,createChainingEmitterMethod:H}=oe(),Se=class extends R{isMagic=!0;sendAsync(e,t){if(!t)throw Je({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e)){let s=e.map(i=>F(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(F(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=m(e,Array.isArray(t)?t:[]);return this.request(s)}if(Array.isArray(e)||t){this.sendAsync(e,t);return}let n=Ge();return n.log(),new V(e).applyError({code:-32603,message:n.rawMessage}).payload}enable(){let e=m(_t.MagicPayloadMethod.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=H("on",this);once=H("once",this);addListener=H("addListener",this);off=H("off",this);removeListener=H("removeListener",this);removeAllListeners=H("removeAllListeners",this);emit=we("emit");eventNames=we("eventNames");listeners=we("listeners");listenerCount=we("listenerCount")};var q=require("@magic-sdk/types");var Me=class extends R{purchase(e){let t=m(q.MagicPayloadMethod.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=this.sdk.thirdPartyWallets.isConnected,n=m(q.MagicPayloadMethod.NFTCheckout,[{...e,walletProvider:t?"web3modal":"magic"}]),s=this.request(n);return t&&(s.on(q.NftCheckoutIntermediaryEvents.Initiated,async i=>{try{let o=await this.request({method:"eth_sendTransaction",params:[i]});this.createIntermediaryEvent(q.NftCheckoutIntermediaryEvents.Success,n.id)(o)}catch{this.createIntermediaryEvent(q.NftCheckoutIntermediaryEvents.Failure,n.id)()}}),s.on(q.NftCheckoutIntermediaryEvents.Disconnect,()=>{this.sdk.thirdPartyWallets.resetThirdPartyWalletState(),s.emit("disconnect")})),s}transfer(e){let t=m(q.MagicPayloadMethod.NFTTransfer,[e]);return this.request(t)}};function kt(r){return r.compat&&r.compat[g.sdkName]!=null?typeof r.compat[g.sdkName]=="string"?ft(yt(g.version),r.compat[g.sdkName]):!!r.compat[g.sdkName]:!0}function ln(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 dn(r){let e=r?.extensions??[],t={},n=[];if(Array.isArray(e)?e.forEach(s=>{kt(s)?(s.init(this),s.name&&(this[s.name]=s),G(s.config)||(t[s.name]=s.config)):n.push(s)}):Object.keys(e).forEach(s=>{if(kt(e[s])){e[s].init(this);let i=e[s];this[s]=i,G(i.config)||(t[e[s].name]=i.config)}else n.push(e[s])}),n.length)throw Fe(n);return t}var xe=class r{constructor(e,t){this.apiKey=e;if(!e)throw De();g.platform==="react-native"&&t?.endpoint&&Ke().log();let{defaultEndpoint:n,version:s}=g;this.testMode=!!t?.testMode,this.useStorageCache=!!t?.useStorageCache,this.endpoint=Te(t?.endpoint??n).origin,this.auth=new Re(this),this.user=new Pe(this),this.wallet=new Ie(this),this.nft=new Me(this),this.thirdPartyWallets=new be(this),this.rpcProvider=new Se(this);let i=dn.call(this,t);this.parameters=ee({API_KEY:this.apiKey,DOMAIN_ORIGIN:typeof window<"u"&&window?.location?window?.location.origin:"",ETH_NETWORK:t?.network,host:Te(this.endpoint).host,sdk:vt[g.sdkName],version:s,ext:G(i)?void 0:i,locale:t?.locale||"en_US",authConfig:t?.authConfig?{...t.authConfig}:void 0,...g.bundleId?{bundleId:g.bundleId}:{},meta:t?.meta}),this.networkHash=ln(this.apiKey,t?.network,G(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 g.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()}};var N=require("@magic-sdk/types");function un(r,e){return e&&Array.isArray(r)?r.find(t=>t.id===e):r}function qt(r,e){let t=e.data.response?.id,n=un(r,t);if(t&&n){let s=new V(n).applyResult(e.data.response.result).applyError(e.data.response.error);return{id:t,response:s}}return{}}function Dt(r,e){let t=null;return function(...n){t&&clearTimeout(t),t=setTimeout(()=>{r(...n)},e)}}var pn=1e3,Ut=60*pn,Wt=5*Ut,hn=60*Ut,Ce=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=Dt(()=>{this.endpoint==="https://auth.magic.link/"&&this.heartBeatCheck()},hn);thirdPartyWalletRequestHandler=()=>{};async post(e,t){return B(async(n,s)=>{if(!this.isConnectedToInternet){let u=re();s(u)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let i=[],o=Array.isArray(t)?t.map(u=>u.id):[],a=await this.createMagicRequest(`${e}-${this.parameters}`,t,this.networkHash);await this._post(a);let c=u=>h=>{let{id:w,response:S}=qt(t,h);if(this.persistMagicEventRefreshToken(h),S?.payload.error?.message==="User denied account access.")ve();else if(h.data.deviceShare){let{deviceShare:Jt}=h.data;Lt(Jt,this.networkHash)}w&&S&&Array.isArray(t)&&o.includes(w)?(i.push(S),i.length===t.length&&(u(),n(i))):w&&S&&!Array.isArray(t)&&w===t.id&&(u(),n(S))},p=this.on(N.MagicIncomingWindowMessage.MAGIC_HANDLE_RESPONSE,c(()=>p()))})}async postThirdPartyWalletResponse(e){return B(async(t,n)=>{if(!this.isConnectedToInternet){let i=re();n(i)}await this.checkRelayerExistsInDOM()||(this.isReadyForRequest=!1,await this.reloadRelayer()),this.isReadyForRequest||await this.waitForReady();let s={msgType:`${N.MagicOutgoingWindowMessage.MAGIC_THIRD_PARTY_WALLET_RESPONSE}-${this.parameters}`,response:e};await this._post(s),t()})}async postThirdPartyWalletUpdate(e){return B(async(t,n)=>{if(!this.isConnectedToInternet){let o=re();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:`${N.MagicOutgoingWindowMessage.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(N.MagicIncomingWindowMessage.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()})})}onThirdPartyWalletRequest(e){this.thirdPartyWalletRequestHandler=e}listen(){this.on(N.MagicIncomingWindowMessage.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(N.MagicIncomingWindowMessage.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(N.MagicIncomingWindowMessage.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new k(N.SDKWarningCode.ProductAnnouncement,e.data.response.result.product_announcement).log()})}heartBeatCheck(){let e=!0,t=async()=>{let n={msgType:`${N.MagicOutgoingWindowMessage.MAGIC_PING}-${this.parameters}`,payload:[]};await this._post(n)};this.heartbeatIntervalTimer=setInterval(async()=>{if(this.lastPongTime){if(Date.now()-this.lastPongTime>Wt*2){this.reloadRelayer(),e=!0;return}}else if(!e){this.reloadRelayer(),e=!0;return}await t(),e=!1},Wt)}stopHeartBeat(){this.heartbeatDebounce(),this.lastPongTime=null,this.heartbeatIntervalTimer&&(clearInterval(this.heartbeatIntervalTimer),this.heartbeatIntervalTimer=null)}async persistMagicEventRefreshToken(e){e.data.rt&&await C("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(g.platform==="web")try{let e=await T("jwt");return e||await Xe()}catch(e){return console.error("webcrypto error",e),null}else return null}async getRT(){return await T("rt")}async getDecryptedDeviceShare(e){return await Ot(e)}};var nt=require("@magic-sdk/types"),Ft=["request","overlay","sdk"];function mn(r){let e=Object.getPrototypeOf(r),t=[e];for(;e&&e!==R.prototype;)e=Object.getPrototypeOf(e),t.push(e);return t}var st=class extends R{compat;__sdk_access_field_descriptors__=new Map;__is_initialized__=!1;utils={createPromiEvent:f,isPromiEvent:Ye,encodeJSON:ee,decodeJSON:_e,createJsonRpcRequestPayload:m,standardizeJsonRpcRequestPayload:F,storage:ne};constructor(){super(void 0);let e=[this,...mn(this)];Ft.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 Ue(t)}}))})}init(e){this.__is_initialized__||(Ft.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 K(this,"DEPRECATION_NOTICE",o)}createWarning(e,t){return new K(this,e,t)}createError(e,t,n){return new te(this,e,t,n)}},Ne=class extends st{},Ae=class{static Internal=Ne},$e=class extends Ne{constructor(t){super();this.config=t;this.chain=t.chainType}chain;getPublicAddress(){return this.request(this.utils.createJsonRpcRequestPayload(nt.MagicPayloadMethod.GetMultichainPublicAddress,[{chain:this.chain}]))}revealPrivateKey(){return this.request(this.utils.createJsonRpcRequestPayload(nt.MagicPayloadMethod.RevealPK,[{chain:this.chain}]))}};
6
6
  //# sourceMappingURL=index.js.map