@privy-io/expo 0.49.1 → 0.49.2

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 _chunkQSMSI5YYjs = require('./chunk-QSMSI5YY.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var Lt=e=>{let{client:t,setSiweState:i,siweState:n}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkQSMSI5YYjs.m.call(void 0, a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({wallet:a,from:{domain:c,uri:d}}){var u;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(u=e==null?void 0:e.onGenerateMessage)==null||u.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]),s=_react.useCallback.call(void 0, d=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[d],function*({signature:a,messageOverride:c}){var h;try{if(!_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});i({status:"submitting-signature"});let{user:p}=yield t.auth.siwe.linkWithSiwe(a,void 0,c);return i({status:"done"}),(h=e==null?void 0:e.onSuccess)==null||h.call(e,p),p}catch(u){throw o(u)}}),[t,o,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:s,state:n}};var Dt=e=>{let{client:t,setSiweState:i,siweState:n}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkQSMSI5YYjs.m.call(void 0, a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({wallet:a,from:{domain:c,uri:d}}){var u;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(u=e==null?void 0:e.onGenerateMessage)==null||u.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({signature:a,messageOverride:c,disableSignup:d}){var u;try{if(_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});i({status:"submitting-signature"});let y=_chunkQSMSI5YYjs.e.call(void 0, ),w=yield t.auth.siwe.loginWithSiwe(a,void 0,c,d?"no-signup":"login-or-sign-up",{embedded:y==null?void 0:y.embedded});return i({status:"done"}),(u=e==null?void 0:e.onSuccess)==null||u.call(e,w.user,w.is_new_user),w.user}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:n}};var zt=()=>{let e=_chunkQSMSI5YYjs.w.call(void 0, ),t=_react.useCallback.call(void 0, s=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkQSMSI5YYjs.m.call(void 0, a)}}),[e]),i=_react.useCallback.call(void 0, a=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[a],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={}}){try{if(!_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});let{user:d}=yield e.auth.siws.link({signature:n,message:o,walletClientType:r,connectorType:s});return d}catch(c){throw _chunkQSMSI5YYjs.m.call(void 0, c)}}),[e]);return{generateMessage:t,link:i}};var to=()=>{let e=_chunkQSMSI5YYjs.w.call(void 0, ),t=_react.useCallback.call(void 0, s=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkQSMSI5YYjs.m.call(void 0, a)}}),[e]),i=_react.useCallback.call(void 0, c=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[c],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={},disableSignup:a}){try{if(_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siws_while_already_logged_in",error:"Already logged in, use `useLinkWithSiws` if you are trying to link a wallet to an existing account"});return(yield e.auth.siws.login({signature:n,message:o,walletClientType:r,connectorType:s,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw _chunkQSMSI5YYjs.m.call(void 0, d)}}),[e]);return{generateMessage:t,login:i}};var uo=e=>{let{client:t}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkQSMSI5YYjs.m.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, r=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[r],function*({address:o}){var s;try{if(!_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let{user:c}=yield t.auth.siwe.unlinkWallet(o);return(s=e==null?void 0:e.onSuccess)==null||s.call(e,c),c}catch(a){throw i(a)}}),[t,i,e==null?void 0:e.onSuccess])}};var vo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),s=_react.useCallback.call(void 0, d=>{var u;let h=_chunkQSMSI5YYjs.m.call(void 0, d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({email:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, u=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[u],function*({code:d,email:h}){var p;try{if(!_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let w=h||t;if(!w)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});r({status:"submitting-code"});let{user:v}=yield n.auth.email.linkWithCode(w,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,v),v}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};var Uo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),s=_react.useCallback.call(void 0, d=>{var u;let h=_chunkQSMSI5YYjs.m.call(void 0, d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({email:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, p=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[p],function*({code:d,email:h,disableSignup:u}){var y;try{if(_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let v=h||t;if(!v)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});r({status:"submitting-code"});let C=_chunkQSMSI5YYjs.e.call(void 0, ),k=yield n.auth.email.loginWithCode(v,d,u?"no-signup":"login-or-sign-up",{embedded:C==null?void 0:C.embedded});return r({status:"done"}),(y=e==null?void 0:e.onLoginSuccess)==null||y.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){throw s(w)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};var Fo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),s=_react.useCallback.call(void 0, d=>{var u;let h=_chunkQSMSI5YYjs.m.call(void 0, d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({phone:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, u=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[u],function*({code:d,phone:h}){var p;try{if(!_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(h||t))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});r({status:"submitting-code"});let{user:v}=yield n.auth.phone.linkWithCode(h||t,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,v),v}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};var jo=e=>{let[t,i]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),s=_react.useCallback.call(void 0, d=>{var u;let h=_chunkQSMSI5YYjs.m.call(void 0, d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=_react.useCallback.call(void 0, h=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[h],function*({phone:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=_react.useCallback.call(void 0, p=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[p],function*({code:d,phone:h,disableSignup:u}){var y;try{if(_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(h||t))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});r({status:"submitting-code"});let C=_chunkQSMSI5YYjs.e.call(void 0, ),k=yield n.auth.phone.loginWithCode(h||t,d,u?"no-signup":"login-or-sign-up",{embedded:C==null?void 0:C.embedded});return r({status:"done"}),(y=e==null?void 0:e.onLoginSuccess)==null||y.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){throw s(w)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};var _expolinking = require('expo-linking'); var H = _interopRequireWildcard(_expolinking); var N = _interopRequireWildcard(_expolinking); var Re = _interopRequireWildcard(_expolinking); var D = _interopRequireWildcard(_expolinking); var Fe = _interopRequireWildcard(_expolinking); var He = _interopRequireWildcard(_expolinking); var De = _interopRequireWildcard(_expolinking); var Ge = _interopRequireWildcard(_expolinking);var Zo=e=>{let{appState:t,getCurrentAppState:i}=_chunkQSMSI5YYjs.o.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),s=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, h=>{var p;let u=_chunkQSMSI5YYjs.m.call(void 0, h);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{s.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (y,...w)=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[y,...w],function*({relyingParty:h,redirectUrl:u},p={pollAttempts:10,pollIntervalMs:1e3}){var v;try{let C=_chunkQSMSI5YYjs.h.call(void 0, );if(s.current=!1,!C)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});r({status:"generating-uri"});let{connect_uri:k,channel_token:P}=yield n.auth.farcaster.initializeAuth({relyingParty:h,redirectUrl:H.createURL(u!=null?u:"/")});if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield H.openURL(k),r({status:"polling-status"});let _=0;for(;_<p.pollAttempts;){if(s.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield _chunkQSMSI5YYjs.n.call(void 0, p.pollIntervalMs);continue}let A=yield n.auth.farcaster.getFarcasterStatus({channel_token:P});if(A.state==="completed"){r({status:"submitting-token"});let{user:L}=yield n.auth.farcaster.link(_chunkQSMSI5YYjs.a.call(void 0, {channel_token:P},A));return r({status:"done"}),(v=e==null?void 0:e.onSuccess)==null||v.call(e,L),L}_++,yield _chunkQSMSI5YYjs.n.call(void 0, p.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(C){throw a(C)}}),[n,e==null?void 0:e.onSuccess,a,r]),state:o,cancel:c}};var sn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkQSMSI5YYjs.m.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, r=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[r],function*({fid:o}){var s;try{let{user:a}=yield t.auth.farcaster.unlink({fid:o});return(s=e==null?void 0:e.onSuccess)==null||s.call(e,a),a}catch(a){throw i(a)}}),[t,e==null?void 0:e.onSuccess,i])}};var gn=e=>{let{appState:t,getCurrentAppState:i}=_chunkQSMSI5YYjs.o.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),s=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, h=>{var p;let u=_chunkQSMSI5YYjs.m.call(void 0, h);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{s.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (w,...v)=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[w,...v],function*({relyingParty:h,redirectUrl:u,disableSignup:p},y={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(s.current=!1,_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:P,channel_token:_}=yield n.auth.farcaster.initializeAuth({relyingParty:h,redirectUrl:N.createURL(u!=null?u:"/")});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!_)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield N.openURL(P),r({status:"polling-status"});let A=0;for(;A<y.pollAttempts;){if(s.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield _chunkQSMSI5YYjs.n.call(void 0, y.pollIntervalMs);continue}let L=yield n.auth.farcaster.getFarcasterStatus({channel_token:_});if(L.state==="completed"){r({status:"submitting-token"});let K=_chunkQSMSI5YYjs.e.call(void 0, ),j=yield n.auth.farcaster.authenticate(_chunkQSMSI5YYjs.a.call(void 0, {channel_token:_,mode:p?"no-signup":"login-or-sign-up"},L),{embedded:K==null?void 0:K.embedded});return r({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,j.user,j.is_new_user),j.user}A++,yield _chunkQSMSI5YYjs.n.call(void 0, y.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(k){throw a(k)}}),[n,a,e==null?void 0:e.onSuccess,r,t]),state:o,cancel:c}};var _zustand = require('zustand');var te=_zustand.create.call(void 0, ()=>({status:"initial"})),E=e=>te.setState(e,!0),kr=te.getState,En= exports.m =()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=te(),i=_react.useCallback.call(void 0, ()=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){try{E({status:"fetching-nonce"});let o=yield e.auth.farcasterV2.initializeAuth();return E({status:"awaiting-signature"}),o}catch(o){let r=_chunkQSMSI5YYjs.m.call(void 0, o);throw E({status:"initial",error:r}),r}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){let r=kr().status;try{if(_chunkQSMSI5YYjs.h.call(void 0, )){let d=new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use a link helper if you are trying to link farcaster to an existing account"});throw E({status:r,error:d}),d}E({status:"submitting-signature"});let a=_chunkQSMSI5YYjs.e.call(void 0, ),c=yield e.auth.farcasterV2.authenticate(o,{embedded:a==null?void 0:a.embedded});return E({status:"done"}),setTimeout(()=>E({status:"initial"}),1500),{user:c.user}}catch(s){let a=_chunkQSMSI5YYjs.m.call(void 0, s);throw E({status:r,error:a}),a}}),[e]);return{init:i,login:n,state:t}};var Ln=e=>{let{client:t}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkQSMSI5YYjs.m.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, s=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[s],function*({provider:o,subject:r}){var a;try{let{user:c}=yield t.auth.oauth.unlink(o,r);return(a=e==null?void 0:e.onSuccess)==null||a.call(e,c),c}catch(c){throw i(c)}}),[t,e==null?void 0:e.onSuccess,i])}};var Fn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),i=_react.useRef.call(void 0, e.onOAuthTokenGrant);i.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:n}=t.addOAuthTokensListener(o=>{i.current(o)});return n},[t])};var Bn=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};var $n=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkQSMSI5YYjs.d.call(void 0, this,arguments,function*({newEmailAddress:i}){Ue(),yield e.auth.email.sendCode(i)})},updateEmail(o){return _chunkQSMSI5YYjs.d.call(void 0, this,arguments,function*({newEmailAddress:i,code:n}){let{address:r}=Ue(),{user:s}=yield e.auth.email.updateEmail({oldEmailAddress:r,newEmailAddress:i,code:n});return s})}}),[e])};function Ue(){let t=xr().linked_accounts.find(i=>i.type==="email");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_email_without_a_linked_email",error:"Must have a linked email account already to update an email address. Use `useLinkEmail` to link an email account."});return t}function xr(){let e=_chunkQSMSI5YYjs.h.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var ei=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkQSMSI5YYjs.d.call(void 0, this,arguments,function*({newPhoneNumber:i}){Ae(),yield e.auth.phone.sendCode(i)})},updatePhone(o){return _chunkQSMSI5YYjs.d.call(void 0, this,arguments,function*({newPhoneNumber:i,code:n}){let{phoneNumber:r}=Ae(),{user:s}=yield e.auth.phone.updatePhone({oldPhoneNumber:r,newPhoneNumber:i,code:n});return s})}}),[e])};function Ae(){let t=Mr().linked_accounts.find(i=>i.type==="phone");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_phone_without_a_linked_phone",error:"Must have a linked phone account already to update a phone number. Use `useLinkSMS` to link a phone number."});return t}function Mr(){let e=_chunkQSMSI5YYjs.h.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var _expowebbrowser = require('expo-web-browser'); var Oe = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var S=e=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Or());let i=yield Oe.openAuthSessionAsync(e),n;if(_reactnative.Platform.OS==="android")n=yield t;else{if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_failed",error:"OAuth session failed"});n=i.url}return Ir(n)});function Or(){let e;return new Promise((t,i)=>{e=D.addEventListener("url",({url:n})=>{n&&t(n)}),setTimeout(()=>{i(new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_timeout",error:"OAuth session timed out"}))},Rr)}).finally(()=>{e==null||e.remove()})}function Ir(e){let{queryParams:t}=D.parse(e);return t}var Rr=2*60*1e3;var mi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, r=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_cross_app_while_already_logged_in",error:"Already logged in, use `linkCrossAppAccount` if you are trying to link a cross app account to an existing account"});let{user:a}=yield t({providerAppId:n,redirectUrl:Re.createURL(o||"/")});return{user:a}}),[t])}};var ki=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, r=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(!_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_cross_app_before_logged_in",error:"Must be logged in to link a cross app account, Use `loginWithCrossAppAccount` to login with cross app"});return{user:yield t({providerAppId:n,redirectUrl:Fe.createURL(o||"/")})}}),[t])}};var Ui=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:S}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:i,message:n,redirectUri:o="/"})=>t({user:_chunkQSMSI5YYjs.h.call(void 0, ),address:i,message:n,redirectUrl:He.createURL(o)})}),[t])};var Ri=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:S}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:i,typedData:n,redirectUri:o="/"})=>t({user:_chunkQSMSI5YYjs.h.call(void 0, ),address:i,typedData:n,redirectUrl:De.createURL(o)})}),[t])};var Gi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:S}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:i,transaction:n,redirectUri:o="/"})=>t({user:_chunkQSMSI5YYjs.h.call(void 0, ),address:i,transaction:n,redirectUrl:Ge.createURL(o)})}),[t])};var Qi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);return{setRecovery:_react.useCallback.call(void 0, i=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){var a;let n=_chunkQSMSI5YYjs.h.call(void 0, ),o=e.app.appId;if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let r=(a=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?a:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{r.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(r):r.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier"))}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:i.recoveryMethod});let s=yield ot({appId:o,client:e,user:n,primaryAccount:r,recoveryParams:i});try{let{user:c}=yield e.embeddedWallet.setRecovery(s);return{user:c}}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[e])}},ot=r=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[r],function*({appId:e,client:t,user:i,primaryAccount:n,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:n};case"user-passcode":return _chunkQSMSI5YYjs.b.call(void 0, _chunkQSMSI5YYjs.a.call(void 0, {},o),{wallet:n});case"google-drive":{let s=yield _chunkQSMSI5YYjs.p.call(void 0, t);return{recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:s}}case"icloud":{let{recoverySecret:s,iCloudRecordName:a}=yield _chunkQSMSI5YYjs.k.call(void 0, {appId:e,client:t,user:i});return{recoveryMethod:"icloud-native",recoverySecretOverride:s,iCloudRecordNameOverride:a,wallet:n}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:n,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var is=()=>{let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);return{recover:_react.useCallback.call(void 0, i=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){var d;let n=_chunkQSMSI5YYjs.h.call(void 0, );if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(d=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?d:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let r,s,a,c;switch(i.recoveryMethod){case"user-passcode":s=i.password;break;case"google-drive":a=yield _chunkQSMSI5YYjs.p.call(void 0, e);break;case"icloud":let{recoverySecret:h}=yield _chunkQSMSI5YYjs.l.call(void 0, {client:e,walletAddress:o.address,chainType:o.chain_type});c=h;break;case"recovery-encryption-key":r=i.recoveryKey;break;case"privy":break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_recovery_method",error:`Unsupported recovery options ${i}`})}try{o.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(o,s,a,c,r):o.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",s,a,c))}catch(h){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[e])}};var ne=(e={})=>{let{wallet:t,createWalletCallbacks:i,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),{onCreateWalletSuccess:r,onCreateWalletError:s,onRecoverWalletError:a,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:d,onSetWalletRecoveryError:h}=e;return _react.useEffect.call(void 0, ()=>{i.current={onSuccess:r,onError:s}},[r,s]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:c,onError:a}},[c,a]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:d,onError:h}},[c,a]),t};var ps=({onStateChange:e})=>{let t=ne();return _react.useEffect.call(void 0, ()=>{e(t)},[t])};var ys=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);return{getIdentityToken:e}};var Es=e=>{let{client:t}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),i=_react.useCallback.call(void 0, o=>{var s;let r=_chunkQSMSI5YYjs.m.call(void 0, o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){var o;try{if(_chunkQSMSI5YYjs.h.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let s=_chunkQSMSI5YYjs.e.call(void 0, ),a=yield t.auth.guest.create({embedded:s==null?void 0:s.embedded});return(o=e==null?void 0:e.onSuccess)==null||o.call(e,a.user,a.is_new_user),a.user}catch(r){throw i(r)}}),[t,i,e==null?void 0:e.onSuccess])}};function Ls({onMfaRequired:e}){let{client:t}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M);_react.useEffect.call(void 0, ()=>{function i(){return _chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){var o;let n=_chunkQSMSI5YYjs.h.call(void 0, );yield e((o=n==null?void 0:n.mfa_methods.map(({type:r})=>r))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",i),()=>{t.mfaPromises.off("mfaRequired",i)}},[t,e])}function Ns(){let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useCallback.call(void 0, r=>_chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){var s,a;switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty||((a=(s=_chunkQSMSI5YYjs.e.call(void 0, ))==null?void 0:s.mfa)==null?void 0:a.relyingParty)});return _chunkQSMSI5YYjs.S.call(void 0, c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),i=_react.useCallback.call(void 0, r=>_chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){var s,a,c,d,h,u,p;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||((a=(s=_chunkQSMSI5YYjs.e.call(void 0, ))==null?void 0:s.mfa)==null?void 0:a.relyingParty)||""}),yield new Promise((C,k)=>{e.mfaPromises.submitPromise.current={resolve:C,reject:k}});break;case"passkey":if(typeof r.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let y=yield _chunkQSMSI5YYjs.Q.call(void 0, r.mfaCode),w=_chunkQSMSI5YYjs.R.call(void 0, y);(u=e.mfaPromises.rootPromise.current)==null||u.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||((h=(d=_chunkQSMSI5YYjs.e.call(void 0, ))==null?void 0:d.mfa)==null?void 0:h.relyingParty)||"",mfaCode:w}),yield new Promise((C,k)=>{e.mfaPromises.submitPromise.current={resolve:C,reject:k}});break;default:let v=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(p=e.mfaPromises.rootPromise.current)==null||p.reject(v),v}}),[e]),n=_react.useCallback.call(void 0, ()=>_chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:i,prompt:n,cancel:o}}function Ks(){let{client:e}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),t=_react.useCallback.call(void 0, o=>_chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),i=_react.useCallback.call(void 0, o=>_chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkQSMSI5YYjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[],removeForLogin:o.removeForLogin});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:t,submitMfaEnrollment:i,unenrollMfa:n}}var kt=()=>{let e=_chunkQSMSI5YYjs.i.call(void 0, ),t=_chunkQSMSI5YYjs.w.call(void 0, ),i=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let r=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),{entropyId:s,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:c,entropyId:s,entropyIdVerifier:a,onNeedsRecovery:d=>_chunkQSMSI5YYjs.d.call(void 0, void 0,null,function*(){var h;yield(h=_chunkQSMSI5YYjs.f.call(void 0, ))==null?void 0:h(d)})})}))},[t,e]),n=_react.useCallback.call(void 0, (...r)=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[...r],function*({createAdditional:o=!1}={}){let{user:s}=yield t.user.get(),a=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, s);if(!o&&a.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=_jssdkcore.getEntropyDetailsFromUser.call(void 0, s);if(!c){let w=yield t.embeddedWallet.create({});return se(w.user,0),{user:w.user}}let{entropyId:d,entropyIdVerifier:h}=c;if(h==="solana-address-verifier"){let w=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, s),v=yield t.embeddedWallet.create({solanaAccount:w});return se(v.user,0),{user:v.user}}let p=a.map(w=>w.wallet_index).reduce((w,v)=>Math.max(w,v),0)+1,y=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:p,entropyId:d,entropyIdVerifier:h});return se(y.user,p),{user:y.user}}),[t]);return{wallets:i,create:n}};function se(e,t){let i=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(n=>n.wallet_index===t);if(!e||!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var bt=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:n}=_react.useContext.call(void 0, _chunkQSMSI5YYjs.M),{onCreateWalletSuccess:o,onCreateWalletError:r,onRecoverWalletError:s,onRecoverWalletSuccess:a}=e;return _react.useEffect.call(void 0, ()=>{i.current={onSuccess:o,onError:r}},[o,r]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:a,onError:s}},[a,s]),t};var Et=()=>{let e=_chunkQSMSI5YYjs.i.call(void 0, ),t=_chunkQSMSI5YYjs.w.call(void 0, ),i=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let r=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:s,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:s,entropyIdVerifier:a})}))},[t,e]),n=_react.useCallback.call(void 0, s=>_chunkQSMSI5YYjs.d.call(void 0, void 0,[s],function*({chainType:o,createAdditional:r=!1}){let{user:a}=yield t.user.get(),c=_jssdkcore.getEntropyDetailsFromUser.call(void 0, a);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:d,entropyIdVerifier:h}=c,u=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, a).filter(v=>v.chain_type===o);if(!r&&u.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 p=u.length===0?0:Math.max(...u.map(v=>v.wallet_index),0)+1,y=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:p,entropyId:d,entropyIdVerifier:h}),w=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, y.user).find(v=>v.chain_type===o&&v.wallet_index===p);if(!y.user||!w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:y.user,provider:yield t.embeddedWallet.getBitcoinProvider({wallet:w,entropyId:d,entropyIdVerifier:h})}}),[t]);return{wallets:i,create:n}};exports.a = Lt; exports.b = Dt; exports.c = zt; exports.d = to; exports.e = uo; exports.f = vo; exports.g = Uo; exports.h = Fo; exports.i = jo; exports.j = Zo; exports.k = sn; exports.l = gn; exports.m = En; exports.n = Ln; exports.o = Fn; exports.p = Bn; exports.q = $n; exports.r = ei; exports.s = mi; exports.t = ki; exports.u = Ui; exports.v = Ri; exports.w = Gi; exports.x = Qi; exports.y = is; exports.z = ne; exports.A = ps; exports.B = ys; exports.C = Es; exports.D = Ls; exports.E = Ns; exports.F = Ks; exports.G = kt; exports.H = bt; exports.I = Et;
@@ -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 Dt=Object.defineProperty,Vt=Object.defineProperties;var qt=Object.getOwnPropertyDescriptors;var ue=Object.getOwnPropertySymbols;var Ne=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable;var Fe=(e,r,t)=>r in e?Dt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,C= exports.a =(e,r)=>{for(var t in r||(r={}))Ne.call(r,t)&&Fe(e,t,r[t]);if(ue)for(var t of ue(r))je.call(r,t)&&Fe(e,t,r[t]);return e},W= exports.b =(e,r)=>Vt(e,qt(r));var Kt=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(r,t)=>(typeof require!="undefined"?require:r)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var to=(e,r)=>{var t={};for(var o in e)Ne.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(e!=null&&ue)for(var o of ue(e))r.indexOf(o)<0&&je.call(e,o)&&(t[o]=e[o]);return t};var p=(e,r,t)=>new Promise((o,n)=>{var c=d=>{try{i(t.next(d))}catch(s){n(s)}},a=d=>{try{i(t.throw(d))}catch(s){n(s)}},i=d=>d.done?o(d.value):Promise.resolve(d.value).then(c,a);i((t=t.apply(e,r)).next())});var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _zustand = require('zustand');var De=_zustand.create.call(void 0, ()=>({status:"disconnected"})),Ve= exports.f =()=>De.getState().onNeedsRecovery,io= exports.g =e=>{_react.useEffect.call(void 0, ()=>{De.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var ne = _interopRequireWildcard(_expolinking); var q = _interopRequireWildcard(_expolinking); var ee = _interopRequireWildcard(_expolinking); var te = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var U = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var de = _interopRequireWildcard(_expowebbrowser); var et = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var pe=_zustand.create.call(void 0, ()=>{}),qe=e=>pe.setState(r=>_reactfastcompare2.default.call(void 0, r,e)?r:e),X= exports.e =pe.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var Ke=({client:e,isClientReady:r,setWebViewState:t,logLevel:o})=>{let n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",i=>p(void 0,null,function*(){n.current&&i==="active"&&((yield e.embeddedWallet.ping(500))||(n.current.reload(),t("reloading")))})).remove,[]);let c=_react.useCallback.call(void 0, a=>p(void 0,null,function*(){let{data:i}=a.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(i))}),[e]);return r?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:a=>{a&&(e.setMessagePoster(a),n.current=a)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:o==="DEBUG",onLoad:()=>t("loaded"),onError:console.error,onMessage:c}):null};function ze(c){return p(this,arguments,function*({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:t,setSolanaRecoveryFlowState:o,opts:n}){var a,i,d;r({status:"creating"});try{let{user:s}=yield e.user.get(),l=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, s),m=l[0],y=(a=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, s))!=null?a:void 0;if(n!=null&&n.recoveryMethod&&n.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(n!=null&&n.createAdditional)&&m)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 f,v;if(m){let u=y!=null?y:m,{entropyId:w,entropyIdVerifier:b}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, u),g=Math.max(...l.map(E=>E.wallet_index),0)+1,S=yield e.embeddedWallet.add({chainType:"solana",entropyId:w,entropyIdVerifier:b,hdWalletIndex:g}),_=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, S.user).find(E=>E.wallet_index===g);if(!_)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});f=yield e.embeddedWallet.getSolanaProvider(_,w,b),v=S.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:y}),w=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, u.user).find(_=>_.wallet_index===0);if(!w)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=y!=null?y:w,{entropyId:g,entropyIdVerifier:S}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, b);f=yield e.embeddedWallet.getSolanaProvider(w,g,S),v=u.user}let h=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, v)[0];if(!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(d=(i=t.current)==null?void 0:i.onSuccess)==null||d.call(i,f),r({status:"connected",publicKey:h.public_key}),o({status:"initial"}),f}catch(s){let l=s instanceof Error?s.message:"Error creating embedded wallet";throw r({status:"error",error:l}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function ye(l){return p(this,arguments,function*({client:e,account:r,setWallet:t,recoverWalletCallbacks:o,recoveryMethod:n,setRecoveryFlowState:c,password:a,recoveryKey:i,recoveryToken:d,recoverySecretOverride:s}){var m,y,f,v;if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(n){case"user-passcode":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s)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(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}t({status:"connecting",account:r});try{let h=yield e.embeddedWallet.getProvider(r,a,d,s,i);return t({status:"connected",provider:h,account:r}),c({status:"initial"}),(y=(m=o.current)==null?void 0:m.onSuccess)==null||y.call(m,h),h}catch(h){t({status:"needs-recovery",account:r}),c({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:h instanceof Error?h.message:"Error recovering embedded wallet"});throw(v=(f=o.current)==null?void 0:f.onError)==null||v.call(f,u),u}})}function Je(i){return p(this,arguments,function*({client:e,account:r,entropyId:t,entropyIdVerifier:o,setSolanaWallet:n,recoverSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:a}){var d,s,l,m;n({status:"connecting"});try{let y=yield e.embeddedWallet.getSolanaProvider(r,t,o);return n({status:"connected",publicKey:y._publicKey}),a({status:"initial"}),(s=(d=c.current)==null?void 0:d.onSuccess)==null||s.call(d,y),y}catch(y){n({status:"needs-recovery"}),a({status:"initial"});let f=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:y instanceof Error?y.message:"Error recovering embedded wallet"});throw(m=(l=c.current)==null?void 0:l.onError)==null||m.call(l,f),f}})}var fe=_zustand.createStore.call(void 0, )(()=>({user:null}));function ve(){return fe.getState().user}function Ce(e){fe.setState(({user:r})=>_reactfastcompare2.default.call(void 0, r,e)?{}:{user:e})}function O(){return _zustand.useStore.call(void 0, fe,e=>e.user)}function Ge(){return _zustand.useStore.call(void 0, fe,e=>!!e.user)}var Xe=({client:e,solanaWallet:r,setSolanaWallet:t,setSolanaRecoveryFlowState:o,webViewState:n,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a})=>{let i=O(),d=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, i),[i]),s=_react.useMemo.call(void 0, ()=>d.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, i),[i,d]),l=_react.useMemo.call(void 0, ()=>{if(!s)return[];let{entropyId:v,entropyIdVerifier:h}=s,u=void 0,w=void 0,b=void 0;return d.map(g=>({address:g.address,publicKey:g.address,walletIndex:g.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(g,v,h,u,w,b,S=>p(void 0,null,function*(){var _;yield(_=Ve())==null?void 0:_(S)}))}))},[d,s,e]),m=_react.useCallback.call(void 0, v=>p(void 0,null,function*(){return yield ze({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:o,opts:v})}),[e,c]),y=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:v,entropyIdVerifier:h}=s;return Je({client:e,account:d[0],entropyId:v,entropyIdVerifier:h,setSolanaWallet:t,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:o})}),[e,s,d,a,o,t]),f=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){if(!s)throw t({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});t(v=>v.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:v,entropyIdVerifier:h}=s,u=yield e.embeddedWallet.getSolanaProvider(d[0],v,h);return t({status:"connected",publicKey:d[0].public_key}),u}catch(v){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, v)?(t({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):v instanceof Error?(t({status:"error",error:v.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:v.message})):(t({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[d,e,s,t]);return _react.useEffect.call(void 0, ()=>{if(!i&&r.status!=="disconnected")return t({status:"disconnected"});n==="loaded"&&f().catch(()=>{})},[n,i]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:m,recover:y,getProvider:f,wallets:l}};function he(m){return p(this,arguments,function*({client:e,setWallet:r,createWalletCallbacks:t,recoveryMethod:o,setRecoveryFlowState:n,password:c,recoveryKey:a,recoveryToken:i,recoverySecretOverride:d,iCloudRecordNameOverride:s,solanaAccount:l}){var f,v;switch(o){case"user-passcode":if(!c)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(!a)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(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!d||!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}r({status:"creating",account:null});let y=o==="icloud"?"icloud-native":o;try{let{user:h}=yield e.embeddedWallet.create({password:c,recoveryMethod:y,recoveryKey:a,recoveryToken:i,recoverySecretOverride:d,iCloudRecordNameOverride:s,solanaAccount:l}),u=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, h);if(!u)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let w=yield e.embeddedWallet.getProvider(u);return(v=(f=t.current)==null?void 0:f.onSuccess)==null||v.call(f,w),r({status:"connected",provider:w,account:u}),n({status:"initial"}),w}catch(h){let u=h instanceof Error?h.message:"Error creating embedded wallet";throw r({status:"error",error:u,account:null}),n({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function $e(){return p(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 ke(o){return p(this,arguments,function*({user:e,appId:r,client:t}){var i;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield $e(),c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(c==null?void 0:c.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:d,iCloudRecordName:s}=yield n.writeRecoverySecretToICloud({containerId:c.container_identifier,appId:r,userId:e.id});return{recoverySecret:d,iCloudRecordName:s}}catch(d){if(d instanceof Error){let s=(i=d.message.split("Caused by: ")[1])!=null?i:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:s})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Ze(o){return p(this,arguments,function*({walletAddress:e,client:r,chainType:t}){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 n=yield $e(),a=(yield r.recovery.getRecoveryKeyMaterial(e,t)).icloud_record_name;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let i=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios"),d=i==null?void 0:i.container_identifier;if(!d)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 n.readRecoverySecretFromICloud({containerId:d,recordName:a});return{recoverySecret:l}}catch(l){if(l instanceof Error){let m=(s=l.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}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 Bo=e=>new Promise(r=>setTimeout(r,e));function $o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function r(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:r}}function ae(n){return p(this,arguments,function*({provider:e,redirectUri:r,client:t,onError:o}){try{let c;switch(e){case"google-drive":{let{url:s}=yield t.recovery.auth.generateURL(q.createURL(r||"/"));c=s;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let a=yield et.openAuthSessionAsync(c);if(_reactnative.Platform.OS==="android")return;if(a.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:i}=q.parse(a.url),d;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:l}=i;if(!l||!s)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield we({oAuthCode:l,oAuthState:s,client:t});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(c){throw o==null||o(x(c)),c}})}function we(o){return p(this,arguments,function*({oAuthCode:e,oAuthState:r,client:t}){let{access_token:n}=yield t.recovery.auth.authorize(e,r);if(!n)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return n})}var ur=2*60*1e3;function pr(e){let r;return new Promise((t,o)=>{r=q.addEventListener("url",c=>p(this,[c],function*({url:n}){if(!n)return;let{queryParams:a}=q.parse(n),{privy_oauth_state:i,privy_oauth_code:d}=a!=null?a:{};if(typeof d!="string"||typeof i!="string")return;let s=yield we({client:e,oAuthCode:d,oAuthState:i});t(s)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},ur)}).finally(()=>{r==null||r.remove()})}function cn(e){return p(this,null,function*(){let r;_reactnative.Platform.OS==="android"&&(r=pr(e));let t=yield ae({provider:"google-drive",client:e});return t!=null?t:yield r})}function ge(c){return p(this,arguments,function*({client:e,recoveryInput:r,setWalletRecoveryCallbacks:t,setRecoveryFlowState:o,setWallet:n}){var a,i,d,s;try{let{provider:l,user:m}=yield e.embeddedWallet.setRecovery(r),y=l,f=_jssdkcore.getUserEmbeddedWallet.call(void 0, m);return n({status:"connected",provider:y,account:f}),(i=(a=t.current)==null?void 0:a.onSuccess)==null||i.call(a,y),o({status:"initial"}),y}catch(l){let m=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(s=(d=t.current)==null?void 0:d.onError)==null||s.call(d,m),o({status:"initial"}),m}})}function nt(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 it=({client:e,appId:r,wallet:t,setWallet:o,setRecoveryFlowState:n,webViewState:c,createWalletCallbacks:a,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:d})=>{let s=O(),l=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, s),[s]),m=_react.useCallback.call(void 0, u=>p(void 0,null,function*(){var L,J;if(l)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:w}=yield e.user.get(),{password:b,recoveryMethod:g,recoveryKey:S}=nt(u),_,E,I;if(g==="google-drive"&&(_=yield ae({provider:g,client:e,onError:(L=a.current)==null?void 0:L.onError}),n({status:"creating-wallet"}),!_))return null;if(g==="icloud"){if(!w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:j,iCloudRecordName:D}=yield ke({user:w,appId:r,client:e});E=j,I=D}return yield he({client:e,setWallet:o,createWalletCallbacks:a,recoveryMethod:g,recoveryKey:S,setRecoveryFlowState:n,password:b,recoverySecretOverride:E,iCloudRecordNameOverride:I,solanaAccount:(J=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, w))!=null?J:void 0})}),[e,l,s]),y=_react.useCallback.call(void 0, u=>p(void 0,null,function*(){var g;if(t.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, s))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:l.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let w,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(w=yield ae({provider:u.recoveryMethod,client:e,onError:(g=d.current)==null?void 0:g.onError}),n({status:"upgrading-recovery"}),!w)return null;b={recoveryMethod:"google-drive",wallet:l,recoveryAccessToken:w};break;case"icloud":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:S,iCloudRecordName:_}=yield ke({user:s,appId:r,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:S,iCloudRecordNameOverride:_,wallet:l};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ge({client:e,recoveryInput:b,setWalletRecoveryCallbacks:d,setRecoveryFlowState:n,setWallet:o})}),[e,l,t.status,s]),f=_react.useCallback.call(void 0, u=>p(void 0,null,function*(){return y({recoveryMethod:"user-passcode",password:u})}),[e,l,t.status]),v=_react.useCallback.call(void 0, u=>p(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:w,recoveryMethod:b,recoveryKey:g}=nt(u),S,_;if(b==="google-drive"&&(S=yield ae({provider:b,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!S))return null;if(b==="icloud"){if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:I}=yield Ze({client:e,walletAddress:l.address});_=I}return ye({client:e,account:l,setWallet:o,recoverWalletCallbacks:i,recoveryMethod:b,setRecoveryFlowState:n,recoveryKey:g,password:w,recoveryToken:S,recoverySecretOverride:_})}),[e,l]),h=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){if(!l)throw o({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(u=>u.status==="connected"?{status:"reconnecting",account:l}:{status:"connecting",account:l});try{let u=yield e.embeddedWallet.getProvider(l);return o({status:"connected",provider:u,account:l}),u}catch(u){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, u)?(o({status:"needs-recovery",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):u instanceof Error?(o({status:"error",error:u.message,account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:u.message})):(o({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(!s&&t.status!=="disconnected")return o({status:"disconnected",account:null});c==="loaded"&&h().catch(()=>{})},[c,s,l]),_react.useEffect.call(void 0, ()=>{t.status==="error"&&t.error.includes("User must be logged in")&&h()},[t.status]),{create:m,recover:v,setPassword:f,setRecovery:y,getProvider:h}};var st=({client:e,isReady:r})=>{let t=O(),o=pe(a=>a==null?void 0:a.customAuth),[n,c]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>p(void 0,null,function*(){if(!(o!=null&&o.enabled)){c({status:"not-enabled"});return}c({status:"loading"});let{getCustomAccessToken:i,isLoading:d}=o;if(!(!r||d))try{let s=yield i();if(!s&&t){yield e.auth.logout(),c({status:"done"});return}if(!s){c({status:"done"});return}if(t){c({status:"done"});return}let l=X();if(!(yield e.auth.customProvider.syncWithToken(s,{embedded:l==null?void 0:l.embedded}))){yield e.auth.logout(),c({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}c({status:"done"})}catch(s){if(console.log("Error syncing with custom auth provider",s),c({status:"error",error:s}),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:n,customAuthStateIsSettled:n.status!=="loading"&&n.status!=="initial"}};var lt=({client:e,isUserInitialized:r,oAuthState:t,oAuthCallbacks:o,setOAuthState:n,recoveryFlowState:c,oAuthStateRef:a})=>{let i=ee.useURL(),d=_react.useCallback.call(void 0, s=>{var m,y;let l=x(s);n({status:"error",error:l}),(y=(m=o.current).onError)==null||y.call(m,l)},[n]);return _react.useEffect.call(void 0, ()=>{function s(){return p(this,null,function*(){var f,v;if(!i||t.status!=="loading"||c.status!=="initial")return;let{queryParams:l}=ee.parse(i),{privy_oauth_state:m,privy_oauth_code:y}=l;if(!y||!m){n({status:"done"});return}try{let h,u;if(ve())({user:h}=yield e.auth.oauth.linkWithCode(y,m));else{let b=X(),g=yield e.auth.oauth.loginWithCode(y,m,void 0,void 0,a.current.disableSignup?"no-signup":"login-or-sign-up",{embedded:b==null?void 0:b.embedded});h=g.user,u=!!g.is_new_user}return(v=(f=o.current).onSuccess)==null||v.call(f,h,u),a.current={},n({status:"done"}),yield ee.openURL(i.split("?")[0])}catch(h){a.current={},d(h)}})}_reactnative.Platform.OS==="android"&&r&&s()},[i,r])};var dt=({client:e,createWalletCallbacks:r,recoverWalletCallbacks:t,setWalletRecoveryCallbacks:o,recoveryFlowState:n,oAuthState:c,setRecoveryFlowState:a,setWallet:i,appStateVisible:d,webViewLoaded:s})=>{let l=te.useURL(),m=O(),y=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, m),[m]),f=_react.useCallback.call(void 0, v=>{var u,w,b,g;let h=x(v);n.status==="creating-wallet"?(w=(u=r.current).onError)==null||w.call(u,x(h)):(g=(b=t.current).onError)==null||g.call(b,x(h)),a({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function v(){return p(this,null,function*(){var b;if(!l&&n.status!=="initial"&&d&&f(new Error("Recovery OAuth session failed")),!l||n.status==="initial"||c.status!=="initial"||!d||!s)return;let{queryParams:h}=te.parse(l),{privy_oauth_state:u,privy_oauth_code:w}=h;if(!(!w||!u)){yield te.openURL(l.split("?")[0]);try{let g=yield we({oAuthCode:w,oAuthState:u,client:e});if(n.status==="creating-wallet"){let S=(b=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, m))!=null?b:void 0;yield he({client:e,setWallet:i,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:a,recoveryToken:g,solanaAccount:S})}else if(n.status==="upgrading-recovery"){if(!y)throw new Error("Embedded wallet not found");yield ge({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:y,recoveryAccessToken:g},setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:i})}else yield ye({client:e,account:y,setWallet:i,recoverWalletCallbacks:t,recoveryMethod:"google-drive",setRecoveryFlowState:a,recoveryToken:g})}catch(g){f(g)}}})}_reactnative.Platform.OS==="android"&&v()},[l,n.status,d,s])};var ct=({client:e,isUserInitialized:r,setIsUserInitialized:t,setError:o})=>{_react.useEffect.call(void 0, ()=>{r||(()=>p(void 0,null,function*(){try{yield e.initialize()}catch(c){o(c instanceof Error?c:new Error(String(c)))}try{yield e.user.get()}catch(c){}finally{t(!0)}}))()},[e,r,o,t])};var _expocrypto = require('expo-crypto');var ut={name:"@privy-io/expo",version:"0.49.2",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:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.46.0","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{expo:"52.0.37","expo-apple-authentication":"7.1.3","expo-application":"6.0.2","expo-clipboard":"7.0.1","expo-crypto":"14.0.2",react:"^18.3.1","react-native":"0.77.1","@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":"^13.1.0","react-test-renderer":"^18.3.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":"52.0.5","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.4","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},"expo-apple-authentication":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var yt=({appId:e,clientId:r,storage:t=be,supportedChains:o,baseUrl:n,logLevel:c})=>new (0, _jssdkcore2.default)({appId:e,clientId:r,supportedChains:o,storage:mt(t),sdkVersion:`expo:${ut.version}`,nativeAppIdentifier:pt(),crypto:{digest:_expocrypto.digest},baseUrl:n,logLevel:c});var ft=()=>{let{isReady:e,logout:r,getAccessToken:t,error:o}=_react.useContext.call(void 0, N);return{user:O(),isReady:e,error:o,logout:r,getAccessToken:t}};var vt=()=>{let{client:e}=_react.useContext.call(void 0, N);return e};function ht(){let e=vt(),{isReady:r}=ft(),t=O();return _react.useMemo.call(void 0, ()=>{var a,i;if(!r)return null;let o=e.app.getConfig();if(!o)return null;let n=(a=o.require_users_accept_terms)!=null?a:!1,c=(i=t==null?void 0:t.has_accepted_terms)!=null?i:!1;return{termsAndConditionsUrl:o.terms_and_conditions_url,privacyPolicyUrl:o.privacy_policy_url,requireUsersAcceptTerms:n&&!c}},[e.app,r,t==null?void 0:t.has_accepted_terms])}var A=class extends Error{constructor(t,o){super(o);this.code=t,this.error=o}},wt= exports.z =class extends A{constructor(t){super("underlying_error",t instanceof Error?t.message:"An underlying error occurred");this.wrappedError=t}};var Oe={success:e=>({value:e}),error:e=>({error:e})};var gt=e=>{let r=Array.from(new Set(e));return r.length===0?Oe.error(new A("no_login_methods_available","No login methods available")):Oe.success(r)},We=e=>{let r=e.length,t=e.every(o=>o==="sms"||o==="email");return r<=2&&t?e[0]:null},Si= exports.A =(e,r)=>{if(e.length!==2)return null;let[t,o]=e;return r===t?o:t},Ei= exports.B ={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 xe=_vanilla.createStore.call(void 0, )(e=>({elementsConfig:null,updateUIMounted:r=>e({elementsConfig:r})})),bt= exports.C =()=>{let{elementsConfig:e}=xe.getState();if(!(e!==null))throw new A("privy_elements_not_ready","Privy Elements is not mounted")},Ri= exports.D =()=>{let{elementsConfig:e}=xe.getState();if(e===null)throw new A("privy_elements_not_ready","Privy Elements is not mounted");return e},Oi= exports.E =e=>{_react.useEffect.call(void 0, ()=>{let{updateUIMounted:r}=xe.getState();return r(e),()=>{r(null)}},[e])};function _t(e){return new Promise((r,t)=>{e({resolve:r,reject:t})})}function jr(e,r){return{resolve:t=>{r(),e.resolve(t)},reject:t=>{r(),e.reject(t)}}}function St(e,r,t){let o=setTimeout(()=>{e.reject(r())},t);return jr(e,()=>{clearTimeout(o)})}var qr=1e3*60*5,K=_zustand.create.call(void 0, )((e,r)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(t,o,n,c)=>_t(a=>{var m,y,f;let i=o.app.getConfig();if(!i)return a.reject(new A("privy_not_ready","Privy is not ready"));if(n!==null)return a.reject(new A("user_already_logged_in","User is already logged in"));if(bt(),r().loginPromiseResolvers!==null)return a.reject(new A("existing_login_flow_in_progress","A login flow is already in progress"));let d=gt(t.loginMethods);if(d.error)return a.reject(d.error);let s={loginMethods:d.value,appearance:{logo:(f=(y=(m=t.appearance)==null?void 0:m.logo)!=null?y:i.logo_url)!=null?f:void 0}},l=St(a,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new A("login_flow_timeout","The login flow timed out")),qr);c(),e({loginPromiseResolvers:l,privyElementsConfig:s,activeLoginMethod:We(s.loginMethods)})}),closeLoginFlow:()=>{var t;return(t=r().loginPromiseResolvers)==null||t.reject(new A("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:t,privyElementsConfig:o,updateActiveLoginMethod:n,closeLoginFlow:c}=r();if(!o){c();return}let a=We(o.loginMethods)===null;t===null||!a?c():n(null)},updateActiveLoginMethod:t=>e({activeLoginMethod:t})})),ji= exports.H =()=>K(e=>e.privyElementsConfig),Di= exports.I =()=>K(e=>e.openLoginFlow),Vi= exports.J =()=>{let e=K(t=>t.closeLoginFlow),r=ht();return _react.useCallback.call(void 0, t=>{r!=null&&r.requireUsersAcceptTerms&&!(t!=null&&t.termsReviewed)||e()},[e,r])},qi= exports.K =()=>K(e=>e.goBack),Ki= exports.L =()=>[K(e=>e.activeLoginMethod),K(e=>e.updateActiveLoginMethod)],Kr=e=>{let{loginPromiseResolvers:r}=K.getState();r==null||r.resolve(e)},Et=()=>Kr;var N=_react.createContext.call(void 0, null),re;function aa(e){return re?re.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 sa=e=>{Gr();let[r,t]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let T=_reactnative.AppState.addEventListener("change",jt=>{t(jt==="active")});return()=>{T.remove()}},[]),_react.useEffect.call(void 0, ()=>qe(e.config),[e.config]);let[o,n]=_react.useState.call(void 0, !1),[c,a]=_react.useState.call(void 0, null),[i,d]=_react.useState.call(void 0, "loading"),[s,l]=_react.useState.call(void 0, !1),[m,y]=_react.useState.call(void 0, {status:"disconnected",account:null}),[f,v]=_react.useState.call(void 0, {status:"disconnected"}),[h,u]=_react.useState.call(void 0, {status:"initial"}),[w,b]=_react.useState.call(void 0, {status:"initial"}),g=_react.useRef.call(void 0, {}),[S,_]=_react.useState.call(void 0, {status:"initial"}),[E,I]=_react.useState.call(void 0, {status:"initial"}),[L,J]=_react.useState.call(void 0, {status:"initial"}),[j,D]=_react.useState.call(void 0, {status:"initial"}),[B,G]=_react.useState.call(void 0, {status:"initial"}),M=_react.useRef.call(void 0, {}),Y=_react.useRef.call(void 0, {}),Se=_react.useRef.call(void 0, {}),Ee=_react.useRef.call(void 0, {}),Me=_react.useRef.call(void 0, {}),Te=_react.useRef.call(void 0, {}),Ut=Et(),ce=_react.useCallback.call(void 0, T=>{if(T){Ut(T),Ce(T),a(null);return}Ce(null),u({status:"initial"}),b({status:"initial"}),y({status:"disconnected",account:null})},[]),P=_react.useMemo.call(void 0, ()=>{let T=e.storage||be;return e.client?re=e.client:re=yt({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:T,baseUrl:e.baseUrl,logLevel:e.logLevel}),re.setCallbacks({setUser:ce,setIsReady:l}),re},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ce]),It=_react.useCallback.call(void 0, ()=>(ce(null),P.auth.logout()),[ce,P]),Lt=_react.useCallback.call(void 0, ()=>p(void 0,null,function*(){try{return yield P.getAccessToken()}catch(T){return console.debug(T),null}}),[P]),Mt=_react.useCallback.call(void 0, ()=>P.getIdentityToken(),[P]);ct({client:P,isUserInitialized:o,setIsUserInitialized:n,setError:a});let Tt=it({client:P,appId:e.appId,webViewState:i,createWalletCallbacks:Y,recoverWalletCallbacks:Se,setWalletRecoveryCallbacks:Ee,setRecoveryFlowState:_,wallet:m,setWallet:y}),Ft=Xe({client:P,webViewState:i,createSolanaWalletCallbacks:Me,recoverSolanaWalletCallbacks:Te,setSolanaRecoveryFlowState:I,solanaWallet:f,setSolanaWallet:v});lt({client:P,isUserInitialized:o,oAuthState:w,setOAuthState:b,oAuthCallbacks:M,recoveryFlowState:S,oAuthStateRef:g}),dt({client:P,webViewLoaded:i==="loaded",createWalletCallbacks:Y,recoverWalletCallbacks:Se,setWalletRecoveryCallbacks:Ee,recoveryFlowState:S,oAuthState:w,setRecoveryFlowState:_,setWallet:y,appStateVisible:r});let{customAuthStateIsSettled:Nt}=st({client:P,isReady:o});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(N.Provider,{value:{client:P,isReady:i!=="loading"&&o&&At(w)&&Nt,error:c,logout:It,getAccessToken:Lt,getIdentityToken:Mt,wallet:C(C({},m),Tt),solanaWallet:C(C({},f),Ft),oAuthState:w,oAuthCallbacks:M,recoveryFlowState:S,setRecoveryFlowState:_,solanaRecoveryFlowState:E,setSolanaRecoveryFlowState:I,createWalletCallbacks:Y,recoverWalletCallbacks:Se,setWalletRecoveryCallbacks:Ee,createSolanaWalletCallbacks:Me,recoverSolanaWalletCallbacks:Te,setOAuthState:b,siweState:L,setSiweState:J,otpState:h,setOtpState:u,passkeyState:j,setPasskeyState:D,farcasterState:B,setFarcasterState:G,oAuthStateRef:g}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Ke,{logLevel:e.logLevel,client:P,isClientReady:s,setWebViewState:d})))},Gr=()=>{if(_react.useContext.call(void 0, N))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var oe;try{oe=Kt("expo-apple-authentication")}catch(e){oe=void 0}function Ot(e){return p(this,null,function*(){if(!oe)throw new (0, _jssdkcore.PrivyClientError)({error:"The `expo-apple-authentication` package is required for Native Apple sign in to work.",code:"configuration_error"});try{return yield oe.signInAsync({state:e.state,requestedScopes:[oe.AppleAuthenticationScope.EMAIL,oe.AppleAuthenticationScope.FULL_NAME]})}catch(r){throw r instanceof Error&&"code"in r&&r.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:e.isLogin?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):r}})}var At=e=>e.status!=="loading",Ie=(e={})=>{let{oAuthState:r,setOAuthState:t,oAuthCallbacks:o,client:n,oAuthStateRef:c}=_react.useContext.call(void 0, N),a=Ge(),i=e.action?e.action==="login":!a;_react.useEffect.call(void 0, ()=>{o.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let d=_react.useCallback.call(void 0, l=>{var y;let m=x(l);return t({status:"error",error:m}),(y=e==null?void 0:e.onError)==null||y.call(e,m),m},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(h){return p(this,arguments,function*({provider:m,redirectUri:y,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:v}){var w,b,g;t({status:"loading"}),c.current={disableSignup:v};let u=ve();try{if(u&&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(!u&&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:S}=yield n.auth.oauth.generateURL(m,ne.createURL(y||"/")),_,E;if(_reactnative.Platform.OS==="ios"&&m==="apple"&&!f){let G=(w=new URL(S).searchParams.get("state"))!=null?w:"",M=yield Ot({state:G,isLogin:i});if(!M.authorizationCode||!M.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let Y=yield n.auth.oauth.loginWithCode(M.authorizationCode,M.state,m,"raw",v?"no-signup":"login-or-sign-up");_=Y.user,E=Y.is_new_user}else({user:_}=yield n.auth.oauth.linkWithCode(M.authorizationCode,M.state,m,"raw"));return(b=e==null?void 0:e.onSuccess)==null||b.call(e,_,E),t({status:"done"}),_!=null?_:void 0}let I=_reactnative.Platform.OS==="android"?S.replace("x.com","twitter.com"):S,L=yield de.openAuthSessionAsync(I);if(_reactnative.Platform.OS==="android")return;if(L.type!=="success")throw[de.WebBrowserResultType.CANCEL,de.WebBrowserResultType.DISMISS].includes(L.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:J}=ne.parse(L.url),{privy_oauth_state:j,privy_oauth_code:D}=J;if(!D||!j)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let B=X(),G=yield n.auth.oauth.loginWithCode(D,j,m,void 0,v?"no-signup":"login-or-sign-up",{embedded:B==null?void 0:B.embedded});_=G.user,E=G.is_new_user}else({user:_}=yield n.auth.oauth.linkWithCode(D,j,m));return(g=e==null?void 0:e.onSuccess)==null||g.call(e,_,E),yield ne.openURL(L.url.split("?")[0]),t({status:"done"}),_!=null?_:void 0}catch(S){d(S)}})},[n,t,d]),state:r}};function Sa(e){let{state:r,start:t}=Ie(W(C({},e),{action:"login"}));return{state:r,login:t}}function Ea(e){let{state:r,start:t}=Ie(W(C({},e),{action:"link"}));return{state:r,link:t}}function Ca(e){return Ie(e)}var pt=()=>{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 mt(e){return{get(r){return e.get(r.replaceAll(":","-"))},put(r,t){return e.put(r.replaceAll(":","-"),t)},del(r){return e.del(r.replaceAll(":","-"))},getKeys:()=>p(this,null,function*(){return[]})}}var be={get(e){return U.getItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,r){return U.setItemAsync(e,r,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return U.deleteItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>p(void 0,null,function*(){return[]})};var $r=e=>p(void 0,null,function*(){var o;let t=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(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return W(C({},t),{type:(o=t.type)!=null?o:"public-key",clientExtensionResults:{}})});var eo=e=>p(void 0,null,function*(){var o;let t=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return W(C({},t),{type:(o=t.type)!=null?o:"public-key",clientExtensionResults:{}})});function Na(e){var r;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:(r=e.authenticatorAttachment)!=null?r:"platform",response:{authenticator_data:e.response.authenticatorData,client_data_json:e.response.clientDataJSON,signature:e.response.signature,user_handle:e.response.userHandle}}}function ja(e){var r,t,o,n;return{challenge:e.challenge,rpId:e.rp_id,extensions:{appid:(r=e.extensions)==null?void 0:r.app_id,credProps:(t=e.extensions)==null?void 0:t.cred_props,hmacCreateSecret:(o=e.extensions)==null?void 0:o.hmac_create_secret},timeout:e.timeout,allowCredentials:(n=e.allow_credentials)==null?void 0:n.map(({id:c,type:a,transports:i})=>({id:c,type:a,transports:i})),userVerification:e.user_verification}}function Da(e){var r,t,o,n,c,a,i,d;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:(r=e.extensions)==null?void 0:r.hmac_create_secret,credProps:(o=(t=e.extensions)==null?void 0:t.cred_props)==null?void 0:o.rk,appid:(n=e.extensions)==null?void 0:n.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(c=e.authenticator_selection)==null?void 0:c.authenticator_attachment,residentKey:(a=e.authenticator_selection)==null?void 0:a.resident_key,userVerification:(i=e.authenticator_selection)==null?void 0:i.user_verification,requireResidentKey:(d=e.authenticator_selection)==null?void 0:d.require_resident_key}}}exports.a = C; exports.b = W; exports.c = to; exports.d = p; exports.e = X; exports.f = Ve; exports.g = io; exports.h = ve; exports.i = O; exports.j = Ge; exports.k = ke; exports.l = Ze; exports.m = x; exports.n = Bo; exports.o = $o; exports.p = cn; exports.q = Sa; exports.r = Ea; exports.s = Ca; exports.t = be; exports.u = yt; exports.v = ft; exports.w = vt; exports.x = ht; exports.y = A; exports.z = wt; exports.A = Si; exports.B = Ei; exports.C = bt; exports.D = Ri; exports.E = Oi; exports.F = _t; exports.G = St; exports.H = ji; exports.I = Di; exports.J = Vi; exports.K = qi; exports.L = Ki; exports.M = N; exports.N = aa; exports.O = sa; exports.P = $r; exports.Q = eo; exports.R = Na; exports.S = ja; exports.T = Da;
@@ -0,0 +1 @@
1
+ import{M as m,Q as he,R as ge,S as fe,a as U,b as de,d as l,e as b,f as ue,h as g,i as R,k as me,l as pe,m as f,n as x,o as F,p as T,w as W}from"./chunk-QSMSI5YY.js";import{useCallback as q,useContext as ze}from"react";import{PrivyClientError as Je}from"@privy-io/js-sdk-core";var Lt=e=>{let{client:t,setSiweState:i,siweState:n}=ze(m),o=q(a=>{var d;let c=f(a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=q(h=>l(void 0,[h],function*({wallet:a,from:{domain:c,uri:d}}){var u;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(u=e==null?void 0:e.onGenerateMessage)==null||u.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]),s=q(d=>l(void 0,[d],function*({signature:a,messageOverride:c}){var h;try{if(!g())throw new Je({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});i({status:"submitting-signature"});let{user:p}=yield t.auth.siwe.linkWithSiwe(a,void 0,c);return i({status:"done"}),(h=e==null?void 0:e.onSuccess)==null||h.call(e,p),p}catch(u){throw o(u)}}),[t,o,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:s,state:n}};import{useCallback as $,useContext as Qe}from"react";import{PrivyClientError as Xe}from"@privy-io/js-sdk-core";var Dt=e=>{let{client:t,setSiweState:i,siweState:n}=Qe(m),o=$(a=>{var d;let c=f(a);return i({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=$(h=>l(void 0,[h],function*({wallet:a,from:{domain:c,uri:d}}){var u;try{i({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return i({status:"awaiting-signature"}),(u=e==null?void 0:e.onGenerateMessage)==null||u.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:$(h=>l(void 0,[h],function*({signature:a,messageOverride:c,disableSignup:d}){var u;try{if(g())throw new Xe({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});i({status:"submitting-signature"});let y=b(),w=yield t.auth.siwe.loginWithSiwe(a,void 0,c,d?"no-signup":"login-or-sign-up",{embedded:y==null?void 0:y.embedded});return i({status:"done"}),(u=e==null?void 0:e.onSuccess)==null||u.call(e,w.user,w.is_new_user),w.user}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:n}};import{useCallback as ye}from"react";import{createSiwsMessage as Ye,PrivyClientError as Ze}from"@privy-io/js-sdk-core";var zt=()=>{let e=W(),t=ye(s=>l(void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:Ye({address:n,domain:o,uri:r,nonce:a})}}catch(a){throw f(a)}}),[e]),i=ye(a=>l(void 0,[a],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={}}){try{if(!g())throw new Ze({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});let{user:d}=yield e.auth.siws.link({signature:n,message:o,walletClientType:r,connectorType:s});return d}catch(c){throw f(c)}}),[e]);return{generateMessage:t,link:i}};import{useCallback as we}from"react";import{createSiwsMessage as er,PrivyClientError as rr}from"@privy-io/js-sdk-core";var to=()=>{let e=W(),t=we(s=>l(void 0,[s],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:er({address:n,domain:o,uri:r,nonce:a})}}catch(a){throw f(a)}}),[e]),i=we(c=>l(void 0,[c],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:s}={},disableSignup:a}){try{if(g())throw new rr({code:"attempted_login_with_siws_while_already_logged_in",error:"Already logged in, use `useLinkWithSiws` if you are trying to link a wallet to an existing account"});return(yield e.auth.siws.login({signature:n,message:o,walletClientType:r,connectorType:s,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw f(d)}}),[e]);return{generateMessage:t,login:i}};import{useCallback as ve,useContext as tr}from"react";import{PrivyClientError as or}from"@privy-io/js-sdk-core";var uo=e=>{let{client:t}=tr(m),i=ve(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkWallet:ve(r=>l(void 0,[r],function*({address:o}){var s;try{if(!g())throw new or({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let{user:c}=yield t.auth.siwe.unlinkWallet(o);return(s=e==null?void 0:e.onSuccess)==null||s.call(e,c),c}catch(a){throw i(a)}}),[t,i,e==null?void 0:e.onSuccess])}};import{useCallback as z,useContext as nr,useState as ir}from"react";import{PrivyClientError as ke}from"@privy-io/js-sdk-core";var vo=e=>{let[t,i]=ir(""),{client:n,otpState:o,setOtpState:r}=nr(m),s=z(d=>{var u;let h=f(d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=z(h=>l(void 0,[h],function*({email:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=z(u=>l(void 0,[u],function*({code:d,email:h}){var p;try{if(!g())throw new ke({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let w=h||t;if(!w)throw new ke({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});r({status:"submitting-code"});let{user:v}=yield n.auth.email.linkWithCode(w,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,v),v}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};import{useCallback as J,useContext as sr,useState as ar}from"react";import{PrivyClientError as Ce}from"@privy-io/js-sdk-core";var Uo=e=>{let[t,i]=ar(""),{client:n,otpState:o,setOtpState:r}=sr(m),s=J(d=>{var u;let h=f(d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=J(h=>l(void 0,[h],function*({email:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{email:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=J(p=>l(void 0,[p],function*({code:d,email:h,disableSignup:u}){var y;try{if(g())throw new Ce({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 v=h||t;if(!v)throw new Ce({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});r({status:"submitting-code"});let C=b(),k=yield n.auth.email.loginWithCode(v,d,u?"no-signup":"login-or-sign-up",{embedded:C==null?void 0:C.embedded});return r({status:"done"}),(y=e==null?void 0:e.onLoginSuccess)==null||y.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){throw s(w)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};import{useCallback as Q,useContext as cr,useState as lr}from"react";import{PrivyClientError as be}from"@privy-io/js-sdk-core";var Fo=e=>{let[t,i]=lr(""),{client:n,otpState:o,setOtpState:r}=cr(m),s=Q(d=>{var u;let h=f(d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=Q(h=>l(void 0,[h],function*({phone:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=Q(u=>l(void 0,[u],function*({code:d,phone:h}){var p;try{if(!g())throw new be({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(!(h||t))throw new be({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});r({status:"submitting-code"});let{user:v}=yield n.auth.phone.linkWithCode(h||t,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,v),v}catch(y){throw s(y)}}),[t,r,n,e,s]);return{sendCode:a,linkWithCode:c,state:o}};import{useCallback as X,useContext as dr,useState as ur}from"react";import{PrivyClientError as Se}from"@privy-io/js-sdk-core";var jo=e=>{let[t,i]=ur(""),{client:n,otpState:o,setOtpState:r}=dr(m),s=X(d=>{var u;let h=f(d);return r({status:"error",error:h}),(u=e==null?void 0:e.onError)==null||u.call(e,h),h},[e,r]),a=X(h=>l(void 0,[h],function*({phone:d}){var u;i(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(u=e==null?void 0:e.onSendCodeSuccess)==null||u.call(e,{phone:d}),p}catch(p){throw s(p)}}),[n,s,e,r]),c=X(p=>l(void 0,[p],function*({code:d,phone:h,disableSignup:u}){var y;try{if(g())throw new Se({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(!(h||t))throw new Se({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});r({status:"submitting-code"});let C=b(),k=yield n.auth.phone.loginWithCode(h||t,d,u?"no-signup":"login-or-sign-up",{embedded:C==null?void 0:C.embedded});return r({status:"done"}),(y=e==null?void 0:e.onLoginSuccess)==null||y.call(e,k.user,k.is_new_user),k==null?void 0:k.user}catch(w){throw s(w)}}),[t,r,n,e,s]);return{sendCode:a,loginWithCode:c,state:o}};import*as H from"expo-linking";import{useCallback as Y,useContext as mr,useRef as pr}from"react";import{PrivyClientError as M}from"@privy-io/js-sdk-core";var Zo=e=>{let{appState:t,getCurrentAppState:i}=F(),{client:n,farcasterState:o,setFarcasterState:r}=mr(m),s=pr(!1),a=Y(h=>{var p;let u=f(h);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError,r]),c=Y(()=>{s.current=!0},[]);return{linkWithFarcaster:Y((y,...w)=>l(void 0,[y,...w],function*({relyingParty:h,redirectUrl:u},p={pollAttempts:10,pollIntervalMs:1e3}){var v;try{let C=g();if(s.current=!1,!C)throw new M({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});r({status:"generating-uri"});let{connect_uri:k,channel_token:P}=yield n.auth.farcaster.initializeAuth({relyingParty:h,redirectUrl:H.createURL(u!=null?u:"/")});if(!k)throw new M({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!P)throw new M({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield H.openURL(k),r({status:"polling-status"});let _=0;for(;_<p.pollAttempts;){if(s.current)throw new M({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield x(p.pollIntervalMs);continue}let A=yield n.auth.farcaster.getFarcasterStatus({channel_token:P});if(A.state==="completed"){r({status:"submitting-token"});let{user:L}=yield n.auth.farcaster.link(U({channel_token:P},A));return r({status:"done"}),(v=e==null?void 0:e.onSuccess)==null||v.call(e,L),L}_++,yield x(p.pollIntervalMs)}throw new M({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(C){throw a(C)}}),[n,e==null?void 0:e.onSuccess,a,r]),state:o,cancel:c}};import{useCallback as We,useContext as hr}from"react";var sn=e=>{let{client:t}=hr(m),i=We(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkFarcaster:We(r=>l(void 0,[r],function*({fid:o}){var s;try{let{user:a}=yield t.auth.farcaster.unlink({fid:o});return(s=e==null?void 0:e.onSuccess)==null||s.call(e,a),a}catch(a){throw i(a)}}),[t,e==null?void 0:e.onSuccess,i])}};import*as N from"expo-linking";import{useCallback as re,useContext as gr,useRef as fr}from"react";import{PrivyClientError as O}from"@privy-io/js-sdk-core";var gn=e=>{let{appState:t,getCurrentAppState:i}=F(),{client:n,farcasterState:o,setFarcasterState:r}=gr(m),s=fr(!1),a=re(h=>{var p;let u=f(h);return r({status:"error",error:u}),(p=e==null?void 0:e.onError)==null||p.call(e,u),u},[e==null?void 0:e.onError,r]),c=re(()=>{s.current=!0},[]);return{loginWithFarcaster:re((w,...v)=>l(void 0,[w,...v],function*({relyingParty:h,redirectUrl:u,disableSignup:p},y={pollAttempts:10,pollIntervalMs:1e3}){var C;try{if(s.current=!1,g())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"});r({status:"generating-uri"});let{connect_uri:P,channel_token:_}=yield n.auth.farcaster.initializeAuth({relyingParty:h,redirectUrl:N.createURL(u!=null?u:"/")});if(!P)throw new O({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!_)throw new O({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield N.openURL(P),r({status:"polling-status"});let A=0;for(;A<y.pollAttempts;){if(s.current)throw new O({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&i()!=="active"){yield x(y.pollIntervalMs);continue}let L=yield n.auth.farcaster.getFarcasterStatus({channel_token:_});if(L.state==="completed"){r({status:"submitting-token"});let K=b(),j=yield n.auth.farcaster.authenticate(U({channel_token:_,mode:p?"no-signup":"login-or-sign-up"},L),{embedded:K==null?void 0:K.embedded});return r({status:"done"}),(C=e==null?void 0:e.onSuccess)==null||C.call(e,j.user,j.is_new_user),j.user}A++,yield x(y.pollIntervalMs)}throw new O({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(k){throw a(k)}}),[n,a,e==null?void 0:e.onSuccess,r,t]),state:o,cancel:c}};import{useCallback as Ee,useContext as yr}from"react";import{create as wr}from"zustand";import{PrivyClientError as vr}from"@privy-io/js-sdk-core";var te=wr(()=>({status:"initial"})),E=e=>te.setState(e,!0),kr=te.getState,En=()=>{let{client:e}=yr(m),t=te(),i=Ee(()=>l(void 0,null,function*(){try{E({status:"fetching-nonce"});let o=yield e.auth.farcasterV2.initializeAuth();return E({status:"awaiting-signature"}),o}catch(o){let r=f(o);throw E({status:"initial",error:r}),r}}),[e]),n=Ee(o=>l(void 0,null,function*(){let r=kr().status;try{if(g()){let d=new vr({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use a link helper if you are trying to link farcaster to an existing account"});throw E({status:r,error:d}),d}E({status:"submitting-signature"});let a=b(),c=yield e.auth.farcasterV2.authenticate(o,{embedded:a==null?void 0:a.embedded});return E({status:"done"}),setTimeout(()=>E({status:"initial"}),1500),{user:c.user}}catch(s){let a=f(s);throw E({status:r,error:a}),a}}),[e]);return{init:i,login:n,state:t}};import{useCallback as Pe,useContext as Cr}from"react";var Ln=e=>{let{client:t}=Cr(m),i=Pe(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkOAuth:Pe(s=>l(void 0,[s],function*({provider:o,subject:r}){var a;try{let{user:c}=yield t.auth.oauth.unlink(o,r);return(a=e==null?void 0:e.onSuccess)==null||a.call(e,c),c}catch(c){throw i(c)}}),[t,e==null?void 0:e.onSuccess,i])}};import{useContext as br,useEffect as Sr,useRef as Wr}from"react";var Fn=e=>{let{client:t}=br(m),i=Wr(e.onOAuthTokenGrant);i.current=e.onOAuthTokenGrant,Sr(()=>{let{unsubscribe:n}=t.addOAuthTokensListener(o=>{i.current(o)});return n},[t])};import{useContext as Er,useMemo as Pr}from"react";import{delegatedActions as _e}from"@privy-io/js-sdk-core";var Bn=()=>{let{client:e}=Er(m);return Pr(()=>({delegateWallet:_e.delegateWallet(e),revokeWallets:_e.revokeWallets(e)}),[e])};import{useContext as _r,useMemo as Ur}from"react";import{PrivyClientError as xe}from"@privy-io/js-sdk-core";var $n=()=>{let{client:e}=_r(m);return Ur(()=>({sendCode(n){return l(this,arguments,function*({newEmailAddress:i}){Ue(),yield e.auth.email.sendCode(i)})},updateEmail(o){return l(this,arguments,function*({newEmailAddress:i,code:n}){let{address:r}=Ue(),{user:s}=yield e.auth.email.updateEmail({oldEmailAddress:r,newEmailAddress:i,code:n});return s})}}),[e])};function Ue(){let t=xr().linked_accounts.find(i=>i.type==="email");if(!t)throw new xe({code:"attempted_update_email_without_a_linked_email",error:"Must have a linked email account already to update an email address. Use `useLinkEmail` to link an email account."});return t}function xr(){let e=g();if(!e)throw new xe({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}import{useContext as Ar,useMemo as Lr}from"react";import{PrivyClientError as Le}from"@privy-io/js-sdk-core";var ei=()=>{let{client:e}=Ar(m);return Lr(()=>({sendCode(n){return l(this,arguments,function*({newPhoneNumber:i}){Ae(),yield e.auth.phone.sendCode(i)})},updatePhone(o){return l(this,arguments,function*({newPhoneNumber:i,code:n}){let{phoneNumber:r}=Ae(),{user:s}=yield e.auth.phone.updatePhone({oldPhoneNumber:r,newPhoneNumber:i,code:n});return s})}}),[e])};function Ae(){let t=Mr().linked_accounts.find(i=>i.type==="phone");if(!t)throw new Le({code:"attempted_update_phone_without_a_linked_phone",error:"Must have a linked phone account already to update a phone number. Use `useLinkSMS` to link a phone number."});return t}function Mr(){let e=g();if(!e)throw new Le({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}import*as Re from"expo-linking";import{useCallback as Fr,useContext as Tr,useMemo as Hr}from"react";import{crossApp as Nr,PrivyClientError as Dr}from"@privy-io/js-sdk-core";import*as D from"expo-linking";import*as Oe from"expo-web-browser";import{Platform as Me}from"react-native";import{PrivyClientError as Ie}from"@privy-io/js-sdk-core";var S=e=>l(void 0,null,function*(){let t;Me.OS==="android"&&(t=Or());let i=yield Oe.openAuthSessionAsync(e),n;if(Me.OS==="android")n=yield t;else{if(i.type!=="success")throw new Ie({code:"oauth_session_failed",error:"OAuth session failed"});n=i.url}return Ir(n)});function Or(){let e;return new Promise((t,i)=>{e=D.addEventListener("url",({url:n})=>{n&&t(n)}),setTimeout(()=>{i(new Ie({code:"oauth_session_timeout",error:"OAuth session timed out"}))},Rr)}).finally(()=>{e==null||e.remove()})}function Ir(e){let{queryParams:t}=D.parse(e);return t}var Rr=2*60*1e3;var mi=()=>{let{client:e}=Tr(m),t=Hr(()=>Nr.loginWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{loginWithCrossApp:Fr(r=>l(void 0,[r],function*({appId:n,redirectUri:o}){if(g())throw new Dr({code:"attempted_login_with_cross_app_while_already_logged_in",error:"Already logged in, use `linkCrossAppAccount` if you are trying to link a cross app account to an existing account"});let{user:a}=yield t({providerAppId:n,redirectUrl:Re.createURL(o||"/")});return{user:a}}),[t])}};import*as Fe from"expo-linking";import{useCallback as Br,useContext as Gr,useMemo as Vr}from"react";import{crossApp as Kr,PrivyClientError as jr}from"@privy-io/js-sdk-core";var ki=()=>{let{client:e}=Gr(m),t=Vr(()=>Kr.linkWithCrossAppAuth({client:e,openAuthSession:S}),[e]);return{linkWithCrossApp:Br(r=>l(void 0,[r],function*({appId:n,redirectUri:o}){if(!g())throw new jr({code:"attempted_link_cross_app_before_logged_in",error:"Must be logged in to link a cross app account, Use `loginWithCrossAppAccount` to login with cross app"});return{user:yield t({providerAppId:n,redirectUrl:Fe.createURL(o||"/")})}}),[t])}};import*as He from"expo-linking";import{useContext as qr,useMemo as Te}from"react";import{crossApp as $r}from"@privy-io/js-sdk-core";var Ui=()=>{let{client:e}=qr(m),t=Te(()=>$r.wallet.signMessage({client:e,openAuthSession:S}),[e]);return Te(()=>({signMessage:({address:i,message:n,redirectUri:o="/"})=>t({user:g(),address:i,message:n,redirectUrl:He.createURL(o)})}),[t])};import*as De from"expo-linking";import{useContext as zr,useMemo as Ne}from"react";import{crossApp as Jr}from"@privy-io/js-sdk-core";var Ri=()=>{let{client:e}=zr(m),t=Ne(()=>Jr.wallet.signTypedData({client:e,openAuthSession:S}),[e]);return Ne(()=>({signTypedData:({address:i,typedData:n,redirectUri:o="/"})=>t({user:g(),address:i,typedData:n,redirectUrl:De.createURL(o)})}),[t])};import*as Ge from"expo-linking";import{useContext as Qr,useMemo as Be}from"react";import{crossApp as Xr}from"@privy-io/js-sdk-core";var Gi=()=>{let{client:e}=Qr(m),t=Be(()=>Xr.wallet.sendTransaction({client:e,openAuthSession:S}),[e]);return Be(()=>({sendTransaction:({address:i,transaction:n,redirectUri:o="/"})=>t({user:g(),address:i,transaction:n,redirectUrl:Ge.createURL(o)})}),[t])};import{useCallback as Yr,useContext as Zr}from"react";import{getUserEmbeddedEthereumWallet as et,getUserEmbeddedSolanaWallet as rt,PrivyClientError as I,throwIfInvalidRecoveryUpgradePath as tt}from"@privy-io/js-sdk-core";var Qi=()=>{let{client:e}=Zr(m);return{setRecovery:Yr(i=>l(void 0,null,function*(){var a;let n=g(),o=e.app.appId;if(!n)throw new I({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let r=(a=et(n))!=null?a:rt(n);if(!r)throw new I({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{r.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(r):r.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier"))}catch(c){throw new I({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}tt({currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:i.recoveryMethod});let s=yield ot({appId:o,client:e,user:n,primaryAccount:r,recoveryParams:i});try{let{user:c}=yield e.embeddedWallet.setRecovery(s);return{user:c}}catch(c){throw new I({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[e])}},ot=r=>l(void 0,[r],function*({appId:e,client:t,user:i,primaryAccount:n,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:n};case"user-passcode":return de(U({},o),{wallet:n});case"google-drive":{let s=yield T(t);return{recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:s}}case"icloud":{let{recoverySecret:s,iCloudRecordName:a}=yield me({appId:e,client:t,user:i});return{recoveryMethod:"icloud-native",recoverySecretOverride:s,iCloudRecordNameOverride:a,wallet:n}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:n,recoveryKey:o.recoveryKey};default:throw new I({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});import{useCallback as nt,useContext as it}from"react";import{getUserEmbeddedEthereumWallet as st,getUserEmbeddedSolanaWallet as at,PrivyClientError as B}from"@privy-io/js-sdk-core";var is=()=>{let{client:e}=it(m);return{recover:nt(i=>l(void 0,null,function*(){var d;let n=g();if(!n)throw new B({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(d=st(n))!=null?d:at(n);if(!o)throw new B({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let r,s,a,c;switch(i.recoveryMethod){case"user-passcode":s=i.password;break;case"google-drive":a=yield T(e);break;case"icloud":let{recoverySecret:h}=yield pe({client:e,walletAddress:o.address,chainType:o.chain_type});c=h;break;case"recovery-encryption-key":r=i.recoveryKey;break;case"privy":break;default:throw new B({code:"unsupported_recovery_method",error:`Unsupported recovery options ${i}`})}try{o.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(o,s,a,c,r):o.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",s,a,c))}catch(h){throw new B({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[e])}};import{useContext as ct,useEffect as oe}from"react";var ne=(e={})=>{let{wallet:t,createWalletCallbacks:i,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:o}=ct(m),{onCreateWalletSuccess:r,onCreateWalletError:s,onRecoverWalletError:a,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:d,onSetWalletRecoveryError:h}=e;return oe(()=>{i.current={onSuccess:r,onError:s}},[r,s]),oe(()=>{n.current={onSuccess:c,onError:a}},[c,a]),oe(()=>{o.current={onSuccess:d,onError:h}},[c,a]),t};import{useEffect as lt}from"react";var ps=({onStateChange:e})=>{let t=ne();return lt(()=>{e(t)},[t])};import{useContext as dt}from"react";var ys=()=>{let{getIdentityToken:e}=dt(m);return{getIdentityToken:e}};import{useCallback as Ve,useContext as ut}from"react";import{PrivyClientError as mt}from"@privy-io/js-sdk-core";var Es=e=>{let{client:t}=ut(m),i=Ve(o=>{var s;let r=f(o);return(s=e==null?void 0:e.onError)==null||s.call(e,r),r},[e==null?void 0:e.onError]);return{create:Ve(()=>l(void 0,null,function*(){var o;try{if(g())throw new mt({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let s=b(),a=yield t.auth.guest.create({embedded:s==null?void 0:s.embedded});return(o=e==null?void 0:e.onSuccess)==null||o.call(e,a.user,a.is_new_user),a.user}catch(r){throw i(r)}}),[t,i,e==null?void 0:e.onSuccess])}};import{useContext as pt,useEffect as ht}from"react";function Ls({onMfaRequired:e}){let{client:t}=pt(m);ht(()=>{function i(){return l(this,null,function*(){var o;let n=g();yield e((o=n==null?void 0:n.mfa_methods.map(({type:r})=>r))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",i),()=>{t.mfaPromises.off("mfaRequired",i)}},[t,e])}import{useCallback as G,useContext as gt}from"react";import{PrivyClientError as V}from"@privy-io/js-sdk-core";function Ns(){let{client:e}=gt(m),t=G(r=>l(this,null,function*(){var s,a;switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty||((a=(s=b())==null?void 0:s.mfa)==null?void 0:a.relyingParty)});return fe(c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),i=G(r=>l(this,null,function*(){var s,a,c,d,h,u,p;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new V({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||((a=(s=b())==null?void 0:s.mfa)==null?void 0:a.relyingParty)||""}),yield new Promise((C,k)=>{e.mfaPromises.submitPromise.current={resolve:C,reject:k}});break;case"passkey":if(typeof r.mfaCode=="string")throw new V({code:"invalid_passkey_response",error:"Invalid authenticator response"});let y=yield he(r.mfaCode),w=ge(y);(u=e.mfaPromises.rootPromise.current)==null||u.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||((h=(d=b())==null?void 0:d.mfa)==null?void 0:h.relyingParty)||"",mfaCode:w}),yield new Promise((C,k)=>{e.mfaPromises.submitPromise.current={resolve:C,reject:k}});break;default:let v=new V({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(p=e.mfaPromises.rootPromise.current)==null||p.reject(v),v}}),[e]),n=G(()=>l(this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=G(()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new V({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:i,prompt:n,cancel:o}}import{useCallback as ie,useContext as ft}from"react";function Ks(){let{client:e}=ft(m),t=ie(o=>l(this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),i=ie(o=>l(this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),n=ie(o=>l(this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[],removeForLogin:o.removeForLogin});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:t,submitMfaEnrollment:i,unenrollMfa:n}}import{useCallback as yt,useMemo as wt}from"react";import{getAllUserEmbeddedEthereumWallets as ae,getEntropyDetailsFromUser as Ke,getUserEmbeddedSolanaWallet as vt,PrivyClientError as je}from"@privy-io/js-sdk-core";var kt=()=>{let e=R(),t=W(),i=wt(()=>{let o=Ke(e);if(!o)return[];let r=ae(e),{entropyId:s,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:c,entropyId:s,entropyIdVerifier:a,onNeedsRecovery:d=>l(void 0,null,function*(){var h;yield(h=ue())==null?void 0:h(d)})})}))},[t,e]),n=yt((...r)=>l(void 0,[...r],function*({createAdditional:o=!1}={}){let{user:s}=yield t.user.get(),a=ae(s);if(!o&&a.length>0)throw new je({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=Ke(s);if(!c){let w=yield t.embeddedWallet.create({});return se(w.user,0),{user:w.user}}let{entropyId:d,entropyIdVerifier:h}=c;if(h==="solana-address-verifier"){let w=vt(s),v=yield t.embeddedWallet.create({solanaAccount:w});return se(v.user,0),{user:v.user}}let p=a.map(w=>w.wallet_index).reduce((w,v)=>Math.max(w,v),0)+1,y=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:p,entropyId:d,entropyIdVerifier:h});return se(y.user,p),{user:y.user}}),[t]);return{wallets:i,create:n}};function se(e,t){let i=ae(e).find(n=>n.wallet_index===t);if(!e||!i)throw new je({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}import{useContext as Ct,useEffect as qe}from"react";var bt=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:i,recoverSolanaWalletCallbacks:n}=Ct(m),{onCreateWalletSuccess:o,onCreateWalletError:r,onRecoverWalletError:s,onRecoverWalletSuccess:a}=e;return qe(()=>{i.current={onSuccess:o,onError:r}},[o,r]),qe(()=>{n.current={onSuccess:a,onError:s}},[a,s]),t};import{useCallback as St,useMemo as Wt}from"react";import{getAllUserEmbeddedBitcoinWallets as ce,getEntropyDetailsFromUser as $e,PrivyClientError as le}from"@privy-io/js-sdk-core";var Et=()=>{let e=R(),t=W(),i=Wt(()=>{let o=$e(e);if(!o)return[];let r=ce(e),{entropyId:s,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:s,entropyIdVerifier:a})}))},[t,e]),n=St(s=>l(void 0,[s],function*({chainType:o,createAdditional:r=!1}){let{user:a}=yield t.user.get(),c=$e(a);if(!c)throw new le({code:"embedded_wallet_creation_error",error:"No existing wallet for this user, create an Ethereum walet first to add a Bitcoin wallet"});let{entropyId:d,entropyIdVerifier:h}=c,u=ce(a).filter(v=>v.chain_type===o);if(!r&&u.length>0)throw new le({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let p=u.length===0?0:Math.max(...u.map(v=>v.wallet_index),0)+1,y=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:p,entropyId:d,entropyIdVerifier:h}),w=ce(y.user).find(v=>v.chain_type===o&&v.wallet_index===p);if(!y.user||!w)throw new le({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:y.user,provider:yield t.embeddedWallet.getBitcoinProvider({wallet:w,entropyId:d,entropyIdVerifier:h})}}),[t]);return{wallets:i,create:n}};export{Lt as a,Dt as b,zt as c,to as d,uo as e,vo as f,Uo as g,Fo as h,jo as i,Zo as j,sn as k,gn as l,En as m,Ln as n,Fn as o,Bn as p,$n as q,ei as r,mi as s,ki as t,Ui as u,Ri as v,Gi as w,Qi as x,is as y,ne as z,ps as A,ys as B,Es as C,Ls as D,Ns as E,Ks as F,kt as G,bt as H,Et as I};
@@ -0,0 +1 @@
1
+ var Dt=Object.defineProperty,Vt=Object.defineProperties;var qt=Object.getOwnPropertyDescriptors;var ue=Object.getOwnPropertySymbols;var Ne=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable;var Fe=(e,r,t)=>r in e?Dt(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,C=(e,r)=>{for(var t in r||(r={}))Ne.call(r,t)&&Fe(e,t,r[t]);if(ue)for(var t of ue(r))je.call(r,t)&&Fe(e,t,r[t]);return e},W=(e,r)=>Vt(e,qt(r));var Kt=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(r,t)=>(typeof require!="undefined"?require:r)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var to=(e,r)=>{var t={};for(var o in e)Ne.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(e!=null&&ue)for(var o of ue(e))r.indexOf(o)<0&&je.call(e,o)&&(t[o]=e[o]);return t};var p=(e,r,t)=>new Promise((o,n)=>{var c=d=>{try{i(t.next(d))}catch(s){n(s)}},a=d=>{try{i(t.throw(d))}catch(s){n(s)}},i=d=>d.done?o(d.value):Promise.resolve(d.value).then(c,a);i((t=t.apply(e,r)).next())});import{useEffect as Ht}from"react";import{create as zt}from"zustand";var De=zt(()=>({status:"disconnected"})),Ve=()=>De.getState().onNeedsRecovery,io=e=>{Ht(()=>{De.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};import{applicationId as Wt}from"expo-application";import*as ne from"expo-linking";import*as U from"expo-secure-store";import*as de from"expo-web-browser";import{useCallback as xt,useContext as Yr,useEffect as Xr}from"react";import{Platform as Ue}from"react-native";import{PrivyClientError as z}from"@privy-io/js-sdk-core";import le,{useState as k,useMemo as Hr,createContext as zr,useCallback as _e,useRef as H,useEffect as Ct,useContext as Jr}from"react";import{AppState as Pt,View as Br}from"react-native";import{PrivyClientError as kt}from"@privy-io/js-sdk-core";import Jt from"react-fast-compare";import{create as Bt}from"zustand";var pe=Bt(()=>{}),qe=e=>pe.setState(r=>Jt(r,e)?r:e),X=pe.getState;import Gt from"react";import{useCallback as Yt,useEffect as Xt,useRef as Qt}from"react";import{AppState as $t}from"react-native";import Zt from"react-native-webview";var Ke=({client:e,isClientReady:r,setWebViewState:t,logLevel:o})=>{let n=Qt(null);Xt(()=>$t.addEventListener("change",i=>p(void 0,null,function*(){n.current&&i==="active"&&((yield e.embeddedWallet.ping(500))||(n.current.reload(),t("reloading")))})).remove,[]);let c=Yt(a=>p(void 0,null,function*(){let{data:i}=a.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(i))}),[e]);return r?Gt.createElement(Zt,{style:{flex:1},ref:a=>{a&&(e.setMessagePoster(a),n.current=a)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:o==="DEBUG",onLoad:()=>t("loaded"),onError:console.error,onMessage:c}):null};import{useCallback as Pe,useEffect as Ye,useMemo as Ae}from"react";import{errorIndicatesRecoveryIsNeeded as or,getAllUserEmbeddedSolanaWallets as nr,getEntropyDetailsFromUser as ir,PrivyClientError as ie}from"@privy-io/js-sdk-core";import{getAllUserEmbeddedSolanaWallets as me,getEntropyDetailsFromAccount as He,getUserEmbeddedEthereumWallet as er,PrivyClientError as Q}from"@privy-io/js-sdk-core";function ze(c){return p(this,arguments,function*({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:t,setSolanaRecoveryFlowState:o,opts:n}){var a,i,d;r({status:"creating"});try{let{user:s}=yield e.user.get(),l=me(s),m=l[0],y=(a=er(s))!=null?a:void 0;if(n!=null&&n.recoveryMethod&&n.recoveryMethod!=="privy")throw new Q({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(n!=null&&n.createAdditional)&&m)throw new Q({code:"embedded_wallet_creation_error",error:"Solana wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let f,v;if(m){let u=y!=null?y:m,{entropyId:w,entropyIdVerifier:b}=He(u),g=Math.max(...l.map(E=>E.wallet_index),0)+1,S=yield e.embeddedWallet.add({chainType:"solana",entropyId:w,entropyIdVerifier:b,hdWalletIndex:g}),_=me(S.user).find(E=>E.wallet_index===g);if(!_)throw new Q({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});f=yield e.embeddedWallet.getSolanaProvider(_,w,b),v=S.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:y}),w=me(u.user).find(_=>_.wallet_index===0);if(!w)throw new Q({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=y!=null?y:w,{entropyId:g,entropyIdVerifier:S}=He(b);f=yield e.embeddedWallet.getSolanaProvider(w,g,S),v=u.user}let h=me(v)[0];if(!h)throw new Q({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(d=(i=t.current)==null?void 0:i.onSuccess)==null||d.call(i,f),r({status:"connected",publicKey:h.public_key}),o({status:"initial"}),f}catch(s){let l=s instanceof Error?s.message:"Error creating embedded wallet";throw r({status:"error",error:l}),o({status:"initial"}),new Q({code:"embedded_wallet_creation_error",error:l})}})}import{PrivyClientError as V}from"@privy-io/js-sdk-core";function ye(l){return p(this,arguments,function*({client:e,account:r,setWallet:t,recoverWalletCallbacks:o,recoveryMethod:n,setRecoveryFlowState:c,password:a,recoveryKey:i,recoveryToken:d,recoverySecretOverride:s}){var m,y,f,v;if(!r)throw new V({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(n){case"user-passcode":if(!a)throw new V({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!d)throw new V({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s)throw new V({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!i)throw new V({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}t({status:"connecting",account:r});try{let h=yield e.embeddedWallet.getProvider(r,a,d,s,i);return t({status:"connected",provider:h,account:r}),c({status:"initial"}),(y=(m=o.current)==null?void 0:m.onSuccess)==null||y.call(m,h),h}catch(h){t({status:"needs-recovery",account:r}),c({status:"initial"});let u=new V({code:"embedded_wallet_recovery_error",error:h instanceof Error?h.message:"Error recovering embedded wallet"});throw(v=(f=o.current)==null?void 0:f.onError)==null||v.call(f,u),u}})}function Je(i){return p(this,arguments,function*({client:e,account:r,entropyId:t,entropyIdVerifier:o,setSolanaWallet:n,recoverSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:a}){var d,s,l,m;n({status:"connecting"});try{let y=yield e.embeddedWallet.getSolanaProvider(r,t,o);return n({status:"connected",publicKey:y._publicKey}),a({status:"initial"}),(s=(d=c.current)==null?void 0:d.onSuccess)==null||s.call(d,y),y}catch(y){n({status:"needs-recovery"}),a({status:"initial"});let f=new V({code:"embedded_wallet_recovery_error",error:y instanceof Error?y.message:"Error recovering embedded wallet"});throw(m=(l=c.current)==null?void 0:l.onError)==null||m.call(l,f),f}})}import tr from"react-fast-compare";import{createStore as rr,useStore as Be}from"zustand";var fe=rr()(()=>({user:null}));function ve(){return fe.getState().user}function Ce(e){fe.setState(({user:r})=>tr(r,e)?{}:{user:e})}function O(){return Be(fe,e=>e.user)}function Ge(){return Be(fe,e=>!!e.user)}var Xe=({client:e,solanaWallet:r,setSolanaWallet:t,setSolanaRecoveryFlowState:o,webViewState:n,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a})=>{let i=O(),d=Ae(()=>nr(i),[i]),s=Ae(()=>d.length===0?null:ir(i),[i,d]),l=Ae(()=>{if(!s)return[];let{entropyId:v,entropyIdVerifier:h}=s,u=void 0,w=void 0,b=void 0;return d.map(g=>({address:g.address,publicKey:g.address,walletIndex:g.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(g,v,h,u,w,b,S=>p(void 0,null,function*(){var _;yield(_=Ve())==null?void 0:_(S)}))}))},[d,s,e]),m=Pe(v=>p(void 0,null,function*(){return yield ze({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:o,opts:v})}),[e,c]),y=Pe(()=>p(void 0,null,function*(){if(!s)throw new ie({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:v,entropyIdVerifier:h}=s;return Je({client:e,account:d[0],entropyId:v,entropyIdVerifier:h,setSolanaWallet:t,recoverSolanaWalletCallbacks:a,setSolanaRecoveryFlowState:o})}),[e,s,d,a,o,t]),f=Pe(()=>p(void 0,null,function*(){if(!s)throw t({status:"not-created"}),new ie({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});t(v=>v.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:v,entropyIdVerifier:h}=s,u=yield e.embeddedWallet.getSolanaProvider(d[0],v,h);return t({status:"connected",publicKey:d[0].public_key}),u}catch(v){throw or(v)?(t({status:"needs-recovery"}),new ie({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):v instanceof Error?(t({status:"error",error:v.message}),new ie({code:"unknown_embedded_wallet_error",error:v.message})):(t({status:"error",error:"Error loading embedded wallet"}),new ie({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[d,e,s,t]);return Ye(()=>{if(!i&&r.status!=="disconnected")return t({status:"disconnected"});n==="loaded"&&f().catch(()=>{})},[n,i]),Ye(()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:m,recover:y,getProvider:f,wallets:l}};import{useCallback as se,useEffect as rt,useMemo as fr}from"react";import{getUserEmbeddedEthereumWallet as vr,getUserEmbeddedSolanaWallet as ot,throwIfInvalidRecoveryUpgradePath as hr}from"@privy-io/js-sdk-core";import{errorIndicatesRecoveryIsNeeded as wr,PrivyClientError as R}from"@privy-io/js-sdk-core";import{getUserEmbeddedEthereumWallet as ar}from"@privy-io/js-sdk-core";import{PrivyClientError as $}from"@privy-io/js-sdk-core";function he(m){return p(this,arguments,function*({client:e,setWallet:r,createWalletCallbacks:t,recoveryMethod:o,setRecoveryFlowState:n,password:c,recoveryKey:a,recoveryToken:i,recoverySecretOverride:d,iCloudRecordNameOverride:s,solanaAccount:l}){var f,v;switch(o){case"user-passcode":if(!c)throw new $({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!a)throw new $({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!i)throw new $({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!d||!s)throw new $({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}r({status:"creating",account:null});let y=o==="icloud"?"icloud-native":o;try{let{user:h}=yield e.embeddedWallet.create({password:c,recoveryMethod:y,recoveryKey:a,recoveryToken:i,recoverySecretOverride:d,iCloudRecordNameOverride:s,solanaAccount:l}),u=ar(h);if(!u)throw new $({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let w=yield e.embeddedWallet.getProvider(u);return(v=(f=t.current)==null?void 0:f.onSuccess)==null||v.call(f,w),r({status:"connected",provider:w,account:u}),n({status:"initial"}),w}catch(h){let u=h instanceof Error?h.message:"Error creating embedded wallet";throw r({status:"error",error:u,account:null}),n({status:"initial"}),new $({code:"embedded_wallet_creation_error",error:u})}})}import{Platform as Qe}from"react-native";import{PrivyClientError as F}from"@privy-io/js-sdk-core";function $e(){return p(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 ke(o){return p(this,arguments,function*({user:e,appId:r,client:t}){var i;if(Qe.OS==="android")throw new F({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield $e(),c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(c==null?void 0:c.container_identifier))throw new F({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:d,iCloudRecordName:s}=yield n.writeRecoverySecretToICloud({containerId:c.container_identifier,appId:r,userId:e.id});return{recoverySecret:d,iCloudRecordName:s}}catch(d){if(d instanceof Error){let s=(i=d.message.split("Caused by: ")[1])!=null?i:"Error writing to iCloud";throw new F({code:"embedded_wallet_recovery_error",error:s})}throw new F({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Ze(o){return p(this,arguments,function*({walletAddress:e,client:r,chainType:t}){var s;if(Qe.OS==="android")throw new F({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield $e(),a=(yield r.recovery.getRecoveryKeyMaterial(e,t)).icloud_record_name;if(!a)throw new F({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let i=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios"),d=i==null?void 0:i.container_identifier;if(!d)throw new F({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:l}=yield n.readRecoverySecretFromICloud({containerId:d,recordName:a});return{recoverySecret:l}}catch(l){if(l instanceof Error){let m=(s=l.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new F({code:"embedded_wallet_recovery_error",error:m})}throw new F({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}import*as q from"expo-linking";import*as et from"expo-web-browser";import{Platform as tt}from"react-native";import{PrivyClientError as Z}from"@privy-io/js-sdk-core";import Ko from"react-fast-compare";import{PrivyApiError as sr,PrivyClientError as lr}from"@privy-io/js-sdk-core";function x(e){return e instanceof Error||e instanceof sr||e instanceof lr?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var Bo=e=>new Promise(r=>setTimeout(r,e));import{useEffect as dr,useRef as cr}from"react";import{AppState as Re}from"react-native";function $o(){let e=cr(Re.currentState);dr(()=>Re.addEventListener("change",o=>{e.current=o}).remove,[]);function r(){return Re.currentState}return{appState:e,getCurrentAppState:r}}function ae(n){return p(this,arguments,function*({provider:e,redirectUri:r,client:t,onError:o}){try{let c;switch(e){case"google-drive":{let{url:s}=yield t.recovery.auth.generateURL(q.createURL(r||"/"));c=s;break}default:throw new Z({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let a=yield et.openAuthSessionAsync(c);if(tt.OS==="android")return;if(a.type!=="success")throw new Z({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:i}=q.parse(a.url),d;switch(e){case"google-drive":{let{privy_oauth_state:s,privy_oauth_code:l}=i;if(!l||!s)throw new Z({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});d=yield we({oAuthCode:l,oAuthState:s,client:t});break}default:throw new Z({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return d}catch(c){throw o==null||o(x(c)),c}})}function we(o){return p(this,arguments,function*({oAuthCode:e,oAuthState:r,client:t}){let{access_token:n}=yield t.recovery.auth.authorize(e,r);if(!n)throw new Z({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return n})}var ur=2*60*1e3;function pr(e){let r;return new Promise((t,o)=>{r=q.addEventListener("url",c=>p(this,[c],function*({url:n}){if(!n)return;let{queryParams:a}=q.parse(n),{privy_oauth_state:i,privy_oauth_code:d}=a!=null?a:{};if(typeof d!="string"||typeof i!="string")return;let s=yield we({client:e,oAuthCode:d,oAuthState:i});t(s)})),setTimeout(()=>{o(new Z({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},ur)}).finally(()=>{r==null||r.remove()})}function cn(e){return p(this,null,function*(){let r;tt.OS==="android"&&(r=pr(e));let t=yield ae({provider:"google-drive",client:e});return t!=null?t:yield r})}import{getUserEmbeddedWallet as mr,PrivyClientError as yr}from"@privy-io/js-sdk-core";function ge(c){return p(this,arguments,function*({client:e,recoveryInput:r,setWalletRecoveryCallbacks:t,setRecoveryFlowState:o,setWallet:n}){var a,i,d,s;try{let{provider:l,user:m}=yield e.embeddedWallet.setRecovery(r),y=l,f=mr(m);return n({status:"connected",provider:y,account:f}),(i=(a=t.current)==null?void 0:a.onSuccess)==null||i.call(a,y),o({status:"initial"}),y}catch(l){let m=new yr({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(s=(d=t.current)==null?void 0:d.onError)==null||s.call(d,m),o({status:"initial"}),m}})}function nt(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 it=({client:e,appId:r,wallet:t,setWallet:o,setRecoveryFlowState:n,webViewState:c,createWalletCallbacks:a,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:d})=>{let s=O(),l=fr(()=>vr(s),[s]),m=se(u=>p(void 0,null,function*(){var L,J;if(l)throw new R({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:w}=yield e.user.get(),{password:b,recoveryMethod:g,recoveryKey:S}=nt(u),_,E,I;if(g==="google-drive"&&(_=yield ae({provider:g,client:e,onError:(L=a.current)==null?void 0:L.onError}),n({status:"creating-wallet"}),!_))return null;if(g==="icloud"){if(!w)throw new R({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:j,iCloudRecordName:D}=yield ke({user:w,appId:r,client:e});E=j,I=D}return yield he({client:e,setWallet:o,createWalletCallbacks:a,recoveryMethod:g,recoveryKey:S,setRecoveryFlowState:n,password:b,recoverySecretOverride:E,iCloudRecordNameOverride:I,solanaAccount:(J=ot(w))!=null?J:void 0})}),[e,l,s]),y=se(u=>p(void 0,null,function*(){var g;if(t.status!=="connected")throw new R({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!l)throw new R({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(ot(s))throw new R({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});hr({currentRecoveryMethod:l.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let w,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(w=yield ae({provider:u.recoveryMethod,client:e,onError:(g=d.current)==null?void 0:g.onError}),n({status:"upgrading-recovery"}),!w)return null;b={recoveryMethod:"google-drive",wallet:l,recoveryAccessToken:w};break;case"icloud":if(!s)throw new R({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:S,iCloudRecordName:_}=yield ke({user:s,appId:r,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:S,iCloudRecordNameOverride:_,wallet:l};break;default:throw new R({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ge({client:e,recoveryInput:b,setWalletRecoveryCallbacks:d,setRecoveryFlowState:n,setWallet:o})}),[e,l,t.status,s]),f=se(u=>p(void 0,null,function*(){return y({recoveryMethod:"user-passcode",password:u})}),[e,l,t.status]),v=se(u=>p(void 0,null,function*(){var E;if(!l)throw new R({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:w,recoveryMethod:b,recoveryKey:g}=nt(u),S,_;if(b==="google-drive"&&(S=yield ae({provider:b,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!S))return null;if(b==="icloud"){if(!s)throw new R({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:I}=yield Ze({client:e,walletAddress:l.address});_=I}return ye({client:e,account:l,setWallet:o,recoverWalletCallbacks:i,recoveryMethod:b,setRecoveryFlowState:n,recoveryKey:g,password:w,recoveryToken:S,recoverySecretOverride:_})}),[e,l]),h=se(()=>p(void 0,null,function*(){if(!l)throw o({status:"not-created",account:null}),new R({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(u=>u.status==="connected"?{status:"reconnecting",account:l}:{status:"connecting",account:l});try{let u=yield e.embeddedWallet.getProvider(l);return o({status:"connected",provider:u,account:l}),u}catch(u){throw wr(u)?(o({status:"needs-recovery",account:l}),new R({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):u instanceof Error?(o({status:"error",error:u.message,account:l}),new R({code:"unknown_embedded_wallet_error",error:u.message})):(o({status:"error",error:"Error loading embedded wallet",account:l}),new R({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,l]);return rt(()=>{if(!s&&t.status!=="disconnected")return o({status:"disconnected",account:null});c==="loaded"&&h().catch(()=>{})},[c,s,l]),rt(()=>{t.status==="error"&&t.error.includes("User must be logged in")&&h()},[t.status]),{create:m,recover:v,setPassword:f,setRecovery:y,getProvider:h}};import{useEffect as gr,useState as br}from"react";import{PrivyClientError as at}from"@privy-io/js-sdk-core";var st=({client:e,isReady:r})=>{let t=O(),o=pe(a=>a==null?void 0:a.customAuth),[n,c]=br({status:"initial"});return gr(()=>{(()=>p(void 0,null,function*(){if(!(o!=null&&o.enabled)){c({status:"not-enabled"});return}c({status:"loading"});let{getCustomAccessToken:i,isLoading:d}=o;if(!(!r||d))try{let s=yield i();if(!s&&t){yield e.auth.logout(),c({status:"done"});return}if(!s){c({status:"done"});return}if(t){c({status:"done"});return}let l=X();if(!(yield e.auth.customProvider.syncWithToken(s,{embedded:l==null?void 0:l.embedded}))){yield e.auth.logout(),c({status:"error",error:new at({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}c({status:"done"})}catch(s){if(console.log("Error syncing with custom auth provider",s),c({status:"error",error:s}),t)throw yield e.auth.logout(),new at({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:n,customAuthStateIsSettled:n.status!=="loading"&&n.status!=="initial"}};import*as ee from"expo-linking";import{useCallback as _r,useEffect as Sr}from"react";import{Platform as Er}from"react-native";var lt=({client:e,isUserInitialized:r,oAuthState:t,oAuthCallbacks:o,setOAuthState:n,recoveryFlowState:c,oAuthStateRef:a})=>{let i=ee.useURL(),d=_r(s=>{var m,y;let l=x(s);n({status:"error",error:l}),(y=(m=o.current).onError)==null||y.call(m,l)},[n]);return Sr(()=>{function s(){return p(this,null,function*(){var f,v;if(!i||t.status!=="loading"||c.status!=="initial")return;let{queryParams:l}=ee.parse(i),{privy_oauth_state:m,privy_oauth_code:y}=l;if(!y||!m){n({status:"done"});return}try{let h,u;if(ve())({user:h}=yield e.auth.oauth.linkWithCode(y,m));else{let b=X(),g=yield e.auth.oauth.loginWithCode(y,m,void 0,void 0,a.current.disableSignup?"no-signup":"login-or-sign-up",{embedded:b==null?void 0:b.embedded});h=g.user,u=!!g.is_new_user}return(v=(f=o.current).onSuccess)==null||v.call(f,h,u),a.current={},n({status:"done"}),yield ee.openURL(i.split("?")[0])}catch(h){a.current={},d(h)}})}Er.OS==="android"&&r&&s()},[i,r])};import*as te from"expo-linking";import{useCallback as Cr,useEffect as Pr,useMemo as Ar}from"react";import{Platform as kr}from"react-native";import{getUserEmbeddedSolanaWallet as Rr,getUserEmbeddedWallet as Or}from"@privy-io/js-sdk-core";var dt=({client:e,createWalletCallbacks:r,recoverWalletCallbacks:t,setWalletRecoveryCallbacks:o,recoveryFlowState:n,oAuthState:c,setRecoveryFlowState:a,setWallet:i,appStateVisible:d,webViewLoaded:s})=>{let l=te.useURL(),m=O(),y=Ar(()=>Or(m),[m]),f=Cr(v=>{var u,w,b,g;let h=x(v);n.status==="creating-wallet"?(w=(u=r.current).onError)==null||w.call(u,x(h)):(g=(b=t.current).onError)==null||g.call(b,x(h)),a({status:"initial"})},[n]);return Pr(()=>{function v(){return p(this,null,function*(){var b;if(!l&&n.status!=="initial"&&d&&f(new Error("Recovery OAuth session failed")),!l||n.status==="initial"||c.status!=="initial"||!d||!s)return;let{queryParams:h}=te.parse(l),{privy_oauth_state:u,privy_oauth_code:w}=h;if(!(!w||!u)){yield te.openURL(l.split("?")[0]);try{let g=yield we({oAuthCode:w,oAuthState:u,client:e});if(n.status==="creating-wallet"){let S=(b=Rr(m))!=null?b:void 0;yield he({client:e,setWallet:i,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:a,recoveryToken:g,solanaAccount:S})}else if(n.status==="upgrading-recovery"){if(!y)throw new Error("Embedded wallet not found");yield ge({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:y,recoveryAccessToken:g},setWalletRecoveryCallbacks:o,setRecoveryFlowState:a,setWallet:i})}else yield ye({client:e,account:y,setWallet:i,recoverWalletCallbacks:t,recoveryMethod:"google-drive",setRecoveryFlowState:a,recoveryToken:g})}catch(g){f(g)}}})}kr.OS==="android"&&v()},[l,n.status,d,s])};import{useEffect as Wr}from"react";var ct=({client:e,isUserInitialized:r,setIsUserInitialized:t,setError:o})=>{Wr(()=>{r||(()=>p(void 0,null,function*(){try{yield e.initialize()}catch(c){o(c instanceof Error?c:new Error(String(c)))}try{yield e.user.get()}catch(c){}finally{t(!0)}}))()},[e,r,o,t])};import{digest as Ur}from"expo-crypto";import Ir from"@privy-io/js-sdk-core";var ut={name:"@privy-io/expo",version:"0.49.2",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:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.46.0","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{expo:"52.0.37","expo-apple-authentication":"7.1.3","expo-application":"6.0.2","expo-clipboard":"7.0.1","expo-crypto":"14.0.2",react:"^18.3.1","react-native":"0.77.1","@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":"^13.1.0","react-test-renderer":"^18.3.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":"52.0.5","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.4","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},"expo-apple-authentication":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var yt=({appId:e,clientId:r,storage:t=be,supportedChains:o,baseUrl:n,logLevel:c})=>new Ir({appId:e,clientId:r,supportedChains:o,storage:mt(t),sdkVersion:`expo:${ut.version}`,nativeAppIdentifier:pt(),crypto:{digest:Ur},baseUrl:n,logLevel:c});import{useCallback as Dr}from"react";import{create as Vr}from"zustand";import{useMemo as Tr}from"react";import{useContext as Lr}from"react";var ft=()=>{let{isReady:e,logout:r,getAccessToken:t,error:o}=Lr(N);return{user:O(),isReady:e,error:o,logout:r,getAccessToken:t}};import{useContext as Mr}from"react";var vt=()=>{let{client:e}=Mr(N);return e};function ht(){let e=vt(),{isReady:r}=ft(),t=O();return Tr(()=>{var a,i;if(!r)return null;let o=e.app.getConfig();if(!o)return null;let n=(a=o.require_users_accept_terms)!=null?a:!1,c=(i=t==null?void 0:t.has_accepted_terms)!=null?i:!1;return{termsAndConditionsUrl:o.terms_and_conditions_url,privacyPolicyUrl:o.privacy_policy_url,requireUsersAcceptTerms:n&&!c}},[e.app,r,t==null?void 0:t.has_accepted_terms])}var A=class extends Error{constructor(t,o){super(o);this.code=t,this.error=o}},wt=class extends A{constructor(t){super("underlying_error",t instanceof Error?t.message:"An underlying error occurred");this.wrappedError=t}};var Oe={success:e=>({value:e}),error:e=>({error:e})};var gt=e=>{let r=Array.from(new Set(e));return r.length===0?Oe.error(new A("no_login_methods_available","No login methods available")):Oe.success(r)},We=e=>{let r=e.length,t=e.every(o=>o==="sms"||o==="email");return r<=2&&t?e[0]:null},Si=(e,r)=>{if(e.length!==2)return null;let[t,o]=e;return r===t?o:t},Ei={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 Fr}from"react";import{createStore as Nr}from"zustand/vanilla";var xe=Nr()(e=>({elementsConfig:null,updateUIMounted:r=>e({elementsConfig:r})})),bt=()=>{let{elementsConfig:e}=xe.getState();if(!(e!==null))throw new A("privy_elements_not_ready","Privy Elements is not mounted")},Ri=()=>{let{elementsConfig:e}=xe.getState();if(e===null)throw new A("privy_elements_not_ready","Privy Elements is not mounted");return e},Oi=e=>{Fr(()=>{let{updateUIMounted:r}=xe.getState();return r(e),()=>{r(null)}},[e])};function _t(e){return new Promise((r,t)=>{e({resolve:r,reject:t})})}function jr(e,r){return{resolve:t=>{r(),e.resolve(t)},reject:t=>{r(),e.reject(t)}}}function St(e,r,t){let o=setTimeout(()=>{e.reject(r())},t);return jr(e,()=>{clearTimeout(o)})}var qr=1e3*60*5,K=Vr()((e,r)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(t,o,n,c)=>_t(a=>{var m,y,f;let i=o.app.getConfig();if(!i)return a.reject(new A("privy_not_ready","Privy is not ready"));if(n!==null)return a.reject(new A("user_already_logged_in","User is already logged in"));if(bt(),r().loginPromiseResolvers!==null)return a.reject(new A("existing_login_flow_in_progress","A login flow is already in progress"));let d=gt(t.loginMethods);if(d.error)return a.reject(d.error);let s={loginMethods:d.value,appearance:{logo:(f=(y=(m=t.appearance)==null?void 0:m.logo)!=null?y:i.logo_url)!=null?f:void 0}},l=St(a,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new A("login_flow_timeout","The login flow timed out")),qr);c(),e({loginPromiseResolvers:l,privyElementsConfig:s,activeLoginMethod:We(s.loginMethods)})}),closeLoginFlow:()=>{var t;return(t=r().loginPromiseResolvers)==null||t.reject(new A("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:t,privyElementsConfig:o,updateActiveLoginMethod:n,closeLoginFlow:c}=r();if(!o){c();return}let a=We(o.loginMethods)===null;t===null||!a?c():n(null)},updateActiveLoginMethod:t=>e({activeLoginMethod:t})})),ji=()=>K(e=>e.privyElementsConfig),Di=()=>K(e=>e.openLoginFlow),Vi=()=>{let e=K(t=>t.closeLoginFlow),r=ht();return Dr(t=>{r!=null&&r.requireUsersAcceptTerms&&!(t!=null&&t.termsReviewed)||e()},[e,r])},qi=()=>K(e=>e.goBack),Ki=()=>[K(e=>e.activeLoginMethod),K(e=>e.updateActiveLoginMethod)],Kr=e=>{let{loginPromiseResolvers:r}=K.getState();r==null||r.resolve(e)},Et=()=>Kr;var N=zr(null),re;function aa(e){return re?re.getAccessToken():e!=null&&e.strict?Promise.reject(new kt({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 sa=e=>{Gr();let[r,t]=k(Pt.currentState==="active");Ct(()=>{let T=Pt.addEventListener("change",jt=>{t(jt==="active")});return()=>{T.remove()}},[]),Ct(()=>qe(e.config),[e.config]);let[o,n]=k(!1),[c,a]=k(null),[i,d]=k("loading"),[s,l]=k(!1),[m,y]=k({status:"disconnected",account:null}),[f,v]=k({status:"disconnected"}),[h,u]=k({status:"initial"}),[w,b]=k({status:"initial"}),g=H({}),[S,_]=k({status:"initial"}),[E,I]=k({status:"initial"}),[L,J]=k({status:"initial"}),[j,D]=k({status:"initial"}),[B,G]=k({status:"initial"}),M=H({}),Y=H({}),Se=H({}),Ee=H({}),Me=H({}),Te=H({}),Ut=Et(),ce=_e(T=>{if(T){Ut(T),Ce(T),a(null);return}Ce(null),u({status:"initial"}),b({status:"initial"}),y({status:"disconnected",account:null})},[]),P=Hr(()=>{let T=e.storage||be;return e.client?re=e.client:re=yt({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:T,baseUrl:e.baseUrl,logLevel:e.logLevel}),re.setCallbacks({setUser:ce,setIsReady:l}),re},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ce]),It=_e(()=>(ce(null),P.auth.logout()),[ce,P]),Lt=_e(()=>p(void 0,null,function*(){try{return yield P.getAccessToken()}catch(T){return console.debug(T),null}}),[P]),Mt=_e(()=>P.getIdentityToken(),[P]);ct({client:P,isUserInitialized:o,setIsUserInitialized:n,setError:a});let Tt=it({client:P,appId:e.appId,webViewState:i,createWalletCallbacks:Y,recoverWalletCallbacks:Se,setWalletRecoveryCallbacks:Ee,setRecoveryFlowState:_,wallet:m,setWallet:y}),Ft=Xe({client:P,webViewState:i,createSolanaWalletCallbacks:Me,recoverSolanaWalletCallbacks:Te,setSolanaRecoveryFlowState:I,solanaWallet:f,setSolanaWallet:v});lt({client:P,isUserInitialized:o,oAuthState:w,setOAuthState:b,oAuthCallbacks:M,recoveryFlowState:S,oAuthStateRef:g}),dt({client:P,webViewLoaded:i==="loaded",createWalletCallbacks:Y,recoverWalletCallbacks:Se,setWalletRecoveryCallbacks:Ee,recoveryFlowState:S,oAuthState:w,setRecoveryFlowState:_,setWallet:y,appStateVisible:r});let{customAuthStateIsSettled:Nt}=st({client:P,isReady:o});return le.createElement(le.Fragment,null,le.createElement(N.Provider,{value:{client:P,isReady:i!=="loading"&&o&&At(w)&&Nt,error:c,logout:It,getAccessToken:Lt,getIdentityToken:Mt,wallet:C(C({},m),Tt),solanaWallet:C(C({},f),Ft),oAuthState:w,oAuthCallbacks:M,recoveryFlowState:S,setRecoveryFlowState:_,solanaRecoveryFlowState:E,setSolanaRecoveryFlowState:I,createWalletCallbacks:Y,recoverWalletCallbacks:Se,setWalletRecoveryCallbacks:Ee,createSolanaWalletCallbacks:Me,recoverSolanaWalletCallbacks:Te,setOAuthState:b,siweState:L,setSiweState:J,otpState:h,setOtpState:u,passkeyState:j,setPasskeyState:D,farcasterState:B,setFarcasterState:G,oAuthStateRef:g}},e.children),le.createElement(Br,{style:{width:0,height:0,overflow:"hidden"}},le.createElement(Ke,{logLevel:e.logLevel,client:P,isClientReady:s,setWebViewState:d})))},Gr=()=>{if(Jr(N))throw new kt({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};import{PrivyClientError as Rt}from"@privy-io/js-sdk-core";var oe;try{oe=Kt("expo-apple-authentication")}catch(e){oe=void 0}function Ot(e){return p(this,null,function*(){if(!oe)throw new Rt({error:"The `expo-apple-authentication` package is required for Native Apple sign in to work.",code:"configuration_error"});try{return yield oe.signInAsync({state:e.state,requestedScopes:[oe.AppleAuthenticationScope.EMAIL,oe.AppleAuthenticationScope.FULL_NAME]})}catch(r){throw r instanceof Error&&"code"in r&&r.code==="ERR_REQUEST_CANCELED"?new Rt({error:"Apple login was cancelled",code:e.isLogin?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):r}})}var At=e=>e.status!=="loading",Ie=(e={})=>{let{oAuthState:r,setOAuthState:t,oAuthCallbacks:o,client:n,oAuthStateRef:c}=Yr(N),a=Ge(),i=e.action?e.action==="login":!a;Xr(()=>{o.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let d=xt(l=>{var y;let m=x(l);return t({status:"error",error:m}),(y=e==null?void 0:e.onError)==null||y.call(e,m),m},[e==null?void 0:e.onError]);return{start:xt(function(h){return p(this,arguments,function*({provider:m,redirectUri:y,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:v}){var w,b,g;t({status:"loading"}),c.current={disableSignup:v};let u=ve();try{if(u&&e.action==="login")throw new z({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!u&&e.action==="link")throw new z({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:S}=yield n.auth.oauth.generateURL(m,ne.createURL(y||"/")),_,E;if(Ue.OS==="ios"&&m==="apple"&&!f){let G=(w=new URL(S).searchParams.get("state"))!=null?w:"",M=yield Ot({state:G,isLogin:i});if(!M.authorizationCode||!M.state)throw new z({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let Y=yield n.auth.oauth.loginWithCode(M.authorizationCode,M.state,m,"raw",v?"no-signup":"login-or-sign-up");_=Y.user,E=Y.is_new_user}else({user:_}=yield n.auth.oauth.linkWithCode(M.authorizationCode,M.state,m,"raw"));return(b=e==null?void 0:e.onSuccess)==null||b.call(e,_,E),t({status:"done"}),_!=null?_:void 0}let I=Ue.OS==="android"?S.replace("x.com","twitter.com"):S,L=yield de.openAuthSessionAsync(I);if(Ue.OS==="android")return;if(L.type!=="success")throw[de.WebBrowserResultType.CANCEL,de.WebBrowserResultType.DISMISS].includes(L.type)?new z({error:"OAuth was cancelled",code:i?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new z({error:"OAuth session failed",code:i?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:J}=ne.parse(L.url),{privy_oauth_state:j,privy_oauth_code:D}=J;if(!D||!j)throw new z({error:"OAuth invalid credentials",code:i?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(i){let B=X(),G=yield n.auth.oauth.loginWithCode(D,j,m,void 0,v?"no-signup":"login-or-sign-up",{embedded:B==null?void 0:B.embedded});_=G.user,E=G.is_new_user}else({user:_}=yield n.auth.oauth.linkWithCode(D,j,m));return(g=e==null?void 0:e.onSuccess)==null||g.call(e,_,E),yield ne.openURL(L.url.split("?")[0]),t({status:"done"}),_!=null?_:void 0}catch(S){d(S)}})},[n,t,d]),state:r}};function Sa(e){let{state:r,start:t}=Ie(W(C({},e),{action:"login"}));return{state:r,login:t}}function Ea(e){let{state:r,start:t}=Ie(W(C({},e),{action:"link"}));return{state:r,link:t}}function Ca(e){return Ie(e)}var pt=()=>{if(typeof Wt!="string")throw new z({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 Wt};function mt(e){return{get(r){return e.get(r.replaceAll(":","-"))},put(r,t){return e.put(r.replaceAll(":","-"),t)},del(r){return e.del(r.replaceAll(":","-"))},getKeys:()=>p(this,null,function*(){return[]})}}var be={get(e){return U.getItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,r){return U.setItemAsync(e,r,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return U.deleteItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>p(void 0,null,function*(){return[]})};import{PrivyClientError as Qr}from"@privy-io/js-sdk-core";var $r=e=>p(void 0,null,function*(){var o;let t=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(!t)throw new Qr({code:"failed_to_create_passkey",error:"Could not create passkey"});return W(C({},t),{type:(o=t.type)!=null?o:"public-key",clientExtensionResults:{}})});import{PrivyClientError as Zr}from"@privy-io/js-sdk-core";var eo=e=>p(void 0,null,function*(){var o;let t=yield(yield import("react-native-passkeys")).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!t)throw new Zr({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return W(C({},t),{type:(o=t.type)!=null?o:"public-key",clientExtensionResults:{}})});function Na(e){var r;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:(r=e.authenticatorAttachment)!=null?r:"platform",response:{authenticator_data:e.response.authenticatorData,client_data_json:e.response.clientDataJSON,signature:e.response.signature,user_handle:e.response.userHandle}}}function ja(e){var r,t,o,n;return{challenge:e.challenge,rpId:e.rp_id,extensions:{appid:(r=e.extensions)==null?void 0:r.app_id,credProps:(t=e.extensions)==null?void 0:t.cred_props,hmacCreateSecret:(o=e.extensions)==null?void 0:o.hmac_create_secret},timeout:e.timeout,allowCredentials:(n=e.allow_credentials)==null?void 0:n.map(({id:c,type:a,transports:i})=>({id:c,type:a,transports:i})),userVerification:e.user_verification}}function Da(e){var r,t,o,n,c,a,i,d;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:(r=e.extensions)==null?void 0:r.hmac_create_secret,credProps:(o=(t=e.extensions)==null?void 0:t.cred_props)==null?void 0:o.rk,appid:(n=e.extensions)==null?void 0:n.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(c=e.authenticator_selection)==null?void 0:c.authenticator_attachment,residentKey:(a=e.authenticator_selection)==null?void 0:a.resident_key,userVerification:(i=e.authenticator_selection)==null?void 0:i.user_verification,requireResidentKey:(d=e.authenticator_selection)==null?void 0:d.require_resident_key}}}export{C as a,W as b,to as c,p as d,X as e,Ve as f,io as g,ve as h,O as i,Ge as j,ke as k,Ze as l,x as m,Bo as n,$o as o,cn as p,Sa as q,Ea as r,Ca as s,be as t,yt as u,ft as v,vt as w,ht as x,A as y,wt as z,Si as A,Ei as B,bt as C,Ri as D,Oi as E,_t as F,St as G,ji as H,Di as I,Vi as J,qi as K,Ki as L,N as M,aa as N,sa as O,$r as P,eo as Q,Na as R,ja as S,Da as T};