@privy-io/expo 0.52.4 → 0.52.6

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