@privy-io/expo 0.55.2 → 0.55.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-GYNEZPBE.js +1 -0
- package/dist/chunk-SWAMTVZW.js +1 -0
- package/dist/{chunk-B7UCFVWZ.js → chunk-WYJVIY4U.js} +1 -1
- package/dist/esm/chunk-GYNEZPBE.js +1 -0
- package/dist/esm/chunk-SWAMTVZW.js +1 -0
- package/dist/esm/{chunk-B7UCFVWZ.js → chunk-WYJVIY4U.js} +1 -1
- package/dist/esm/extended-chains.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/passkey.js +1 -1
- package/dist/esm/smart-wallets.js +1 -1
- package/dist/esm/ui.js +1 -1
- package/dist/extended-chains.js +1 -1
- package/dist/index.d.ts +19 -0
- package/dist/index.js +1 -1
- package/dist/passkey.js +1 -1
- package/dist/smart-wallets.js +1 -1
- package/dist/ui.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-R6RLTN7I.js +0 -1
- package/dist/chunk-X7A6Y2M2.js +0 -1
- package/dist/esm/chunk-R6RLTN7I.js +0 -1
- package/dist/esm/chunk-X7A6Y2M2.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkWYJVIY4Ujs = require('./chunk-WYJVIY4U.js');var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _expolinking = require('expo-linking'); var l = _interopRequireWildcard(_expolinking);var _expowebbrowser = require('expo-web-browser'); var d = _interopRequireWildcard(_expowebbrowser);var _react = require('react');var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core');var _expoappleauthentication = require('expo-apple-authentication'); var c = _interopRequireWildcard(_expoappleauthentication);function M(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield c.signInAsync({state:e.state,requestedScopes:[c.AppleAuthenticationScope.EMAIL,c.AppleAuthenticationScope.FULL_NAME]})}catch(i){throw i instanceof Error&&"code"in i&&i.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:e.isLogin?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):i}})}var W=(e={})=>{let{oAuthState:i,setOAuthState:r,oAuthCallbacks:D,client:u}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),j=_chunkWYJVIY4Ujs.e.call(void 0, ),a=e.action?e.action==="login":!j;_react.useEffect.call(void 0, ()=>{D.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let v=_react.useCallback.call(void 0, U=>{var A;let n=_chunkWYJVIY4Ujs.j.call(void 0, U);return r({status:"error",error:n}),(A=e==null?void 0:e.onError)==null||A.call(e,n),n},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(_e){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:n,redirectUri:A,isLegacyAppleIosBehaviorEnabled:Q=!1,disableSignup:C,onAppleOAuthUserInfo:I}){var P,x,F;r({status:"loading"});let E=_chunkWYJVIY4Ujs.b.call(void 0, );try{if(E&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!E&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let h=l.createURL(A||"/"),{url:m}=yield u.auth.oauth.generateURL(n,h),t,_;if(_reactnative.Platform.OS==="ios"&&n==="apple"&&!Q){let g=(P=new URL(m).searchParams.get("state"))!=null?P:"",o=yield M({state:g,isLogin:a});if(console.log("credentials",o),!o.authorizationCode||!o.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:a?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(a){let k=_chunkWYJVIY4Ujs.a.call(void 0, ),N=yield u.auth.oauth.loginWithCode(o.authorizationCode,o.state,n,"raw",C?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});t=N.user,_=N.is_new_user}else({user:t}=yield u.auth.oauth.linkWithCode(o.authorizationCode,o.state,n,"raw"));return I&&I({fullName:o.fullName,email:o.email}),(x=e==null?void 0:e.onSuccess)==null||x.call(e,t,_),r({status:"done"}),t!=null?t:void 0}let G=_reactnative.Platform.OS==="android"?m.replace("x.com","twitter.com"):m,p=yield d.openAuthSessionAsync(G,h,{createTask:!1});if(p.type!=="success")throw[d.WebBrowserResultType.CANCEL,d.WebBrowserResultType.DISMISS].includes(p.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:a?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:a?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:J}=l.parse(p.url),{privy_oauth_state:O,privy_oauth_code:y}=J;if(!y||!O)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:a?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(a){let w=_chunkWYJVIY4Ujs.a.call(void 0, ),g=yield u.auth.oauth.loginWithCode(y,O,n,void 0,C?"no-signup":"login-or-sign-up",{embedded:w==null?void 0:w.embedded});t=g.user,_=g.is_new_user}else({user:t}=yield u.auth.oauth.linkWithCode(y,O,n));return(F=e==null?void 0:e.onSuccess)==null||F.call(e,t,_),yield l.openURL(p.url.split("?")[0]),r({status:"done"}),t!=null?t:void 0}catch(h){throw v(h),h}})},[u,r,v]),state:i}};function le(e){let{state:i,start:r}=W(_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},e),{action:"login"}));return{state:i,login:r}}function he(e){let{state:i,start:r}=W(_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},e),{action:"link"}));return{state:i,link:r}}function ce(e){return W(e)}exports.a = le; exports.b = he; exports.c = ce;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkWYJVIY4Ujs = require('./chunk-WYJVIY4U.js');var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var jt=e=>{let{client:t,setSiweState:i,siweState:n}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkWYJVIY4Ujs.j.call(void 0, a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]),s=_react.useCallback.call(void 0, d=>_chunkOWCFWPALjs.d.call(void 0, void 0,[d],function*({signature:a,messageOverride:c}){var g;try{if(!_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});i({status:"submitting-signature"});let{user:p}=yield t.auth.siwe.linkWithSiwe(a,void 0,c);return i({status:"done"}),(g=e==null?void 0:e.onSuccess)==null||g.call(e,p),p}catch(m){throw o(m)}}),[t,o,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:s,state:n}};var eo=e=>{let{client:t,setSiweState:i,siweState:n}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkWYJVIY4Ujs.j.call(void 0, a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({signature:a,messageOverride:c,disableSignup:d}){var m;try{if(_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});i({status:"submitting-signature"});let v=_chunkWYJVIY4Ujs.a.call(void 0, ),y=yield t.auth.siwe.loginWithSiwe(a,void 0,c,d?"no-signup":"login-or-sign-up",{embedded:v==null?void 0:v.embedded});return i({status:"done"}),(m=e==null?void 0:e.onSuccess)==null||m.call(e,y.user,y.is_new_user),y.user}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:n}};var C=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return e};var mo=()=>{let e=C(),t=_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkWYJVIY4Ujs.j.call(void 0, a)}}),[e]),i=_react.useCallback.call(void 0, a=>_chunkOWCFWPALjs.d.call(void 0, void 0,[a],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={}}){try{if(!_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});let{user:d}=yield e.auth.siws.link({signature:n,message:o,walletClientType:r,connectorType:s});return d}catch(c){throw _chunkWYJVIY4Ujs.j.call(void 0, c)}}),[e]);return{generateMessage:t,link:i}};var So=()=>{let e=C(),t=_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkWYJVIY4Ujs.j.call(void 0, a)}}),[e]),i=_react.useCallback.call(void 0, c=>_chunkOWCFWPALjs.d.call(void 0, void 0,[c],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={},disableSignup:a}){try{if(_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siws_while_already_logged_in",error:"Already logged in, use `useLinkWithSiws` if you are trying to link a wallet to an existing account"});return(yield e.auth.siws.login({signature:n,message:o,walletClientType:r,connectorType:s,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw _chunkWYJVIY4Ujs.j.call(void 0, d)}}),[e]);return{generateMessage:t,login:i}};var _o=e=>{let{client:t}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkWYJVIY4Ujs.j.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({address:o}){var s;try{if(!_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let{user:c}=yield t.auth.siwe.unlinkWallet(o);return(s=e==null?void 0:e.onSuccess)==null||s.call(e,c),c}catch(a){throw i(a)}}),[t,i,e==null?void 0:e.onSuccess])}};var Fo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),s=_react.useCallback.call(void 0, d=>{var m;let g=_chunkWYJVIY4Ujs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({email:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,[m],function*({code:d,email:g}){var p;try{if(!_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let y=g||t;if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.email.linkWithCode(y,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw s(v)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};var jo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),s=_react.useCallback.call(void 0, d=>{var m;let g=_chunkWYJVIY4Ujs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({email:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, p=>_chunkOWCFWPALjs.d.call(void 0, void 0,[p],function*({code:d,email:g,disableSignup:m}){var v;try{if(_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let S=g||t;if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});r({status:"submitting-code"});let k=_chunkWYJVIY4Ujs.a.call(void 0, ),w=yield n.auth.email.loginWithCode(S,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};var Zo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),s=_react.useCallback.call(void 0, d=>{var m;let g=_chunkWYJVIY4Ujs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({phone:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,[m],function*({code:d,phone:g}){var p;try{if(!_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(g||t))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.phone.linkWithCode(g||t,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw s(v)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};var ln=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),s=_react.useCallback.call(void 0, d=>{var m;let g=_chunkWYJVIY4Ujs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({phone:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, p=>_chunkOWCFWPALjs.d.call(void 0, void 0,[p],function*({code:d,phone:g,disableSignup:m}){var v;try{if(_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(g||t))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});r({status:"submitting-code"});let k=_chunkWYJVIY4Ujs.a.call(void 0, ),w=yield n.auth.phone.loginWithCode(g||t,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};var _expolinking = require('expo-linking'); var G = _interopRequireWildcard(_expolinking); var D = _interopRequireWildcard(_expolinking); var Re = _interopRequireWildcard(_expolinking); var Oe = _interopRequireWildcard(_expolinking); var Fe = _interopRequireWildcard(_expolinking); var He = _interopRequireWildcard(_expolinking); var Ge = _interopRequireWildcard(_expolinking); var Ne = _interopRequireWildcard(_expolinking);var yn=e=>{let{appState:t,getCurrentAppState:i}=_chunkWYJVIY4Ujs.l.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),s=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, g=>{var p;let m=_chunkWYJVIY4Ujs.j.call(void 0, g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{s.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...y)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[v,...y],function*({relyingParty:g,redirectUrl:m},p={pollAttempts:10,pollIntervalMs:1e3}){var S;try{let k=_chunkWYJVIY4Ujs.b.call(void 0, );if(s.current=!1,!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});r({status:"generating-uri"});let{connect_uri:w,channel_token:P}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:G.createURL(m!=null?m:"/")});if(!w)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield G.openURL(w),r({status:"polling-status"});let U=0;for(;U<p.pollAttempts;){if(s.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield _chunkWYJVIY4Ujs.k.call(void 0, p.pollIntervalMs);continue}let M=yield n.auth.farcaster.getFarcasterStatus({channel_token:P});if(M.state==="completed"){r({status:"submitting-token"});let{user:I}=yield n.auth.farcaster.link(_chunkOWCFWPALjs.a.call(void 0, {channel_token:P},M));return r({status:"done"}),(S=e==null?void 0:e.onSuccess)==null||S.call(e,I),I}U++,yield _chunkWYJVIY4Ujs.k.call(void 0, p.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(k){throw a(k)}}),[n,e==null?void 0:e.onSuccess,a,r]),state:o,cancel:c}};var Cn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkWYJVIY4Ujs.j.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({fid:o}){var s;try{let{user:a}=yield t.auth.farcaster.unlink({fid:o});return(s=e==null?void 0:e.onSuccess)==null||s.call(e,a),a}catch(a){throw i(a)}}),[t,e==null?void 0:e.onSuccess,i])}};var Mn=e=>{let{appState:t,getCurrentAppState:i}=_chunkWYJVIY4Ujs.l.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),s=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, g=>{var p;let m=_chunkWYJVIY4Ujs.j.call(void 0, g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{s.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (y,...S)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[y,...S],function*({relyingParty:g,redirectUrl:m,disableSignup:p},v={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(s.current=!1,_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:P,channel_token:U}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:D.createURL(m!=null?m:"/")});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!U)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield D.openURL(P),r({status:"polling-status"});let M=0;for(;M<v.pollAttempts;){if(s.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield _chunkWYJVIY4Ujs.k.call(void 0, v.pollIntervalMs);continue}let I=yield n.auth.farcaster.getFarcasterStatus({channel_token:U});if(I.state==="completed"){r({status:"submitting-token"});let j=_chunkWYJVIY4Ujs.a.call(void 0, ),K=yield n.auth.farcaster.authenticate(_chunkOWCFWPALjs.a.call(void 0, {channel_token:U,mode:p?"no-signup":"login-or-sign-up"},I),{embedded:j==null?void 0:j.embedded});return r({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,K.user,K.is_new_user),K.user}M++,yield _chunkWYJVIY4Ujs.k.call(void 0, v.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(w){throw a(w)}}),[n,a,e==null?void 0:e.onSuccess,r,t]),state:o,cancel:c}};var _zustand = require('zustand');var oe=_zustand.create.call(void 0, ()=>({status:"initial"})),E=e=>oe.setState(e,!0),kr=oe.getState,Nn= exports.n =()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=oe(),i=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{E({status:"fetching-nonce"});let o=yield e.auth.farcasterV2.initializeAuth();return E({status:"awaiting-signature"}),o}catch(o){let r=_chunkWYJVIY4Ujs.j.call(void 0, o);throw E({status:"initial",error:r}),r}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){let r=kr().status;try{if(_chunkWYJVIY4Ujs.b.call(void 0, )){let d=new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use a link helper if you are trying to link farcaster to an existing account"});throw E({status:r,error:d}),d}E({status:"submitting-signature"});let a=_chunkWYJVIY4Ujs.a.call(void 0, ),c=yield e.auth.farcasterV2.authenticate(o,{embedded:a==null?void 0:a.embedded});return E({status:"done"}),setTimeout(()=>E({status:"initial"}),1500),{user:c.user}}catch(s){let a=_chunkWYJVIY4Ujs.j.call(void 0, s);throw E({status:r,error:a}),a}}),[e]);return{init:i,login:n,state:t}};var $n=e=>{let{client:t}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkWYJVIY4Ujs.j.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,[s],function*({provider:o,subject:r}){var a;try{let{user:c}=yield t.auth.oauth.unlink(o,r);return(a=e==null?void 0:e.onSuccess)==null||a.call(e,c),c}catch(c){throw i(c)}}),[t,e==null?void 0:e.onSuccess,i])}};var Zn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),i=_react.useRef.call(void 0, e.onOAuthTokenGrant);i.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:n}=t.addOAuthTokensListener(o=>{i.current(o)});return n},[t])};var ni=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};function Lr(e,t){return[..._jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),..._jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, e),..._jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e)].find(n=>n.address===t)}function ne(e){let t=_chunkWYJVIY4Ujs.b.call(void 0, );if(!t)throw new Error("User must be authenticated to perform this operation");let i=Lr(t,e);if(!i)throw new Error(`No wallet found with address ${e}`);return i}var pi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return _react.useMemo.call(void 0, ()=>({addSessionSigners:({address:t,signers:i})=>_jssdkcore.addSessionSigners.call(void 0, {client:e,wallet:ne(t),signers:i.map(n=>({signer_id:n.signerId,override_policy_ids:n.policyIds}))}),removeSessionSigners:({address:t})=>_jssdkcore.removeSessionSigners.call(void 0, {client:e,wallet:ne(t)})}),[e])};var vi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newEmailAddress:i}){xe(),yield e.auth.email.sendCode(i)})},updateEmail(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newEmailAddress:i,code:n}){let{address:r}=xe(),{user:s}=yield e.auth.email.updateEmail({oldEmailAddress:r,newEmailAddress:i,code:n});return s})}}),[e])};function xe(){let t=Hr().linked_accounts.find(i=>i.type==="email");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_email_without_a_linked_email",error:"Must have a linked email account already to update an email address. Use `useLinkEmail` to link an email account."});return t}function Hr(){let e=_chunkWYJVIY4Ujs.b.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var Pi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newPhoneNumber:i}){Le(),yield e.auth.phone.sendCode(i)})},updatePhone(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newPhoneNumber:i,code:n}){let{phoneNumber:r}=Le(),{user:s}=yield e.auth.phone.updatePhone({oldPhoneNumber:r,newPhoneNumber:i,code:n});return s})}}),[e])};function Le(){let t=Dr().linked_accounts.find(i=>i.type==="phone");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_phone_without_a_linked_phone",error:"Must have a linked phone account already to update a phone number. Use `useLinkSMS` to link a phone number."});return t}function Dr(){let e=_chunkWYJVIY4Ujs.b.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var _expowebbrowser = require('expo-web-browser'); var F = _interopRequireWildcard(_expowebbrowser);var W=(e,t)=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){let i=yield F.openAuthSessionAsync(e,t,{createTask:!1});if(i.type!=="success")throw i.type===F.WebBrowserResultType.CANCEL||i.type===F.WebBrowserResultType.DISMISS?new (0, _jssdkcore.PrivyClientError)({error:"OAuth session was cancelled",code:"oauth_session_failed"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:"oauth_session_failed"});return Nr(i.url)});function Nr(e){let{queryParams:t}=Oe.parse(e);return t}var Ti=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:W}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_cross_app_while_already_logged_in",error:"Already logged in, use `linkCrossAppAccount` if you are trying to link a cross app account to an existing account"});let{user:a}=yield t({providerAppId:n,redirectUrl:Re.createURL(o||"/")});return{user:a}}),[t])}};var ji=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:W}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(!_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_cross_app_before_logged_in",error:"Must be logged in to link a cross app account, Use `loginWithCrossAppAccount` to login with cross app"});return{user:yield t({providerAppId:n,redirectUrl:Fe.createURL(o||"/")})}}),[t])}};var Zi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:W}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:i,message:n,redirectUri:o="/"})=>t({user:_chunkWYJVIY4Ujs.b.call(void 0, ),address:i,message:n,redirectUrl:He.createURL(o)})}),[t])};var ss=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:W}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:i,typedData:n,redirectUri:o="/"})=>t({user:_chunkWYJVIY4Ujs.b.call(void 0, ),address:i,typedData:n,redirectUrl:Ge.createURL(o)})}),[t])};var ps=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:W}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:i,transaction:n,redirectUri:o="/"})=>t({user:_chunkWYJVIY4Ujs.b.call(void 0, ),address:i,transaction:n,redirectUrl:Ne.createURL(o)})}),[t])};var ks=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return{setRecovery:_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var a;let n=_chunkWYJVIY4Ujs.b.call(void 0, ),o=e.app.appId;if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let r=(a=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?a:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.isUnifiedWallet.call(void 0, r))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});try{r.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(r):r.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier"))}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:i.recoveryMethod});let s=yield ut({appId:o,client:e,user:n,primaryAccount:r,recoveryParams:i});try{let{user:c}=yield e.embeddedWallet.setRecovery(s);return{user:c}}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[e])}},ut=r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:e,client:t,user:i,primaryAccount:n,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:n};case"user-passcode":return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},o),{wallet:n});case"google-drive":{let s=yield _chunkWYJVIY4Ujs.m.call(void 0, t);return{recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:s}}case"icloud":{let{recoverySecret:s,iCloudRecordName:a}=yield _chunkWYJVIY4Ujs.h.call(void 0, {appId:e,client:t,user:i});return{recoveryMethod:"icloud-native",recoverySecretOverride:s,iCloudRecordNameOverride:a,wallet:n}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:n,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var As=()=>{let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return{recover:_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var d;let n=_chunkWYJVIY4Ujs.b.call(void 0, );if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(d=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?d:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.isUnifiedWallet.call(void 0, o))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"User owned wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let r,s,a,c;switch(i.recoveryMethod){case"user-passcode":s=i.password;break;case"google-drive":a=yield _chunkWYJVIY4Ujs.m.call(void 0, e);break;case"icloud":let{recoverySecret:g}=yield _chunkWYJVIY4Ujs.i.call(void 0, {client:e,walletAddress:o.address,chainType:o.chain_type});c=g;break;case"recovery-encryption-key":r=i.recoveryKey;break;case"privy":break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_recovery_method",error:`Unsupported recovery options ${i}`})}try{o.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(o,s,a,c,r):o.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",s,a,c))}catch(g){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[e])}};var se=(e={})=>{let{wallet:t,createWalletCallbacks:i,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),{onCreateWalletSuccess:r,onCreateWalletError:s,onRecoverWalletError:a,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:d,onSetWalletRecoveryError:g}=e;return _react.useEffect.call(void 0, ()=>{i.current={onSuccess:r,onError:s}},[r,s]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:c,onError:a}},[c,a]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:d,onError:g}},[c,a]),t};var Hs=({onStateChange:e})=>{let t=se();return _react.useEffect.call(void 0, ()=>{e(t)},[t])};var Ns=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return{getIdentityToken:e}};var Qs=e=>{let{client:t}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkWYJVIY4Ujs.j.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;try{if(_chunkWYJVIY4Ujs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let s=_chunkWYJVIY4Ujs.a.call(void 0, ),a=yield t.auth.guest.create({embedded:s==null?void 0:s.embedded});return(o=e==null?void 0:e.onSuccess)==null||o.call(e,a.user,a.is_new_user),a.user}catch(r){throw i(r)}}),[t,i,e==null?void 0:e.onSuccess])}};function ta({onMfaRequired:e}){let{client:t}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);_react.useEffect.call(void 0, ()=>{function i(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var o;let n=_chunkWYJVIY4Ujs.b.call(void 0, );yield e((o=n==null?void 0:n.mfa_methods.map(({type:r})=>r))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",i),()=>{t.mfaPromises.off("mfaRequired",i)}},[t,e])}function da(){let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var s,a;switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty||((a=(s=_chunkWYJVIY4Ujs.a.call(void 0, ))==null?void 0:s.mfa)==null?void 0:a.relyingParty)});return _chunkWYJVIY4Ujs.v.call(void 0, c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),i=_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var s,a,c,d,g,m,p;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||((a=(s=_chunkWYJVIY4Ujs.a.call(void 0, ))==null?void 0:s.mfa)==null?void 0:a.relyingParty)||""}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;case"passkey":if(typeof r.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let v=yield _chunkWYJVIY4Ujs.t.call(void 0, r.mfaCode),y=_chunkWYJVIY4Ujs.u.call(void 0, v);(m=e.mfaPromises.rootPromise.current)==null||m.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||((g=(d=_chunkWYJVIY4Ujs.a.call(void 0, ))==null?void 0:d.mfa)==null?void 0:g.relyingParty)||"",mfaCode:y}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;default:let S=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(p=e.mfaPromises.rootPromise.current)==null||p.reject(S),S}}),[e]),n=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:i,prompt:n,cancel:o}}function ha(){let{client:e}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),t=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),i=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[],removeForLogin:o.removeForLogin});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:t,submitMfaEnrollment:i,unenrollMfa:n}}var xt=()=>{let e=_chunkWYJVIY4Ujs.d.call(void 0, ),t=C(),i=_react.useMemo.call(void 0, ()=>{let r=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).map(s=>{let a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e,s);return a?{account:s,entropy:a}:null});return r.some(s=>s===null)?[]:r.filter(s=>s!==null).map(({account:s,entropy:{entropyId:a,entropyIdVerifier:c}})=>({address:s.address,walletIndex:s.wallet_index,chainType:s.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:s,entropyId:a,entropyIdVerifier:c,onNeedsRecovery:d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var g;yield(g=_chunkWYJVIY4Ujs.f.call(void 0, ))==null?void 0:g(d)})})}))},[t,e]),n=_react.useCallback.call(void 0, (...r)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[...r],function*({createAdditional:o=!1}={}){let{user:s}=yield t.user.get(),a=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, s);if(!o&&a.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=_jssdkcore.getEntropyDetailsFromUser.call(void 0, s);if(!c){let y=yield t.embeddedWallet.create({});return ce(y.user,0),{user:y.user}}let{entropyId:d,entropyIdVerifier:g}=c;if(g==="solana-address-verifier"){let y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, s),S=yield t.embeddedWallet.create({solanaAccount:y});return ce(S.user,0),{user:S.user}}let p=a.map(y=>y.wallet_index).reduce((y,S)=>Math.max(y,S),0)+1,v=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:p,entropyId:d,entropyIdVerifier:g});return ce(v.user,p),{user:v.user}}),[t]);return{wallets:i,create:n}};function ce(e,t){let i=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(n=>n.wallet_index===t);if(!e||!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var Lt=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:n}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p),{onCreateWalletSuccess:o,onCreateWalletError:r,onRecoverWalletError:s,onRecoverWalletSuccess:a}=e;return _react.useEffect.call(void 0, ()=>{i.current={onSuccess:o,onError:r}},[o,r]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:a,onError:s}},[a,s]),t};var Ot=()=>{let e=_chunkWYJVIY4Ujs.d.call(void 0, ),t=C(),i=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let r=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:s,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:s,entropyIdVerifier:a})}))},[t,e]),n=_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,[s],function*({chainType:o,createAdditional:r=!1}){var k;let a=t.app.getConfig();if(((k=a==null?void 0:a.embedded_wallet_config)==null?void 0:k.mode)==="user-controlled-server-wallets-only")throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Bitcoin wallets are only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let{user:c}=yield t.user.get(),d=_jssdkcore.getEntropyDetailsFromUser.call(void 0, c);if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"No existing wallet for this user, create an Ethereum walet first to add a Bitcoin wallet"});let{entropyId:g,entropyIdVerifier:m}=d,p=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, c).filter(w=>w.chain_type===o);if(!r&&p.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let v=p.length===0?0:Math.max(...p.map(w=>w.wallet_index),0)+1,y=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:v,entropyId:g,entropyIdVerifier:m}),S=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, y.user).find(w=>w.chain_type===o&&w.wallet_index===v);if(!y.user||!S)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:y.user,provider:yield t.embeddedWallet.getBitcoinProvider({wallet:S,entropyId:g,entropyIdVerifier:m})}}),[t]);return{wallets:i,create:n}};var Ft=()=>{let{isReady:e,logout:t,getAccessToken:i,error:n}=_react.useContext.call(void 0, _chunkWYJVIY4Ujs.p);return{user:_chunkWYJVIY4Ujs.d.call(void 0, ),isReady:e,error:n,logout:t,getAccessToken:i}};var Bt=()=>{let e=C();return _react.useMemo.call(void 0, ()=>({generateAuthorizationSignature(i){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){let{signature:n}=yield _jssdkcore.generateAuthorizationSignature.call(void 0, (...o)=>e.embeddedWallet.signWithUserSigner(...o),i);return{signature:n}})}}),[e])};exports.a = jt; exports.b = eo; exports.c = C; exports.d = mo; exports.e = So; exports.f = _o; exports.g = Fo; exports.h = jo; exports.i = Zo; exports.j = ln; exports.k = yn; exports.l = Cn; exports.m = Mn; exports.n = Nn; exports.o = $n; exports.p = Zn; exports.q = ni; exports.r = pi; exports.s = vi; exports.t = Pi; exports.u = Ti; exports.v = ji; exports.w = Zi; exports.x = ss; exports.y = ps; exports.z = ks; exports.A = As; exports.B = se; exports.C = Hs; exports.D = Ns; exports.E = Qs; exports.F = ta; exports.G = da; exports.H = ha; exports.I = xt; exports.J = Lt; exports.K = Ot; exports.L = Ft; exports.M = Bt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _zustand = require('zustand');var Ee=_zustand.create.call(void 0, ()=>({status:"disconnected"})),Ce= exports.f =()=>Ee.getState().onNeedsRecovery,pr= exports.g =e=>{_react.useEffect.call(void 0, ()=>{Ee.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var _expoapplication = require('expo-application');var _exposecurestore = require('expo-secure-store'); var A = _interopRequireWildcard(_exposecurestore); var x = _interopRequireWildcard(_exposecurestore);var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var ke=()=>{if(typeof _expoapplication.applicationId!="string")throw new (0, _jssdkcore.PrivyClientError)({error:"Cannot determine native application ID. Please make sure `expo-application` is installed as a dependency and that `ios.bundleId` or `android.package` is set.",code:"invalid_native_app_id"});return _expoapplication.applicationId};function Pe(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){return[]})}}var Z={get(e){return A.getItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return A.setItemAsync(e,t,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return A.deleteItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return[]})};var _expocrypto = require('expo-crypto');var Ae={name:"@privy-io/expo",version:"0.55.2",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],homepage:"https://docs.privy.io",bugs:{url:"https://privy.io/slack"},license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"},"./extended-chains":{require:"./dist/extended-chains.js",import:"./dist/esm/extended-chains.js",types:"./dist/extended-chains.d.ts"},"./ui":{require:"./dist/ui.js",import:"./dist/esm/ui.js",types:"./dist/ui.d.ts"},"./connectors":{require:"./dist/connectors.js",import:"./dist/esm/connectors.js",types:"./dist/connectors.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:"jest"},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.52.2","@scure/base":"^1.2.4",tweetnacl:"^1.0.3","react-fast-compare":"^3.2.2",zustand:"^5.0.4"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@solana/web3.js":"^1.98.0","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^13.1.0","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",expo:"52.0.37","expo-apple-authentication":"7.1.3","expo-application":"6.0.2","expo-clipboard":"7.0.1","expo-crypto":"14.0.2",jest:"^29.7.0","jest-expo":"52.0.5","lucide-react-native":"^0.474.0",react:"^18.3.1","react-native":"0.77.1","react-test-renderer":"^18.3.1",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.5","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.47",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.30.6"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0},"react-native-svg":{optional:!0},"expo-clipboard":{optional:!0},"react-native-qrcode-styled":{optional:!0},"react-native-safe-area-context":{optional:!0}},publishConfig:{access:"public"}};var xe=({appId:e,clientId:t,storage:r=Z,supportedChains:o,baseUrl:n,logLevel:d})=>new (0, _jssdkcore2.default)({appId:e,clientId:t,supportedChains:o,storage:Pe(r),sdkVersion:`expo:${Ae.version}`,nativeAppIdentifier:ke(),crypto:{digest:_expocrypto.digest},baseUrl:n,logLevel:d});var _reactnative = require('react-native');var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var ee=_zustand.create.call(void 0, ()=>{}),We=e=>ee.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),Oe= exports.a =ee.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);function Ie(e){return typeof e!="object"||e===null||!("event"in e&&typeof e.event=="string")||!("id"in e&&typeof e.id=="string")||!("data"in e&&typeof e.data=="object")||e.data===null?!1:e.event.startsWith("app:secure-storage:")}function Ue(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(e.event){case"app:secure-storage:get":{let{key:t}=e.data,r=yield x.getItemAsync(pe(t),{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).catch(o=>(console.warn("Failed to get the value from secure store",o),null));return{event:e.event,id:e.id,data:{value:r}}}case"app:secure-storage:remove":{let{key:t}=e.data,r=yield x.deleteItemAsync(pe(t),{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(o=>(console.warn("Failed to remove the value from secure store",o),!1));return{event:e.event,id:e.id,data:{success:r}}}case"app:secure-storage:set":{let{key:t,value:r}=e.data,o=yield x.setItemAsync(pe(t),r,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(n=>(console.warn("Failed to write the value to secure store",n),!1));return{event:e.event,id:e.id,data:{success:o}}}}})}var pe=e=>e.replaceAll(":","-");var I=_zustand.createStore.call(void 0, )(()=>({user:null,proxyStatus:"loading"}));function Or(){return I.getState().user}var Ir=I.subscribe.bind(I);function me(e){I.setState(({user:t})=>_reactfastcompare2.default.call(void 0, t,e)?{}:{user:e})}var ve=e=>I.setState({proxyStatus:e});function U(){return _zustand.useStore.call(void 0, I,e=>e.user)}function Ur(){return _zustand.useStore.call(void 0, I,e=>!!e.user)}function T(){return _zustand.useStore.call(void 0, I,e=>e.proxyStatus!=="loading")}var At={shouldUseAppBackedStorage:!0},Te=({client:e,isClientReady:t})=>{let r=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){d==="active"&&((yield e.embeddedWallet.ping(500))||(ve("reloading"),e.embeddedWallet.reload()))})).remove,[e]);let o=_react.useCallback.call(void 0, n=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var c;let{data:d}=n.nativeEvent,i=JSON.parse(d);if(Ie(i)){let s=yield Ue(i);(c=r.current)==null||c.postMessage(JSON.stringify(s));return}e.embeddedWallet.onMessage(i)}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n=>{n&&(e.setMessagePoster(n),r.current=n)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",injectedJavaScriptObject:At,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:e.logger.level==="DEBUG",onLoad:()=>ve("loaded"),onError:console.error,onMessage:o}):null};function Me(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:n}){var i,c,s;t({status:"creating"});try{let{user:a}=yield e.user.get(),p=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, a),w=p[0],v=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, a))!=null?i:void 0;if(n!=null&&n.recoveryMethod&&n.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(n!=null&&n.createAdditional)&&w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Solana wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let S,m;if(w){let l=v!=null?v:w,{entropyId:b,entropyIdVerifier:y}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, l),h=Math.max(...p.map(E=>E.wallet_index),0)+1,g=yield e.embeddedWallet.add({chainType:"solana",entropyId:b,entropyIdVerifier:y,hdWalletIndex:h}),_=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, g.user).find(E=>E.wallet_index===h);if(!_)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});S=yield e.embeddedWallet.getSolanaProvider(_,b,y),m=g.user}else{let l=yield e.embeddedWallet.createSolana({ethereumAccount:v}),b=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, l.user).find(_=>_.wallet_index===0);if(!b)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let y=v!=null?v:b,{entropyId:h,entropyIdVerifier:g}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, y);S=yield e.embeddedWallet.getSolanaProvider(b,h,g),m=l.user}let f=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, m)[0];if(!f)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(s=(c=r.current)==null?void 0:c.onSuccess)==null||s.call(c,S),t({status:"connected",publicKey:f.public_key}),o({status:"initial"}),S}catch(a){let p=a instanceof Error?a.message:"Error creating embedded wallet";throw t({status:"error",error:p}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:p})}})}function re(p){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:n,setRecoveryFlowState:d,password:i,recoveryKey:c,recoveryToken:s,recoverySecretOverride:a}){var w,v,S,m;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(n){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let f=yield e.embeddedWallet.getProvider(t,i,s,a,c);return r({status:"connected",provider:f,account:t}),d({status:"initial"}),(v=(w=o.current)==null?void 0:w.onSuccess)==null||v.call(w,f),f}catch(f){r({status:"needs-recovery",account:t}),d({status:"initial"});let l=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:f instanceof Error?f.message:"Error recovering embedded wallet"});throw(m=(S=o.current)==null?void 0:S.onError)==null||m.call(S,l),l}})}function Le(c){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:n,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:i}){var s,a,p,w;n({status:"connecting"});try{let v=yield e.embeddedWallet.getSolanaProvider(t,r,o);return n({status:"connected",publicKey:v._publicKey}),i({status:"initial"}),(a=(s=d.current)==null?void 0:s.onSuccess)==null||a.call(s,v),v}catch(v){n({status:"needs-recovery"}),i({status:"initial"});let S=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:v instanceof Error?v.message:"Error recovering embedded wallet"});throw(w=(p=d.current)==null?void 0:p.onError)==null||w.call(p,S),S}})}var De=({client:e,solanaWallet:t,setSolanaWallet:r,setSolanaRecoveryFlowState:o,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:d})=>{let i=U(),c=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, i),[i]),s=T(),a=_react.useMemo.call(void 0, ()=>c.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, i),[i,c]),p=_react.useMemo.call(void 0, ()=>{let m=c.map(y=>{let h=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i,y);return h?{account:y,entropy:h}:null});if(m.some(y=>y===null))return[];let f=void 0,l=void 0,b=void 0;return m.filter(y=>y!==null).map(({account:y,entropy:{entropyId:h,entropyIdVerifier:g}})=>({address:y.address,publicKey:y.address,walletIndex:y.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(y,h,g,f,l,b,_=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;yield(E=Ce())==null?void 0:E(_)}))}))},[c,i,e]),w=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return yield Me({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:o,opts:m})}),[e,n]),v=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:m,entropyIdVerifier:f}=a;return Le({client:e,account:c[0],entropyId:m,entropyIdVerifier:f,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:o})}),[e,a,c,d,o,r]),S=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(m=>m.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:m,entropyIdVerifier:f}=a,l=yield e.embeddedWallet.getSolanaProvider(c[0],m,f);return r({status:"connected",publicKey:c[0].public_key}),l}catch(m){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, m)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(r({status:"error",error:m.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:m.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[c,e,a,r]);return _react.useEffect.call(void 0, ()=>{if(!i&&t.status!=="disconnected")return r({status:"disconnected"});s&&S().catch(()=>{})},[s,i]),_react.useEffect.call(void 0, ()=>{t.status==="error"&&t.error.includes("User must be logged in")&&S()},[t.status]),{create:w,recover:v,getProvider:S,wallets:p}};function oe(w){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:n,password:d,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,solanaAccount:p}){var S,m;switch(o){case"user-passcode":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s||!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let v=o==="icloud"?"icloud-native":o;try{let{user:f}=yield e.embeddedWallet.create({password:d,recoveryMethod:v,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,solanaAccount:p}),l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, f);if(!l)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=yield e.embeddedWallet.getProvider(l);return(m=(S=r.current)==null?void 0:S.onSuccess)==null||m.call(S,b),t({status:"connected",provider:b,account:l}),n({status:"initial"}),b}catch(f){let l=f instanceof Error?f.message:"Error creating embedded wallet";throw t({status:"error",error:l,account:null}),n({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function Ve(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function we(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({user:e,appId:t,client:r}){var c;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield Ve(),d=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(d==null?void 0:d.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:s,iCloudRecordName:a}=yield n.writeRecoverySecretToICloud({containerId:d.container_identifier,appId:t,userId:e.id});return{recoverySecret:s,iCloudRecordName:a}}catch(s){if(s instanceof Error){let a=(c=s.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:a})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function qe(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({walletAddress:e,client:t,chainType:r}){var a;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield Ve(),i=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),s=c==null?void 0:c.container_identifier;if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:p}=yield n.readRecoverySecretFromICloud({containerId:s,recordName:i});return{recoverySecret:p}}catch(p){if(p instanceof Error){let w=(a=p.message.split("Caused by: ")[1])!=null?a:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:w})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var _expolinking = require('expo-linking'); var L = _interopRequireWildcard(_expolinking); var q = _interopRequireWildcard(_expolinking);var _expowebbrowser = require('expo-web-browser'); var ze = _interopRequireWildcard(_expowebbrowser);function K(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var bo=e=>new Promise(t=>setTimeout(t,e));function _o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function G(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let d;switch(e){case"google-drive":{let{url:a}=yield r.recovery.auth.generateURL(L.createURL(t||"/"));d=a;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield ze.openAuthSessionAsync(d);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:c}=L.parse(i.url),s;switch(e){case"google-drive":{let{privy_oauth_state:a,privy_oauth_code:p}=c;if(!p||!a)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});s=yield ae({oAuthCode:p,oAuthState:a,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return s}catch(d){throw o==null||o(K(d)),d}})}function ae(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:n}=yield r.recovery.auth.authorize(e,t);if(!n)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return n})}var Lt=2*60*1e3;function Nt(e){let t;return new Promise((r,o)=>{t=L.addEventListener("url",d=>_chunkOWCFWPALjs.d.call(void 0, this,[d],function*({url:n}){if(!n)return;let{queryParams:i}=L.parse(n),{privy_oauth_state:c,privy_oauth_code:s}=i!=null?i:{};if(typeof s!="string"||typeof c!="string")return;let a=yield ae({client:e,oAuthCode:s,oAuthState:c});r(a)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Lt)}).finally(()=>{t==null||t.remove()})}function Uo(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Nt(e));let r=yield G({provider:"google-drive",client:e});return r!=null?r:yield t})}function ne(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:n}){var i,c,s,a;try{let{provider:p,user:w}=yield e.embeddedWallet.setRecovery(t),v=p,S=_jssdkcore.getUserEmbeddedWallet.call(void 0, w);return n({status:"connected",provider:v,account:S}),(c=(i=r.current)==null?void 0:i.onSuccess)==null||c.call(i,v),o({status:"initial"}),v}catch(p){let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:p instanceof Error?p.message:"Error setting password on embedded wallet"});throw(a=(s=r.current)==null?void 0:s.onError)==null||a.call(s,w),o({status:"initial"}),w}})}function Ye(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:e.recoveryMethod==="recovery-encryption-key"?{recoveryMethod:"recovery-encryption-key",recoveryKey:e.recoveryKey}:{recoveryMethod:e.recoveryMethod}}var Be=({client:e,appId:t,wallet:r,setWallet:o,setRecoveryFlowState:n,createWalletCallbacks:d,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:c})=>{let s=U(),a=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, s),[s]),p=T(),w=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var X,$;if(a)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:b}=yield e.user.get(),{password:y,recoveryMethod:h,recoveryKey:g}=Ye(l),_,E,N;if(h==="google-drive"&&(_=yield G({provider:h,client:e,onError:(X=d.current)==null?void 0:X.onError}),n({status:"creating-wallet"}),!_))return null;if(h==="icloud"){if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:se,iCloudRecordName:de}=yield we({user:b,appId:t,client:e});E=se,N=de}return yield oe({client:e,setWallet:o,createWalletCallbacks:d,recoveryMethod:h,recoveryKey:g,setRecoveryFlowState:n,password:y,recoverySecretOverride:E,iCloudRecordNameOverride:N,solanaAccount:($=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, b))!=null?$:void 0})}),[e,a,s]),v=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var h;if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, s))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});if(_jssdkcore.isUnifiedWallet.call(void 0, a))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:a.recovery_method,upgradeToRecoveryMethod:l.recoveryMethod});let b,y;switch(l.recoveryMethod){case"privy":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},l),{wallet:a});break;case"user-passcode":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},l),{wallet:a,password:l.password});break;case"google-drive":if(b=yield G({provider:l.recoveryMethod,client:e,onError:(h=c.current)==null?void 0:h.onError}),n({status:"upgrading-recovery"}),!b)return null;y={recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:b};break;case"icloud":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:g,iCloudRecordName:_}=yield we({user:s,appId:t,client:e});y={recoveryMethod:"icloud-native",recoverySecretOverride:g,iCloudRecordNameOverride:_,wallet:a};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ne({client:e,recoveryInput:y,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:o})}),[e,a,r.status,s]),S=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return v({recoveryMethod:"user-passcode",password:l})}),[e,a,r.status]),m=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:b,recoveryMethod:y,recoveryKey:h}=Ye(l),g,_;if(y==="google-drive"&&(g=yield G({provider:y,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!g))return null;if(y==="icloud"){if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:N}=yield qe({client:e,walletAddress:a.address});_=N}return re({client:e,account:a,setWallet:o,recoverWalletCallbacks:i,recoveryMethod:y,setRecoveryFlowState:n,recoveryKey:h,password:b,recoveryToken:g,recoverySecretOverride:_})}),[e,a]),f=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw o({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(l=>l.status==="connected"?{status:"reconnecting",account:a}:{status:"connecting",account:a});try{let l=yield e.embeddedWallet.getProvider(a);return o({status:"connected",provider:l,account:a}),l}catch(l){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, l)?(o({status:"needs-recovery",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):l instanceof Error?(o({status:"error",error:l.message,account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:l.message})):(o({status:"error",error:"Error loading embedded wallet",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,a]);return _react.useEffect.call(void 0, ()=>{if(!s&&r.status!=="disconnected")return o({status:"disconnected",account:null});p&&f().catch(()=>{})},[p,s,a]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:w,recover:m,setPassword:S,setRecovery:v,getProvider:f}};var $e=({client:e,isReady:t})=>{let r=U(),o=ee(i=>i==null?void 0:i.customAuth),[n,d]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!(o!=null&&o.enabled)){d({status:"not-enabled"});return}d({status:"loading"});let{getCustomAccessToken:c,isLoading:s}=o;if(!(!t||s))try{let a=yield c();if(!a&&r){yield e.auth.logout(),d({status:"done"});return}if(!a){d({status:"done"});return}if(r){d({status:"done"});return}let p=Oe();if(!(yield e.auth.customProvider.syncWithToken(a,{embedded:p==null?void 0:p.embedded}))){yield e.auth.logout(),d({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}d({status:"done"})}catch(a){if(console.log("Error syncing with custom auth provider",a),d({status:"error",error:a}),r)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,r,t,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:n,customAuthStateIsSettled:n.status!=="loading"&&n.status!=="initial"}};var Qe=({client:e,createWalletCallbacks:t,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:o,recoveryFlowState:n,oAuthState:d,setRecoveryFlowState:i,setWallet:c,appStateVisible:s})=>{let a=q.useURL(),p=U(),w=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, p),[p]),v=T(),S=_react.useCallback.call(void 0, m=>{var l,b,y,h;let f=K(m);n.status==="creating-wallet"?(b=(l=t.current).onError)==null||b.call(l,K(f)):(h=(y=r.current).onError)==null||h.call(y,K(f)),i({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function m(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var y;if(!a&&n.status!=="initial"&&s&&S(new Error("Recovery OAuth session failed")),!a||n.status==="initial"||d.status!=="initial"||!s||!v)return;let{queryParams:f}=q.parse(a),{privy_oauth_state:l,privy_oauth_code:b}=f;if(!(!b||!l)){yield q.openURL(a.split("?")[0]);try{let h=yield ae({oAuthCode:b,oAuthState:l,client:e});if(n.status==="creating-wallet"){let g=(y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, p))!=null?y:void 0;yield oe({client:e,setWallet:c,createWalletCallbacks:t,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:h,solanaAccount:g})}else if(n.status==="upgrading-recovery"){if(!w)throw new Error("Embedded wallet not found");yield ne({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:w,recoveryAccessToken:h},setWalletRecoveryCallbacks:o,setRecoveryFlowState:i,setWallet:c})}else yield re({client:e,account:w,setWallet:c,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:h})}catch(h){S(h)}}})}_reactnative.Platform.OS==="android"&&m()},[a,n.status,s,v])};var Ze=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{yield e.initialize()}catch(d){o(d instanceof Error?d:new Error(String(d)))}try{yield e.user.get()}catch(d){}finally{r(!0)}}))()},[e,t,o,r])};var ot=_react.createContext.call(void 0, null),J;function xa(e){return J?J.getAccessToken():e!=null&&e.strict?Promise.reject(new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_read_storage_before_client_initialized",error:"Called `getAccessToken` before client initialized"})):(console.warn("Called `getAccessToken` before client initialized"),Promise.resolve(null))}var Wa=e=>{nr();let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let O=_reactnative.AppState.addEventListener("change",ut=>{r(ut==="active")});return()=>{O.remove()}},[]),_react.useEffect.call(void 0, ()=>We(e.config),[e.config]);let[o,n]=_react.useState.call(void 0, !1),[d,i]=_react.useState.call(void 0, null),[c,s]=_react.useState.call(void 0, !1),[a,p]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,v]=_react.useState.call(void 0, {status:"disconnected"}),[S,m]=_react.useState.call(void 0, {status:"initial"}),[f,l]=_react.useState.call(void 0, {status:"initial"}),[b,y]=_react.useState.call(void 0, {status:"initial"}),[h,g]=_react.useState.call(void 0, {status:"initial"}),[_,E]=_react.useState.call(void 0, {status:"initial"}),[N,X]=_react.useState.call(void 0, {status:"initial"}),[$,se]=_react.useState.call(void 0, {status:"initial"}),de=_react.useRef.call(void 0, {}),ce=_react.useRef.call(void 0, {}),le=_react.useRef.call(void 0, {}),ue=_react.useRef.call(void 0, {}),ge=_react.useRef.call(void 0, {}),_e=_react.useRef.call(void 0, {}),Q=_react.useCallback.call(void 0, O=>{if(O){me(O),i(null);return}me(null),m({status:"initial"}),l({status:"initial"}),p({status:"disconnected",account:null})},[]),R=_react.useMemo.call(void 0, ()=>{let O=e.storage||Z;return e.client?J=e.client:J=xe({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:O,baseUrl:e.baseUrl,logLevel:e.logLevel}),J.setCallbacks({setUser:Q,setIsReady:s}),J},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,Q]),at=_react.useCallback.call(void 0, ()=>(Q(null),R.auth.logout()),[Q,R]),nt=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{return yield R.getAccessToken()}catch(O){return console.debug(O),null}}),[R]),it=_react.useCallback.call(void 0, ()=>R.getIdentityToken(),[R]);Ze({client:R,isUserInitialized:o,setIsUserInitialized:n,setError:i});let st=Be({client:R,appId:e.appId,createWalletCallbacks:ce,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ue,setRecoveryFlowState:y,wallet:a,setWallet:p}),dt=De({client:R,createSolanaWalletCallbacks:ge,recoverSolanaWalletCallbacks:_e,setSolanaRecoveryFlowState:g,solanaWallet:w,setSolanaWallet:v});Qe({client:R,createWalletCallbacks:ce,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ue,recoveryFlowState:b,oAuthState:f,setRecoveryFlowState:y,setWallet:p,appStateVisible:t});let{customAuthStateIsSettled:ct}=$e({client:R,isReady:o}),lt=T();return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(ot.Provider,{value:{client:R,isReady:lt&&o&&ct,error:d,logout:at,getAccessToken:nt,getIdentityToken:it,wallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},a),st),solanaWallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},w),dt),oAuthState:f,oAuthCallbacks:de,recoveryFlowState:b,setRecoveryFlowState:y,solanaRecoveryFlowState:h,setSolanaRecoveryFlowState:g,createWalletCallbacks:ce,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ue,createSolanaWalletCallbacks:ge,recoverSolanaWalletCallbacks:_e,setOAuthState:l,siweState:_,setSiweState:E,otpState:S,setOtpState:m,passkeyState:N,setPasskeyState:X,farcasterState:$,setFarcasterState:se}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Te,{client:R,isClientReady:c})))},nr=()=>{if(_react.useContext.call(void 0, ot))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var sr=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var cr=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function za(e){var t;return{id:e.id,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},raw_id:e.rawId,type:e.type,authenticator_attachment:(t=e.authenticatorAttachment)!=null?t:"platform",response:{authenticator_data:e.response.authenticatorData,client_data_json:e.response.clientDataJSON,signature:e.response.signature,user_handle:e.response.userHandle}}}function Ja(e){var t,r,o,n;return{challenge:e.challenge,rpId:e.rp_id,extensions:{appid:(t=e.extensions)==null?void 0:t.app_id,credProps:(r=e.extensions)==null?void 0:r.cred_props,hmacCreateSecret:(o=e.extensions)==null?void 0:o.hmac_create_secret},timeout:e.timeout,allowCredentials:(n=e.allow_credentials)==null?void 0:n.map(({id:d,type:i,transports:c})=>({id:d,type:i,transports:c})),userVerification:e.user_verification}}function Ha(e){var t,r,o,n,d,i,c,s;return{rp:e.rp,user:{id:e.user.id,name:e.user.name,displayName:e.user.display_name},challenge:e.challenge,pubKeyCredParams:e.pub_key_cred_params,extensions:{hmacCreateSecret:(t=e.extensions)==null?void 0:t.hmac_create_secret,credProps:(o=(r=e.extensions)==null?void 0:r.cred_props)==null?void 0:o.rk,appid:(n=e.extensions)==null?void 0:n.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(d=e.authenticator_selection)==null?void 0:d.authenticator_attachment,residentKey:(i=e.authenticator_selection)==null?void 0:i.resident_key,userVerification:(c=e.authenticator_selection)==null?void 0:c.user_verification,requireResidentKey:(s=e.authenticator_selection)==null?void 0:s.require_resident_key}}}exports.a = Oe; exports.b = Or; exports.c = Ir; exports.d = U; exports.e = Ur; exports.f = Ce; exports.g = pr; exports.h = we; exports.i = qe; exports.j = K; exports.k = bo; exports.l = _o; exports.m = Uo; exports.n = Z; exports.o = xe; exports.p = ot; exports.q = xa; exports.r = Wa; exports.s = sr; exports.t = cr; exports.u = za; exports.v = Ja; exports.w = Ha;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _zustand = require('zustand');var Ee=_zustand.create.call(void 0, ()=>({status:"disconnected"})),Ce= exports.f =()=>Ee.getState().onNeedsRecovery,pr= exports.g =e=>{_react.useEffect.call(void 0, ()=>{Ee.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var _expoapplication = require('expo-application');var _exposecurestore = require('expo-secure-store'); var A = _interopRequireWildcard(_exposecurestore); var x = _interopRequireWildcard(_exposecurestore);var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var ke=()=>{if(typeof _expoapplication.applicationId!="string")throw new (0, _jssdkcore.PrivyClientError)({error:"Cannot determine native application ID. Please make sure `expo-application` is installed as a dependency and that `ios.bundleId` or `android.package` is set.",code:"invalid_native_app_id"});return _expoapplication.applicationId};function Pe(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){return[]})}}var Z={get(e){return A.getItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return A.setItemAsync(e,t,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return A.deleteItemAsync(e,{keychainAccessible:A.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return[]})};var _expocrypto = require('expo-crypto');var Ae={name:"@privy-io/expo",version:"0.55.3",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],homepage:"https://docs.privy.io",bugs:{url:"https://privy.io/slack"},license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"},"./extended-chains":{require:"./dist/extended-chains.js",import:"./dist/esm/extended-chains.js",types:"./dist/extended-chains.d.ts"},"./ui":{require:"./dist/ui.js",import:"./dist/esm/ui.js",types:"./dist/ui.d.ts"},"./connectors":{require:"./dist/connectors.js",import:"./dist/esm/connectors.js",types:"./dist/connectors.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:"jest"},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.52.3","@scure/base":"^1.2.4",tweetnacl:"^1.0.3","react-fast-compare":"^3.2.2",zustand:"^5.0.4"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@solana/web3.js":"^1.98.0","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^13.1.0","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",expo:"52.0.37","expo-apple-authentication":"7.1.3","expo-application":"6.0.2","expo-clipboard":"7.0.1","expo-crypto":"14.0.2",jest:"^29.7.0","jest-expo":"52.0.5","lucide-react-native":"^0.474.0",react:"^18.3.1","react-native":"0.77.1","react-test-renderer":"^18.3.1",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.5","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.47",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.30.6"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0},"react-native-svg":{optional:!0},"expo-clipboard":{optional:!0},"react-native-qrcode-styled":{optional:!0},"react-native-safe-area-context":{optional:!0}},publishConfig:{access:"public"}};var xe=({appId:e,clientId:t,storage:r=Z,supportedChains:o,baseUrl:n,logLevel:d})=>new (0, _jssdkcore2.default)({appId:e,clientId:t,supportedChains:o,storage:Pe(r),sdkVersion:`expo:${Ae.version}`,nativeAppIdentifier:ke(),crypto:{digest:_expocrypto.digest},baseUrl:n,logLevel:d});var _reactnative = require('react-native');var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var ee=_zustand.create.call(void 0, ()=>{}),We=e=>ee.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),Oe= exports.a =ee.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);function Ie(e){return typeof e!="object"||e===null||!("event"in e&&typeof e.event=="string")||!("id"in e&&typeof e.id=="string")||!("data"in e&&typeof e.data=="object")||e.data===null?!1:e.event.startsWith("app:secure-storage:")}function Ue(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(e.event){case"app:secure-storage:get":{let{key:t}=e.data,r=yield x.getItemAsync(pe(t),{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).catch(o=>(console.warn("Failed to get the value from secure store",o),null));return{event:e.event,id:e.id,data:{value:r}}}case"app:secure-storage:remove":{let{key:t}=e.data,r=yield x.deleteItemAsync(pe(t),{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(o=>(console.warn("Failed to remove the value from secure store",o),!1));return{event:e.event,id:e.id,data:{success:r}}}case"app:secure-storage:set":{let{key:t,value:r}=e.data,o=yield x.setItemAsync(pe(t),r,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(n=>(console.warn("Failed to write the value to secure store",n),!1));return{event:e.event,id:e.id,data:{success:o}}}}})}var pe=e=>e.replaceAll(":","-");var I=_zustand.createStore.call(void 0, )(()=>({user:null,proxyStatus:"loading"}));function Or(){return I.getState().user}var Ir=I.subscribe.bind(I);function me(e){I.setState(({user:t})=>_reactfastcompare2.default.call(void 0, t,e)?{}:{user:e})}var ve=e=>I.setState({proxyStatus:e});function U(){return _zustand.useStore.call(void 0, I,e=>e.user)}function Ur(){return _zustand.useStore.call(void 0, I,e=>!!e.user)}function T(){return _zustand.useStore.call(void 0, I,e=>e.proxyStatus!=="loading")}var At={shouldUseAppBackedStorage:!0},Te=({client:e,isClientReady:t})=>{let r=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){d==="active"&&((yield e.embeddedWallet.ping(500))||(ve("reloading"),e.embeddedWallet.reload()))})).remove,[e]);let o=_react.useCallback.call(void 0, n=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var c;let{data:d}=n.nativeEvent,i=JSON.parse(d);if(Ie(i)){let s=yield Ue(i);(c=r.current)==null||c.postMessage(JSON.stringify(s));return}e.embeddedWallet.onMessage(i)}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n=>{n&&(e.setMessagePoster(n),r.current=n)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",injectedJavaScriptObject:At,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:e.logger.level==="DEBUG",onLoad:()=>ve("loaded"),onError:console.error,onMessage:o}):null};function Me(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:n}){var i,c,s;t({status:"creating"});try{let{user:a}=yield e.user.get(),p=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, a),w=p[0],v=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, a))!=null?i:void 0;if(n!=null&&n.recoveryMethod&&n.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(n!=null&&n.createAdditional)&&w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Solana wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let S,m;if(w){let l=v!=null?v:w,{entropyId:b,entropyIdVerifier:y}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, l),h=Math.max(...p.map(E=>E.wallet_index),0)+1,g=yield e.embeddedWallet.add({chainType:"solana",entropyId:b,entropyIdVerifier:y,hdWalletIndex:h}),_=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, g.user).find(E=>E.wallet_index===h);if(!_)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});S=yield e.embeddedWallet.getSolanaProvider(_,b,y),m=g.user}else{let l=yield e.embeddedWallet.createSolana({ethereumAccount:v}),b=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, l.user).find(_=>_.wallet_index===0);if(!b)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let y=v!=null?v:b,{entropyId:h,entropyIdVerifier:g}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, y);S=yield e.embeddedWallet.getSolanaProvider(b,h,g),m=l.user}let f=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, m)[0];if(!f)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(s=(c=r.current)==null?void 0:c.onSuccess)==null||s.call(c,S),t({status:"connected",publicKey:f.public_key}),o({status:"initial"}),S}catch(a){let p=a instanceof Error?a.message:"Error creating embedded wallet";throw t({status:"error",error:p}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:p})}})}function re(p){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:n,setRecoveryFlowState:d,password:i,recoveryKey:c,recoveryToken:s,recoverySecretOverride:a}){var w,v,S,m;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(n){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let f=yield e.embeddedWallet.getProvider(t,i,s,a,c);return r({status:"connected",provider:f,account:t}),d({status:"initial"}),(v=(w=o.current)==null?void 0:w.onSuccess)==null||v.call(w,f),f}catch(f){r({status:"needs-recovery",account:t}),d({status:"initial"});let l=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:f instanceof Error?f.message:"Error recovering embedded wallet"});throw(m=(S=o.current)==null?void 0:S.onError)==null||m.call(S,l),l}})}function Le(c){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:n,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:i}){var s,a,p,w;n({status:"connecting"});try{let v=yield e.embeddedWallet.getSolanaProvider(t,r,o);return n({status:"connected",publicKey:v._publicKey}),i({status:"initial"}),(a=(s=d.current)==null?void 0:s.onSuccess)==null||a.call(s,v),v}catch(v){n({status:"needs-recovery"}),i({status:"initial"});let S=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:v instanceof Error?v.message:"Error recovering embedded wallet"});throw(w=(p=d.current)==null?void 0:p.onError)==null||w.call(p,S),S}})}var De=({client:e,solanaWallet:t,setSolanaWallet:r,setSolanaRecoveryFlowState:o,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:d})=>{let i=U(),c=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, i),[i]),s=T(),a=_react.useMemo.call(void 0, ()=>c.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, i),[i,c]),p=_react.useMemo.call(void 0, ()=>{let m=c.map(y=>{let h=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i,y);return h?{account:y,entropy:h}:null});if(m.some(y=>y===null))return[];let f=void 0,l=void 0,b=void 0;return m.filter(y=>y!==null).map(({account:y,entropy:{entropyId:h,entropyIdVerifier:g}})=>({address:y.address,publicKey:y.address,walletIndex:y.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(y,h,g,f,l,b,_=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;yield(E=Ce())==null?void 0:E(_)}))}))},[c,i,e]),w=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return yield Me({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:o,opts:m})}),[e,n]),v=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:m,entropyIdVerifier:f}=a;return Le({client:e,account:c[0],entropyId:m,entropyIdVerifier:f,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:o})}),[e,a,c,d,o,r]),S=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(m=>m.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:m,entropyIdVerifier:f}=a,l=yield e.embeddedWallet.getSolanaProvider(c[0],m,f);return r({status:"connected",publicKey:c[0].public_key}),l}catch(m){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, m)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):m instanceof Error?(r({status:"error",error:m.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:m.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[c,e,a,r]);return _react.useEffect.call(void 0, ()=>{if(!i&&t.status!=="disconnected")return r({status:"disconnected"});s&&S().catch(()=>{})},[s,i]),_react.useEffect.call(void 0, ()=>{t.status==="error"&&t.error.includes("User must be logged in")&&S()},[t.status]),{create:w,recover:v,getProvider:S,wallets:p}};function oe(w){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:n,password:d,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,solanaAccount:p}){var S,m;switch(o){case"user-passcode":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s||!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let v=o==="icloud"?"icloud-native":o;try{let{user:f}=yield e.embeddedWallet.create({password:d,recoveryMethod:v,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,solanaAccount:p}),l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, f);if(!l)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=yield e.embeddedWallet.getProvider(l);return(m=(S=r.current)==null?void 0:S.onSuccess)==null||m.call(S,b),t({status:"connected",provider:b,account:l}),n({status:"initial"}),b}catch(f){let l=f instanceof Error?f.message:"Error creating embedded wallet";throw t({status:"error",error:l,account:null}),n({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function Ve(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function we(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({user:e,appId:t,client:r}){var c;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield Ve(),d=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(d==null?void 0:d.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:s,iCloudRecordName:a}=yield n.writeRecoverySecretToICloud({containerId:d.container_identifier,appId:t,userId:e.id});return{recoverySecret:s,iCloudRecordName:a}}catch(s){if(s instanceof Error){let a=(c=s.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:a})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function qe(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({walletAddress:e,client:t,chainType:r}){var a;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield Ve(),i=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),s=c==null?void 0:c.container_identifier;if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:p}=yield n.readRecoverySecretFromICloud({containerId:s,recordName:i});return{recoverySecret:p}}catch(p){if(p instanceof Error){let w=(a=p.message.split("Caused by: ")[1])!=null?a:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:w})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var _expolinking = require('expo-linking'); var L = _interopRequireWildcard(_expolinking); var q = _interopRequireWildcard(_expolinking);var _expowebbrowser = require('expo-web-browser'); var ze = _interopRequireWildcard(_expowebbrowser);function K(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var bo=e=>new Promise(t=>setTimeout(t,e));function _o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function G(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let d;switch(e){case"google-drive":{let{url:a}=yield r.recovery.auth.generateURL(L.createURL(t||"/"));d=a;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield ze.openAuthSessionAsync(d);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:c}=L.parse(i.url),s;switch(e){case"google-drive":{let{privy_oauth_state:a,privy_oauth_code:p}=c;if(!p||!a)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});s=yield ae({oAuthCode:p,oAuthState:a,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return s}catch(d){throw o==null||o(K(d)),d}})}function ae(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:n}=yield r.recovery.auth.authorize(e,t);if(!n)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return n})}var Lt=2*60*1e3;function Nt(e){let t;return new Promise((r,o)=>{t=L.addEventListener("url",d=>_chunkOWCFWPALjs.d.call(void 0, this,[d],function*({url:n}){if(!n)return;let{queryParams:i}=L.parse(n),{privy_oauth_state:c,privy_oauth_code:s}=i!=null?i:{};if(typeof s!="string"||typeof c!="string")return;let a=yield ae({client:e,oAuthCode:s,oAuthState:c});r(a)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Lt)}).finally(()=>{t==null||t.remove()})}function Uo(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Nt(e));let r=yield G({provider:"google-drive",client:e});return r!=null?r:yield t})}function ne(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:n}){var i,c,s,a;try{let{provider:p,user:w}=yield e.embeddedWallet.setRecovery(t),v=p,S=_jssdkcore.getUserEmbeddedWallet.call(void 0, w);return n({status:"connected",provider:v,account:S}),(c=(i=r.current)==null?void 0:i.onSuccess)==null||c.call(i,v),o({status:"initial"}),v}catch(p){let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:p instanceof Error?p.message:"Error setting password on embedded wallet"});throw(a=(s=r.current)==null?void 0:s.onError)==null||a.call(s,w),o({status:"initial"}),w}})}function Ye(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:e.recoveryMethod==="recovery-encryption-key"?{recoveryMethod:"recovery-encryption-key",recoveryKey:e.recoveryKey}:{recoveryMethod:e.recoveryMethod}}var Be=({client:e,appId:t,wallet:r,setWallet:o,setRecoveryFlowState:n,createWalletCallbacks:d,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:c})=>{let s=U(),a=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, s),[s]),p=T(),w=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var X,$;if(a)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:b}=yield e.user.get(),{password:y,recoveryMethod:h,recoveryKey:g}=Ye(l),_,E,N;if(h==="google-drive"&&(_=yield G({provider:h,client:e,onError:(X=d.current)==null?void 0:X.onError}),n({status:"creating-wallet"}),!_))return null;if(h==="icloud"){if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:se,iCloudRecordName:de}=yield we({user:b,appId:t,client:e});E=se,N=de}return yield oe({client:e,setWallet:o,createWalletCallbacks:d,recoveryMethod:h,recoveryKey:g,setRecoveryFlowState:n,password:y,recoverySecretOverride:E,iCloudRecordNameOverride:N,solanaAccount:($=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, b))!=null?$:void 0})}),[e,a,s]),v=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var h;if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, s))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});if(_jssdkcore.isUnifiedWallet.call(void 0, a))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:a.recovery_method,upgradeToRecoveryMethod:l.recoveryMethod});let b,y;switch(l.recoveryMethod){case"privy":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},l),{wallet:a});break;case"user-passcode":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},l),{wallet:a,password:l.password});break;case"google-drive":if(b=yield G({provider:l.recoveryMethod,client:e,onError:(h=c.current)==null?void 0:h.onError}),n({status:"upgrading-recovery"}),!b)return null;y={recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:b};break;case"icloud":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:g,iCloudRecordName:_}=yield we({user:s,appId:t,client:e});y={recoveryMethod:"icloud-native",recoverySecretOverride:g,iCloudRecordNameOverride:_,wallet:a};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ne({client:e,recoveryInput:y,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:o})}),[e,a,r.status,s]),S=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return v({recoveryMethod:"user-passcode",password:l})}),[e,a,r.status]),m=_react.useCallback.call(void 0, l=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:b,recoveryMethod:y,recoveryKey:h}=Ye(l),g,_;if(y==="google-drive"&&(g=yield G({provider:y,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!g))return null;if(y==="icloud"){if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:N}=yield qe({client:e,walletAddress:a.address});_=N}return re({client:e,account:a,setWallet:o,recoverWalletCallbacks:i,recoveryMethod:y,setRecoveryFlowState:n,recoveryKey:h,password:b,recoveryToken:g,recoverySecretOverride:_})}),[e,a]),f=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw o({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(l=>l.status==="connected"?{status:"reconnecting",account:a}:{status:"connecting",account:a});try{let l=yield e.embeddedWallet.getProvider(a);return o({status:"connected",provider:l,account:a}),l}catch(l){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, l)?(o({status:"needs-recovery",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):l instanceof Error?(o({status:"error",error:l.message,account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:l.message})):(o({status:"error",error:"Error loading embedded wallet",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,a]);return _react.useEffect.call(void 0, ()=>{if(!s&&r.status!=="disconnected")return o({status:"disconnected",account:null});p&&f().catch(()=>{})},[p,s,a]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:w,recover:m,setPassword:S,setRecovery:v,getProvider:f}};var $e=({client:e,isReady:t})=>{let r=U(),o=ee(i=>i==null?void 0:i.customAuth),[n,d]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!(o!=null&&o.enabled)){d({status:"not-enabled"});return}d({status:"loading"});let{getCustomAccessToken:c,isLoading:s}=o;if(!(!t||s))try{let a=yield c();if(!a&&r){yield e.auth.logout(),d({status:"done"});return}if(!a){d({status:"done"});return}if(r){d({status:"done"});return}let p=Oe();if(!(yield e.auth.customProvider.syncWithToken(a,{embedded:p==null?void 0:p.embedded}))){yield e.auth.logout(),d({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}d({status:"done"})}catch(a){if(console.log("Error syncing with custom auth provider",a),d({status:"error",error:a}),r)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,r,t,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:n,customAuthStateIsSettled:n.status!=="loading"&&n.status!=="initial"}};var Qe=({client:e,createWalletCallbacks:t,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:o,recoveryFlowState:n,oAuthState:d,setRecoveryFlowState:i,setWallet:c,appStateVisible:s})=>{let a=q.useURL(),p=U(),w=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, p),[p]),v=T(),S=_react.useCallback.call(void 0, m=>{var l,b,y,h;let f=K(m);n.status==="creating-wallet"?(b=(l=t.current).onError)==null||b.call(l,K(f)):(h=(y=r.current).onError)==null||h.call(y,K(f)),i({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function m(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var y;if(!a&&n.status!=="initial"&&s&&S(new Error("Recovery OAuth session failed")),!a||n.status==="initial"||d.status!=="initial"||!s||!v)return;let{queryParams:f}=q.parse(a),{privy_oauth_state:l,privy_oauth_code:b}=f;if(!(!b||!l)){yield q.openURL(a.split("?")[0]);try{let h=yield ae({oAuthCode:b,oAuthState:l,client:e});if(n.status==="creating-wallet"){let g=(y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, p))!=null?y:void 0;yield oe({client:e,setWallet:c,createWalletCallbacks:t,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:h,solanaAccount:g})}else if(n.status==="upgrading-recovery"){if(!w)throw new Error("Embedded wallet not found");yield ne({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:w,recoveryAccessToken:h},setWalletRecoveryCallbacks:o,setRecoveryFlowState:i,setWallet:c})}else yield re({client:e,account:w,setWallet:c,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:h})}catch(h){S(h)}}})}_reactnative.Platform.OS==="android"&&m()},[a,n.status,s,v])};var Ze=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{yield e.initialize()}catch(d){o(d instanceof Error?d:new Error(String(d)))}try{yield e.user.get()}catch(d){}finally{r(!0)}}))()},[e,t,o,r])};var ot=_react.createContext.call(void 0, null),J;function xa(e){return J?J.getAccessToken():e!=null&&e.strict?Promise.reject(new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_read_storage_before_client_initialized",error:"Called `getAccessToken` before client initialized"})):(console.warn("Called `getAccessToken` before client initialized"),Promise.resolve(null))}var Wa=e=>{nr();let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let O=_reactnative.AppState.addEventListener("change",ut=>{r(ut==="active")});return()=>{O.remove()}},[]),_react.useEffect.call(void 0, ()=>We(e.config),[e.config]);let[o,n]=_react.useState.call(void 0, !1),[d,i]=_react.useState.call(void 0, null),[c,s]=_react.useState.call(void 0, !1),[a,p]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,v]=_react.useState.call(void 0, {status:"disconnected"}),[S,m]=_react.useState.call(void 0, {status:"initial"}),[f,l]=_react.useState.call(void 0, {status:"initial"}),[b,y]=_react.useState.call(void 0, {status:"initial"}),[h,g]=_react.useState.call(void 0, {status:"initial"}),[_,E]=_react.useState.call(void 0, {status:"initial"}),[N,X]=_react.useState.call(void 0, {status:"initial"}),[$,se]=_react.useState.call(void 0, {status:"initial"}),de=_react.useRef.call(void 0, {}),ce=_react.useRef.call(void 0, {}),le=_react.useRef.call(void 0, {}),ue=_react.useRef.call(void 0, {}),ge=_react.useRef.call(void 0, {}),_e=_react.useRef.call(void 0, {}),Q=_react.useCallback.call(void 0, O=>{if(O){me(O),i(null);return}me(null),m({status:"initial"}),l({status:"initial"}),p({status:"disconnected",account:null})},[]),R=_react.useMemo.call(void 0, ()=>{let O=e.storage||Z;return e.client?J=e.client:J=xe({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:O,baseUrl:e.baseUrl,logLevel:e.logLevel}),J.setCallbacks({setUser:Q,setIsReady:s}),J},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,Q]),at=_react.useCallback.call(void 0, ()=>(Q(null),R.auth.logout()),[Q,R]),nt=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{return yield R.getAccessToken()}catch(O){return console.debug(O),null}}),[R]),it=_react.useCallback.call(void 0, ()=>R.getIdentityToken(),[R]);Ze({client:R,isUserInitialized:o,setIsUserInitialized:n,setError:i});let st=Be({client:R,appId:e.appId,createWalletCallbacks:ce,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ue,setRecoveryFlowState:y,wallet:a,setWallet:p}),dt=De({client:R,createSolanaWalletCallbacks:ge,recoverSolanaWalletCallbacks:_e,setSolanaRecoveryFlowState:g,solanaWallet:w,setSolanaWallet:v});Qe({client:R,createWalletCallbacks:ce,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ue,recoveryFlowState:b,oAuthState:f,setRecoveryFlowState:y,setWallet:p,appStateVisible:t});let{customAuthStateIsSettled:ct}=$e({client:R,isReady:o}),lt=T();return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(ot.Provider,{value:{client:R,isReady:lt&&o&&ct,error:d,logout:at,getAccessToken:nt,getIdentityToken:it,wallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},a),st),solanaWallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},w),dt),oAuthState:f,oAuthCallbacks:de,recoveryFlowState:b,setRecoveryFlowState:y,solanaRecoveryFlowState:h,setSolanaRecoveryFlowState:g,createWalletCallbacks:ce,recoverWalletCallbacks:le,setWalletRecoveryCallbacks:ue,createSolanaWalletCallbacks:ge,recoverSolanaWalletCallbacks:_e,setOAuthState:l,siweState:_,setSiweState:E,otpState:S,setOtpState:m,passkeyState:N,setPasskeyState:X,farcasterState:$,setFarcasterState:se}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Te,{client:R,isClientReady:c})))},nr=()=>{if(_react.useContext.call(void 0, ot))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var sr=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var cr=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function za(e){var t;return{id:e.id,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},raw_id:e.rawId,type:e.type,authenticator_attachment:(t=e.authenticatorAttachment)!=null?t:"platform",response:{authenticator_data:e.response.authenticatorData,client_data_json:e.response.clientDataJSON,signature:e.response.signature,user_handle:e.response.userHandle}}}function Ja(e){var t,r,o,n;return{challenge:e.challenge,rpId:e.rp_id,extensions:{appid:(t=e.extensions)==null?void 0:t.app_id,credProps:(r=e.extensions)==null?void 0:r.cred_props,hmacCreateSecret:(o=e.extensions)==null?void 0:o.hmac_create_secret},timeout:e.timeout,allowCredentials:(n=e.allow_credentials)==null?void 0:n.map(({id:d,type:i,transports:c})=>({id:d,type:i,transports:c})),userVerification:e.user_verification}}function Ha(e){var t,r,o,n,d,i,c,s;return{rp:e.rp,user:{id:e.user.id,name:e.user.name,displayName:e.user.display_name},challenge:e.challenge,pubKeyCredParams:e.pub_key_cred_params,extensions:{hmacCreateSecret:(t=e.extensions)==null?void 0:t.hmac_create_secret,credProps:(o=(r=e.extensions)==null?void 0:r.cred_props)==null?void 0:o.rk,appid:(n=e.extensions)==null?void 0:n.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(d=e.authenticator_selection)==null?void 0:d.authenticator_attachment,residentKey:(i=e.authenticator_selection)==null?void 0:i.resident_key,userVerification:(c=e.authenticator_selection)==null?void 0:c.user_verification,requireResidentKey:(s=e.authenticator_selection)==null?void 0:s.require_resident_key}}}exports.a = Oe; exports.b = Or; exports.c = Ir; exports.d = U; exports.e = Ur; exports.f = Ce; exports.g = pr; exports.h = we; exports.i = qe; exports.j = K; exports.k = bo; exports.l = _o; exports.m = Uo; exports.n = Z; exports.o = xe; exports.p = ot; exports.q = xa; exports.r = Wa; exports.s = sr; exports.t = cr; exports.u = za; exports.v = Ja; exports.w = Ha;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as S,b as R,e as B,j as H,p as T}from"./chunk-WYJVIY4U.js";import{a as L,b,d as f}from"./chunk-OWCFWPAL.js";import*as l from"expo-linking";import*as d from"expo-web-browser";import{useCallback as z,useContext as V,useEffect as X}from"react";import{Platform as q}from"react-native";import{PrivyClientError as s}from"@privy-io/js-sdk-core";import*as c from"expo-apple-authentication";import{PrivyClientError as K}from"@privy-io/js-sdk-core";function M(e){return f(this,null,function*(){try{return yield c.signInAsync({state:e.state,requestedScopes:[c.AppleAuthenticationScope.EMAIL,c.AppleAuthenticationScope.FULL_NAME]})}catch(i){throw i instanceof Error&&"code"in i&&i.code==="ERR_REQUEST_CANCELED"?new K({error:"Apple login was cancelled",code:e.isLogin?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):i}})}var W=(e={})=>{let{oAuthState:i,setOAuthState:r,oAuthCallbacks:D,client:u}=V(T),j=B(),a=e.action?e.action==="login":!j;X(()=>{D.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let v=z(U=>{var A;let n=H(U);return r({status:"error",error:n}),(A=e==null?void 0:e.onError)==null||A.call(e,n),n},[e==null?void 0:e.onError]);return{start:z(function(_e){return f(this,arguments,function*({provider:n,redirectUri:A,isLegacyAppleIosBehaviorEnabled:Q=!1,disableSignup:C,onAppleOAuthUserInfo:I}){var P,x,F;r({status:"loading"});let E=R();try{if(E&&e.action==="login")throw new s({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!E&&e.action==="link")throw new s({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let h=l.createURL(A||"/"),{url:m}=yield u.auth.oauth.generateURL(n,h),t,_;if(q.OS==="ios"&&n==="apple"&&!Q){let g=(P=new URL(m).searchParams.get("state"))!=null?P:"",o=yield M({state:g,isLogin:a});if(console.log("credentials",o),!o.authorizationCode||!o.state)throw new s({error:"OAuth invalid credentials",code:a?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(a){let k=S(),N=yield u.auth.oauth.loginWithCode(o.authorizationCode,o.state,n,"raw",C?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});t=N.user,_=N.is_new_user}else({user:t}=yield u.auth.oauth.linkWithCode(o.authorizationCode,o.state,n,"raw"));return I&&I({fullName:o.fullName,email:o.email}),(x=e==null?void 0:e.onSuccess)==null||x.call(e,t,_),r({status:"done"}),t!=null?t:void 0}let G=q.OS==="android"?m.replace("x.com","twitter.com"):m,p=yield d.openAuthSessionAsync(G,h,{createTask:!1});if(p.type!=="success")throw[d.WebBrowserResultType.CANCEL,d.WebBrowserResultType.DISMISS].includes(p.type)?new s({error:"OAuth was cancelled",code:a?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new s({error:"OAuth session failed",code:a?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:J}=l.parse(p.url),{privy_oauth_state:O,privy_oauth_code:y}=J;if(!y||!O)throw new s({error:"OAuth invalid credentials",code:a?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(a){let w=S(),g=yield u.auth.oauth.loginWithCode(y,O,n,void 0,C?"no-signup":"login-or-sign-up",{embedded:w==null?void 0:w.embedded});t=g.user,_=g.is_new_user}else({user:t}=yield u.auth.oauth.linkWithCode(y,O,n));return(F=e==null?void 0:e.onSuccess)==null||F.call(e,t,_),yield l.openURL(p.url.split("?")[0]),r({status:"done"}),t!=null?t:void 0}catch(h){throw v(h),h}})},[u,r,v]),state:i}};function le(e){let{state:i,start:r}=W(b(L({},e),{action:"login"}));return{state:i,login:r}}function he(e){let{state:i,start:r}=W(b(L({},e),{action:"link"}));return{state:i,link:r}}function ce(e){return W(e)}export{le as a,he as b,ce as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as b,b as h,d as x,f as me,h as pe,i as ge,j as f,k as A,l as H,m as B,p as u,t as he,u as fe,v as ye}from"./chunk-WYJVIY4U.js";import{a as _,b as ue,d as l}from"./chunk-OWCFWPAL.js";import{useCallback as q,useContext as $e}from"react";import{PrivyClientError as Je}from"@privy-io/js-sdk-core";var jt=e=>{let{client:t,setSiweState:i,siweState:n}=$e(u),o=q(a=>{var d;let c=f(a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=q(g=>l(void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]),s=q(d=>l(void 0,[d],function*({signature:a,messageOverride:c}){var g;try{if(!h())throw new Je({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});i({status:"submitting-signature"});let{user:p}=yield t.auth.siwe.linkWithSiwe(a,void 0,c);return i({status:"done"}),(g=e==null?void 0:e.onSuccess)==null||g.call(e,p),p}catch(m){throw o(m)}}),[t,o,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:s,state:n}};import{useCallback as $,useContext as Qe}from"react";import{PrivyClientError as Xe}from"@privy-io/js-sdk-core";var eo=e=>{let{client:t,setSiweState:i,siweState:n}=Qe(u),o=$(a=>{var d;let c=f(a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=$(g=>l(void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:$(g=>l(void 0,[g],function*({signature:a,messageOverride:c,disableSignup:d}){var m;try{if(h())throw new Xe({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});i({status:"submitting-signature"});let v=b(),y=yield t.auth.siwe.loginWithSiwe(a,void 0,c,d?"no-signup":"login-or-sign-up",{embedded:v==null?void 0:v.embedded});return i({status:"done"}),(m=e==null?void 0:e.onSuccess)==null||m.call(e,y.user,y.is_new_user),y.user}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:n}};import{useContext as Ye}from"react";var C=()=>{let{client:e}=Ye(u);return e};import{useCallback as we}from"react";import{createSiwsMessage as Ze,PrivyClientError as er}from"@privy-io/js-sdk-core";var mo=()=>{let e=C(),t=we(s=>l(void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:Ze({address:n,domain:o,uri:r,nonce:a})}}catch(a){throw f(a)}}),[e]),i=we(a=>l(void 0,[a],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={}}){try{if(!h())throw new er({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});let{user:d}=yield e.auth.siws.link({signature:n,message:o,walletClientType:r,connectorType:s});return d}catch(c){throw f(c)}}),[e]);return{generateMessage:t,link:i}};import{useCallback as ve}from"react";import{createSiwsMessage as rr,PrivyClientError as tr}from"@privy-io/js-sdk-core";var So=()=>{let e=C(),t=ve(s=>l(void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:rr({address:n,domain:o,uri:r,nonce:a})}}catch(a){throw f(a)}}),[e]),i=ve(c=>l(void 0,[c],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={},disableSignup:a}){try{if(h())throw new tr({code:"attempted_login_with_siws_while_already_logged_in",error:"Already logged in, use `useLinkWithSiws` if you are trying to link a wallet to an existing account"});return(yield e.auth.siws.login({signature:n,message:o,walletClientType:r,connectorType:s,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw f(d)}}),[e]);return{generateMessage:t,login:i}};import{useCallback as Se,useContext as or}from"react";import{PrivyClientError as nr}from"@privy-io/js-sdk-core";var _o=e=>{let{client:t}=or(u),i=Se(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkWallet:Se(r=>l(void 0,[r],function*({address:o}){var s;try{if(!h())throw new nr({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let{user:c}=yield t.auth.siwe.unlinkWallet(o);return(s=e==null?void 0:e.onSuccess)==null||s.call(e,c),c}catch(a){throw i(a)}}),[t,i,e==null?void 0:e.onSuccess])}};import{useCallback as J,useContext as ir,useState as sr}from"react";import{PrivyClientError as ke}from"@privy-io/js-sdk-core";var Fo=e=>{let[t,i]=sr(""),{client:n,otpState:o,setOtpState:r}=ir(u),s=J(d=>{var m;let g=f(d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=J(g=>l(void 0,[g],function*({email:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=J(m=>l(void 0,[m],function*({code:d,email:g}){var p;try{if(!h())throw new ke({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let y=g||t;if(!y)throw new ke({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.email.linkWithCode(y,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw s(v)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};import{useCallback as Q,useContext as ar,useState as cr}from"react";import{PrivyClientError as be}from"@privy-io/js-sdk-core";var jo=e=>{let[t,i]=cr(""),{client:n,otpState:o,setOtpState:r}=ar(u),s=Q(d=>{var m;let g=f(d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=Q(g=>l(void 0,[g],function*({email:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=Q(p=>l(void 0,[p],function*({code:d,email:g,disableSignup:m}){var v;try{if(h())throw new be({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let S=g||t;if(!S)throw new be({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});r({status:"submitting-code"});let k=b(),w=yield n.auth.email.loginWithCode(S,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};import{useCallback as X,useContext as lr,useState as dr}from"react";import{PrivyClientError as Ce}from"@privy-io/js-sdk-core";var Zo=e=>{let[t,i]=dr(""),{client:n,otpState:o,setOtpState:r}=lr(u),s=X(d=>{var m;let g=f(d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=X(g=>l(void 0,[g],function*({phone:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=X(m=>l(void 0,[m],function*({code:d,phone:g}){var p;try{if(!h())throw new Ce({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(g||t))throw new Ce({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.phone.linkWithCode(g||t,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw s(v)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};import{useCallback as Y,useContext as ur,useState as mr}from"react";import{PrivyClientError as We}from"@privy-io/js-sdk-core";var ln=e=>{let[t,i]=mr(""),{client:n,otpState:o,setOtpState:r}=ur(u),s=Y(d=>{var m;let g=f(d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=Y(g=>l(void 0,[g],function*({phone:d}){var m;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=Y(p=>l(void 0,[p],function*({code:d,phone:g,disableSignup:m}){var v;try{if(h())throw new We({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(g||t))throw new We({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});r({status:"submitting-code"});let k=b(),w=yield n.auth.phone.loginWithCode(g||t,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};import*as G from"expo-linking";import{useCallback as Z,useContext as pr,useRef as gr}from"react";import{PrivyClientError as O}from"@privy-io/js-sdk-core";var yn=e=>{let{appState:t,getCurrentAppState:i}=H(),{client:n,farcasterState:o,setFarcasterState:r}=pr(u),s=gr(!1),a=Z(g=>{var p;let m=f(g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=Z(()=>{s.current=!0},[]);return{linkWithFarcaster:Z((v,...y)=>l(void 0,[v,...y],function*({relyingParty:g,redirectUrl:m},p={pollAttempts:10,pollIntervalMs:1e3}){var S;try{let k=h();if(s.current=!1,!k)throw new O({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});r({status:"generating-uri"});let{connect_uri:w,channel_token:P}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:G.createURL(m!=null?m:"/")});if(!w)throw new O({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!P)throw new O({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield G.openURL(w),r({status:"polling-status"});let U=0;for(;U<p.pollAttempts;){if(s.current)throw new O({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield A(p.pollIntervalMs);continue}let M=yield n.auth.farcaster.getFarcasterStatus({channel_token:P});if(M.state==="completed"){r({status:"submitting-token"});let{user:I}=yield n.auth.farcaster.link(_({channel_token:P},M));return r({status:"done"}),(S=e==null?void 0:e.onSuccess)==null||S.call(e,I),I}U++,yield A(p.pollIntervalMs)}throw new O({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(k){throw a(k)}}),[n,e==null?void 0:e.onSuccess,a,r]),state:o,cancel:c}};import{useCallback as Ee,useContext as hr}from"react";var Cn=e=>{let{client:t}=hr(u),i=Ee(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkFarcaster:Ee(r=>l(void 0,[r],function*({fid:o}){var s;try{let{user:a}=yield t.auth.farcaster.unlink({fid:o});return(s=e==null?void 0:e.onSuccess)==null||s.call(e,a),a}catch(a){throw i(a)}}),[t,e==null?void 0:e.onSuccess,i])}};import*as D from"expo-linking";import{useCallback as te,useContext as fr,useRef as yr}from"react";import{PrivyClientError as R}from"@privy-io/js-sdk-core";var Mn=e=>{let{appState:t,getCurrentAppState:i}=H(),{client:n,farcasterState:o,setFarcasterState:r}=fr(u),s=yr(!1),a=te(g=>{var p;let m=f(g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=te(()=>{s.current=!0},[]);return{loginWithFarcaster:te((y,...S)=>l(void 0,[y,...S],function*({relyingParty:g,redirectUrl:m,disableSignup:p},v={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(s.current=!1,h())throw new R({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:P,channel_token:U}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:D.createURL(m!=null?m:"/")});if(!P)throw new R({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!U)throw new R({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield D.openURL(P),r({status:"polling-status"});let M=0;for(;M<v.pollAttempts;){if(s.current)throw new R({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield A(v.pollIntervalMs);continue}let I=yield n.auth.farcaster.getFarcasterStatus({channel_token:U});if(I.state==="completed"){r({status:"submitting-token"});let j=b(),K=yield n.auth.farcaster.authenticate(_({channel_token:U,mode:p?"no-signup":"login-or-sign-up"},I),{embedded:j==null?void 0:j.embedded});return r({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,K.user,K.is_new_user),K.user}M++,yield A(v.pollIntervalMs)}throw new R({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(w){throw a(w)}}),[n,a,e==null?void 0:e.onSuccess,r,t]),state:o,cancel:c}};import{useCallback as Pe,useContext as wr}from"react";import{create as vr}from"zustand";import{PrivyClientError as Sr}from"@privy-io/js-sdk-core";var oe=vr(()=>({status:"initial"})),E=e=>oe.setState(e,!0),kr=oe.getState,Nn=()=>{let{client:e}=wr(u),t=oe(),i=Pe(()=>l(void 0,null,function*(){try{E({status:"fetching-nonce"});let o=yield e.auth.farcasterV2.initializeAuth();return E({status:"awaiting-signature"}),o}catch(o){let r=f(o);throw E({status:"initial",error:r}),r}}),[e]),n=Pe(o=>l(void 0,null,function*(){let r=kr().status;try{if(h()){let d=new Sr({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use a link helper if you are trying to link farcaster to an existing account"});throw E({status:r,error:d}),d}E({status:"submitting-signature"});let a=b(),c=yield e.auth.farcasterV2.authenticate(o,{embedded:a==null?void 0:a.embedded});return E({status:"done"}),setTimeout(()=>E({status:"initial"}),1500),{user:c.user}}catch(s){let a=f(s);throw E({status:r,error:a}),a}}),[e]);return{init:i,login:n,state:t}};import{useCallback as Ue,useContext as br}from"react";var $n=e=>{let{client:t}=br(u),i=Ue(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkOAuth:Ue(s=>l(void 0,[s],function*({provider:o,subject:r}){var a;try{let{user:c}=yield t.auth.oauth.unlink(o,r);return(a=e==null?void 0:e.onSuccess)==null||a.call(e,c),c}catch(c){throw i(c)}}),[t,e==null?void 0:e.onSuccess,i])}};import{useContext as Cr,useEffect as Wr,useRef as Er}from"react";var Zn=e=>{let{client:t}=Cr(u),i=Er(e.onOAuthTokenGrant);i.current=e.onOAuthTokenGrant,Wr(()=>{let{unsubscribe:n}=t.addOAuthTokensListener(o=>{i.current(o)});return n},[t])};import{useContext as Pr,useMemo as Ur}from"react";import{delegatedActions as _e}from"@privy-io/js-sdk-core";var ni=()=>{let{client:e}=Pr(u);return Ur(()=>({delegateWallet:_e.delegateWallet(e),revokeWallets:_e.revokeWallets(e)}),[e])};import{useContext as Mr,useMemo as Ir}from"react";import{addSessionSigners as Or,removeSessionSigners as Rr}from"@privy-io/js-sdk-core";import{getAllUserEmbeddedBitcoinWallets as _r,getAllUserEmbeddedEthereumWallets as xr,getAllUserEmbeddedSolanaWallets as Ar}from"@privy-io/js-sdk-core";function Lr(e,t){return[...xr(e),...Ar(e),..._r(e)].find(n=>n.address===t)}function ne(e){let t=h();if(!t)throw new Error("User must be authenticated to perform this operation");let i=Lr(t,e);if(!i)throw new Error(`No wallet found with address ${e}`);return i}var pi=()=>{let{client:e}=Mr(u);return Ir(()=>({addSessionSigners:({address:t,signers:i})=>Or({client:e,wallet:ne(t),signers:i.map(n=>({signer_id:n.signerId,override_policy_ids:n.policyIds}))}),removeSessionSigners:({address:t})=>Rr({client:e,wallet:ne(t)})}),[e])};import{useContext as Fr,useMemo as Tr}from"react";import{PrivyClientError as Ae}from"@privy-io/js-sdk-core";var vi=()=>{let{client:e}=Fr(u);return Tr(()=>({sendCode(n){return l(this,arguments,function*({newEmailAddress:i}){xe(),yield e.auth.email.sendCode(i)})},updateEmail(o){return l(this,arguments,function*({newEmailAddress:i,code:n}){let{address:r}=xe(),{user:s}=yield e.auth.email.updateEmail({oldEmailAddress:r,newEmailAddress:i,code:n});return s})}}),[e])};function xe(){let t=Hr().linked_accounts.find(i=>i.type==="email");if(!t)throw new Ae({code:"attempted_update_email_without_a_linked_email",error:"Must have a linked email account already to update an email address. Use `useLinkEmail` to link an email account."});return t}function Hr(){let e=h();if(!e)throw new Ae({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}import{useContext as Br,useMemo as Gr}from"react";import{PrivyClientError as Me}from"@privy-io/js-sdk-core";var Pi=()=>{let{client:e}=Br(u);return Gr(()=>({sendCode(n){return l(this,arguments,function*({newPhoneNumber:i}){Le(),yield e.auth.phone.sendCode(i)})},updatePhone(o){return l(this,arguments,function*({newPhoneNumber:i,code:n}){let{phoneNumber:r}=Le(),{user:s}=yield e.auth.phone.updatePhone({oldPhoneNumber:r,newPhoneNumber:i,code:n});return s})}}),[e])};function Le(){let t=Dr().linked_accounts.find(i=>i.type==="phone");if(!t)throw new Me({code:"attempted_update_phone_without_a_linked_phone",error:"Must have a linked phone account already to update a phone number. Use `useLinkSMS` to link a phone number."});return t}function Dr(){let e=h();if(!e)throw new Me({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}import*as Re from"expo-linking";import{useCallback as Vr,useContext as zr,useMemo as jr}from"react";import{crossApp as Kr,PrivyClientError as qr}from"@privy-io/js-sdk-core";import*as Oe from"expo-linking";import*as F from"expo-web-browser";import{PrivyClientError as Ie}from"@privy-io/js-sdk-core";var W=(e,t)=>l(void 0,null,function*(){let i=yield F.openAuthSessionAsync(e,t,{createTask:!1});if(i.type!=="success")throw i.type===F.WebBrowserResultType.CANCEL||i.type===F.WebBrowserResultType.DISMISS?new Ie({error:"OAuth session was cancelled",code:"oauth_session_failed"}):new Ie({error:"OAuth session failed",code:"oauth_session_failed"});return Nr(i.url)});function Nr(e){let{queryParams:t}=Oe.parse(e);return t}var Ti=()=>{let{client:e}=zr(u),t=jr(()=>Kr.loginWithCrossAppAuth({client:e,openAuthSession:W}),[e]);return{loginWithCrossApp:Vr(r=>l(void 0,[r],function*({appId:n,redirectUri:o}){if(h())throw new qr({code:"attempted_login_with_cross_app_while_already_logged_in",error:"Already logged in, use `linkCrossAppAccount` if you are trying to link a cross app account to an existing account"});let{user:a}=yield t({providerAppId:n,redirectUrl:Re.createURL(o||"/")});return{user:a}}),[t])}};import*as Fe from"expo-linking";import{useCallback as $r,useContext as Jr,useMemo as Qr}from"react";import{crossApp as Xr,PrivyClientError as Yr}from"@privy-io/js-sdk-core";var ji=()=>{let{client:e}=Jr(u),t=Qr(()=>Xr.linkWithCrossAppAuth({client:e,openAuthSession:W}),[e]);return{linkWithCrossApp:$r(r=>l(void 0,[r],function*({appId:n,redirectUri:o}){if(!h())throw new Yr({code:"attempted_link_cross_app_before_logged_in",error:"Must be logged in to link a cross app account, Use `loginWithCrossAppAccount` to login with cross app"});return{user:yield t({providerAppId:n,redirectUrl:Fe.createURL(o||"/")})}}),[t])}};import*as He from"expo-linking";import{useContext as Zr,useMemo as Te}from"react";import{crossApp as et}from"@privy-io/js-sdk-core";var Zi=()=>{let{client:e}=Zr(u),t=Te(()=>et.wallet.signMessage({client:e,openAuthSession:W}),[e]);return Te(()=>({signMessage:({address:i,message:n,redirectUri:o="/"})=>t({user:h(),address:i,message:n,redirectUrl:He.createURL(o)})}),[t])};import*as Ge from"expo-linking";import{useContext as rt,useMemo as Be}from"react";import{crossApp as tt}from"@privy-io/js-sdk-core";var ss=()=>{let{client:e}=rt(u),t=Be(()=>tt.wallet.signTypedData({client:e,openAuthSession:W}),[e]);return Be(()=>({signTypedData:({address:i,typedData:n,redirectUri:o="/"})=>t({user:h(),address:i,typedData:n,redirectUrl:Ge.createURL(o)})}),[t])};import*as Ne from"expo-linking";import{useContext as ot,useMemo as De}from"react";import{crossApp as nt}from"@privy-io/js-sdk-core";var ps=()=>{let{client:e}=ot(u),t=De(()=>nt.wallet.sendTransaction({client:e,openAuthSession:W}),[e]);return De(()=>({sendTransaction:({address:i,transaction:n,redirectUri:o="/"})=>t({user:h(),address:i,transaction:n,redirectUrl:Ne.createURL(o)})}),[t])};import{useCallback as it,useContext as st}from"react";import{getUserEmbeddedEthereumWallet as at,getUserEmbeddedSolanaWallet as ct,isUnifiedWallet as lt,PrivyClientError as L,throwIfInvalidRecoveryUpgradePath as dt}from"@privy-io/js-sdk-core";var ks=()=>{let{client:e}=st(u);return{setRecovery:it(i=>l(void 0,null,function*(){var a;let n=h(),o=e.app.appId;if(!n)throw new L({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let r=(a=at(n))!=null?a:ct(n);if(!r)throw new L({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(lt(r))throw new L({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});try{r.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(r):r.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier"))}catch(c){throw new L({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}dt({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:i.recoveryMethod});let s=yield ut({appId:o,client:e,user:n,primaryAccount:r,recoveryParams:i});try{let{user:c}=yield e.embeddedWallet.setRecovery(s);return{user:c}}catch(c){throw new L({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[e])}},ut=r=>l(void 0,[r],function*({appId:e,client:t,user:i,primaryAccount:n,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:n};case"user-passcode":return ue(_({},o),{wallet:n});case"google-drive":{let s=yield B(t);return{recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:s}}case"icloud":{let{recoverySecret:s,iCloudRecordName:a}=yield pe({appId:e,client:t,user:i});return{recoveryMethod:"icloud-native",recoverySecretOverride:s,iCloudRecordNameOverride:a,wallet:n}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:n,recoveryKey:o.recoveryKey};default:throw new L({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});import{useCallback as mt,useContext as pt}from"react";import{getUserEmbeddedEthereumWallet as gt,getUserEmbeddedSolanaWallet as ht,PrivyClientError as T,isUnifiedWallet as ft}from"@privy-io/js-sdk-core";var As=()=>{let{client:e}=pt(u);return{recover:mt(i=>l(void 0,null,function*(){var d;let n=h();if(!n)throw new T({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(d=gt(n))!=null?d:ht(n);if(!o)throw new T({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(ft(o))throw new T({code:"unsupported_wallet_type",error:"User owned wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let r,s,a,c;switch(i.recoveryMethod){case"user-passcode":s=i.password;break;case"google-drive":a=yield B(e);break;case"icloud":let{recoverySecret:g}=yield ge({client:e,walletAddress:o.address,chainType:o.chain_type});c=g;break;case"recovery-encryption-key":r=i.recoveryKey;break;case"privy":break;default:throw new T({code:"unsupported_recovery_method",error:`Unsupported recovery options ${i}`})}try{o.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(o,s,a,c,r):o.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",s,a,c))}catch(g){throw new T({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[e])}};import{useContext as yt,useEffect as ie}from"react";var se=(e={})=>{let{wallet:t,createWalletCallbacks:i,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:o}=yt(u),{onCreateWalletSuccess:r,onCreateWalletError:s,onRecoverWalletError:a,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:d,onSetWalletRecoveryError:g}=e;return ie(()=>{i.current={onSuccess:r,onError:s}},[r,s]),ie(()=>{n.current={onSuccess:c,onError:a}},[c,a]),ie(()=>{o.current={onSuccess:d,onError:g}},[c,a]),t};import{useEffect as wt}from"react";var Hs=({onStateChange:e})=>{let t=se();return wt(()=>{e(t)},[t])};import{useContext as vt}from"react";var Ns=()=>{let{getIdentityToken:e}=vt(u);return{getIdentityToken:e}};import{useCallback as Ve,useContext as St}from"react";import{PrivyClientError as kt}from"@privy-io/js-sdk-core";var Qs=e=>{let{client:t}=St(u),i=Ve(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{create:Ve(()=>l(void 0,null,function*(){var o;try{if(h())throw new kt({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let s=b(),a=yield t.auth.guest.create({embedded:s==null?void 0:s.embedded});return(o=e==null?void 0:e.onSuccess)==null||o.call(e,a.user,a.is_new_user),a.user}catch(r){throw i(r)}}),[t,i,e==null?void 0:e.onSuccess])}};import{useContext as bt,useEffect as Ct}from"react";function ta({onMfaRequired:e}){let{client:t}=bt(u);Ct(()=>{function i(){return l(this,null,function*(){var o;let n=h();yield e((o=n==null?void 0:n.mfa_methods.map(({type:r})=>r))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",i),()=>{t.mfaPromises.off("mfaRequired",i)}},[t,e])}import{useCallback as N,useContext as Wt}from"react";import{PrivyClientError as V}from"@privy-io/js-sdk-core";function da(){let{client:e}=Wt(u),t=N(r=>l(this,null,function*(){var s,a;switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty||((a=(s=b())==null?void 0:s.mfa)==null?void 0:a.relyingParty)});return ye(c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),i=N(r=>l(this,null,function*(){var s,a,c,d,g,m,p;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new V({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||((a=(s=b())==null?void 0:s.mfa)==null?void 0:a.relyingParty)||""}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;case"passkey":if(typeof r.mfaCode=="string")throw new V({code:"invalid_passkey_response",error:"Invalid authenticator response"});let v=yield he(r.mfaCode),y=fe(v);(m=e.mfaPromises.rootPromise.current)==null||m.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||((g=(d=b())==null?void 0:d.mfa)==null?void 0:g.relyingParty)||"",mfaCode:y}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;default:let S=new V({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(p=e.mfaPromises.rootPromise.current)==null||p.reject(S),S}}),[e]),n=N(()=>l(this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=N(()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new V({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:i,prompt:n,cancel:o}}import{useCallback as ae,useContext as Et}from"react";function ha(){let{client:e}=Et(u),t=ae(o=>l(this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),i=ae(o=>l(this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),n=ae(o=>l(this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[],removeForLogin:o.removeForLogin});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:t,submitMfaEnrollment:i,unenrollMfa:n}}import{useCallback as Pt,useMemo as Ut}from"react";import{getAllUserEmbeddedEthereumWallets as le,getEntropyDetailsFromUser as ze,getUserEmbeddedSolanaWallet as _t,PrivyClientError as je}from"@privy-io/js-sdk-core";var xt=()=>{let e=x(),t=C(),i=Ut(()=>{let r=le(e).map(s=>{let a=ze(e,s);return a?{account:s,entropy:a}:null});return r.some(s=>s===null)?[]:r.filter(s=>s!==null).map(({account:s,entropy:{entropyId:a,entropyIdVerifier:c}})=>({address:s.address,walletIndex:s.wallet_index,chainType:s.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:s,entropyId:a,entropyIdVerifier:c,onNeedsRecovery:d=>l(void 0,null,function*(){var g;yield(g=me())==null?void 0:g(d)})})}))},[t,e]),n=Pt((...r)=>l(void 0,[...r],function*({createAdditional:o=!1}={}){let{user:s}=yield t.user.get(),a=le(s);if(!o&&a.length>0)throw new je({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=ze(s);if(!c){let y=yield t.embeddedWallet.create({});return ce(y.user,0),{user:y.user}}let{entropyId:d,entropyIdVerifier:g}=c;if(g==="solana-address-verifier"){let y=_t(s),S=yield t.embeddedWallet.create({solanaAccount:y});return ce(S.user,0),{user:S.user}}let p=a.map(y=>y.wallet_index).reduce((y,S)=>Math.max(y,S),0)+1,v=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:p,entropyId:d,entropyIdVerifier:g});return ce(v.user,p),{user:v.user}}),[t]);return{wallets:i,create:n}};function ce(e,t){let i=le(e).find(n=>n.wallet_index===t);if(!e||!i)throw new je({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}import{useContext as At,useEffect as Ke}from"react";var Lt=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:n}=At(u),{onCreateWalletSuccess:o,onCreateWalletError:r,onRecoverWalletError:s,onRecoverWalletSuccess:a}=e;return Ke(()=>{i.current={onSuccess:o,onError:r}},[o,r]),Ke(()=>{n.current={onSuccess:a,onError:s}},[a,s]),t};import{useCallback as Mt,useMemo as It}from"react";import{getAllUserEmbeddedBitcoinWallets as de,getEntropyDetailsFromUser as qe,PrivyClientError as z}from"@privy-io/js-sdk-core";var Ot=()=>{let e=x(),t=C(),i=It(()=>{let o=qe(e);if(!o)return[];let r=de(e),{entropyId:s,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:s,entropyIdVerifier:a})}))},[t,e]),n=Mt(s=>l(void 0,[s],function*({chainType:o,createAdditional:r=!1}){var k;let a=t.app.getConfig();if(((k=a==null?void 0:a.embedded_wallet_config)==null?void 0:k.mode)==="user-controlled-server-wallets-only")throw new z({code:"unsupported_wallet_type",error:"Bitcoin wallets are only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let{user:c}=yield t.user.get(),d=qe(c);if(!d)throw new z({code:"embedded_wallet_creation_error",error:"No existing wallet for this user, create an Ethereum walet first to add a Bitcoin wallet"});let{entropyId:g,entropyIdVerifier:m}=d,p=de(c).filter(w=>w.chain_type===o);if(!r&&p.length>0)throw new z({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let v=p.length===0?0:Math.max(...p.map(w=>w.wallet_index),0)+1,y=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:v,entropyId:g,entropyIdVerifier:m}),S=de(y.user).find(w=>w.chain_type===o&&w.wallet_index===v);if(!y.user||!S)throw new z({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:y.user,provider:yield t.embeddedWallet.getBitcoinProvider({wallet:S,entropyId:g,entropyIdVerifier:m})}}),[t]);return{wallets:i,create:n}};import{useContext as Rt}from"react";var Ft=()=>{let{isReady:e,logout:t,getAccessToken:i,error:n}=Rt(u);return{user:x(),isReady:e,error:n,logout:t,getAccessToken:i}};import{useMemo as Tt}from"react";import{generateAuthorizationSignature as Ht}from"@privy-io/js-sdk-core";var Bt=()=>{let e=C();return Tt(()=>({generateAuthorizationSignature(i){return l(this,null,function*(){let{signature:n}=yield Ht((...o)=>e.embeddedWallet.signWithUserSigner(...o),i);return{signature:n}})}}),[e])};export{jt as a,eo as b,C as c,mo as d,So as e,_o as f,Fo as g,jo as h,Zo as i,ln as j,yn as k,Cn as l,Mn as m,Nn as n,$n as o,Zn as p,ni as q,pi as r,vi as s,Pi as t,Ti as u,ji as v,Zi as w,ss as x,ps as y,ks as z,As as A,se as B,Hs as C,Ns as D,Qs as E,ta as F,da as G,ha as H,xt as I,Lt as J,Ot as K,Ft as L,Bt as M};
|