@privy-io/expo 0.45.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 _chunkCOOXVDQOjs = require('./chunk-COOXVDQO.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var mt=e=>{let{user:r,client:s,setSiweState:a,siweState:o}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),n=_react.useCallback.call(void 0, c=>{var d;let h=_chunkCOOXVDQOjs.i.call(void 0, c);return a({status:"error",error:h}),(d=e==null?void 0:e.onError)==null||d.call(e,h),h},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({wallet:c,from:{domain:h,uri:d}}){var l;try{a({status:"generating-message"});let u=yield s.auth.siwe.init(c,h,d);return a({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,u.message),u.message}catch(u){throw n(u)}}),[s,n,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, d=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[d],function*({signature:c,messageOverride:h}){var f;try{if(!r)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"});a({status:"submitting-signature"});let l=yield s.auth.siwe.linkWithSiwe(c,void 0,h);return a({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,l),l}catch(l){throw n(l)}}),[r,s,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:o}};var kt=e=>{let{user:r,client:s,setSiweState:a,siweState:o}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),n=_react.useCallback.call(void 0, c=>{var d;let h=_chunkCOOXVDQOjs.i.call(void 0, c);return a({status:"error",error:h}),(d=e==null?void 0:e.onError)==null||d.call(e,h),h},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({wallet:c,from:{domain:h,uri:d}}){var l;try{a({status:"generating-message"});let u=yield s.auth.siwe.init(c,h,d);return a({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,u.message),u.message}catch(u){throw n(u)}}),[s,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({signature:c,messageOverride:h,disableSignup:d}){var l;try{if(r)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"});a({status:"submitting-signature"});let u=_chunkCOOXVDQOjs.f.call(void 0, ),g=yield s.auth.siwe.loginWithSiwe(c,void 0,h,d?"no-signup":"login-or-sign-up",{embedded:u==null?void 0:u.embedded});return a({status:"done"}),(l=e==null?void 0:e.onSuccess)==null||l.call(e,g.user,g.is_new_user),g.user}catch(u){throw n(u)}}),[r,s,n,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:o}};var Pt=e=>{let{user:r,client:s}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),a=_react.useCallback.call(void 0, n=>{var i;let t=_chunkCOOXVDQOjs.i.call(void 0, n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[t],function*({address:n}){var i;try{if(!r)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 c=yield s.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,c),c}catch(c){throw a(c)}}),[r,s,a,e==null?void 0:e.onSuccess])}};var Rt=e=>{let[r,s]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkCOOXVDQOjs.i.call(void 0, d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({email:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=_react.useCallback.call(void 0, l=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[l],function*({code:d,email:f}){var u;try{if(!a)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 g=f||r;if(!g)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let y=yield o.auth.email.linkWithCode(g,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,y),y}catch(g){throw i(g)}}),[a,r,t,o,e,i]);return{sendCode:c,linkWithCode:h,state:n}};var Nt=e=>{let[r,s]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkCOOXVDQOjs.i.call(void 0, d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({email:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=_react.useCallback.call(void 0, u=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[u],function*({code:d,email:f,disableSignup:l}){var g;try{if(a)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 y=f||r;if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let b=_chunkCOOXVDQOjs.f.call(void 0, ),v=yield o.auth.email.loginWithCode(y,d,l?"no-signup":"login-or-sign-up",{embedded:b==null?void 0:b.embedded});return t({status:"done"}),(g=e==null?void 0:e.onLoginSuccess)==null||g.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(y){throw i(y)}}),[a,r,t,o,e,i]);return{sendCode:c,loginWithCode:h,state:n}};var Jt=e=>{let[r,s]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkCOOXVDQOjs.i.call(void 0, d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({phone:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=_react.useCallback.call(void 0, l=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[l],function*({code:d,phone:f}){var u;try{if(!a)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(!(f||r))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let y=yield o.auth.phone.linkWithCode(f||r,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,y),y}catch(g){throw i(g)}}),[a,r,t,o,e,i]);return{sendCode:c,linkWithCode:h,state:n}};var oo=e=>{let[r,s]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkCOOXVDQOjs.i.call(void 0, d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=_react.useCallback.call(void 0, f=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[f],function*({phone:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=_react.useCallback.call(void 0, u=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[u],function*({code:d,phone:f,disableSignup:l}){var g;try{if(a)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(!(f||r))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let b=_chunkCOOXVDQOjs.f.call(void 0, ),v=yield o.auth.phone.loginWithCode(f||r,d,l?"no-signup":"login-or-sign-up",{embedded:b==null?void 0:b.embedded});return t({status:"done"}),(g=e==null?void 0:e.onLoginSuccess)==null||g.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(y){throw i(y)}}),[a,r,t,o,e,i]);return{sendCode:c,loginWithCode:h,state:n}};var _expolinking = require('expo-linking'); var T = _interopRequireWildcard(_expolinking); var H = _interopRequireWildcard(_expolinking); var Pe = _interopRequireWildcard(_expolinking); var D = _interopRequireWildcard(_expolinking); var xe = _interopRequireWildcard(_expolinking); var Ae = _interopRequireWildcard(_expolinking); var Me = _interopRequireWildcard(_expolinking); var Re = _interopRequireWildcard(_expolinking);var uo=e=>{let{appState:r,getCurrentAppState:s}=_chunkCOOXVDQOjs.k.call(void 0, ),{client:a,user:o,farcasterState:n,setFarcasterState:t}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),i=_react.useRef.call(void 0, !1),c=_react.useCallback.call(void 0, f=>{var u;let l=_chunkCOOXVDQOjs.i.call(void 0, f);return t({status:"error",error:l}),(u=e==null?void 0:e.onError)==null||u.call(e,l),l},[e==null?void 0:e.onError,t]),h=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (g,...y)=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[g,...y],function*({relyingParty:f,redirectUrl:l},u={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(i.current=!1,!o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:v,channel_token:W}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:T.createURL(l!=null?l:"/")});if(!v)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!W)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield T.openURL(v),t({status:"polling-status"});let E=0;for(;E<u.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&s()!=="active"){yield _chunkCOOXVDQOjs.j.call(void 0, u.pollIntervalMs);continue}let x=yield a.auth.farcaster.getFarcasterStatus({channel_token:W});if(x.state==="completed"){t({status:"submitting-token"});let U=yield a.auth.farcaster.link(_chunkCOOXVDQOjs.a.call(void 0, {channel_token:W},x));return t({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,U),U}E++,yield _chunkCOOXVDQOjs.j.call(void 0, u.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(v){throw c(v)}}),[a,e==null?void 0:e.onSuccess,c,t,o]),state:n,cancel:h}};var yo=e=>{let{client:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useCallback.call(void 0, o=>{var t;let n=_chunkCOOXVDQOjs.i.call(void 0, o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, n=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[n],function*({fid:o}){var t;try{let i=yield r.auth.farcaster.unlink({fid:o});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw s(i)}}),[r,e==null?void 0:e.onSuccess,s])}};var Eo=e=>{let{appState:r,getCurrentAppState:s}=_chunkCOOXVDQOjs.k.call(void 0, ),{client:a,user:o,farcasterState:n,setFarcasterState:t}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),i=_react.useRef.call(void 0, !1),c=_react.useCallback.call(void 0, f=>{var u;let l=_chunkCOOXVDQOjs.i.call(void 0, f);return t({status:"error",error:l}),(u=e==null?void 0:e.onError)==null||u.call(e,l),l},[e==null?void 0:e.onError,t]),h=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (y,...b)=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[y,...b],function*({relyingParty:f,redirectUrl:l,disableSignup:u},g={pollAttempts:10,pollIntervalMs:1e3}){var v;try{if(i.current=!1,o)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"});t({status:"generating-uri"});let{connect_uri:W,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:H.createURL(l!=null?l:"/")});if(!W)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield H.openURL(W),t({status:"polling-status"});let x=0;for(;x<g.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&s()!=="active"){yield _chunkCOOXVDQOjs.j.call(void 0, g.pollIntervalMs);continue}let U=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(U.state==="completed"){t({status:"submitting-token"});let V=_chunkCOOXVDQOjs.f.call(void 0, ),K=yield a.auth.farcaster.authenticate(_chunkCOOXVDQOjs.a.call(void 0, {channel_token:E,mode:u?"no-signup":"login-or-sign-up"},U),{embedded:V==null?void 0:V.embedded});return t({status:"done"}),(v=e==null?void 0:e.onSuccess)==null||v.call(e,K.user,K.is_new_user),K.user}x++,yield _chunkCOOXVDQOjs.j.call(void 0, g.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(W){throw c(W)}}),[a,c,e==null?void 0:e.onSuccess,t,o,r]),state:n,cancel:h}};var _zustand = require('zustand');var re=_zustand.create.call(void 0, ()=>({status:"initial"})),C=e=>re.setState(e,!0),cr=re.getState,Ro= exports.k =()=>{let{client:e,user:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=re(),a=_react.useCallback.call(void 0, ()=>_chunkCOOXVDQOjs.d.call(void 0, void 0,null,function*(){try{C({status:"fetching-nonce"});let n=yield e.auth.farcasterV2.initializeAuth();return C({status:"awaiting-signature"}),n}catch(n){let t=_chunkCOOXVDQOjs.i.call(void 0, n);throw C({status:"initial",error:t}),t}}),[e]),o=_react.useCallback.call(void 0, n=>_chunkCOOXVDQOjs.d.call(void 0, void 0,null,function*(){let t=cr().status;try{if(r){let h=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 C({status:t,error:h}),h}C({status:"submitting-signature"});let i=_chunkCOOXVDQOjs.f.call(void 0, ),c=yield e.auth.farcasterV2.authenticate(n,{embedded:i==null?void 0:i.embedded});return C({status:"done"}),setTimeout(()=>C({status:"initial"}),1500),{user:c.user}}catch(i){let c=_chunkCOOXVDQOjs.i.call(void 0, i);throw C({status:t,error:c}),c}}),[e,r]);return{init:a,login:o,state:s}};var Bo=e=>{let{client:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useCallback.call(void 0, o=>{var t;let n=_chunkCOOXVDQOjs.i.call(void 0, o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[t],function*({provider:o,subject:n}){var i;try{let c=yield r.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,c),c}catch(c){throw s(c)}}),[r,e==null?void 0:e.onSuccess,s])}};var jo=e=>{let{client:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useRef.call(void 0, e.onOAuthTokenGrant);s.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:a}=r.addOAuthTokensListener(o=>{s.current(o)});return a},[r])};var Qo=()=>{let{client:e}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};var _expowebbrowser = require('expo-web-browser'); var Ee = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var S=e=>_chunkCOOXVDQOjs.d.call(void 0, void 0,null,function*(){let r;_reactnative.Platform.OS==="android"&&(r=fr());let s=yield Ee.openAuthSessionAsync(e),a;if(_reactnative.Platform.OS==="android")a=yield r;else{if(s.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_failed",error:"OAuth session failed"});a=s.url}return gr(a)});function fr(){let e;return new Promise((r,s)=>{e=D.addEventListener("url",({url:a})=>{a&&r(a)}),setTimeout(()=>{s(new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_timeout",error:"OAuth session timed out"}))},yr)}).finally(()=>{e==null||e.remove()})}function gr(e){let{queryParams:r}=D.parse(e);return r}var yr=2*60*1e3;var sn=()=>{let{client:e,user:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, t=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[t],function*({appId:o,redirectUri:n}){if(r)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:i}=yield s({providerAppId:o,redirectUrl:Pe.createURL(n||"/")});return{user:i}}),[r,s])}};var hn=()=>{let{client:e,user:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, t=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[t],function*({appId:o,redirectUri:n}){if(!r)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 s({providerAppId:o,redirectUrl:xe.createURL(n||"/")})}}),[r,s])}};var bn=()=>{let{client:e,user:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:S}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:a,message:o,redirectUri:n="/"})=>s({user:r,address:a,message:o,redirectUrl:Ae.createURL(n)})}),[r,s])};var Pn=()=>{let{client:e,user:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:S}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:a,typedData:o,redirectUri:n="/"})=>s({user:r,address:a,typedData:o,redirectUrl:Me.createURL(n)})}),[r,s])};var On=()=>{let{client:e,user:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),s=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:S}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:a,transaction:o,redirectUri:n="/"})=>s({user:r,address:a,transaction:o,redirectUrl:Re.createURL(n)})}),[r,s])};var Bn=()=>{let{user:e,client:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J);return{setRecovery:_react.useCallback.call(void 0, a=>_chunkCOOXVDQOjs.d.call(void 0, void 0,null,function*(){var i;let o=r.app.appId;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?i:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(n,n.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:n.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Dr({appId:o,client:r,user:e,primaryAccount:n,recoveryParams:a});try{let{user:c}=yield r.embeddedWallet.setRecovery(t);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"})}}),[r,e])}},Dr=n=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[n],function*({appId:e,client:r,user:s,primaryAccount:a,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:a};case"user-passcode":return _chunkCOOXVDQOjs.b.call(void 0, _chunkCOOXVDQOjs.a.call(void 0, {},o),{wallet:a});case"google-drive":{let t=yield _chunkCOOXVDQOjs.l.call(void 0, r);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:i}=yield _chunkCOOXVDQOjs.g.call(void 0, {appId:e,client:r,user:s});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:i,wallet:a}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:a,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var zn=()=>{let{user:e,client:r}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J);return{recover:_react.useCallback.call(void 0, a=>_chunkCOOXVDQOjs.d.call(void 0, void 0,null,function*(){var h;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(h=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?h:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,t,i,c;switch(a.recoveryMethod){case"user-passcode":t=a.password;break;case"google-drive":i=yield _chunkCOOXVDQOjs.l.call(void 0, r);break;case"icloud":let{recoverySecret:d}=yield _chunkCOOXVDQOjs.h.call(void 0, {client:r,walletAddress:o.address,chainType:o.chain_type});c=d;break;case"recovery-encryption-key":n=a.recoveryKey;break;case"privy":break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_recovery_method",error:`Unsupported recovery options ${a}`})}try{o.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(o,t,i,c,n):o.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",t,i,c))}catch(d){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[r,e])}};var oe=(e={})=>{let{wallet:r,createWalletCallbacks:s,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),{onCreateWalletSuccess:n,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:h,onSetWalletRecoveryError:d}=e;return _react.useEffect.call(void 0, ()=>{s.current={onSuccess:n,onError:t}},[n,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:c,onError:i}},[c,i]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:h,onError:d}},[c,i]),r};var ti=({onStateChange:e})=>{let r=oe();return _react.useEffect.call(void 0, ()=>{e(r)},[r])};var ai=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J);return{getIdentityToken:e}};var pi=e=>{let{user:r,client:s}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),a=_react.useCallback.call(void 0, n=>{var i;let t=_chunkCOOXVDQOjs.i.call(void 0, n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkCOOXVDQOjs.d.call(void 0, void 0,null,function*(){var n;try{if(r)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 t=_chunkCOOXVDQOjs.f.call(void 0, ),i=yield s.auth.guest.create({embedded:t==null?void 0:t.embedded});return(n=e==null?void 0:e.onSuccess)==null||n.call(e,i.user,i.is_new_user),i.user}catch(t){throw a(t)}}),[s,a,r,e==null?void 0:e.onSuccess])}};function wi({onMfaRequired:e}){let{client:r,user:s}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J);_react.useEffect.call(void 0, ()=>{function a(){return _chunkCOOXVDQOjs.d.call(void 0, this,null,function*(){var o;yield e((o=s==null?void 0:s.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return r.mfaPromises.on("mfaRequired",a),()=>{r.mfaPromises.off("mfaRequired",a)}},[r,s,e])}function _i(){let{client:e}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),r=_react.useCallback.call(void 0, n=>_chunkCOOXVDQOjs.d.call(void 0, this,null,function*(){var t,i;switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||((i=(t=_chunkCOOXVDQOjs.f.call(void 0, ))==null?void 0:t.mfa)==null?void 0:i.relyingParty)});return _chunkCOOXVDQOjs.P.call(void 0, c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e]),s=_react.useCallback.call(void 0, n=>_chunkCOOXVDQOjs.d.call(void 0, this,null,function*(){var t,i,c,h,d,f,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||((i=(t=_chunkCOOXVDQOjs.f.call(void 0, ))==null?void 0:t.mfa)==null?void 0:i.relyingParty)||""}),yield new Promise((b,v)=>{e.mfaPromises.submitPromise.current={resolve:b,reject:v}});break;case"passkey":if(typeof n.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let u=yield _chunkCOOXVDQOjs.N.call(void 0, n.mfaCode),g=_chunkCOOXVDQOjs.O.call(void 0, u);(f=e.mfaPromises.rootPromise.current)==null||f.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||((d=(h=_chunkCOOXVDQOjs.f.call(void 0, ))==null?void 0:h.mfa)==null?void 0:d.relyingParty)||"",mfaCode:g}),yield new Promise((b,v)=>{e.mfaPromises.submitPromise.current={resolve:b,reject:v}});break;default:let y=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(y),y}}),[e]),a=_react.useCallback.call(void 0, ()=>_chunkCOOXVDQOjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:r,submit:s,prompt:a,cancel:o}}function Li(){let{client:e}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),r=_react.useCallback.call(void 0, o=>_chunkCOOXVDQOjs.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]),s=_react.useCallback.call(void 0, o=>_chunkCOOXVDQOjs.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]),a=_react.useCallback.call(void 0, o=>_chunkCOOXVDQOjs.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:r,submitMfaEnrollment:s,unenrollMfa:a}}var tt=()=>{let{user:e}=_chunkCOOXVDQOjs.s.call(void 0, ),r=_chunkCOOXVDQOjs.t.call(void 0, ),s=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),{entropyId:t,entropyIdVerifier:i}=o;return n.map(c=>({address:c.address,walletIndex:c.wallet_index,chainType:c.chain_type,getProvider:()=>r.embeddedWallet.getEthereumProvider({wallet:c,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=_react.useCallback.call(void 0, (...n)=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[...n],function*({createAdditional:o=!1}={}){let{user:t}=yield r.user.get(),i=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, t);if(!o&&i.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, t);if(!c){let g=yield r.embeddedWallet.create({});return ie(g.user,0),{user:g.user}}let{entropyId:h,entropyIdVerifier:d}=c;if(d==="solana-address-verifier"){let g=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t),y=yield r.embeddedWallet.create({solanaAccount:g});return ie(y.user,0),{user:y.user}}let l=i.map(g=>g.wallet_index).reduce((g,y)=>Math.max(g,y),0)+1,u=yield r.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:l,entropyId:h,entropyIdVerifier:d});return ie(u.user,l),{user:u.user}}),[r]);return{wallets:s,create:a}};function ie(e,r){let s=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(a=>a.wallet_index===r);if(!e||!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var nt=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:s,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunkCOOXVDQOjs.J),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{s.current={onSuccess:o,onError:n}},[o,n]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:i,onError:t}},[i,t]),r};var st=()=>{let{user:e}=_chunkCOOXVDQOjs.s.call(void 0, ),r=_chunkCOOXVDQOjs.t.call(void 0, ),s=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:t,entropyIdVerifier:i}=o;return n.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>r.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=_react.useCallback.call(void 0, t=>_chunkCOOXVDQOjs.d.call(void 0, void 0,[t],function*({chainType:o,createAdditional:n=!1}){let{user:i}=yield r.user.get(),c=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i);if(!c)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:h,entropyIdVerifier:d}=c,f=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, i).filter(y=>y.chain_type===o);if(!n&&f.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 l=f.length===0?0:Math.max(...f.map(y=>y.wallet_index),0)+1,u=yield r.embeddedWallet.add({chainType:o,hdWalletIndex:l,entropyId:h,entropyIdVerifier:d}),g=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, u.user).find(y=>y.chain_type===o&&y.wallet_index===l);if(!u.user||!g)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:u.user,provider:yield r.embeddedWallet.getBitcoinProvider({wallet:g,entropyId:h,entropyIdVerifier:d})}}),[r]);return{wallets:s,create:a}};exports.a = mt; exports.b = kt; exports.c = Pt; exports.d = Rt; exports.e = Nt; exports.f = Jt; exports.g = oo; exports.h = uo; exports.i = yo; exports.j = Eo; exports.k = Ro; exports.l = Bo; exports.m = jo; exports.n = Qo; exports.o = sn; exports.p = hn; exports.q = bn; exports.r = Pn; exports.s = On; exports.t = Bn; exports.u = zn; exports.v = oe; exports.w = ti; exports.x = ai; exports.y = pi; exports.z = wi; exports.A = _i; exports.B = Li; exports.C = tt; exports.D = nt; exports.E = st;
@@ -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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var xt=Object.defineProperty,Ut=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var se=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable;var Ue=(e,t,r)=>t in e?xt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C= exports.a =(e,t)=>{for(var r in t||(t={}))Ie.call(t,r)&&Ue(e,r,t[r]);if(se)for(var r of se(t))Le.call(t,r)&&Ue(e,r,t[r]);return e},W= exports.b =(e,t)=>Ut(e,It(t));var Vr=(e,t)=>{var r={};for(var o in e)Ie.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&se)for(var o of se(e))t.indexOf(o)<0&&Le.call(e,o)&&(r[o]=e[o]);return r};var y=(e,t,r)=>new Promise((o,i)=>{var n=a=>{try{s(r.next(a))}catch(c){i(c)}},d=a=>{try{s(r.throw(a))}catch(c){i(c)}},s=a=>a.done?o(a.value):Promise.resolve(a.value).then(n,d);s((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var ie = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var Z = _interopRequireWildcard(_expolinking); var K = _interopRequireWildcard(_expolinking); var X = _interopRequireWildcard(_expolinking); var Q = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var U = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var ae = _interopRequireWildcard(_expowebbrowser); var Ge = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _expocrypto = require('expo-crypto');var Me={name:"@privy-io/expo",version:"0.46.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],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"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","check-types":"npx tsc --noEmit",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"npx tsup --dts-only",lint:'npx eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.43.0","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^12.8.1","@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",jest:"^29.7.0","jest-expo":"~51.0.0","lucide-react-native":"^0.474.0",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.3","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-constants":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",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.21.36"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var _zustand = require('zustand');var le=_zustand.create.call(void 0, ()=>{}),Te=e=>le.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),Fe= exports.f =le.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var je=({client:e,isClientReady:t,setWebViewState:r,logLevel:o})=>{let i=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",s=>y(void 0,null,function*(){i.current&&s==="active"&&((yield e.embeddedWallet.ping(500))||(i.current.reload(),r("reloading")))})).remove,[]);let n=_react.useCallback.call(void 0, d=>y(void 0,null,function*(){let{data:s}=d.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(s))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:d=>{d&&(e.setMessagePoster(d),i.current=d)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:o==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:n}):null};function De(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:i}){var d,s,a;t({status:"creating"});try{let{user:c}=yield e.user.get(),l=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, c),p=l[0],m=(d=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, c))!=null?d:void 0;if(i!=null&&i.recoveryMethod&&i.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(i!=null&&i.createAdditional)&&p)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 v,f;if(p){let u=m!=null?m:p,{entropyId:h,entropyIdVerifier:b}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, u),g=Math.max(...l.map(E=>E.wallet_index),0)+1,_=yield e.embeddedWallet.add({chainType:"solana",entropyId:h,entropyIdVerifier:b,hdWalletIndex:g}),S=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, _.user).find(E=>E.wallet_index===g);if(!S)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});v=yield e.embeddedWallet.getSolanaProvider(S,h,b),f=_.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:m}),h=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, u.user).find(S=>S.wallet_index===0);if(!h)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=m!=null?m:h,{entropyId:g,entropyIdVerifier:_}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, b);v=yield e.embeddedWallet.getSolanaProvider(h,g,_),f=u.user}let w=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, f)[0];if(!w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(a=(s=r.current)==null?void 0:s.onSuccess)==null||a.call(s,v),t({status:"connected",publicKey:w.public_key}),o({status:"initial"}),v}catch(c){let l=c instanceof Error?c.message:"Error creating embedded wallet";throw t({status:"error",error:l}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function ce(l){return y(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:i,setRecoveryFlowState:n,password:d,recoveryKey:s,recoveryToken:a,recoverySecretOverride:c}){var p,m,v,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(i){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"google-drive":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!c)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(!s)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 w=yield e.embeddedWallet.getProvider(t,d,a,c,s);return r({status:"connected",provider:w,account:t}),n({status:"initial"}),(m=(p=o.current)==null?void 0:p.onSuccess)==null||m.call(p,w),w}catch(w){r({status:"needs-recovery",account:t}),n({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:w instanceof Error?w.message:"Error recovering embedded wallet"});throw(f=(v=o.current)==null?void 0:v.onError)==null||f.call(v,u),u}})}function Ve(s){return y(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:i,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:d}){var a,c,l,p;i({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return i({status:"connected",publicKey:m._publicKey}),d({status:"initial"}),(c=(a=n.current)==null?void 0:a.onSuccess)==null||c.call(a,m),m}catch(m){i({status:"needs-recovery"}),d({status:"initial"});let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(p=(l=n.current)==null?void 0:l.onError)==null||p.call(l,v),v}})}var qe=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:i,webViewState:n,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:s})=>{let a=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, t),[t]),c=_react.useMemo.call(void 0, ()=>a.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, t),[t,a]),l=_react.useMemo.call(void 0, ()=>{if(!c)return[];let{entropyId:f,entropyIdVerifier:w}=c;return a.map(u=>({address:u.address,publicKey:u.address,walletIndex:u.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(u,f,w)}))},[a,c,e]),p=_react.useCallback.call(void 0, f=>y(void 0,null,function*(){return yield De({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:i,opts:f})}),[e,d]),m=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:f,entropyIdVerifier:w}=c;return Ve({client:e,account:a[0],entropyId:f,entropyIdVerifier:w,setSolanaWallet:o,recoverSolanaWalletCallbacks:s,setSolanaRecoveryFlowState:i})}),[e,c,a,s,i,o]),v=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!c)throw o({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(f=>f.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:f,entropyIdVerifier:w}=c,u=yield e.embeddedWallet.getSolanaProvider(a[0],f,w);return o({status:"connected",publicKey:a[0].public_key}),u}catch(f){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, f)?(o({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):f instanceof Error?(o({status:"error",error:f.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:f.message})):(o({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[a,e,c,o]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return o({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&v()},[r.status]),{create:p,recover:m,getProvider:v,wallets:l}};function ue(p){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:i,password:n,recoveryKey:d,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:l}){var v,f;switch(o){case"user-passcode":if(!n)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(!d)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(!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||!c)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 m=o==="icloud"?"icloud-native":o;try{let{user:w}=yield e.embeddedWallet.create({password:n,recoveryMethod:m,recoveryKey:d,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:l}),u=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, w);if(!u)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let h=yield e.embeddedWallet.getProvider(u);return(f=(v=r.current)==null?void 0:v.onSuccess)==null||f.call(v,h),t({status:"connected",provider:h,account:u}),i({status:"initial"}),h}catch(w){let u=w instanceof Error?w.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),i({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function ze(){return y(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 _e(o){return y(this,arguments,function*({user:e,appId:t,client:r}){var s;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let i=yield ze(),n=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(n==null?void 0:n.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:a,iCloudRecordName:c}=yield i.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:a,iCloudRecordName:c}}catch(a){if(a instanceof Error){let c=(s=a.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:c})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Je(o){return y(this,arguments,function*({walletAddress:e,client:t,chainType: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 i=yield ze(),d=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let s=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),a=s==null?void 0:s.container_identifier;if(!a)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:l}=yield i.readRecoverySecretFromICloud({containerId:a,recordName:d});return{recoverySecret:l}}catch(l){if(l instanceof Error){let p=(c=l.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:p})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var Be=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function x(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 Co=e=>new Promise(t=>setTimeout(t,e));function Oo(){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 re(i){return y(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let n;switch(e){case"google-drive":{let{url:c}=yield r.recovery.auth.generateURL(K.createURL(t||"/"));n=c;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let d=yield Ge.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(d.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:s}=K.parse(d.url),a;switch(e){case"google-drive":{let{privy_oauth_state:c,privy_oauth_code:l}=s;if(!l||!c)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});a=yield pe({oAuthCode:l,oAuthState:c,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return a}catch(n){throw o==null||o(x(n)),n}})}function pe(o){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:i}=yield r.recovery.auth.authorize(e,t);if(!i)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return i})}var Zt=2*60*1e3;function er(e){let t;return new Promise((r,o)=>{t=K.addEventListener("url",n=>y(this,[n],function*({url:i}){if(!i)return;let{queryParams:d}=K.parse(i),{privy_oauth_state:s,privy_oauth_code:a}=d!=null?d:{};if(typeof a!="string"||typeof s!="string")return;let c=yield pe({client:e,oAuthCode:a,oAuthState:s});r(c)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Zt)}).finally(()=>{t==null||t.remove()})}function Do(e){return y(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=er(e));let r=yield re({provider:"google-drive",client:e});return r!=null?r:yield t})}function me(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:i}){var d,s,a,c;try{let{provider:l,user:p}=yield e.embeddedWallet.setRecovery(t),m=l,v=_jssdkcore.getUserEmbeddedWallet.call(void 0, p);return i({status:"connected",provider:m,account:v}),(s=(d=r.current)==null?void 0:d.onSuccess)==null||s.call(d,m),o({status:"initial"}),m}catch(l){let p=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(c=(a=r.current)==null?void 0:a.onError)==null||c.call(a,p),o({status:"initial"}),p}})}function $e(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 Ze=({client:e,user:t,appId:r,wallet:o,setWallet:i,setRecoveryFlowState:n,webViewState:d,createWalletCallbacks:s,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c})=>{let l=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, t),[t]),p=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var J,I;if(l)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:h}=yield e.user.get(),{password:b,recoveryMethod:g,recoveryKey:_}=$e(u),S,E,R;if(g==="google-drive"&&(S=yield re({provider:g,client:e,onError:(J=s.current)==null?void 0:J.onError}),n({status:"creating-wallet"}),!S))return null;if(g==="icloud"){if(!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:N,iCloudRecordName:D}=yield _e({user:h,appId:r,client:e});E=N,R=D}return yield ue({client:e,setWallet:i,createWalletCallbacks:s,recoveryMethod:g,recoveryKey:_,setRecoveryFlowState:n,password:b,recoverySecretOverride:E,iCloudRecordNameOverride:R,solanaAccount:(I=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, h))!=null?I:void 0})}),[e,l,t]),m=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var g;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))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."});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:l.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let h,b;switch(u.recoveryMethod){case"privy":b=W(C({},u),{wallet:l});break;case"user-passcode":b=W(C({},u),{wallet:l,password:u.password});break;case"google-drive":if(h=yield re({provider:u.recoveryMethod,client:e,onError:(g=c.current)==null?void 0:g.onError}),n({status:"upgrading-recovery"}),!h)return null;b={recoveryMethod:"google-drive",wallet:l,recoveryAccessToken:h};break;case"icloud":if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:_,iCloudRecordName:S}=yield _e({user:t,appId:r,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:S,wallet:l};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return me({client:e,recoveryInput:b,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:i})}),[e,l,o.status,t]),v=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:u})}),[e,l,o.status]),f=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var E;if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:h,recoveryMethod:b,recoveryKey:g}=$e(u),_,S;if(b==="google-drive"&&(_=yield re({provider:b,client:e,onError:(E=a.current)==null?void 0:E.onError}),n({status:"recovering"}),!_))return null;if(b==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:R}=yield Je({client:e,walletAddress:l.address});S=R}return ce({client:e,account:l,setWallet:i,recoverWalletCallbacks:a,recoveryMethod:b,setRecoveryFlowState:n,recoveryKey:g,password:h,recoveryToken:_,recoverySecretOverride:S})}),[e,l]),w=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!l)throw i({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});i(u=>u.status==="connected"?{status:"reconnecting",account:l}:{status:"connecting",account:l});try{let u=yield e.embeddedWallet.getProvider(l);return i({status:"connected",provider:u,account:l}),u}catch(u){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, u)?(i({status:"needs-recovery",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):u instanceof Error?(i({status:"error",error:u.message,account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:u.message})):(i({status:"error",error:"Error loading embedded wallet",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,l]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return i({status:"disconnected",account:null});d==="loaded"&&w().catch(()=>{})},[d,t,l]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:p,recover:f,setPassword:v,setRecovery:m,getProvider:w}};var tt=({client:e,user:t,isReady:r})=>{let o=le(d=>d==null?void 0:d.customAuth),[i,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:s,isLoading:a}=o;if(!(!r||a))try{let c=yield s();if(!c&&t){yield e.auth.logout(),n({status:"done"});return}if(!c){n({status:"done"});return}if(t){n({status:"done"});return}let l=Fe();if(!(yield e.auth.customProvider.syncWithToken(c,{embedded:l==null?void 0:l.embedded}))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(c){if(console.log("Error syncing with custom auth provider",c),n({status:"error",error:c}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,r,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:i,customAuthStateIsSettled:i.status!=="loading"&&i.status!=="initial"}};var rt=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:i,setOAuthState:n,recoveryFlowState:d,oAuthStateRef:s})=>{let a=X.useURL(),c=_react.useCallback.call(void 0, l=>{var m,v;let p=x(l);n({status:"error",error:p}),(v=(m=i.current).onError)==null||v.call(m,p)},[n]);return _react.useEffect.call(void 0, ()=>{function l(){return y(this,null,function*(){var f,w;if(!a||o.status!=="loading"||d.status!=="initial")return;let{queryParams:p}=X.parse(a),{privy_oauth_state:m,privy_oauth_code:v}=p;if(!v||!m){n({status:"done"});return}try{let u,h;if(t)u=yield e.auth.oauth.linkWithCode(v,m);else{let b=yield e.auth.oauth.loginWithCode(v,m,void 0,void 0,s.current.disableSignup?"no-signup":"login-or-sign-up");u=b.user,h=!!b.is_new_user}return(w=(f=i.current).onSuccess)==null||w.call(f,u,h),s.current={},n({status:"done"}),yield X.openURL(a.split("?")[0])}catch(u){s.current={},c(u)}})}_reactnative.Platform.OS==="android"&&r&&l()},[a,r])};var ot=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:i,recoveryFlowState:n,oAuthState:d,setRecoveryFlowState:s,setWallet:a,appStateVisible:c,webViewLoaded:l})=>{let p=Q.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),v=_react.useCallback.call(void 0, f=>{var u,h,b,g;let w=x(f);n.status==="creating-wallet"?(h=(u=r.current).onError)==null||h.call(u,x(w)):(g=(b=o.current).onError)==null||g.call(b,x(w)),s({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function f(){return y(this,null,function*(){var b;if(!p&&n.status!=="initial"&&c&&v(new Error("Recovery OAuth session failed")),!p||n.status==="initial"||d.status!=="initial"||!c||!l)return;let{queryParams:w}=Q.parse(p),{privy_oauth_state:u,privy_oauth_code:h}=w;if(!(!h||!u)){yield Q.openURL(p.split("?")[0]);try{let g=yield pe({oAuthCode:h,oAuthState:u,client:e});if(n.status==="creating-wallet"){let _=(b=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))!=null?b:void 0;yield ue({client:e,setWallet:a,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g,solanaAccount:_})}else if(n.status==="upgrading-recovery"){if(!m)throw new Error("Embedded wallet not found");yield me({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:m,recoveryAccessToken:g},setWalletRecoveryCallbacks:i,setRecoveryFlowState:s,setWallet:a})}else yield ce({client:e,account:m,setWallet:a,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g})}catch(g){v(g)}}})}_reactnative.Platform.OS==="android"&&f()},[p,n.status,c,l])};var nt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.initialize()}catch(n){o(n instanceof Error?n:new Error(String(n)))}try{yield e.user.get()}catch(n){}finally{r(!0)}}))()},[e,t,o,r])};var it=()=>{let{user:e,isReady:t,logout:r,getAccessToken:o,error:i}=_react.useContext.call(void 0, q);return{user:e,isReady:t,error:i,logout:r,getAccessToken:o}};var at=()=>{let{client:e}=_react.useContext.call(void 0, q);return e};function st(){let e=at(),{isReady:t}=it();return _react.useMemo.call(void 0, ()=>{var o;if(!t)return null;let r=e.app.getConfig();return r?{termsAndConditionsUrl:r.terms_and_conditions_url,privacyPolicyUrl:r.privacy_policy_url,requireUsersAcceptTerms:(o=r.require_users_accept_terms)!=null?o:!1}:null},[e.app,t])}var k=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},lt= exports.w =class extends k{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var Ee={success:e=>({value:e}),error:e=>({error:e})};var dt=e=>{let t=Array.from(new Set(e));return t.length===0?Ee.error(new k("no_login_methods_available","No login methods available")):Ee.success(t)},Ce=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},Dn= exports.x =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},Vn= exports.y ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};var _vanilla = require('zustand/vanilla');var Pe=_vanilla.createStore.call(void 0, )(e=>({elementsConfig:null,updateUIMounted:t=>e({elementsConfig:t})})),ct= exports.z =()=>{let{elementsConfig:e}=Pe.getState();if(!(e!==null))throw new k("privy_elements_not_ready","Privy Elements is not mounted")},Jn= exports.A =()=>{let{elementsConfig:e}=Pe.getState();if(e===null)throw new k("privy_elements_not_ready","Privy Elements is not mounted");return e},Bn= exports.B =e=>{_react.useEffect.call(void 0, ()=>{let{updateUIMounted:t}=Pe.getState();return t(e),()=>{t(null)}},[e])};function ut(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function Cr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function pt(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return Cr(e,()=>{clearTimeout(o)})}var kr=1e3*60*5,$=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(r,o,i,n)=>ut(d=>{var p,m,v;let s=o.app.getConfig();if(!s)return d.reject(new k("privy_not_ready","Privy is not ready"));if(i!==null)return d.reject(new k("user_already_logged_in","User is already logged in"));if(ct(),t().loginPromiseResolvers!==null)return d.reject(new k("existing_login_flow_in_progress","A login flow is already in progress"));let a=dt(r.loginMethods);if(a.error)return d.reject(a.error);let c={loginMethods:a.value,appearance:{logo:(v=(m=(p=r.appearance)==null?void 0:p.logo)!=null?m:s.logo_url)!=null?v:void 0}},l=pt(d,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new k("login_flow_timeout","The login flow timed out")),kr);n(),e({loginPromiseResolvers:l,privyElementsConfig:c,activeLoginMethod:Ce(c.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new k("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:i,closeLoginFlow:n}=t();if(!o){n();return}let d=Ce(o.loginMethods)===null;r===null||!d?n():i(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),oi= exports.E =()=>$(e=>e.privyElementsConfig),ni= exports.F =()=>$(e=>e.openLoginFlow),ii= exports.G =()=>{let e=$(r=>r.closeLoginFlow),t=st();return _react.useCallback.call(void 0, r=>{t!=null&&t.requireUsersAcceptTerms&&!(r!=null&&r.termsReviewed)||e()},[e,t])},ai= exports.H =()=>$(e=>e.goBack),si= exports.I =()=>$(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),Rr=e=>{let{loginPromiseResolvers:t}=$.getState();t==null||t.resolve(e)},mt=()=>Rr;var q=_react.createContext.call(void 0, {}),z;function Pi(e){return z?z.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 Ai=e=>{let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let M=_reactnative.AppState.addEventListener("change",Wt=>{r(Wt==="active")});return()=>{M.remove()}},[]),_react.useEffect.call(void 0, ()=>Te(e.config),[e.config]);let[o,i]=_react.useState.call(void 0, !1),[n,d]=_react.useState.call(void 0, null),[s,a]=_react.useState.call(void 0, "loading"),[c,l]=_react.useState.call(void 0, !1),[p,m]=_react.useState.call(void 0, null),[v,f]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,u]=_react.useState.call(void 0, {status:"disconnected"}),[h,b]=_react.useState.call(void 0, {status:"initial"}),[g,_]=_react.useState.call(void 0, {status:"initial"}),S=_react.useRef.call(void 0, {}),[E,R]=_react.useState.call(void 0, {status:"initial"}),[J,I]=_react.useState.call(void 0, {status:"initial"}),[N,D]=_react.useState.call(void 0, {status:"initial"}),[ve,F]=_react.useState.call(void 0, {status:"initial"}),[L,St]=_react.useState.call(void 0, {status:"initial"}),Oe=_react.useRef.call(void 0, {}),fe=_react.useRef.call(void 0, {}),we=_react.useRef.call(void 0, {}),he=_react.useRef.call(void 0, {}),We=_react.useRef.call(void 0, {}),xe=_react.useRef.call(void 0, {}),Et=mt(),ee=_react.useCallback.call(void 0, M=>{if(M){Et(M),Be(m)(M);return}m(null),b({status:"initial"}),_({status:"initial"}),f({status:"disconnected",account:null})},[]),A=_react.useMemo.call(void 0, ()=>{let M=e.storage||gt;return e.client?(z=e.client,z.setCallbacks({setUser:ee,setIsReady:l}),z):(z=new (0, _jssdkcore2.default)({storage:ht(M),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:wt(),baseUrl:e.baseUrl,sdkVersion:`expo:${Me.version}`,callbacks:{setUser:ee,setIsReady:l},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),z)},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ee]),Ct=_react.useCallback.call(void 0, ()=>(ee(null),A.auth.logout()),[ee,A]),Pt=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){try{return yield A.getAccessToken()}catch(M){return console.debug(M),null}}),[A]),At=_react.useCallback.call(void 0, ()=>A.getIdentityToken(),[A]);nt({client:A,isUserInitialized:o,setIsUserInitialized:i,setError:d});let kt=Ze({client:A,user:p,appId:e.appId,webViewState:s,createWalletCallbacks:fe,recoverWalletCallbacks:we,setWalletRecoveryCallbacks:he,setRecoveryFlowState:R,wallet:v,setWallet:f}),Rt=qe({client:A,user:p,webViewState:s,createSolanaWalletCallbacks:We,recoverSolanaWalletCallbacks:xe,setSolanaRecoveryFlowState:I,solanaWallet:w,setSolanaWallet:u});rt({client:A,isUserInitialized:o,user:p,oAuthState:g,setOAuthState:_,oAuthCallbacks:Oe,recoveryFlowState:E,oAuthStateRef:S}),ot({client:A,user:p,webViewLoaded:s==="loaded",createWalletCallbacks:fe,recoverWalletCallbacks:we,setWalletRecoveryCallbacks:he,recoveryFlowState:E,oAuthState:g,setRecoveryFlowState:R,setWallet:f,appStateVisible:t});let{customAuthStateIsSettled:Ot}=tt({client:A,user:p,isReady:o});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(q.Provider,{value:{client:A,user:p,isReady:s!=="loading"&&o&&ft(g)&&Ot,error:n,logout:Ct,getAccessToken:Pt,getIdentityToken:At,wallet:C(C({},v),kt),solanaWallet:C(C({},w),Rt),oAuthState:g,oAuthCallbacks:Oe,recoveryFlowState:E,setRecoveryFlowState:R,solanaRecoveryFlowState:J,setSolanaRecoveryFlowState:I,createWalletCallbacks:fe,recoverWalletCallbacks:we,setWalletRecoveryCallbacks:he,createSolanaWalletCallbacks:We,recoverSolanaWalletCallbacks:xe,setOAuthState:_,siweState:N,setSiweState:D,otpState:h,setOtpState:b,passkeyState:ve,setPasskeyState:F,farcasterState:L,setFarcasterState:St,oAuthStateRef:S}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(je,{logLevel:e.logLevel,client:A,isClientReady:c,setWebViewState:a})))};var ft=e=>e.status!=="loading",ke=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:i,client:n,oAuthStateRef:d}=_react.useContext.call(void 0, q),s=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{i.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let a=_react.useCallback.call(void 0, l=>{var m;let p=x(l);return o({status:"error",error:p}),(m=e==null?void 0:e.onError)==null||m.call(e,p),p},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(w){return y(this,arguments,function*({provider:p,redirectUri:m,isLegacyAppleIosBehaviorEnabled:v=!1,disableSignup:f}){var u,h,b;o({status:"loading"}),d.current={disableSignup:f};try{if(t&&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(!t&&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{url:g}=yield n.auth.oauth.generateURL(p,Z.createURL(m||"/")),_,S;if(_reactnative.Platform.OS==="ios"&&p==="apple"&&!v){let ve=(u=new URL(g).searchParams.get("state"))!=null?u:"",F=yield ie.signInAsync({state:ve,requestedScopes:[ie.AppleAuthenticationScope.EMAIL,ie.AppleAuthenticationScope.FULL_NAME]}).catch(L=>{throw L instanceof Error&&"code"in L&&L.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):L});if(!F.authorizationCode||!F.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let L=yield n.auth.oauth.loginWithCode(F.authorizationCode,F.state,p,"raw",f?"no-signup":"login-or-sign-up");_=L.user,S=L.is_new_user}else _=yield n.auth.oauth.linkWithCode(F.authorizationCode,F.state,p,"raw");return(h=e==null?void 0:e.onSuccess)==null||h.call(e,_,S),o({status:"done"}),_!=null?_:void 0}let E=_reactnative.Platform.OS==="android"?g.replace("x.com","twitter.com"):g,R=yield ae.openAuthSessionAsync(E);if(_reactnative.Platform.OS==="android")return;if(R.type!=="success")throw[ae.WebBrowserResultType.CANCEL,ae.WebBrowserResultType.DISMISS].includes(R.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:s?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:J}=Z.parse(R.url),{privy_oauth_state:I,privy_oauth_code:N}=J;if(!N||!I)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let D=yield n.auth.oauth.loginWithCode(N,I,p,void 0,f?"no-signup":"login-or-sign-up");_=D.user,S=D.is_new_user}else _=yield n.auth.oauth.linkWithCode(N,I,p);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,_,S),yield Z.openURL(R.url.split("?")[0]),o({status:"done"}),_!=null?_:void 0}catch(g){a(g)}})},[t,n,o,a]),state:r}};function Mi(e){let{state:t,start:r}=ke(W(C({},e),{action:"login"}));return{state:t,login:r}}function Ti(e){let{state:t,start:r}=ke(W(C({},e),{action:"link"}));return{state:t,link:r}}function Fi(e){return ke(e)}var wt=()=>{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 ht(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:()=>y(this,null,function*(){return[]})}}var gt={get(e){return U.getItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return U.setItemAsync(e,t,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return U.deleteItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};var jr=e=>y(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 W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Dr=e=>y(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 W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function Qi(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 $i(e){var t,r,o,i;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:(i=e.allow_credentials)==null?void 0:i.map(({id:n,type:d,transports:s})=>({id:n,type:d,transports:s})),userVerification:e.user_verification}}function Zi(e){var t,r,o,i,n,d,s,a;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:(i=e.extensions)==null?void 0:i.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(n=e.authenticator_selection)==null?void 0:n.authenticator_attachment,residentKey:(d=e.authenticator_selection)==null?void 0:d.resident_key,userVerification:(s=e.authenticator_selection)==null?void 0:s.user_verification,requireResidentKey:(a=e.authenticator_selection)==null?void 0:a.require_resident_key}}}exports.a = C; exports.b = W; exports.c = Vr; exports.d = y; exports.e = Me; exports.f = Fe; exports.g = _e; exports.h = Je; exports.i = x; exports.j = Co; exports.k = Oo; exports.l = Do; exports.m = Mi; exports.n = Ti; exports.o = Fi; exports.p = wt; exports.q = ht; exports.r = gt; exports.s = it; exports.t = at; exports.u = st; exports.v = k; exports.w = lt; exports.x = Dn; exports.y = Vn; exports.z = ct; exports.A = Jn; exports.B = Bn; exports.C = ut; exports.D = pt; exports.E = oi; exports.F = ni; exports.G = ii; exports.H = ai; exports.I = si; exports.J = q; exports.K = Pi; exports.L = Ai; exports.M = jr; exports.N = Dr; exports.O = Qi; exports.P = $i; exports.Q = Zi;
@@ -0,0 +1 @@
1
+ import{J as p,N as me,O as pe,P as he,a as _,b as le,d as m,f as k,g as de,h as ue,i as w,j as P,k as F,l as I,s as A,t as L}from"./chunk-COOXVDQO.js";import{useCallback as j,useContext as Be}from"react";import{PrivyClientError as Ge}from"@privy-io/js-sdk-core";var mt=e=>{let{user:r,client:s,setSiweState:a,siweState:o}=Be(p),n=j(c=>{var d;let h=w(c);return a({status:"error",error:h}),(d=e==null?void 0:e.onError)==null||d.call(e,h),h},[e==null?void 0:e.onError]),t=j(f=>m(void 0,[f],function*({wallet:c,from:{domain:h,uri:d}}){var l;try{a({status:"generating-message"});let u=yield s.auth.siwe.init(c,h,d);return a({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,u.message),u.message}catch(u){throw n(u)}}),[s,n,e==null?void 0:e.onGenerateMessage]),i=j(d=>m(void 0,[d],function*({signature:c,messageOverride:h}){var f;try{if(!r)throw new Ge({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let l=yield s.auth.siwe.linkWithSiwe(c,void 0,h);return a({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,l),l}catch(l){throw n(l)}}),[r,s,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:o}};import{useCallback as q,useContext as Ne}from"react";import{PrivyClientError as Ve}from"@privy-io/js-sdk-core";var kt=e=>{let{user:r,client:s,setSiweState:a,siweState:o}=Ne(p),n=q(c=>{var d;let h=w(c);return a({status:"error",error:h}),(d=e==null?void 0:e.onError)==null||d.call(e,h),h},[e==null?void 0:e.onError]),t=q(f=>m(void 0,[f],function*({wallet:c,from:{domain:h,uri:d}}){var l;try{a({status:"generating-message"});let u=yield s.auth.siwe.init(c,h,d);return a({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,u.message),u.message}catch(u){throw n(u)}}),[s,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:q(f=>m(void 0,[f],function*({signature:c,messageOverride:h,disableSignup:d}){var l;try{if(r)throw new Ve({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"});a({status:"submitting-signature"});let u=k(),g=yield s.auth.siwe.loginWithSiwe(c,void 0,h,d?"no-signup":"login-or-sign-up",{embedded:u==null?void 0:u.embedded});return a({status:"done"}),(l=e==null?void 0:e.onSuccess)==null||l.call(e,g.user,g.is_new_user),g.user}catch(u){throw n(u)}}),[r,s,n,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:o}};import{useCallback as fe,useContext as Ke}from"react";import{PrivyClientError as je}from"@privy-io/js-sdk-core";var Pt=e=>{let{user:r,client:s}=Ke(p),a=fe(n=>{var i;let t=w(n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:fe(t=>m(void 0,[t],function*({address:n}){var i;try{if(!r)throw new je({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let c=yield s.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,c),c}catch(c){throw a(c)}}),[r,s,a,e==null?void 0:e.onSuccess])}};import{useCallback as $,useContext as qe,useState as $e}from"react";import{PrivyClientError as ge}from"@privy-io/js-sdk-core";var Rt=e=>{let[r,s]=$e(""),{user:a,client:o,otpState:n,setOtpState:t}=qe(p),i=$(d=>{var l;let f=w(d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=$(f=>m(void 0,[f],function*({email:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=$(l=>m(void 0,[l],function*({code:d,email:f}){var u;try{if(!a)throw new ge({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let g=f||r;if(!g)throw new ge({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let y=yield o.auth.email.linkWithCode(g,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,y),y}catch(g){throw i(g)}}),[a,r,t,o,e,i]);return{sendCode:c,linkWithCode:h,state:n}};import{useCallback as z,useContext as ze,useState as Je}from"react";import{PrivyClientError as ye}from"@privy-io/js-sdk-core";var Nt=e=>{let[r,s]=Je(""),{user:a,client:o,otpState:n,setOtpState:t}=ze(p),i=z(d=>{var l;let f=w(d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=z(f=>m(void 0,[f],function*({email:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=z(u=>m(void 0,[u],function*({code:d,email:f,disableSignup:l}){var g;try{if(a)throw new ye({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 y=f||r;if(!y)throw new ye({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let b=k(),v=yield o.auth.email.loginWithCode(y,d,l?"no-signup":"login-or-sign-up",{embedded:b==null?void 0:b.embedded});return t({status:"done"}),(g=e==null?void 0:e.onLoginSuccess)==null||g.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(y){throw i(y)}}),[a,r,t,o,e,i]);return{sendCode:c,loginWithCode:h,state:n}};import{useCallback as J,useContext as Qe,useState as Xe}from"react";import{PrivyClientError as we}from"@privy-io/js-sdk-core";var Jt=e=>{let[r,s]=Xe(""),{user:a,client:o,otpState:n,setOtpState:t}=Qe(p),i=J(d=>{var l;let f=w(d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=J(f=>m(void 0,[f],function*({phone:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=J(l=>m(void 0,[l],function*({code:d,phone:f}){var u;try{if(!a)throw new we({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(!(f||r))throw new we({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let y=yield o.auth.phone.linkWithCode(f||r,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,y),y}catch(g){throw i(g)}}),[a,r,t,o,e,i]);return{sendCode:c,linkWithCode:h,state:n}};import{useCallback as Q,useContext as Ye,useState as Ze}from"react";import{PrivyClientError as ve}from"@privy-io/js-sdk-core";var oo=e=>{let[r,s]=Ze(""),{user:a,client:o,otpState:n,setOtpState:t}=Ye(p),i=Q(d=>{var l;let f=w(d);return t({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,t]),c=Q(f=>m(void 0,[f],function*({phone:d}){var l;s(d);try{t({status:"sending-code"});let u=yield o.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),u}catch(u){throw i(u)}}),[o,i,e,t]),h=Q(u=>m(void 0,[u],function*({code:d,phone:f,disableSignup:l}){var g;try{if(a)throw new ve({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(!(f||r))throw new ve({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let b=k(),v=yield o.auth.phone.loginWithCode(f||r,d,l?"no-signup":"login-or-sign-up",{embedded:b==null?void 0:b.embedded});return t({status:"done"}),(g=e==null?void 0:e.onLoginSuccess)==null||g.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(y){throw i(y)}}),[a,r,t,o,e,i]);return{sendCode:c,loginWithCode:h,state:n}};import*as T from"expo-linking";import{useCallback as X,useContext as er,useRef as rr}from"react";import{PrivyClientError as M}from"@privy-io/js-sdk-core";var uo=e=>{let{appState:r,getCurrentAppState:s}=F(),{client:a,user:o,farcasterState:n,setFarcasterState:t}=er(p),i=rr(!1),c=X(f=>{var u;let l=w(f);return t({status:"error",error:l}),(u=e==null?void 0:e.onError)==null||u.call(e,l),l},[e==null?void 0:e.onError,t]),h=X(()=>{i.current=!0},[]);return{linkWithFarcaster:X((g,...y)=>m(void 0,[g,...y],function*({relyingParty:f,redirectUrl:l},u={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(i.current=!1,!o)throw new M({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:v,channel_token:W}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:T.createURL(l!=null?l:"/")});if(!v)throw new M({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!W)throw new M({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield T.openURL(v),t({status:"polling-status"});let E=0;for(;E<u.pollAttempts;){if(i.current)throw new M({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&s()!=="active"){yield P(u.pollIntervalMs);continue}let x=yield a.auth.farcaster.getFarcasterStatus({channel_token:W});if(x.state==="completed"){t({status:"submitting-token"});let U=yield a.auth.farcaster.link(_({channel_token:W},x));return t({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,U),U}E++,yield P(u.pollIntervalMs)}throw new M({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(v){throw c(v)}}),[a,e==null?void 0:e.onSuccess,c,t,o]),state:n,cancel:h}};import{useCallback as ke,useContext as tr}from"react";var yo=e=>{let{client:r}=tr(p),s=ke(o=>{var t;let n=w(o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:ke(n=>m(void 0,[n],function*({fid:o}){var t;try{let i=yield r.auth.farcaster.unlink({fid:o});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw s(i)}}),[r,e==null?void 0:e.onSuccess,s])}};import*as H from"expo-linking";import{useCallback as ee,useContext as or,useRef as nr}from"react";import{PrivyClientError as O}from"@privy-io/js-sdk-core";var Eo=e=>{let{appState:r,getCurrentAppState:s}=F(),{client:a,user:o,farcasterState:n,setFarcasterState:t}=or(p),i=nr(!1),c=ee(f=>{var u;let l=w(f);return t({status:"error",error:l}),(u=e==null?void 0:e.onError)==null||u.call(e,l),l},[e==null?void 0:e.onError,t]),h=ee(()=>{i.current=!0},[]);return{loginWithFarcaster:ee((y,...b)=>m(void 0,[y,...b],function*({relyingParty:f,redirectUrl:l,disableSignup:u},g={pollAttempts:10,pollIntervalMs:1e3}){var v;try{if(i.current=!1,o)throw new O({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"});t({status:"generating-uri"});let{connect_uri:W,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:H.createURL(l!=null?l:"/")});if(!W)throw new O({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new O({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield H.openURL(W),t({status:"polling-status"});let x=0;for(;x<g.pollAttempts;){if(i.current)throw new O({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&s()!=="active"){yield P(g.pollIntervalMs);continue}let U=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(U.state==="completed"){t({status:"submitting-token"});let V=k(),K=yield a.auth.farcaster.authenticate(_({channel_token:E,mode:u?"no-signup":"login-or-sign-up"},U),{embedded:V==null?void 0:V.embedded});return t({status:"done"}),(v=e==null?void 0:e.onSuccess)==null||v.call(e,K.user,K.is_new_user),K.user}x++,yield P(g.pollIntervalMs)}throw new O({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(W){throw c(W)}}),[a,c,e==null?void 0:e.onSuccess,t,o,r]),state:n,cancel:h}};import{useCallback as be,useContext as ir}from"react";import{create as ar}from"zustand";import{PrivyClientError as sr}from"@privy-io/js-sdk-core";var re=ar(()=>({status:"initial"})),C=e=>re.setState(e,!0),cr=re.getState,Ro=()=>{let{client:e,user:r}=ir(p),s=re(),a=be(()=>m(void 0,null,function*(){try{C({status:"fetching-nonce"});let n=yield e.auth.farcasterV2.initializeAuth();return C({status:"awaiting-signature"}),n}catch(n){let t=w(n);throw C({status:"initial",error:t}),t}}),[e]),o=be(n=>m(void 0,null,function*(){let t=cr().status;try{if(r){let h=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 C({status:t,error:h}),h}C({status:"submitting-signature"});let i=k(),c=yield e.auth.farcasterV2.authenticate(n,{embedded:i==null?void 0:i.embedded});return C({status:"done"}),setTimeout(()=>C({status:"initial"}),1500),{user:c.user}}catch(i){let c=w(i);throw C({status:t,error:c}),c}}),[e,r]);return{init:a,login:o,state:s}};import{useCallback as Se,useContext as lr}from"react";var Bo=e=>{let{client:r}=lr(p),s=Se(o=>{var t;let n=w(o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:Se(t=>m(void 0,[t],function*({provider:o,subject:n}){var i;try{let c=yield r.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,c),c}catch(c){throw s(c)}}),[r,e==null?void 0:e.onSuccess,s])}};import{useContext as dr,useEffect as ur,useRef as mr}from"react";var jo=e=>{let{client:r}=dr(p),s=mr(e.onOAuthTokenGrant);s.current=e.onOAuthTokenGrant,ur(()=>{let{unsubscribe:a}=r.addOAuthTokensListener(o=>{s.current(o)});return a},[r])};import{useContext as pr,useMemo as hr}from"react";import{delegatedActions as We}from"@privy-io/js-sdk-core";var Qo=()=>{let{client:e}=pr(p);return hr(()=>({delegateWallet:We.delegateWallet(e),revokeWallets:We.revokeWallets(e)}),[e])};import*as Pe from"expo-linking";import{useCallback as wr,useContext as vr,useMemo as kr}from"react";import{crossApp as br,PrivyClientError as Sr}from"@privy-io/js-sdk-core";import*as D from"expo-linking";import*as Ee from"expo-web-browser";import{Platform as Ce}from"react-native";import{PrivyClientError as _e}from"@privy-io/js-sdk-core";var S=e=>m(void 0,null,function*(){let r;Ce.OS==="android"&&(r=fr());let s=yield Ee.openAuthSessionAsync(e),a;if(Ce.OS==="android")a=yield r;else{if(s.type!=="success")throw new _e({code:"oauth_session_failed",error:"OAuth session failed"});a=s.url}return gr(a)});function fr(){let e;return new Promise((r,s)=>{e=D.addEventListener("url",({url:a})=>{a&&r(a)}),setTimeout(()=>{s(new _e({code:"oauth_session_timeout",error:"OAuth session timed out"}))},yr)}).finally(()=>{e==null||e.remove()})}function gr(e){let{queryParams:r}=D.parse(e);return r}var yr=2*60*1e3;var sn=()=>{let{client:e,user:r}=vr(p),s=kr(()=>br.loginWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{loginWithCrossApp:wr(t=>m(void 0,[t],function*({appId:o,redirectUri:n}){if(r)throw new Sr({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:i}=yield s({providerAppId:o,redirectUrl:Pe.createURL(n||"/")});return{user:i}}),[r,s])}};import*as xe from"expo-linking";import{useCallback as Wr,useContext as Cr,useMemo as Er}from"react";import{crossApp as _r,PrivyClientError as Pr}from"@privy-io/js-sdk-core";var hn=()=>{let{client:e,user:r}=Cr(p),s=Er(()=>_r.linkWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{linkWithCrossApp:Wr(t=>m(void 0,[t],function*({appId:o,redirectUri:n}){if(!r)throw new Pr({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 s({providerAppId:o,redirectUrl:xe.createURL(n||"/")})}}),[r,s])}};import*as Ae from"expo-linking";import{useContext as xr,useMemo as Ue}from"react";import{crossApp as Ur}from"@privy-io/js-sdk-core";var bn=()=>{let{client:e,user:r}=xr(p),s=Ue(()=>Ur.wallet.signMessage({client:e,openAuthSession:S}),[e]);return Ue(()=>({signMessage:({address:a,message:o,redirectUri:n="/"})=>s({user:r,address:a,message:o,redirectUrl:Ae.createURL(n)})}),[r,s])};import*as Me from"expo-linking";import{useContext as Ar,useMemo as Le}from"react";import{crossApp as Lr}from"@privy-io/js-sdk-core";var Pn=()=>{let{client:e,user:r}=Ar(p),s=Le(()=>Lr.wallet.signTypedData({client:e,openAuthSession:S}),[e]);return Le(()=>({signTypedData:({address:a,typedData:o,redirectUri:n="/"})=>s({user:r,address:a,typedData:o,redirectUrl:Me.createURL(n)})}),[r,s])};import*as Re from"expo-linking";import{useContext as Mr,useMemo as Oe}from"react";import{crossApp as Or}from"@privy-io/js-sdk-core";var On=()=>{let{client:e,user:r}=Mr(p),s=Oe(()=>Or.wallet.sendTransaction({client:e,openAuthSession:S}),[e]);return Oe(()=>({sendTransaction:({address:a,transaction:o,redirectUri:n="/"})=>s({user:r,address:a,transaction:o,redirectUrl:Re.createURL(n)})}),[r,s])};import{useCallback as Rr,useContext as Fr}from"react";import{getUserEmbeddedEthereumWallet as Ir,getUserEmbeddedSolanaWallet as Tr,PrivyClientError as R,throwIfInvalidRecoveryUpgradePath as Hr}from"@privy-io/js-sdk-core";var Bn=()=>{let{user:e,client:r}=Fr(p);return{setRecovery:Rr(a=>m(void 0,null,function*(){var i;let o=r.app.appId;if(!e)throw new R({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=Ir(e))!=null?i:Tr(e);if(!n)throw new R({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(c){throw new R({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}Hr({currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Dr({appId:o,client:r,user:e,primaryAccount:n,recoveryParams:a});try{let{user:c}=yield r.embeddedWallet.setRecovery(t);return{user:c}}catch(c){throw new R({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[r,e])}},Dr=n=>m(void 0,[n],function*({appId:e,client:r,user:s,primaryAccount:a,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:a};case"user-passcode":return le(_({},o),{wallet:a});case"google-drive":{let t=yield I(r);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:i}=yield de({appId:e,client:r,user:s});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:i,wallet:a}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:a,recoveryKey:o.recoveryKey};default:throw new R({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});import{useCallback as Br,useContext as Gr}from"react";import{getUserEmbeddedEthereumWallet as Nr,getUserEmbeddedSolanaWallet as Vr,PrivyClientError as B}from"@privy-io/js-sdk-core";var zn=()=>{let{user:e,client:r}=Gr(p);return{recover:Br(a=>m(void 0,null,function*(){var h;if(!e)throw new B({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(h=Nr(e))!=null?h:Vr(e);if(!o)throw new B({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,t,i,c;switch(a.recoveryMethod){case"user-passcode":t=a.password;break;case"google-drive":i=yield I(r);break;case"icloud":let{recoverySecret:d}=yield ue({client:r,walletAddress:o.address,chainType:o.chain_type});c=d;break;case"recovery-encryption-key":n=a.recoveryKey;break;case"privy":break;default:throw new B({code:"unsupported_recovery_method",error:`Unsupported recovery options ${a}`})}try{o.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(o,t,i,c,n):o.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",t,i,c))}catch(d){throw new B({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[r,e])}};import{useContext as Kr,useEffect as te}from"react";var oe=(e={})=>{let{wallet:r,createWalletCallbacks:s,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:o}=Kr(p),{onCreateWalletSuccess:n,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:h,onSetWalletRecoveryError:d}=e;return te(()=>{s.current={onSuccess:n,onError:t}},[n,t]),te(()=>{a.current={onSuccess:c,onError:i}},[c,i]),te(()=>{o.current={onSuccess:h,onError:d}},[c,i]),r};import{useEffect as jr}from"react";var ti=({onStateChange:e})=>{let r=oe();return jr(()=>{e(r)},[r])};import{useContext as qr}from"react";var ai=()=>{let{getIdentityToken:e}=qr(p);return{getIdentityToken:e}};import{useCallback as Fe,useContext as $r}from"react";import{PrivyClientError as zr}from"@privy-io/js-sdk-core";var pi=e=>{let{user:r,client:s}=$r(p),a=Fe(n=>{var i;let t=w(n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:Fe(()=>m(void 0,null,function*(){var n;try{if(r)throw new zr({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=k(),i=yield s.auth.guest.create({embedded:t==null?void 0:t.embedded});return(n=e==null?void 0:e.onSuccess)==null||n.call(e,i.user,i.is_new_user),i.user}catch(t){throw a(t)}}),[s,a,r,e==null?void 0:e.onSuccess])}};import{useContext as Jr,useEffect as Qr}from"react";function wi({onMfaRequired:e}){let{client:r,user:s}=Jr(p);Qr(()=>{function a(){return m(this,null,function*(){var o;yield e((o=s==null?void 0:s.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return r.mfaPromises.on("mfaRequired",a),()=>{r.mfaPromises.off("mfaRequired",a)}},[r,s,e])}import{useCallback as G,useContext as Xr}from"react";import{PrivyClientError as N}from"@privy-io/js-sdk-core";function _i(){let{client:e}=Xr(p),r=G(n=>m(this,null,function*(){var t,i;switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||((i=(t=k())==null?void 0:t.mfa)==null?void 0:i.relyingParty)});return he(c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e]),s=G(n=>m(this,null,function*(){var t,i,c,h,d,f,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new N({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||((i=(t=k())==null?void 0:t.mfa)==null?void 0:i.relyingParty)||""}),yield new Promise((b,v)=>{e.mfaPromises.submitPromise.current={resolve:b,reject:v}});break;case"passkey":if(typeof n.mfaCode=="string")throw new N({code:"invalid_passkey_response",error:"Invalid authenticator response"});let u=yield me(n.mfaCode),g=pe(u);(f=e.mfaPromises.rootPromise.current)==null||f.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||((d=(h=k())==null?void 0:h.mfa)==null?void 0:d.relyingParty)||"",mfaCode:g}),yield new Promise((b,v)=>{e.mfaPromises.submitPromise.current={resolve:b,reject:v}});break;default:let y=new N({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(y),y}}),[e]),a=G(()=>m(this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=G(()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new N({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:r,submit:s,prompt:a,cancel:o}}import{useCallback as ne,useContext as Yr}from"react";function Li(){let{client:e}=Yr(p),r=ne(o=>m(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]),s=ne(o=>m(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]),a=ne(o=>m(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:r,submitMfaEnrollment:s,unenrollMfa:a}}import{useCallback as Zr,useMemo as et}from"react";import{getAllUserEmbeddedEthereumWallets as ae,getEntropyDetailsFromUser as Ie,getUserEmbeddedSolanaWallet as rt,PrivyClientError as Te}from"@privy-io/js-sdk-core";var tt=()=>{let{user:e}=A(),r=L(),s=et(()=>{let o=Ie(e);if(!o)return[];let n=ae(e),{entropyId:t,entropyIdVerifier:i}=o;return n.map(c=>({address:c.address,walletIndex:c.wallet_index,chainType:c.chain_type,getProvider:()=>r.embeddedWallet.getEthereumProvider({wallet:c,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=Zr((...n)=>m(void 0,[...n],function*({createAdditional:o=!1}={}){let{user:t}=yield r.user.get(),i=ae(t);if(!o&&i.length>0)throw new Te({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=Ie(t);if(!c){let g=yield r.embeddedWallet.create({});return ie(g.user,0),{user:g.user}}let{entropyId:h,entropyIdVerifier:d}=c;if(d==="solana-address-verifier"){let g=rt(t),y=yield r.embeddedWallet.create({solanaAccount:g});return ie(y.user,0),{user:y.user}}let l=i.map(g=>g.wallet_index).reduce((g,y)=>Math.max(g,y),0)+1,u=yield r.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:l,entropyId:h,entropyIdVerifier:d});return ie(u.user,l),{user:u.user}}),[r]);return{wallets:s,create:a}};function ie(e,r){let s=ae(e).find(a=>a.wallet_index===r);if(!e||!s)throw new Te({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}import{useContext as ot,useEffect as He}from"react";var nt=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:s,recoverSolanaWalletCallbacks:a}=ot(p),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return He(()=>{s.current={onSuccess:o,onError:n}},[o,n]),He(()=>{a.current={onSuccess:i,onError:t}},[i,t]),r};import{useCallback as it,useMemo as at}from"react";import{getAllUserEmbeddedBitcoinWallets as se,getEntropyDetailsFromUser as De,PrivyClientError as ce}from"@privy-io/js-sdk-core";var st=()=>{let{user:e}=A(),r=L(),s=at(()=>{let o=De(e);if(!o)return[];let n=se(e),{entropyId:t,entropyIdVerifier:i}=o;return n.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>r.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=it(t=>m(void 0,[t],function*({chainType:o,createAdditional:n=!1}){let{user:i}=yield r.user.get(),c=De(i);if(!c)throw new ce({code:"embedded_wallet_creation_error",error:"No existing wallet for this user, create an Ethereum walet first to add a Bitcoin wallet"});let{entropyId:h,entropyIdVerifier:d}=c,f=se(i).filter(y=>y.chain_type===o);if(!n&&f.length>0)throw new ce({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let l=f.length===0?0:Math.max(...f.map(y=>y.wallet_index),0)+1,u=yield r.embeddedWallet.add({chainType:o,hdWalletIndex:l,entropyId:h,entropyIdVerifier:d}),g=se(u.user).find(y=>y.chain_type===o&&y.wallet_index===l);if(!u.user||!g)throw new ce({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:u.user,provider:yield r.embeddedWallet.getBitcoinProvider({wallet:g,entropyId:h,entropyIdVerifier:d})}}),[r]);return{wallets:s,create:a}};export{mt as a,kt as b,Pt as c,Rt as d,Nt as e,Jt as f,oo as g,uo as h,yo as i,Eo as j,Ro as k,Bo as l,jo as m,Qo as n,sn as o,hn as p,bn as q,Pn as r,On as s,Bn as t,zn as u,oe as v,ti as w,ai as x,pi as y,wi as z,_i as A,Li as B,tt as C,nt as D,st as E};
@@ -0,0 +1 @@
1
+ var xt=Object.defineProperty,Ut=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var se=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable;var Ue=(e,t,r)=>t in e?xt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C=(e,t)=>{for(var r in t||(t={}))Ie.call(t,r)&&Ue(e,r,t[r]);if(se)for(var r of se(t))Le.call(t,r)&&Ue(e,r,t[r]);return e},W=(e,t)=>Ut(e,It(t));var Vr=(e,t)=>{var r={};for(var o in e)Ie.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&se)for(var o of se(e))t.indexOf(o)<0&&Le.call(e,o)&&(r[o]=e[o]);return r};var y=(e,t,r)=>new Promise((o,i)=>{var n=a=>{try{s(r.next(a))}catch(c){i(c)}},d=a=>{try{s(r.throw(a))}catch(c){i(c)}},s=a=>a.done?o(a.value):Promise.resolve(a.value).then(n,d);s((r=r.apply(e,t)).next())});import*as ie from"expo-apple-authentication";import{applicationId as bt}from"expo-application";import*as Z from"expo-linking";import*as U from"expo-secure-store";import*as ae from"expo-web-browser";import{useCallback as _t,useContext as Mr,useEffect as Tr}from"react";import{Platform as Ae}from"react-native";import{PrivyClientError as j}from"@privy-io/js-sdk-core";import{digest as Or}from"expo-crypto";import ne,{useState as P,useMemo as Wr,createContext as xr,useCallback as ye,useRef as H,useEffect as yt}from"react";import{AppState as vt,View as Ur}from"react-native";import Ir,{PrivyClientError as Lr}from"@privy-io/js-sdk-core";var Me={name:"@privy-io/expo",version:"0.46.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],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"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","check-types":"npx tsc --noEmit",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"npx tsup --dts-only",lint:'npx eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.43.0","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^12.8.1","@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",jest:"^29.7.0","jest-expo":"~51.0.0","lucide-react-native":"^0.474.0",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.3","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-constants":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",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.21.36"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};import Mt from"react-fast-compare";import{create as Tt}from"zustand";var le=Tt(()=>{}),Te=e=>le.setState(t=>Mt(t,e)?t:e),Fe=le.getState;import Ft from"react";import{useCallback as jt,useEffect as Nt,useRef as Dt}from"react";import{AppState as Vt}from"react-native";import Kt from"react-native-webview";var je=({client:e,isClientReady:t,setWebViewState:r,logLevel:o})=>{let i=Dt(null);Nt(()=>Vt.addEventListener("change",s=>y(void 0,null,function*(){i.current&&s==="active"&&((yield e.embeddedWallet.ping(500))||(i.current.reload(),r("reloading")))})).remove,[]);let n=jt(d=>y(void 0,null,function*(){let{data:s}=d.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(s))}),[e]);return t?Ft.createElement(Kt,{style:{flex:1},ref:d=>{d&&(e.setMessagePoster(d),i.current=d)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:o==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:n}):null};import{useCallback as ge,useEffect as Ke,useMemo as be}from"react";import{errorIndicatesRecoveryIsNeeded as Ht,getAllUserEmbeddedSolanaWallets as zt,getEntropyDetailsFromUser as Jt,PrivyClientError as te}from"@privy-io/js-sdk-core";import{getAllUserEmbeddedSolanaWallets as de,getEntropyDetailsFromAccount as Ne,getUserEmbeddedEthereumWallet as qt,PrivyClientError as B}from"@privy-io/js-sdk-core";function De(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:i}){var d,s,a;t({status:"creating"});try{let{user:c}=yield e.user.get(),l=de(c),p=l[0],m=(d=qt(c))!=null?d:void 0;if(i!=null&&i.recoveryMethod&&i.recoveryMethod!=="privy")throw new B({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(i!=null&&i.createAdditional)&&p)throw new B({code:"embedded_wallet_creation_error",error:"Solana wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let v,f;if(p){let u=m!=null?m:p,{entropyId:h,entropyIdVerifier:b}=Ne(u),g=Math.max(...l.map(E=>E.wallet_index),0)+1,_=yield e.embeddedWallet.add({chainType:"solana",entropyId:h,entropyIdVerifier:b,hdWalletIndex:g}),S=de(_.user).find(E=>E.wallet_index===g);if(!S)throw new B({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});v=yield e.embeddedWallet.getSolanaProvider(S,h,b),f=_.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:m}),h=de(u.user).find(S=>S.wallet_index===0);if(!h)throw new B({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=m!=null?m:h,{entropyId:g,entropyIdVerifier:_}=Ne(b);v=yield e.embeddedWallet.getSolanaProvider(h,g,_),f=u.user}let w=de(f)[0];if(!w)throw new B({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(a=(s=r.current)==null?void 0:s.onSuccess)==null||a.call(s,v),t({status:"connected",publicKey:w.public_key}),o({status:"initial"}),v}catch(c){let l=c instanceof Error?c.message:"Error creating embedded wallet";throw t({status:"error",error:l}),o({status:"initial"}),new B({code:"embedded_wallet_creation_error",error:l})}})}import{PrivyClientError as V}from"@privy-io/js-sdk-core";function ce(l){return y(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:i,setRecoveryFlowState:n,password:d,recoveryKey:s,recoveryToken:a,recoverySecretOverride:c}){var p,m,v,f;if(!t)throw new V({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(i){case"user-passcode":if(!d)throw new V({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!a)throw new V({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!c)throw new V({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!s)throw new V({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let w=yield e.embeddedWallet.getProvider(t,d,a,c,s);return r({status:"connected",provider:w,account:t}),n({status:"initial"}),(m=(p=o.current)==null?void 0:p.onSuccess)==null||m.call(p,w),w}catch(w){r({status:"needs-recovery",account:t}),n({status:"initial"});let u=new V({code:"embedded_wallet_recovery_error",error:w instanceof Error?w.message:"Error recovering embedded wallet"});throw(f=(v=o.current)==null?void 0:v.onError)==null||f.call(v,u),u}})}function Ve(s){return y(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:i,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:d}){var a,c,l,p;i({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return i({status:"connected",publicKey:m._publicKey}),d({status:"initial"}),(c=(a=n.current)==null?void 0:a.onSuccess)==null||c.call(a,m),m}catch(m){i({status:"needs-recovery"}),d({status:"initial"});let v=new V({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(p=(l=n.current)==null?void 0:l.onError)==null||p.call(l,v),v}})}var qe=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:i,webViewState:n,createSolanaWalletCallbacks:d,recoverSolanaWalletCallbacks:s})=>{let a=be(()=>zt(t),[t]),c=be(()=>a.length===0?null:Jt(t),[t,a]),l=be(()=>{if(!c)return[];let{entropyId:f,entropyIdVerifier:w}=c;return a.map(u=>({address:u.address,publicKey:u.address,walletIndex:u.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(u,f,w)}))},[a,c,e]),p=ge(f=>y(void 0,null,function*(){return yield De({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:i,opts:f})}),[e,d]),m=ge(()=>y(void 0,null,function*(){if(!c)throw new te({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:f,entropyIdVerifier:w}=c;return Ve({client:e,account:a[0],entropyId:f,entropyIdVerifier:w,setSolanaWallet:o,recoverSolanaWalletCallbacks:s,setSolanaRecoveryFlowState:i})}),[e,c,a,s,i,o]),v=ge(()=>y(void 0,null,function*(){if(!c)throw o({status:"not-created"}),new te({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(f=>f.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:f,entropyIdVerifier:w}=c,u=yield e.embeddedWallet.getSolanaProvider(a[0],f,w);return o({status:"connected",publicKey:a[0].public_key}),u}catch(f){throw Ht(f)?(o({status:"needs-recovery"}),new te({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):f instanceof Error?(o({status:"error",error:f.message}),new te({code:"unknown_embedded_wallet_error",error:f.message})):(o({status:"error",error:"Error loading embedded wallet"}),new te({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[a,e,c,o]);return Ke(()=>{if(!t&&r.status!=="disconnected")return o({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t]),Ke(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&v()},[r.status]),{create:p,recover:m,getProvider:v,wallets:l}};import{useCallback as oe,useEffect as Xe,useMemo as or}from"react";import{getUserEmbeddedEthereumWallet as nr,getUserEmbeddedSolanaWallet as Qe,throwIfInvalidRecoveryUpgradePath as ir}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as ar,PrivyClientError as O}from"@privy-io/js-sdk-core";import{getUserEmbeddedEthereumWallet as Bt}from"@privy-io/js-sdk-core";import{PrivyClientError as G}from"@privy-io/js-sdk-core";function ue(p){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:i,password:n,recoveryKey:d,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:l}){var v,f;switch(o){case"user-passcode":if(!n)throw new G({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!d)throw new G({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!s)throw new G({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a||!c)throw new G({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let m=o==="icloud"?"icloud-native":o;try{let{user:w}=yield e.embeddedWallet.create({password:n,recoveryMethod:m,recoveryKey:d,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:l}),u=Bt(w);if(!u)throw new G({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let h=yield e.embeddedWallet.getProvider(u);return(f=(v=r.current)==null?void 0:v.onSuccess)==null||f.call(v,h),t({status:"connected",provider:h,account:u}),i({status:"initial"}),h}catch(w){let u=w instanceof Error?w.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),i({status:"initial"}),new G({code:"embedded_wallet_creation_error",error:u})}})}import{Platform as He}from"react-native";import{PrivyClientError as T}from"@privy-io/js-sdk-core";function ze(){return y(this,null,function*(){try{return yield import("@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 _e(o){return y(this,arguments,function*({user:e,appId:t,client:r}){var s;if(He.OS==="android")throw new T({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let i=yield ze(),n=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(n==null?void 0:n.container_identifier))throw new T({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:a,iCloudRecordName:c}=yield i.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:a,iCloudRecordName:c}}catch(a){if(a instanceof Error){let c=(s=a.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new T({code:"embedded_wallet_recovery_error",error:c})}throw new T({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Je(o){return y(this,arguments,function*({walletAddress:e,client:t,chainType:r}){var c;if(He.OS==="android")throw new T({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let i=yield ze(),d=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!d)throw new T({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let s=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),a=s==null?void 0:s.container_identifier;if(!a)throw new T({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:l}=yield i.readRecoverySecretFromICloud({containerId:a,recordName:d});return{recoverySecret:l}}catch(l){if(l instanceof Error){let p=(c=l.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new T({code:"embedded_wallet_recovery_error",error:p})}throw new T({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}import*as K from"expo-linking";import*as Ge from"expo-web-browser";import{Platform as Ye}from"react-native";import{PrivyClientError as Y}from"@privy-io/js-sdk-core";import Gt from"react-fast-compare";var Be=e=>t=>e(r=>Gt(r,t)?r:t);import{PrivyApiError as Yt,PrivyClientError as Xt}from"@privy-io/js-sdk-core";function x(e){return e instanceof Error||e instanceof Yt||e instanceof Xt?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var Co=e=>new Promise(t=>setTimeout(t,e));import{useEffect as Qt,useRef as $t}from"react";import{AppState as Se}from"react-native";function Oo(){let e=$t(Se.currentState);Qt(()=>Se.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return Se.currentState}return{appState:e,getCurrentAppState:t}}function re(i){return y(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let n;switch(e){case"google-drive":{let{url:c}=yield r.recovery.auth.generateURL(K.createURL(t||"/"));n=c;break}default:throw new Y({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let d=yield Ge.openAuthSessionAsync(n);if(Ye.OS==="android")return;if(d.type!=="success")throw new Y({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:s}=K.parse(d.url),a;switch(e){case"google-drive":{let{privy_oauth_state:c,privy_oauth_code:l}=s;if(!l||!c)throw new Y({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});a=yield pe({oAuthCode:l,oAuthState:c,client:r});break}default:throw new Y({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return a}catch(n){throw o==null||o(x(n)),n}})}function pe(o){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:i}=yield r.recovery.auth.authorize(e,t);if(!i)throw new Y({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return i})}var Zt=2*60*1e3;function er(e){let t;return new Promise((r,o)=>{t=K.addEventListener("url",n=>y(this,[n],function*({url:i}){if(!i)return;let{queryParams:d}=K.parse(i),{privy_oauth_state:s,privy_oauth_code:a}=d!=null?d:{};if(typeof a!="string"||typeof s!="string")return;let c=yield pe({client:e,oAuthCode:a,oAuthState:s});r(c)})),setTimeout(()=>{o(new Y({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Zt)}).finally(()=>{t==null||t.remove()})}function Do(e){return y(this,null,function*(){let t;Ye.OS==="android"&&(t=er(e));let r=yield re({provider:"google-drive",client:e});return r!=null?r:yield t})}import{getUserEmbeddedWallet as tr,PrivyClientError as rr}from"@privy-io/js-sdk-core";function me(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:i}){var d,s,a,c;try{let{provider:l,user:p}=yield e.embeddedWallet.setRecovery(t),m=l,v=tr(p);return i({status:"connected",provider:m,account:v}),(s=(d=r.current)==null?void 0:d.onSuccess)==null||s.call(d,m),o({status:"initial"}),m}catch(l){let p=new rr({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(c=(a=r.current)==null?void 0:a.onError)==null||c.call(a,p),o({status:"initial"}),p}})}function $e(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 Ze=({client:e,user:t,appId:r,wallet:o,setWallet:i,setRecoveryFlowState:n,webViewState:d,createWalletCallbacks:s,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c})=>{let l=or(()=>nr(t),[t]),p=oe(u=>y(void 0,null,function*(){var J,I;if(l)throw new O({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:h}=yield e.user.get(),{password:b,recoveryMethod:g,recoveryKey:_}=$e(u),S,E,R;if(g==="google-drive"&&(S=yield re({provider:g,client:e,onError:(J=s.current)==null?void 0:J.onError}),n({status:"creating-wallet"}),!S))return null;if(g==="icloud"){if(!h)throw new O({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:N,iCloudRecordName:D}=yield _e({user:h,appId:r,client:e});E=N,R=D}return yield ue({client:e,setWallet:i,createWalletCallbacks:s,recoveryMethod:g,recoveryKey:_,setRecoveryFlowState:n,password:b,recoverySecretOverride:E,iCloudRecordNameOverride:R,solanaAccount:(I=Qe(h))!=null?I:void 0})}),[e,l,t]),m=oe(u=>y(void 0,null,function*(){var g;if(o.status!=="connected")throw new O({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!l)throw new O({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(Qe(t))throw new O({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});ir({currentRecoveryMethod:l.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let h,b;switch(u.recoveryMethod){case"privy":b=W(C({},u),{wallet:l});break;case"user-passcode":b=W(C({},u),{wallet:l,password:u.password});break;case"google-drive":if(h=yield re({provider:u.recoveryMethod,client:e,onError:(g=c.current)==null?void 0:g.onError}),n({status:"upgrading-recovery"}),!h)return null;b={recoveryMethod:"google-drive",wallet:l,recoveryAccessToken:h};break;case"icloud":if(!t)throw new O({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:_,iCloudRecordName:S}=yield _e({user:t,appId:r,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:S,wallet:l};break;default:throw new O({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return me({client:e,recoveryInput:b,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:i})}),[e,l,o.status,t]),v=oe(u=>y(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:u})}),[e,l,o.status]),f=oe(u=>y(void 0,null,function*(){var E;if(!l)throw new O({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:h,recoveryMethod:b,recoveryKey:g}=$e(u),_,S;if(b==="google-drive"&&(_=yield re({provider:b,client:e,onError:(E=a.current)==null?void 0:E.onError}),n({status:"recovering"}),!_))return null;if(b==="icloud"){if(!t)throw new O({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:R}=yield Je({client:e,walletAddress:l.address});S=R}return ce({client:e,account:l,setWallet:i,recoverWalletCallbacks:a,recoveryMethod:b,setRecoveryFlowState:n,recoveryKey:g,password:h,recoveryToken:_,recoverySecretOverride:S})}),[e,l]),w=oe(()=>y(void 0,null,function*(){if(!l)throw i({status:"not-created",account:null}),new O({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});i(u=>u.status==="connected"?{status:"reconnecting",account:l}:{status:"connecting",account:l});try{let u=yield e.embeddedWallet.getProvider(l);return i({status:"connected",provider:u,account:l}),u}catch(u){throw ar(u)?(i({status:"needs-recovery",account:l}),new O({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):u instanceof Error?(i({status:"error",error:u.message,account:l}),new O({code:"unknown_embedded_wallet_error",error:u.message})):(i({status:"error",error:"Error loading embedded wallet",account:l}),new O({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,l]);return Xe(()=>{if(!t&&o.status!=="disconnected")return i({status:"disconnected",account:null});d==="loaded"&&w().catch(()=>{})},[d,t,l]),Xe(()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:p,recover:f,setPassword:v,setRecovery:m,getProvider:w}};import{useEffect as sr,useState as lr}from"react";import{PrivyClientError as et}from"@privy-io/js-sdk-core";var tt=({client:e,user:t,isReady:r})=>{let o=le(d=>d==null?void 0:d.customAuth),[i,n]=lr({status:"initial"});return sr(()=>{(()=>y(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:s,isLoading:a}=o;if(!(!r||a))try{let c=yield s();if(!c&&t){yield e.auth.logout(),n({status:"done"});return}if(!c){n({status:"done"});return}if(t){n({status:"done"});return}let l=Fe();if(!(yield e.auth.customProvider.syncWithToken(c,{embedded:l==null?void 0:l.embedded}))){yield e.auth.logout(),n({status:"error",error:new et({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(c){if(console.log("Error syncing with custom auth provider",c),n({status:"error",error:c}),t)throw yield e.auth.logout(),new et({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,r,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:i,customAuthStateIsSettled:i.status!=="loading"&&i.status!=="initial"}};import*as X from"expo-linking";import{useCallback as dr,useEffect as cr}from"react";import{Platform as ur}from"react-native";var rt=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:i,setOAuthState:n,recoveryFlowState:d,oAuthStateRef:s})=>{let a=X.useURL(),c=dr(l=>{var m,v;let p=x(l);n({status:"error",error:p}),(v=(m=i.current).onError)==null||v.call(m,p)},[n]);return cr(()=>{function l(){return y(this,null,function*(){var f,w;if(!a||o.status!=="loading"||d.status!=="initial")return;let{queryParams:p}=X.parse(a),{privy_oauth_state:m,privy_oauth_code:v}=p;if(!v||!m){n({status:"done"});return}try{let u,h;if(t)u=yield e.auth.oauth.linkWithCode(v,m);else{let b=yield e.auth.oauth.loginWithCode(v,m,void 0,void 0,s.current.disableSignup?"no-signup":"login-or-sign-up");u=b.user,h=!!b.is_new_user}return(w=(f=i.current).onSuccess)==null||w.call(f,u,h),s.current={},n({status:"done"}),yield X.openURL(a.split("?")[0])}catch(u){s.current={},c(u)}})}ur.OS==="android"&&r&&l()},[a,r])};import*as Q from"expo-linking";import{useCallback as pr,useEffect as mr,useMemo as yr}from"react";import{Platform as vr}from"react-native";import{getUserEmbeddedSolanaWallet as fr,getUserEmbeddedWallet as wr}from"@privy-io/js-sdk-core";var ot=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:i,recoveryFlowState:n,oAuthState:d,setRecoveryFlowState:s,setWallet:a,appStateVisible:c,webViewLoaded:l})=>{let p=Q.useURL(),m=yr(()=>wr(t),[t]),v=pr(f=>{var u,h,b,g;let w=x(f);n.status==="creating-wallet"?(h=(u=r.current).onError)==null||h.call(u,x(w)):(g=(b=o.current).onError)==null||g.call(b,x(w)),s({status:"initial"})},[n]);return mr(()=>{function f(){return y(this,null,function*(){var b;if(!p&&n.status!=="initial"&&c&&v(new Error("Recovery OAuth session failed")),!p||n.status==="initial"||d.status!=="initial"||!c||!l)return;let{queryParams:w}=Q.parse(p),{privy_oauth_state:u,privy_oauth_code:h}=w;if(!(!h||!u)){yield Q.openURL(p.split("?")[0]);try{let g=yield pe({oAuthCode:h,oAuthState:u,client:e});if(n.status==="creating-wallet"){let _=(b=fr(t))!=null?b:void 0;yield ue({client:e,setWallet:a,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g,solanaAccount:_})}else if(n.status==="upgrading-recovery"){if(!m)throw new Error("Embedded wallet not found");yield me({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:m,recoveryAccessToken:g},setWalletRecoveryCallbacks:i,setRecoveryFlowState:s,setWallet:a})}else yield ce({client:e,account:m,setWallet:a,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g})}catch(g){v(g)}}})}vr.OS==="android"&&f()},[p,n.status,c,l])};import{useEffect as hr}from"react";var nt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{hr(()=>{t||(()=>y(void 0,null,function*(){try{yield e.initialize()}catch(n){o(n instanceof Error?n:new Error(String(n)))}try{yield e.user.get()}catch(n){}finally{r(!0)}}))()},[e,t,o,r])};import{useCallback as Pr}from"react";import{create as Ar}from"zustand";import{useMemo as _r}from"react";import{useContext as gr}from"react";var it=()=>{let{user:e,isReady:t,logout:r,getAccessToken:o,error:i}=gr(q);return{user:e,isReady:t,error:i,logout:r,getAccessToken:o}};import{useContext as br}from"react";var at=()=>{let{client:e}=br(q);return e};function st(){let e=at(),{isReady:t}=it();return _r(()=>{var o;if(!t)return null;let r=e.app.getConfig();return r?{termsAndConditionsUrl:r.terms_and_conditions_url,privacyPolicyUrl:r.privacy_policy_url,requireUsersAcceptTerms:(o=r.require_users_accept_terms)!=null?o:!1}:null},[e.app,t])}var k=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},lt=class extends k{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var Ee={success:e=>({value:e}),error:e=>({error:e})};var dt=e=>{let t=Array.from(new Set(e));return t.length===0?Ee.error(new k("no_login_methods_available","No login methods available")):Ee.success(t)},Ce=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},Dn=(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},Vn={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};import{useEffect as Sr}from"react";import{createStore as Er}from"zustand/vanilla";var Pe=Er()(e=>({elementsConfig:null,updateUIMounted:t=>e({elementsConfig:t})})),ct=()=>{let{elementsConfig:e}=Pe.getState();if(!(e!==null))throw new k("privy_elements_not_ready","Privy Elements is not mounted")},Jn=()=>{let{elementsConfig:e}=Pe.getState();if(e===null)throw new k("privy_elements_not_ready","Privy Elements is not mounted");return e},Bn=e=>{Sr(()=>{let{updateUIMounted:t}=Pe.getState();return t(e),()=>{t(null)}},[e])};function ut(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function Cr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function pt(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return Cr(e,()=>{clearTimeout(o)})}var kr=1e3*60*5,$=Ar()((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(r,o,i,n)=>ut(d=>{var p,m,v;let s=o.app.getConfig();if(!s)return d.reject(new k("privy_not_ready","Privy is not ready"));if(i!==null)return d.reject(new k("user_already_logged_in","User is already logged in"));if(ct(),t().loginPromiseResolvers!==null)return d.reject(new k("existing_login_flow_in_progress","A login flow is already in progress"));let a=dt(r.loginMethods);if(a.error)return d.reject(a.error);let c={loginMethods:a.value,appearance:{logo:(v=(m=(p=r.appearance)==null?void 0:p.logo)!=null?m:s.logo_url)!=null?v:void 0}},l=pt(d,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new k("login_flow_timeout","The login flow timed out")),kr);n(),e({loginPromiseResolvers:l,privyElementsConfig:c,activeLoginMethod:Ce(c.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new k("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:i,closeLoginFlow:n}=t();if(!o){n();return}let d=Ce(o.loginMethods)===null;r===null||!d?n():i(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),oi=()=>$(e=>e.privyElementsConfig),ni=()=>$(e=>e.openLoginFlow),ii=()=>{let e=$(r=>r.closeLoginFlow),t=st();return Pr(r=>{t!=null&&t.requireUsersAcceptTerms&&!(r!=null&&r.termsReviewed)||e()},[e,t])},ai=()=>$(e=>e.goBack),si=()=>$(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),Rr=e=>{let{loginPromiseResolvers:t}=$.getState();t==null||t.resolve(e)},mt=()=>Rr;var q=xr({}),z;function Pi(e){return z?z.getAccessToken():e!=null&&e.strict?Promise.reject(new Lr({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 Ai=e=>{let[t,r]=P(vt.currentState==="active");yt(()=>{let M=vt.addEventListener("change",Wt=>{r(Wt==="active")});return()=>{M.remove()}},[]),yt(()=>Te(e.config),[e.config]);let[o,i]=P(!1),[n,d]=P(null),[s,a]=P("loading"),[c,l]=P(!1),[p,m]=P(null),[v,f]=P({status:"disconnected",account:null}),[w,u]=P({status:"disconnected"}),[h,b]=P({status:"initial"}),[g,_]=P({status:"initial"}),S=H({}),[E,R]=P({status:"initial"}),[J,I]=P({status:"initial"}),[N,D]=P({status:"initial"}),[ve,F]=P({status:"initial"}),[L,St]=P({status:"initial"}),Oe=H({}),fe=H({}),we=H({}),he=H({}),We=H({}),xe=H({}),Et=mt(),ee=ye(M=>{if(M){Et(M),Be(m)(M);return}m(null),b({status:"initial"}),_({status:"initial"}),f({status:"disconnected",account:null})},[]),A=Wr(()=>{let M=e.storage||gt;return e.client?(z=e.client,z.setCallbacks({setUser:ee,setIsReady:l}),z):(z=new Ir({storage:ht(M),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:wt(),baseUrl:e.baseUrl,sdkVersion:`expo:${Me.version}`,callbacks:{setUser:ee,setIsReady:l},logLevel:e.logLevel,crypto:{digest:Or}}),z)},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ee]),Ct=ye(()=>(ee(null),A.auth.logout()),[ee,A]),Pt=ye(()=>y(void 0,null,function*(){try{return yield A.getAccessToken()}catch(M){return console.debug(M),null}}),[A]),At=ye(()=>A.getIdentityToken(),[A]);nt({client:A,isUserInitialized:o,setIsUserInitialized:i,setError:d});let kt=Ze({client:A,user:p,appId:e.appId,webViewState:s,createWalletCallbacks:fe,recoverWalletCallbacks:we,setWalletRecoveryCallbacks:he,setRecoveryFlowState:R,wallet:v,setWallet:f}),Rt=qe({client:A,user:p,webViewState:s,createSolanaWalletCallbacks:We,recoverSolanaWalletCallbacks:xe,setSolanaRecoveryFlowState:I,solanaWallet:w,setSolanaWallet:u});rt({client:A,isUserInitialized:o,user:p,oAuthState:g,setOAuthState:_,oAuthCallbacks:Oe,recoveryFlowState:E,oAuthStateRef:S}),ot({client:A,user:p,webViewLoaded:s==="loaded",createWalletCallbacks:fe,recoverWalletCallbacks:we,setWalletRecoveryCallbacks:he,recoveryFlowState:E,oAuthState:g,setRecoveryFlowState:R,setWallet:f,appStateVisible:t});let{customAuthStateIsSettled:Ot}=tt({client:A,user:p,isReady:o});return ne.createElement(ne.Fragment,null,ne.createElement(q.Provider,{value:{client:A,user:p,isReady:s!=="loading"&&o&&ft(g)&&Ot,error:n,logout:Ct,getAccessToken:Pt,getIdentityToken:At,wallet:C(C({},v),kt),solanaWallet:C(C({},w),Rt),oAuthState:g,oAuthCallbacks:Oe,recoveryFlowState:E,setRecoveryFlowState:R,solanaRecoveryFlowState:J,setSolanaRecoveryFlowState:I,createWalletCallbacks:fe,recoverWalletCallbacks:we,setWalletRecoveryCallbacks:he,createSolanaWalletCallbacks:We,recoverSolanaWalletCallbacks:xe,setOAuthState:_,siweState:N,setSiweState:D,otpState:h,setOtpState:b,passkeyState:ve,setPasskeyState:F,farcasterState:L,setFarcasterState:St,oAuthStateRef:S}},e.children),ne.createElement(Ur,{style:{width:0,height:0,overflow:"hidden"}},ne.createElement(je,{logLevel:e.logLevel,client:A,isClientReady:c,setWebViewState:a})))};var ft=e=>e.status!=="loading",ke=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:i,client:n,oAuthStateRef:d}=Mr(q),s=e.action?e.action==="login":!t;Tr(()=>{i.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let a=_t(l=>{var m;let p=x(l);return o({status:"error",error:p}),(m=e==null?void 0:e.onError)==null||m.call(e,p),p},[e==null?void 0:e.onError]);return{start:_t(function(w){return y(this,arguments,function*({provider:p,redirectUri:m,isLegacyAppleIosBehaviorEnabled:v=!1,disableSignup:f}){var u,h,b;o({status:"loading"}),d.current={disableSignup:f};try{if(t&&e.action==="login")throw new j({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new j({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:g}=yield n.auth.oauth.generateURL(p,Z.createURL(m||"/")),_,S;if(Ae.OS==="ios"&&p==="apple"&&!v){let ve=(u=new URL(g).searchParams.get("state"))!=null?u:"",F=yield ie.signInAsync({state:ve,requestedScopes:[ie.AppleAuthenticationScope.EMAIL,ie.AppleAuthenticationScope.FULL_NAME]}).catch(L=>{throw L instanceof Error&&"code"in L&&L.code==="ERR_REQUEST_CANCELED"?new j({error:"Apple login was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):L});if(!F.authorizationCode||!F.state)throw new j({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let L=yield n.auth.oauth.loginWithCode(F.authorizationCode,F.state,p,"raw",f?"no-signup":"login-or-sign-up");_=L.user,S=L.is_new_user}else _=yield n.auth.oauth.linkWithCode(F.authorizationCode,F.state,p,"raw");return(h=e==null?void 0:e.onSuccess)==null||h.call(e,_,S),o({status:"done"}),_!=null?_:void 0}let E=Ae.OS==="android"?g.replace("x.com","twitter.com"):g,R=yield ae.openAuthSessionAsync(E);if(Ae.OS==="android")return;if(R.type!=="success")throw[ae.WebBrowserResultType.CANCEL,ae.WebBrowserResultType.DISMISS].includes(R.type)?new j({error:"OAuth was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new j({error:"OAuth session failed",code:s?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:J}=Z.parse(R.url),{privy_oauth_state:I,privy_oauth_code:N}=J;if(!N||!I)throw new j({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let D=yield n.auth.oauth.loginWithCode(N,I,p,void 0,f?"no-signup":"login-or-sign-up");_=D.user,S=D.is_new_user}else _=yield n.auth.oauth.linkWithCode(N,I,p);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,_,S),yield Z.openURL(R.url.split("?")[0]),o({status:"done"}),_!=null?_:void 0}catch(g){a(g)}})},[t,n,o,a]),state:r}};function Mi(e){let{state:t,start:r}=ke(W(C({},e),{action:"login"}));return{state:t,login:r}}function Ti(e){let{state:t,start:r}=ke(W(C({},e),{action:"link"}));return{state:t,link:r}}function Fi(e){return ke(e)}var wt=()=>{if(typeof bt!="string")throw new j({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 bt};function ht(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:()=>y(this,null,function*(){return[]})}}var gt={get(e){return U.getItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return U.setItemAsync(e,t,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return U.deleteItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};import{PrivyClientError as Fr}from"@privy-io/js-sdk-core";var jr=e=>y(void 0,null,function*(){var o;let r=yield(yield import("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 Fr({code:"failed_to_create_passkey",error:"Could not create passkey"});return W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});import{PrivyClientError as Nr}from"@privy-io/js-sdk-core";var Dr=e=>y(void 0,null,function*(){var o;let r=yield(yield import("react-native-passkeys")).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new Nr({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function Qi(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 $i(e){var t,r,o,i;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:(i=e.allow_credentials)==null?void 0:i.map(({id:n,type:d,transports:s})=>({id:n,type:d,transports:s})),userVerification:e.user_verification}}function Zi(e){var t,r,o,i,n,d,s,a;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:(i=e.extensions)==null?void 0:i.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(n=e.authenticator_selection)==null?void 0:n.authenticator_attachment,residentKey:(d=e.authenticator_selection)==null?void 0:d.resident_key,userVerification:(s=e.authenticator_selection)==null?void 0:s.user_verification,requireResidentKey:(a=e.authenticator_selection)==null?void 0:a.require_resident_key}}}export{C as a,W as b,Vr as c,y as d,Me as e,Fe as f,_e as g,Je as h,x as i,Co as j,Oo as k,Do as l,Mi as m,Ti as n,Fi as o,wt as p,ht as q,gt as r,it as s,at as t,st as u,k as v,lt as w,Dn as x,Vn as y,ct as z,Jn as A,Bn as B,ut as C,pt as D,oi as E,ni as F,ii as G,ai as H,si as I,q as J,Pi as K,Ai as L,jr as M,Dr as N,Qi as O,$i as P,Zi as Q};