@privy-io/expo 0.36.0 → 0.36.1

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 _chunk5TI6M4Z3js = require('./chunk-5TI6M4Z3.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var vr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),n=_react.useCallback.call(void 0, l=>{var u;let y=_chunk5TI6M4Z3js.i.call(void 0, l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, u=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[u],function*({signature:l,messageOverride:y}){var f;try{if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let s=yield c.auth.siwe.linkWithSiwe(l,void 0,y);return a({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,s),s}catch(s){throw n(s)}}),[r,c,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:o}};var Wr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),n=_react.useCallback.call(void 0, l=>{var u;let y=_chunk5TI6M4Z3js.i.call(void 0, l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({signature:l,messageOverride:y,disableSignup:u}){var s;try{if(r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let d=yield c.auth.siwe.loginWithSiwe(l,void 0,y,u?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,d.user,d.is_new_user),d.user}catch(d){throw n(d)}}),[r,c,n,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:o}};var Or=e=>{let{user:r,client:c}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),a=_react.useCallback.call(void 0, n=>{var i;let t=_chunk5TI6M4Z3js.i.call(void 0, n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[t],function*({address:n}){var i;try{if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let l=yield c.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw a(l)}}),[r,c,a,e==null?void 0:e.onSuccess])}};var Gr=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunk5TI6M4Z3js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, s=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[s],function*({code:u,email:f}){var d;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let v=f||r;if(!v)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.email.linkWithCode(v,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};var Jr=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunk5TI6M4Z3js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, d=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[d],function*({code:u,email:f,disableSignup:s}){var v;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=f||r;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.email.loginWithCode(k,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};var Zr=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunk5TI6M4Z3js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, s=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[s],function*({code:u,phone:f}){var d;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(f||r))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.phone.linkWithCode(f||r,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};var at=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunk5TI6M4Z3js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, d=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[d],function*({code:u,phone:f,disableSignup:s}){var v;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(f||r))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.phone.loginWithCode(f||r,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};var _expolinking = require('expo-linking'); var O = _interopRequireWildcard(_expolinking); var A = _interopRequireWildcard(_expolinking);var ht=e=>{let{appState:r,getCurrentAppState:c}=_chunk5TI6M4Z3js.k.call(void 0, ),{client:a,user:o,farcasterState:n,setFarcasterState:t}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),i=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, f=>{var d;let s=_chunk5TI6M4Z3js.i.call(void 0, f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...k)=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[v,...k],function*({relyingParty:f,redirectUrl:s},d={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(i.current=!1,!o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:b,channel_token:S}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:O.createURL(s!=null?s:"/")});if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield O.openURL(b),t({status:"polling-status"});let E=0;for(;E<d.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _chunk5TI6M4Z3js.j.call(void 0, d.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let P=yield a.auth.farcaster.link(_chunk5TI6M4Z3js.a.call(void 0, {channel_token:S},W));return t({status:"done"}),(w=e==null?void 0:e.onSuccess)==null||w.call(e,P),P}E++,yield _chunk5TI6M4Z3js.j.call(void 0, d.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw l(b)}}),[a,e==null?void 0:e.onSuccess,l,t,o]),state:n,cancel:y}};var kt=e=>{let{client:r}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),c=_react.useCallback.call(void 0, o=>{var t;let n=_chunk5TI6M4Z3js.i.call(void 0, o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, n=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[n],function*({fid:o}){var t;try{let i=yield r.auth.farcaster.unlink({fid:o});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw c(i)}}),[r,e==null?void 0:e.onSuccess,c])}};var Pt=e=>{let{appState:r,getCurrentAppState:c}=_chunk5TI6M4Z3js.k.call(void 0, ),{client:a,user:o,farcasterState:n,setFarcasterState:t}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),i=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, f=>{var d;let s=_chunk5TI6M4Z3js.i.call(void 0, f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (k,...w)=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[k,...w],function*({relyingParty:f,redirectUrl:s,disableSignup:d},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(i.current=!1,o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:S,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:A.createURL(s!=null?s:"/")});if(!S)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 A.openURL(S),t({status:"polling-status"});let W=0;for(;W<v.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _chunk5TI6M4Z3js.j.call(void 0, v.pollIntervalMs);continue}let P=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(P.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(_chunk5TI6M4Z3js.a.call(void 0, {channel_token:E,mode:d?"no-signup":"login-or-sign-up"},P));return t({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,F.user,F.is_new_user),F.user}W++,yield _chunk5TI6M4Z3js.j.call(void 0, v.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(S){throw l(S)}}),[a,l,e==null?void 0:e.onSuccess,t,o,r]),state:n,cancel:y}};var Ot=e=>{let{client:r}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),c=_react.useCallback.call(void 0, o=>{var t;let n=_chunk5TI6M4Z3js.i.call(void 0, o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[t],function*({provider:o,subject:n}){var i;try{let l=yield r.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw c(l)}}),[r,e==null?void 0:e.onSuccess,c])}};var Tt=e=>{let{client:r}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),c=_react.useRef.call(void 0, e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:a}=r.addOAuthTokensListener(o=>{c.current(o)});return a},[r])};var Kt=()=>{let{user:e,client:r}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F);return{setRecovery:_react.useCallback.call(void 0, a=>_chunk5TI6M4Z3js.d.call(void 0, void 0,null,function*(){var i;let o=r.app.appId;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?i:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(l){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:o,client:r,user:e,primaryAccount:n,recoveryParams:a});try{let{user:l}=yield r.embeddedWallet.setRecovery(t);return{user:l}}catch(l){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"})}}),[r,e])}},Ve=n=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[n],function*({appId:e,client:r,user:c,primaryAccount:a,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:a};case"user-passcode":return _chunk5TI6M4Z3js.b.call(void 0, _chunk5TI6M4Z3js.a.call(void 0, {},o),{wallet:a});case"google-drive":{let t=yield _chunk5TI6M4Z3js.l.call(void 0, r);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:i}=yield _chunk5TI6M4Z3js.g.call(void 0, {appId:e,client:r,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:i,wallet:a}}default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Yt=()=>{let{user:e,client:r}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F);return{recover:_react.useCallback.call(void 0, a=>_chunk5TI6M4Z3js.d.call(void 0, void 0,null,function*(){var l;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,t,i;switch(a.recoveryMethod){case"user-passcode":n=a.password;break;case"google-drive":t=yield _chunk5TI6M4Z3js.l.call(void 0, r);break;case"icloud":let{recoverySecret:y}=yield _chunk5TI6M4Z3js.h.call(void 0, {client:r,walletAddress:o.address,chainType:o.chain_type});i=y;break}try{o.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(o,n,t,i):o.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",n,t,i))}catch(y){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[r,e])}};var z=(e={})=>{let{wallet:r,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),{onCreateWalletSuccess:n,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:y,onSetWalletRecoveryError:u}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:n,onError:t}},[n,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:l,onError:i}},[l,i]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:y,onError:u}},[l,i]),r};var ao=({onStateChange:e})=>{let r=z();return _react.useEffect.call(void 0, ()=>{e(r)},[r])};var uo=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F);return{getIdentityToken:e}};var wo=e=>{let{user:r,client:c}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),a=_react.useCallback.call(void 0, n=>{var i;let t=_chunk5TI6M4Z3js.i.call(void 0, n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunk5TI6M4Z3js.d.call(void 0, void 0,null,function*(){var n;try{if(r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield c.auth.guest.create();return(n=e==null?void 0:e.onSuccess)==null||n.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,r,e==null?void 0:e.onSuccess])}};function Eo({onMfaRequired:e}){let{client:r,user:c}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F);_react.useEffect.call(void 0, ()=>{function a(){return _chunk5TI6M4Z3js.d.call(void 0, this,null,function*(){var o;yield e((o=c==null?void 0:c.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return r.mfaPromises.on("mfaRequired",a),()=>{r.mfaPromises.off("mfaRequired",a)}},[r,c,e])}function Uo(){let{client:e,mfaConfig:r}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),c=_react.useCallback.call(void 0, n=>_chunk5TI6M4Z3js.d.call(void 0, this,null,function*(){switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:t}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||(r==null?void 0:r.relyingParty)});return _chunk5TI6M4Z3js.L.call(void 0, t);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e,r==null?void 0:r.relyingParty]),a=_react.useCallback.call(void 0, n=>_chunk5TI6M4Z3js.d.call(void 0, this,null,function*(){var t,i,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||(r==null?void 0:r.relyingParty)||""}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;case"passkey":if(typeof n.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let y=yield _chunk5TI6M4Z3js.J.call(void 0, n.mfaCode),u=_chunk5TI6M4Z3js.K.call(void 0, y);(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||"",mfaCode:u}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;default:let f=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(f),f}}),[e,r==null?void 0:r.relyingParty]),o=_react.useCallback.call(void 0, ()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:c,submit:a,cancel:o}}function Ro(){let{client:e}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),r=_react.useCallback.call(void 0, o=>_chunk5TI6M4Z3js.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.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, o=>_chunk5TI6M4Z3js.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.mfaMethod}`)}}),[e]),a=_react.useCallback.call(void 0, o=>_chunk5TI6M4Z3js.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:[]});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:r,submitMfaEnrollment:c,unenrollMfa:a}}var cr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:o,onError:n}},[o,n]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:i,onError:t}},[i,t]),r};var Y=()=>{let{user:e,isReady:r,logout:c,getAccessToken:a,error:o}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F);return{user:e,isReady:r,error:o,logout:c,getAccessToken:a}};var Z=()=>{let{client:e}=_react.useContext.call(void 0, _chunk5TI6M4Z3js.F);return e};var hr=()=>{let{user:e}=Y(),r=Z(),c=_react.useMemo.call(void 0, ()=>{var l;let o=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:t,entropyIdVerifier:i}=_chunk5TI6M4Z3js.f.call(void 0, o);return n.map(y=>({address:y.address,walletIndex:y.wallet_index,publicKey:y.public_key,chainType:y.chain_type,getProvider:()=>r.embeddedWallet.getBitcoinProvider({wallet:y,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=_react.useCallback.call(void 0, t=>_chunk5TI6M4Z3js.d.call(void 0, void 0,[t],function*({chainType:o,createAdditional:n=!1}){var k;let{user:i}=yield r.user.get(),l=(k=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, i))!=null?k:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, i);if(!l)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:y,entropyIdVerifier:u}=_chunk5TI6M4Z3js.f.call(void 0, l),f=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, i).filter(w=>w.chain_type===o);if(!n&&f.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let s=f.length===0?0:Math.max(...f.map(w=>w.wallet_index),0)+1,d=yield r.embeddedWallet.add({chainType:o,hdWalletIndex:s,entropyId:y,entropyIdVerifier:u}),v=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, d.user).find(w=>w.chain_type===o&&w.wallet_index===s);if(!d.user||!v)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:d.user,provider:yield r.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:y,entropyIdVerifier:u})}}),[r]);return{wallets:c,create:a}};exports.a = vr; exports.b = Wr; exports.c = Or; exports.d = Gr; exports.e = Jr; exports.f = Zr; exports.g = at; exports.h = ht; exports.i = kt; exports.j = Pt; exports.k = Ot; exports.l = Tt; exports.m = Kt; exports.n = Yt; exports.o = z; exports.p = ao; exports.q = uo; exports.r = wo; exports.s = Eo; exports.t = Uo; exports.u = Ro; exports.v = cr; exports.w = Y; exports.x = Z; exports.y = hr;
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 _chunkN6VJQX77js = require('./chunk-N6VJQX77.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var vr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),n=_react.useCallback.call(void 0, l=>{var u;let y=_chunkN6VJQX77js.i.call(void 0, l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, u=>_chunkN6VJQX77js.d.call(void 0, void 0,[u],function*({signature:l,messageOverride:y}){var f;try{if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let s=yield c.auth.siwe.linkWithSiwe(l,void 0,y);return a({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,s),s}catch(s){throw n(s)}}),[r,c,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:o}};var Wr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),n=_react.useCallback.call(void 0, l=>{var u;let y=_chunkN6VJQX77js.i.call(void 0, l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({signature:l,messageOverride:y,disableSignup:u}){var s;try{if(r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let d=yield c.auth.siwe.loginWithSiwe(l,void 0,y,u?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,d.user,d.is_new_user),d.user}catch(d){throw n(d)}}),[r,c,n,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:o}};var Or=e=>{let{user:r,client:c}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),a=_react.useCallback.call(void 0, n=>{var i;let t=_chunkN6VJQX77js.i.call(void 0, n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunkN6VJQX77js.d.call(void 0, void 0,[t],function*({address:n}){var i;try{if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let l=yield c.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw a(l)}}),[r,c,a,e==null?void 0:e.onSuccess])}};var Gr=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunkN6VJQX77js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, s=>_chunkN6VJQX77js.d.call(void 0, void 0,[s],function*({code:u,email:f}){var d;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let v=f||r;if(!v)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.email.linkWithCode(v,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};var Jr=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunkN6VJQX77js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, d=>_chunkN6VJQX77js.d.call(void 0, void 0,[d],function*({code:u,email:f,disableSignup:s}){var v;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let k=f||r;if(!k)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.email.loginWithCode(k,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};var Zr=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunkN6VJQX77js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, s=>_chunkN6VJQX77js.d.call(void 0, void 0,[s],function*({code:u,phone:f}){var d;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(f||r))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.phone.linkWithCode(f||r,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};var at=e=>{let[r,c]=_react.useState.call(void 0, ""),{user:a,client:o,otpState:n,setOtpState:t}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),i=_react.useCallback.call(void 0, u=>{var s;let f=_chunkN6VJQX77js.i.call(void 0, u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, f=>_chunkN6VJQX77js.d.call(void 0, void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=_react.useCallback.call(void 0, d=>_chunkN6VJQX77js.d.call(void 0, void 0,[d],function*({code:u,phone:f,disableSignup:s}){var v;try{if(a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(f||r))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.phone.loginWithCode(f||r,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};var _expolinking = require('expo-linking'); var O = _interopRequireWildcard(_expolinking); var A = _interopRequireWildcard(_expolinking);var ht=e=>{let{appState:r,getCurrentAppState:c}=_chunkN6VJQX77js.k.call(void 0, ),{client:a,user:o,farcasterState:n,setFarcasterState:t}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),i=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, f=>{var d;let s=_chunkN6VJQX77js.i.call(void 0, f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...k)=>_chunkN6VJQX77js.d.call(void 0, void 0,[v,...k],function*({relyingParty:f,redirectUrl:s},d={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(i.current=!1,!o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:b,channel_token:S}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:O.createURL(s!=null?s:"/")});if(!b)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!S)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield O.openURL(b),t({status:"polling-status"});let E=0;for(;E<d.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _chunkN6VJQX77js.j.call(void 0, d.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let P=yield a.auth.farcaster.link(_chunkN6VJQX77js.a.call(void 0, {channel_token:S},W));return t({status:"done"}),(w=e==null?void 0:e.onSuccess)==null||w.call(e,P),P}E++,yield _chunkN6VJQX77js.j.call(void 0, d.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw l(b)}}),[a,e==null?void 0:e.onSuccess,l,t,o]),state:n,cancel:y}};var kt=e=>{let{client:r}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),c=_react.useCallback.call(void 0, o=>{var t;let n=_chunkN6VJQX77js.i.call(void 0, o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, n=>_chunkN6VJQX77js.d.call(void 0, void 0,[n],function*({fid:o}){var t;try{let i=yield r.auth.farcaster.unlink({fid:o});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw c(i)}}),[r,e==null?void 0:e.onSuccess,c])}};var Pt=e=>{let{appState:r,getCurrentAppState:c}=_chunkN6VJQX77js.k.call(void 0, ),{client:a,user:o,farcasterState:n,setFarcasterState:t}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),i=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, f=>{var d;let s=_chunkN6VJQX77js.i.call(void 0, f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (k,...w)=>_chunkN6VJQX77js.d.call(void 0, void 0,[k,...w],function*({relyingParty:f,redirectUrl:s,disableSignup:d},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(i.current=!1,o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:S,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:A.createURL(s!=null?s:"/")});if(!S)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 A.openURL(S),t({status:"polling-status"});let W=0;for(;W<v.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _chunkN6VJQX77js.j.call(void 0, v.pollIntervalMs);continue}let P=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(P.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(_chunkN6VJQX77js.a.call(void 0, {channel_token:E,mode:d?"no-signup":"login-or-sign-up"},P));return t({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,F.user,F.is_new_user),F.user}W++,yield _chunkN6VJQX77js.j.call(void 0, v.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(S){throw l(S)}}),[a,l,e==null?void 0:e.onSuccess,t,o,r]),state:n,cancel:y}};var Ot=e=>{let{client:r}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),c=_react.useCallback.call(void 0, o=>{var t;let n=_chunkN6VJQX77js.i.call(void 0, o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunkN6VJQX77js.d.call(void 0, void 0,[t],function*({provider:o,subject:n}){var i;try{let l=yield r.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw c(l)}}),[r,e==null?void 0:e.onSuccess,c])}};var Tt=e=>{let{client:r}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),c=_react.useRef.call(void 0, e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:a}=r.addOAuthTokensListener(o=>{c.current(o)});return a},[r])};var Kt=()=>{let{user:e,client:r}=_react.useContext.call(void 0, _chunkN6VJQX77js.F);return{setRecovery:_react.useCallback.call(void 0, a=>_chunkN6VJQX77js.d.call(void 0, void 0,null,function*(){var i;let o=r.app.appId;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?i:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(l){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:o,client:r,user:e,primaryAccount:n,recoveryParams:a});try{let{user:l}=yield r.embeddedWallet.setRecovery(t);return{user:l}}catch(l){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"})}}),[r,e])}},Ve=n=>_chunkN6VJQX77js.d.call(void 0, void 0,[n],function*({appId:e,client:r,user:c,primaryAccount:a,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:a};case"user-passcode":return _chunkN6VJQX77js.b.call(void 0, _chunkN6VJQX77js.a.call(void 0, {},o),{wallet:a});case"google-drive":{let t=yield _chunkN6VJQX77js.l.call(void 0, r);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:i}=yield _chunkN6VJQX77js.g.call(void 0, {appId:e,client:r,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:i,wallet:a}}default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Yt=()=>{let{user:e,client:r}=_react.useContext.call(void 0, _chunkN6VJQX77js.F);return{recover:_react.useCallback.call(void 0, a=>_chunkN6VJQX77js.d.call(void 0, void 0,null,function*(){var l;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,t,i;switch(a.recoveryMethod){case"user-passcode":n=a.password;break;case"google-drive":t=yield _chunkN6VJQX77js.l.call(void 0, r);break;case"icloud":let{recoverySecret:y}=yield _chunkN6VJQX77js.h.call(void 0, {client:r,walletAddress:o.address,chainType:o.chain_type});i=y;break}try{o.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(o,n,t,i):o.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",n,t,i))}catch(y){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[r,e])}};var z=(e={})=>{let{wallet:r,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),{onCreateWalletSuccess:n,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:y,onSetWalletRecoveryError:u}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:n,onError:t}},[n,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:l,onError:i}},[l,i]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:y,onError:u}},[l,i]),r};var ao=({onStateChange:e})=>{let r=z();return _react.useEffect.call(void 0, ()=>{e(r)},[r])};var uo=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkN6VJQX77js.F);return{getIdentityToken:e}};var wo=e=>{let{user:r,client:c}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),a=_react.useCallback.call(void 0, n=>{var i;let t=_chunkN6VJQX77js.i.call(void 0, n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkN6VJQX77js.d.call(void 0, void 0,null,function*(){var n;try{if(r)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield c.auth.guest.create();return(n=e==null?void 0:e.onSuccess)==null||n.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,r,e==null?void 0:e.onSuccess])}};function Eo({onMfaRequired:e}){let{client:r,user:c}=_react.useContext.call(void 0, _chunkN6VJQX77js.F);_react.useEffect.call(void 0, ()=>{function a(){return _chunkN6VJQX77js.d.call(void 0, this,null,function*(){var o;yield e((o=c==null?void 0:c.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return r.mfaPromises.on("mfaRequired",a),()=>{r.mfaPromises.off("mfaRequired",a)}},[r,c,e])}function Uo(){let{client:e,mfaConfig:r}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),c=_react.useCallback.call(void 0, n=>_chunkN6VJQX77js.d.call(void 0, this,null,function*(){switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:t}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||(r==null?void 0:r.relyingParty)});return _chunkN6VJQX77js.L.call(void 0, t);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e,r==null?void 0:r.relyingParty]),a=_react.useCallback.call(void 0, n=>_chunkN6VJQX77js.d.call(void 0, this,null,function*(){var t,i,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||(r==null?void 0:r.relyingParty)||""}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;case"passkey":if(typeof n.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let y=yield _chunkN6VJQX77js.J.call(void 0, n.mfaCode),u=_chunkN6VJQX77js.K.call(void 0, y);(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||"",mfaCode:u}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;default:let f=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(f),f}}),[e,r==null?void 0:r.relyingParty]),o=_react.useCallback.call(void 0, ()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:c,submit:a,cancel:o}}function Ro(){let{client:e}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),r=_react.useCallback.call(void 0, o=>_chunkN6VJQX77js.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.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, o=>_chunkN6VJQX77js.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.mfaMethod}`)}}),[e]),a=_react.useCallback.call(void 0, o=>_chunkN6VJQX77js.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:[]});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:r,submitMfaEnrollment:c,unenrollMfa:a}}var cr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunkN6VJQX77js.F),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:o,onError:n}},[o,n]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:i,onError:t}},[i,t]),r};var Y=()=>{let{user:e,isReady:r,logout:c,getAccessToken:a,error:o}=_react.useContext.call(void 0, _chunkN6VJQX77js.F);return{user:e,isReady:r,error:o,logout:c,getAccessToken:a}};var Z=()=>{let{client:e}=_react.useContext.call(void 0, _chunkN6VJQX77js.F);return e};var hr=()=>{let{user:e}=Y(),r=Z(),c=_react.useMemo.call(void 0, ()=>{var l;let o=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:t,entropyIdVerifier:i}=_chunkN6VJQX77js.f.call(void 0, o);return n.map(y=>({address:y.address,walletIndex:y.wallet_index,publicKey:y.public_key,chainType:y.chain_type,getProvider:()=>r.embeddedWallet.getBitcoinProvider({wallet:y,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=_react.useCallback.call(void 0, t=>_chunkN6VJQX77js.d.call(void 0, void 0,[t],function*({chainType:o,createAdditional:n=!1}){var k;let{user:i}=yield r.user.get(),l=(k=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, i))!=null?k:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, i);if(!l)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:y,entropyIdVerifier:u}=_chunkN6VJQX77js.f.call(void 0, l),f=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, i).filter(w=>w.chain_type===o);if(!n&&f.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let s=f.length===0?0:Math.max(...f.map(w=>w.wallet_index),0)+1,d=yield r.embeddedWallet.add({chainType:o,hdWalletIndex:s,entropyId:y,entropyIdVerifier:u}),v=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, d.user).find(w=>w.chain_type===o&&w.wallet_index===s);if(!d.user||!v)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:d.user,provider:yield r.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:y,entropyIdVerifier:u})}}),[r]);return{wallets:c,create:a}};exports.a = vr; exports.b = Wr; exports.c = Or; exports.d = Gr; exports.e = Jr; exports.f = Zr; exports.g = at; exports.h = ht; exports.i = kt; exports.j = Pt; exports.k = Ot; exports.l = Tt; exports.m = Kt; exports.n = Yt; exports.o = z; exports.p = ao; exports.q = uo; exports.r = wo; exports.s = Eo; exports.t = Uo; exports.u = Ro; exports.v = cr; exports.w = Y; exports.x = Z; exports.y = hr;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var Wt=Object.defineProperty,xt=Object.defineProperties;var Ut=Object.getOwnPropertyDescriptors;var ne=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable;var Ue=(e,t,r)=>t in e?Wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,A= exports.a =(e,t)=>{for(var r in t||(t={}))Ie.call(t,r)&&Ue(e,r,t[r]);if(ne)for(var r of ne(t))Le.call(t,r)&&Ue(e,r,t[r]);return e},x= exports.b =(e,t)=>xt(e,Ut(t));var Lr=(e,t)=>{var r={};for(var o in e)Ie.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ne)for(var o of ne(e))t.indexOf(o)<0&&Le.call(e,o)&&(r[o]=e[o]);return r};var f=(e,t,r)=>new Promise((o,a)=>{var n=i=>{try{s(r.next(i))}catch(d){a(d)}},c=i=>{try{s(r.throw(i))}catch(d){a(d)}},s=i=>i.done?o(i.value):Promise.resolve(i.value).then(n,c);s((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var re = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var Y = _interopRequireWildcard(_expolinking); var V = _interopRequireWildcard(_expolinking); var J = _interopRequireWildcard(_expolinking); var B = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var I = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var oe = _interopRequireWildcard(_expowebbrowser); var Be = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _expocrypto = require('expo-crypto');var Me={name:"@privy-io/expo",version:"0.36.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","check-types":"npx tsc --noEmit",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"npx tsup --dts-only",lint:'npx eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.37.0","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^12.8.1","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",jest:"^29.7.0","jest-expo":"~51.0.0",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.3","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-constants":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.21.36"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var Fe=({client:e,isClientReady:t,setWebViewState:r,webViewState:o,logLevel:a})=>{let n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{n.current&&o==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,o==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",i=>f(void 0,null,function*(){n.current&&i==="active"&&((yield e.embeddedWallet.ping(500))||(n.current.reload(),r("reloading")))})).remove,[]);let c=_react.useCallback.call(void 0, s=>f(void 0,null,function*(){let{data:i}=s.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(i))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n,cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:a==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:c}):null};function Ne(n){return f(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:a}){var c,s,i;t({status:"creating"});try{let{user:d}=yield e.user.get(),l=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, d),u=l[0];if(a!=null&&a.recoveryMethod&&a.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(a!=null&&a.createAdditional)&&u)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 m,v;if(u){let h=Math.max(...l.map(_=>_.wallet_index),0)+1,p=yield e.embeddedWallet.createAdditionalSolana({primaryPublicKey:u.address,hdWalletIndex:h});m=p.provider,v=p.user}else{let h=(c=_jssdkcore.getUserEmbeddedWallet.call(void 0, d))!=null?c:void 0,p=yield e.embeddedWallet.createSolana({ethereumAccount:h});m=p.provider,v=p.user}let y=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, v)[0];if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(i=(s=r.current)==null?void 0:s.onSuccess)==null||i.call(s,m),t({status:"connected",publicKey:y.public_key}),o({status:"initial"}),m}catch(d){let l=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:l}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function ae(d){return f(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:n,password:c,recoveryToken:s,recoverySecretOverride:i}){var l,u,m,v;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(a){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"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(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break}r({status:"connecting",account:t});try{let y=yield e.embeddedWallet.getProvider(t,c,s,i);return r({status:"connected",provider:y,account:t}),n({status:"initial"}),(u=(l=o.current)==null?void 0:l.onSuccess)==null||u.call(l,y),y}catch(y){r({status:"needs-recovery",account:t}),n({status:"initial"});let h=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:y instanceof Error?y.message:"Error recovering embedded wallet"});throw(v=(m=o.current)==null?void 0:m.onError)==null||v.call(m,h),h}})}function Ve(s){return f(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:a,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:c}){var i,d,l,u;a({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return a({status:"connected",publicKey:m._publicKey}),c({status:"initial"}),(d=(i=n.current)==null?void 0:i.onSuccess)==null||d.call(i,m),m}catch(m){a({status:"needs-recovery"}),c({status:"initial"});let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(u=(l=n.current)==null?void 0:l.onError)==null||u.call(l,v),v}})}var se=e=>{if(e.chain_type==="ethereum")return{entropyId:e.address,entropyIdVerifier:"ethereum-address-verifier"};if(e.chain_type==="solana")return{entropyId:e.address,entropyIdVerifier:"solana-address-verifier"};throw new Error("Invalid embedded wallet account type")};var Ke=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:a,webViewState:n,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:s})=>{let i=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, t),[t]),d=_react.useMemo.call(void 0, ()=>{var y;return i.length===0?null:(y=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, t))!=null?y:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t)},[t,i]),l=_react.useMemo.call(void 0, ()=>{if(!d)return[];let{entropyId:y,entropyIdVerifier:h}=se(d);return i.map(p=>({address:p.address,publicKey:p.address,walletIndex:p.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(p,y,h)}))},[i,d,e]),u=_react.useCallback.call(void 0, y=>f(void 0,null,function*(){return yield Ne({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:a,opts:y})}),[e,c]),m=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:y,entropyIdVerifier:h}=se(d);return Ve({client:e,account:i[0],entropyId:y,entropyIdVerifier:h,setSolanaWallet:o,recoverSolanaWalletCallbacks:s,setSolanaRecoveryFlowState:a})}),[e,d,i,s,a,o]),v=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){if(!d)throw o({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(y=>y.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:y,entropyIdVerifier:h}=se(d),p=yield e.embeddedWallet.getSolanaProvider(i[0],y,h);return o({status:"connected",publicKey:i[0].public_key}),p}catch(y){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, y)?(o({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):y instanceof Error?(o({status:"error",error:y.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:y.message})):(o({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return o({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&v()},[r.status]),{create:u,recover:m,getProvider:v,wallets:l}};function de(l){return f(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:a,password:n,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:i,solanaAccount:d}){var m,v;switch(o){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s||!i)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 u=o==="icloud"?"icloud-native":o;try{let{provider:y,user:h}=yield e.embeddedWallet.create(n,u,c,s,i,d),p=_jssdkcore.getUserEmbeddedWallet.call(void 0, h);return(v=(m=r.current)==null?void 0:m.onSuccess)==null||v.call(m,y),t({status:"connected",provider:y,account:p}),a({status:"initial"}),y}catch(y){let h=y instanceof Error?y.message:"Error creating embedded wallet";throw t({status:"error",error:h,account:null}),a({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:h})}})}function He(){return f(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 ge(o){return f(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 a=yield He(),n=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(n==null?void 0:n.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:i,iCloudRecordName:d}=yield a.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:i,iCloudRecordName:d}}catch(i){if(i instanceof Error){let d=(s=i.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:d})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function ze(o){return f(this,arguments,function*({walletAddress:e,client:t,chainType:r}){var d;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let a=yield He(),c=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!c)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"),i=s==null?void 0:s.container_identifier;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:l}=yield a.readRecoverySecretFromICloud({containerId:i,recordName:c});return{recoverySecret:l}}catch(l){if(l instanceof Error){let u=(d=l.message.split("Caused by: ")[1])!=null?d:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:u})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Je=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function U(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 vo=e=>new Promise(t=>setTimeout(t,e));function _o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function Z(a){return f(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let n;switch(e){case"google-drive":{let{url:d}=yield r.recovery.auth.generateURL(V.createURL(t||"/"));n=d;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield Be.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:s}=V.parse(c.url),i;switch(e){case"google-drive":{let{privy_oauth_state:d,privy_oauth_code:l}=s;if(!l||!d)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});i=yield ce({oAuthCode:l,oAuthState:d,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return i}catch(n){throw o==null||o(U(n)),n}})}function ce(o){return f(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:a}=yield r.recovery.auth.authorize(e,t);if(!a)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return a})}var Xt=2*60*1e3;function Qt(e){let t;return new Promise((r,o)=>{t=V.addEventListener("url",n=>f(this,[n],function*({url:a}){if(!a)return;let{queryParams:c}=V.parse(a),{privy_oauth_state:s,privy_oauth_code:i}=c!=null?c:{};if(typeof i!="string"||typeof s!="string")return;let d=yield ce({client:e,oAuthCode:i,oAuthState:s});r(d)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Xt)}).finally(()=>{t==null||t.remove()})}function Uo(e){return f(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Qt(e));let r=yield Z({provider:"google-drive",client:e});return r!=null?r:yield t})}function ue(n){return f(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:a}){var c,s,i,d;try{let{provider:l,user:u}=yield e.embeddedWallet.setRecovery(t),m=l,v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return a({status:"connected",provider:m,account:v}),(s=(c=r.current)==null?void 0:c.onSuccess)==null||s.call(c,m),o({status:"initial"}),m}catch(l){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(d=(i=r.current)==null?void 0:i.onError)==null||d.call(i,u),o({status:"initial"}),u}})}function Qe(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}:{recoveryMethod:e.recoveryMethod}}var $e=({client:e,user:t,appId:r,wallet:o,setWallet:a,setRecoveryFlowState:n,webViewState:c,createWalletCallbacks:s,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:d})=>{let l=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){var O,q;if(l)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:_}=yield e.user.get(),{password:g,recoveryMethod:w}=Qe(p),b,E,W;if(w==="google-drive"&&(b=yield Z({provider:w,client:e,onError:(O=s.current)==null?void 0:O.onError}),n({status:"creating-wallet"}),!b))return null;if(w==="icloud"){if(!_)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:T,iCloudRecordName:N}=yield ge({user:_,appId:r,client:e});E=T,W=N}return yield de({client:e,setWallet:a,createWalletCallbacks:s,recoveryMethod:w,setRecoveryFlowState:n,password:g,recoverySecretOverride:E,iCloudRecordNameOverride:W,solanaAccount:(q=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, _))!=null?q:void 0})}),[e,l,t]),m=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){var w;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:l.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let _,g;switch(p.recoveryMethod){case"privy":g=x(A({},p),{wallet:l});break;case"user-passcode":g=x(A({},p),{wallet:l,password:p.password});break;case"google-drive":if(_=yield Z({provider:p.recoveryMethod,client:e,onError:(w=d.current)==null?void 0:w.onError}),n({status:"upgrading-recovery"}),!_)return null;g={recoveryMethod:"google-drive",wallet:l,recoveryAccessToken:_};break;case"icloud":if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:b,iCloudRecordName:E}=yield ge({user:t,appId:r,client:e});g={recoveryMethod:"icloud-native",recoverySecretOverride:b,iCloudRecordNameOverride:E,wallet:l};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ue({client:e,recoveryInput:g,setWalletRecoveryCallbacks:d,setRecoveryFlowState:n,setWallet:a})}),[e,l,o.status,t]),v=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:p})}),[e,l,o.status]),y=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){var E;if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:_,recoveryMethod:g}=Qe(p),w,b;if(g==="google-drive"&&(w=yield Z({provider:g,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!w))return null;if(g==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:W}=yield ze({client:e,walletAddress:l.address});b=W}return ae({client:e,account:l,setWallet:a,recoverWalletCallbacks:i,recoveryMethod:g,setRecoveryFlowState:n,password:_,recoveryToken:w,recoverySecretOverride:b})}),[e,l]),h=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){if(!l)throw a({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(p=>p.status==="connected"?{status:"reconnecting",account:l}:{status:"connecting",account:l});try{let p=yield e.embeddedWallet.getProvider(l);return a({status:"connected",provider:p,account:l}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(a({status:"needs-recovery",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(a({status:"error",error:p.message,account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(a({status:"error",error:"Error loading embedded wallet",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,l]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});c==="loaded"&&h().catch(()=>{})},[c,t,l]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&h()},[o.status]),{create:u,recover:y,setPassword:v,setRecovery:m,getProvider:h}};var et=({client:e,user:t,isReady:r,customAuth:o})=>{let[a,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>f(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:s,isLoading:i}=o;if(!(!r||i))try{let d=yield s();if(!d&&t){yield e.auth.logout(),n({status:"done"});return}if(!d){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(d))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(d){if(console.log("Error syncing with custom auth provider",d),n({status:"error",error:d}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,r,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:a,customAuthStateIsSettled:a.status!=="loading"&&a.status!=="initial"}};var tt=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:a,setOAuthState:n,recoveryFlowState:c,oAuthStateRef:s})=>{let i=J.useURL(),d=_react.useCallback.call(void 0, l=>{var m,v;let u=U(l);n({status:"error",error:u}),(v=(m=a.current).onError)==null||v.call(m,u)},[n]);return _react.useEffect.call(void 0, ()=>{function l(){return f(this,null,function*(){var y,h;if(!i||o.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=J.parse(i),{privy_oauth_state:m,privy_oauth_code:v}=u;if(!v||!m){n({status:"done"});return}try{let p,_;if(t)p=yield e.auth.oauth.linkWithCode(v,m);else{let g=yield e.auth.oauth.loginWithCode(v,m,void 0,void 0,s.current.disableSignup?"no-signup":"login-or-sign-up");p=g.user,_=!!g.is_new_user}return(h=(y=a.current).onSuccess)==null||h.call(y,p,_),s.current={},n({status:"done"}),yield J.openURL(i.split("?")[0])}catch(p){s.current={},d(p)}})}_reactnative.Platform.OS==="android"&&r&&l()},[i,r])};var rt=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:a,recoveryFlowState:n,oAuthState:c,setRecoveryFlowState:s,setWallet:i,appStateVisible:d,webViewLoaded:l})=>{let u=B.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),v=_react.useCallback.call(void 0, y=>{var p,_,g,w;let h=U(y);n.status==="creating-wallet"?(_=(p=r.current).onError)==null||_.call(p,U(h)):(w=(g=o.current).onError)==null||w.call(g,U(h)),s({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function y(){return f(this,null,function*(){var g;if(!u&&n.status!=="initial"&&d&&v(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||c.status!=="initial"||!d||!l)return;let{queryParams:h}=B.parse(u),{privy_oauth_state:p,privy_oauth_code:_}=h;if(!(!_||!p)){yield B.openURL(u.split("?")[0]);try{let w=yield ce({oAuthCode:_,oAuthState:p,client:e});if(n.status==="creating-wallet"){let b=(g=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))!=null?g:void 0;yield de({client:e,setWallet:i,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:w,solanaAccount:b})}else if(n.status==="upgrading-recovery"){if(!m)throw new Error("Embedded wallet not found");yield ue({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:m,recoveryAccessToken:w},setWalletRecoveryCallbacks:a,setRecoveryFlowState:s,setWallet:i})}else yield ae({client:e,account:m,setWallet:i,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:w})}catch(w){v(w)}}})}_reactnative.Platform.OS==="android"&&y()},[u,n.status,d,l])};var ot=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>f(void 0,null,function*(){try{yield e.initialize()}catch(n){o(n instanceof Error?n:new Error(String(n)))}try{yield e.user.get()}catch(n){}finally{r(!0)}}))()},[e,t,o,r])};var _zustand = require('zustand');var k=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},nt= exports.t =class extends k{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var _e={success:e=>({value:e}),error:e=>({error:e})};var it=e=>{let t=Array.from(new Set(e));return t.length===0?_e.error(new k("no_login_methods_available","No login methods available")):_e.success(t)},Se=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},_n= exports.u =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},Sn= exports.v ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};var _vanilla = require('zustand/vanilla');var at=_vanilla.createStore.call(void 0, )(e=>({isUIMounted:!1,updateUIMounted:t=>e({isUIMounted:t})})),st= exports.w =()=>{let{isUIMounted:e}=at.getState();if(!e)throw new k("privy_elements_not_ready","Privy Elements is not mounted")},kn= exports.x =()=>{_react.useEffect.call(void 0, ()=>{let{updateUIMounted:e}=at.getState();return e(!0),()=>{e(!1)}},[])};function lt(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function wr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function dt(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return wr(e,()=>{clearTimeout(o)})}var br=1e3*60*5,G=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(r,o,a,n)=>lt(c=>{var u,m,v;let s=o.app.getConfig();if(!s)return c.reject(new k("privy_not_ready","Privy is not ready"));if(a!==null)return c.reject(new k("user_already_logged_in","User is already logged in"));if(st(),t().loginPromiseResolvers!==null)return c.reject(new k("existing_login_flow_in_progress","A login flow is already in progress"));let i=it(r.loginMethods);if(i.error)return c.reject(i.error);let d={loginMethods:i.value,appearance:{logo:(v=(m=(u=r.appearance)==null?void 0:u.logo)!=null?m:s.logo_url)!=null?v:void 0}},l=dt(c,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new k("login_flow_timeout","The login flow timed out")),br);n(),e({loginPromiseResolvers:l,privyElementsConfig:d,activeLoginMethod:Se(d.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new k("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:a,closeLoginFlow:n}=t();if(!o){n();return}let c=Se(o.loginMethods)===null;r===null||!c?n():a(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),Mn= exports.A =()=>G(e=>e.privyElementsConfig),Tn= exports.B =()=>G(e=>e.openLoginFlow),Fn= exports.C =()=>G(e=>e.closeLoginFlow),jn= exports.D =()=>G(e=>e.goBack),Nn= exports.E =()=>G(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),_r=e=>{let{loginPromiseResolvers:t}=G.getState();t==null||t.resolve(e)},ct=()=>_r;var Ee=_react.createContext.call(void 0, {}),K;function ri(e){return K?K.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 oi=e=>{var We,xe;let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let R=_reactnative.AppState.addEventListener("change",Ot=>{r(Ot==="active")});return()=>{R.remove()}},[]);let[o,a]=_react.useState.call(void 0, !1),[n,c]=_react.useState.call(void 0, null),[s,i]=_react.useState.call(void 0, "loading"),[d,l]=_react.useState.call(void 0, !1),[u,m]=_react.useState.call(void 0, null),[v,y]=_react.useState.call(void 0, {status:"disconnected",account:null}),[h,p]=_react.useState.call(void 0, {status:"disconnected"}),[_,g]=_react.useState.call(void 0, {status:"initial"}),[w,b]=_react.useState.call(void 0, {status:"initial"}),E=_react.useRef.call(void 0, {}),[W,O]=_react.useState.call(void 0, {status:"initial"}),[q,T]=_react.useState.call(void 0, {status:"initial"}),[N,X]=_react.useState.call(void 0, {status:"initial"}),[me,F]=_react.useState.call(void 0, {status:"initial"}),[L,gt]=_react.useState.call(void 0, {status:"initial"}),[bt,_t]=_react.useState.call(void 0, );_react.useEffect.call(void 0, ()=>{var R;return _t((R=e.config)==null?void 0:R.mfa)},[(We=e.config)==null?void 0:We.mfa]);let ke=_react.useRef.call(void 0, {}),ye=_react.useRef.call(void 0, {}),fe=_react.useRef.call(void 0, {}),ve=_react.useRef.call(void 0, {}),Re=_react.useRef.call(void 0, {}),Oe=_react.useRef.call(void 0, {}),St=ct(),Q=_react.useCallback.call(void 0, R=>{if(R){St(R),Je(m)(R);return}m(null),g({status:"initial"}),b({status:"initial"}),y({status:"disconnected",account:null})},[]),C=_react.useMemo.call(void 0, ()=>{let R=e.storage||vt;return e.client?(K=e.client,K.setCallbacks({setUser:Q,setIsReady:l}),K):(K=new (0, _jssdkcore2.default)({storage:ft(R),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:yt(),baseUrl:e.baseUrl,sdkVersion:`expo:${Me.version}`,callbacks:{setUser:Q,setIsReady:l},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),K)},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,Q]),Et=_react.useCallback.call(void 0, ()=>(Q(null),C.auth.logout()),[Q,C]),At=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){try{return yield C.getAccessToken()}catch(R){return console.debug(R),null}}),[C]),Ct=_react.useCallback.call(void 0, ()=>C.getIdentityToken(),[C]);ot({client:C,isUserInitialized:o,setIsUserInitialized:a,setError:c});let Pt=$e({client:C,user:u,appId:e.appId,webViewState:s,createWalletCallbacks:ye,recoverWalletCallbacks:fe,setWalletRecoveryCallbacks:ve,setRecoveryFlowState:O,wallet:v,setWallet:y}),kt=Ke({client:C,user:u,webViewState:s,createSolanaWalletCallbacks:Re,recoverSolanaWalletCallbacks:Oe,setSolanaRecoveryFlowState:T,solanaWallet:h,setSolanaWallet:p});tt({client:C,isUserInitialized:o,user:u,oAuthState:w,setOAuthState:b,oAuthCallbacks:ke,recoveryFlowState:W,oAuthStateRef:E}),rt({client:C,user:u,webViewLoaded:s==="loaded",createWalletCallbacks:ye,recoverWalletCallbacks:fe,setWalletRecoveryCallbacks:ve,recoveryFlowState:W,oAuthState:w,setRecoveryFlowState:O,setWallet:y,appStateVisible:t});let{customAuthStateIsSettled:Rt}=et({client:C,user:u,isReady:o,customAuth:(xe=e.config)==null?void 0:xe.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(Ee.Provider,{value:{client:C,user:u,isReady:s!=="loading"&&o&&mt(w)&&Rt,error:n,logout:Et,getAccessToken:At,getIdentityToken:Ct,wallet:A(A({},v),Pt),solanaWallet:A(A({},h),kt),oAuthState:w,oAuthCallbacks:ke,recoveryFlowState:W,setRecoveryFlowState:O,solanaRecoveryFlowState:q,setSolanaRecoveryFlowState:T,createWalletCallbacks:ye,recoverWalletCallbacks:fe,setWalletRecoveryCallbacks:ve,createSolanaWalletCallbacks:Re,recoverSolanaWalletCallbacks:Oe,setOAuthState:b,siweState:N,setSiweState:X,otpState:_,setOtpState:g,passkeyState:me,setPasskeyState:F,farcasterState:L,setFarcasterState:gt,oAuthStateRef:E,mfaConfig:bt}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Fe,{logLevel:e.logLevel,client:C,isClientReady:d,setWebViewState:i,webViewState:s})))};var mt=e=>e.status!=="loading",Ce=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:a,client:n,oAuthStateRef:c}=_react.useContext.call(void 0, Ee),s=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{a.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let i=_react.useCallback.call(void 0, l=>{var m;let u=U(l);return o({status:"error",error:u}),(m=e==null?void 0:e.onError)==null||m.call(e,u),u},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(h){return f(this,arguments,function*({provider:u,redirectUri:m,isLegacyAppleIosBehaviorEnabled:v=!1,disableSignup:y}){var p,_,g;o({status:"loading"}),c.current={disableSignup:y};try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:w}=yield n.auth.oauth.generateURL(u,Y.createURL(m||"/")),b,E;if(_reactnative.Platform.OS==="ios"&&u==="apple"&&!v){let me=(p=new URL(w).searchParams.get("state"))!=null?p:"",F=yield re.signInAsync({state:me,requestedScopes:[re.AppleAuthenticationScope.EMAIL,re.AppleAuthenticationScope.FULL_NAME]}).catch(L=>{throw L instanceof Error&&"code"in L&&L.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):L});if(!F.authorizationCode||!F.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let L=yield n.auth.oauth.loginWithCode(F.authorizationCode,F.state,u,"raw",y?"no-signup":"login-or-sign-up");b=L.user,E=L.is_new_user}else b=yield n.auth.oauth.linkWithCode(F.authorizationCode,F.state,u,"raw");return(_=e==null?void 0:e.onSuccess)==null||_.call(e,b,E),o({status:"done"}),b!=null?b:void 0}let W=_reactnative.Platform.OS==="android"?w.replace("x.com","twitter.com"):w,O=yield oe.openAuthSessionAsync(W);if(_reactnative.Platform.OS==="android")return;if(O.type!=="success")throw[oe.WebBrowserResultType.CANCEL,oe.WebBrowserResultType.DISMISS].includes(O.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:q}=Y.parse(O.url),{privy_oauth_state:T,privy_oauth_code:N}=q;if(!N||!T)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 X=yield n.auth.oauth.loginWithCode(N,T,u,void 0,y?"no-signup":"login-or-sign-up");b=X.user,E=X.is_new_user}else b=yield n.auth.oauth.linkWithCode(N,T,u);return(g=e==null?void 0:e.onSuccess)==null||g.call(e,b,E),yield Y.openURL(O.url.split("?")[0]),o({status:"done"}),b!=null?b:void 0}catch(w){i(w)}})},[t,n,o,i]),state:r}};function pi(e){let{state:t,start:r}=Ce(x(A({},e),{action:"login"}));return{state:t,login:r}}function mi(e){let{state:t,start:r}=Ce(x(A({},e),{action:"link"}));return{state:t,link:r}}function yi(e){return Ce(e)}var yt=()=>{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 ft(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:()=>f(this,null,function*(){return[]})}}var vt={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:()=>f(void 0,null,function*(){return[]})};var xr=e=>f(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 x(A({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Ir=e=>f(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 x(A({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function Ri(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 Oi(e){var t,r,o,a;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:(a=e.allow_credentials)==null?void 0:a.map(({id:n,type:c,transports:s})=>({id:n,type:c,transports:s})),userVerification:e.user_verification}}function Wi(e){var t,r,o,a,n,c,s,i;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:(a=e.extensions)==null?void 0:a.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(n=e.authenticator_selection)==null?void 0:n.authenticator_attachment,residentKey:(c=e.authenticator_selection)==null?void 0:c.resident_key,userVerification:(s=e.authenticator_selection)==null?void 0:s.user_verification,requireResidentKey:(i=e.authenticator_selection)==null?void 0:i.require_resident_key}}}exports.a = A; exports.b = x; exports.c = Lr; exports.d = f; exports.e = Me; exports.f = se; exports.g = ge; exports.h = ze; exports.i = U; exports.j = vo; exports.k = _o; exports.l = Uo; exports.m = pi; exports.n = mi; exports.o = yi; exports.p = yt; exports.q = ft; exports.r = vt; exports.s = k; exports.t = nt; exports.u = _n; exports.v = Sn; exports.w = st; exports.x = kn; exports.y = lt; exports.z = dt; exports.A = Mn; exports.B = Tn; exports.C = Fn; exports.D = jn; exports.E = Nn; exports.F = Ee; exports.G = ri; exports.H = oi; exports.I = xr; exports.J = Ir; exports.K = Ri; exports.L = Oi; exports.M = Wi;
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 Wt=Object.defineProperty,xt=Object.defineProperties;var Ut=Object.getOwnPropertyDescriptors;var ne=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable;var Ue=(e,t,r)=>t in e?Wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,A= exports.a =(e,t)=>{for(var r in t||(t={}))Ie.call(t,r)&&Ue(e,r,t[r]);if(ne)for(var r of ne(t))Le.call(t,r)&&Ue(e,r,t[r]);return e},x= exports.b =(e,t)=>xt(e,Ut(t));var Lr=(e,t)=>{var r={};for(var o in e)Ie.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ne)for(var o of ne(e))t.indexOf(o)<0&&Le.call(e,o)&&(r[o]=e[o]);return r};var f=(e,t,r)=>new Promise((o,a)=>{var n=i=>{try{s(r.next(i))}catch(d){a(d)}},c=i=>{try{s(r.throw(i))}catch(d){a(d)}},s=i=>i.done?o(i.value):Promise.resolve(i.value).then(n,c);s((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var re = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var Y = _interopRequireWildcard(_expolinking); var V = _interopRequireWildcard(_expolinking); var J = _interopRequireWildcard(_expolinking); var B = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var I = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var oe = _interopRequireWildcard(_expowebbrowser); var Be = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _expocrypto = require('expo-crypto');var Me={name:"@privy-io/expo",version:"0.36.1",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","check-types":"npx tsc --noEmit",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"npx tsup --dts-only",lint:'npx eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.37.1","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^12.8.1","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",jest:"^29.7.0","jest-expo":"~51.0.0",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.3","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-constants":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.21.36"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var Fe=({client:e,isClientReady:t,setWebViewState:r,webViewState:o,logLevel:a})=>{let n=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>{n.current&&o==="loaded"&&e.setMessagePoster(n.current)},[e,n.current,o==="loaded"]),_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",i=>f(void 0,null,function*(){n.current&&i==="active"&&((yield e.embeddedWallet.ping(500))||(n.current.reload(),r("reloading")))})).remove,[]);let c=_react.useCallback.call(void 0, s=>f(void 0,null,function*(){let{data:i}=s.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(i))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n,cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:a==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:c}):null};function Ne(n){return f(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:a}){var c,s,i;t({status:"creating"});try{let{user:d}=yield e.user.get(),l=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, d),u=l[0];if(a!=null&&a.recoveryMethod&&a.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(a!=null&&a.createAdditional)&&u)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 m,v;if(u){let h=Math.max(...l.map(_=>_.wallet_index),0)+1,p=yield e.embeddedWallet.createAdditionalSolana({primaryPublicKey:u.address,hdWalletIndex:h});m=p.provider,v=p.user}else{let h=(c=_jssdkcore.getUserEmbeddedWallet.call(void 0, d))!=null?c:void 0,p=yield e.embeddedWallet.createSolana({ethereumAccount:h});m=p.provider,v=p.user}let y=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, v)[0];if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(i=(s=r.current)==null?void 0:s.onSuccess)==null||i.call(s,m),t({status:"connected",publicKey:y.public_key}),o({status:"initial"}),m}catch(d){let l=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:l}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function ae(d){return f(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:a,setRecoveryFlowState:n,password:c,recoveryToken:s,recoverySecretOverride:i}){var l,u,m,v;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(a){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"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(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break}r({status:"connecting",account:t});try{let y=yield e.embeddedWallet.getProvider(t,c,s,i);return r({status:"connected",provider:y,account:t}),n({status:"initial"}),(u=(l=o.current)==null?void 0:l.onSuccess)==null||u.call(l,y),y}catch(y){r({status:"needs-recovery",account:t}),n({status:"initial"});let h=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:y instanceof Error?y.message:"Error recovering embedded wallet"});throw(v=(m=o.current)==null?void 0:m.onError)==null||v.call(m,h),h}})}function Ve(s){return f(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:a,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:c}){var i,d,l,u;a({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return a({status:"connected",publicKey:m._publicKey}),c({status:"initial"}),(d=(i=n.current)==null?void 0:i.onSuccess)==null||d.call(i,m),m}catch(m){a({status:"needs-recovery"}),c({status:"initial"});let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(u=(l=n.current)==null?void 0:l.onError)==null||u.call(l,v),v}})}var se=e=>{if(e.chain_type==="ethereum")return{entropyId:e.address,entropyIdVerifier:"ethereum-address-verifier"};if(e.chain_type==="solana")return{entropyId:e.address,entropyIdVerifier:"solana-address-verifier"};throw new Error("Invalid embedded wallet account type")};var Ke=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:a,webViewState:n,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:s})=>{let i=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, t),[t]),d=_react.useMemo.call(void 0, ()=>{var y;return i.length===0?null:(y=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, t))!=null?y:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t)},[t,i]),l=_react.useMemo.call(void 0, ()=>{if(!d)return[];let{entropyId:y,entropyIdVerifier:h}=se(d);return i.map(p=>({address:p.address,publicKey:p.address,walletIndex:p.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(p,y,h)}))},[i,d,e]),u=_react.useCallback.call(void 0, y=>f(void 0,null,function*(){return yield Ne({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:a,opts:y})}),[e,c]),m=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:y,entropyIdVerifier:h}=se(d);return Ve({client:e,account:i[0],entropyId:y,entropyIdVerifier:h,setSolanaWallet:o,recoverSolanaWalletCallbacks:s,setSolanaRecoveryFlowState:a})}),[e,d,i,s,a,o]),v=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){if(!d)throw o({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(y=>y.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:y,entropyIdVerifier:h}=se(d),p=yield e.embeddedWallet.getSolanaProvider(i[0],y,h);return o({status:"connected",publicKey:i[0].public_key}),p}catch(y){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, y)?(o({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):y instanceof Error?(o({status:"error",error:y.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:y.message})):(o({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return o({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&v()},[r.status]),{create:u,recover:m,getProvider:v,wallets:l}};function de(l){return f(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:a,password:n,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:i,solanaAccount:d}){var m,v;switch(o){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s||!i)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 u=o==="icloud"?"icloud-native":o;try{let{provider:y,user:h}=yield e.embeddedWallet.create(n,u,c,s,i,d),p=_jssdkcore.getUserEmbeddedWallet.call(void 0, h);return(v=(m=r.current)==null?void 0:m.onSuccess)==null||v.call(m,y),t({status:"connected",provider:y,account:p}),a({status:"initial"}),y}catch(y){let h=y instanceof Error?y.message:"Error creating embedded wallet";throw t({status:"error",error:h,account:null}),a({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:h})}})}function He(){return f(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 ge(o){return f(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 a=yield He(),n=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(n==null?void 0:n.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:i,iCloudRecordName:d}=yield a.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:i,iCloudRecordName:d}}catch(i){if(i instanceof Error){let d=(s=i.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:d})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function ze(o){return f(this,arguments,function*({walletAddress:e,client:t,chainType:r}){var d;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let a=yield He(),c=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!c)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"),i=s==null?void 0:s.container_identifier;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:l}=yield a.readRecoverySecretFromICloud({containerId:i,recordName:c});return{recoverySecret:l}}catch(l){if(l instanceof Error){let u=(d=l.message.split("Caused by: ")[1])!=null?d:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:u})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var Je=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function U(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 vo=e=>new Promise(t=>setTimeout(t,e));function _o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function Z(a){return f(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let n;switch(e){case"google-drive":{let{url:d}=yield r.recovery.auth.generateURL(V.createURL(t||"/"));n=d;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield Be.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:s}=V.parse(c.url),i;switch(e){case"google-drive":{let{privy_oauth_state:d,privy_oauth_code:l}=s;if(!l||!d)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});i=yield ce({oAuthCode:l,oAuthState:d,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return i}catch(n){throw o==null||o(U(n)),n}})}function ce(o){return f(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:a}=yield r.recovery.auth.authorize(e,t);if(!a)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return a})}var Xt=2*60*1e3;function Qt(e){let t;return new Promise((r,o)=>{t=V.addEventListener("url",n=>f(this,[n],function*({url:a}){if(!a)return;let{queryParams:c}=V.parse(a),{privy_oauth_state:s,privy_oauth_code:i}=c!=null?c:{};if(typeof i!="string"||typeof s!="string")return;let d=yield ce({client:e,oAuthCode:i,oAuthState:s});r(d)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Xt)}).finally(()=>{t==null||t.remove()})}function Uo(e){return f(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Qt(e));let r=yield Z({provider:"google-drive",client:e});return r!=null?r:yield t})}function ue(n){return f(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:a}){var c,s,i,d;try{let{provider:l,user:u}=yield e.embeddedWallet.setRecovery(t),m=l,v=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return a({status:"connected",provider:m,account:v}),(s=(c=r.current)==null?void 0:c.onSuccess)==null||s.call(c,m),o({status:"initial"}),m}catch(l){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(d=(i=r.current)==null?void 0:i.onError)==null||d.call(i,u),o({status:"initial"}),u}})}function Qe(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}:{recoveryMethod:e.recoveryMethod}}var $e=({client:e,user:t,appId:r,wallet:o,setWallet:a,setRecoveryFlowState:n,webViewState:c,createWalletCallbacks:s,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:d})=>{let l=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){var O,q;if(l)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:_}=yield e.user.get(),{password:g,recoveryMethod:w}=Qe(p),b,E,W;if(w==="google-drive"&&(b=yield Z({provider:w,client:e,onError:(O=s.current)==null?void 0:O.onError}),n({status:"creating-wallet"}),!b))return null;if(w==="icloud"){if(!_)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:T,iCloudRecordName:N}=yield ge({user:_,appId:r,client:e});E=T,W=N}return yield de({client:e,setWallet:a,createWalletCallbacks:s,recoveryMethod:w,setRecoveryFlowState:n,password:g,recoverySecretOverride:E,iCloudRecordNameOverride:W,solanaAccount:(q=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, _))!=null?q:void 0})}),[e,l,t]),m=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){var w;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:l.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let _,g;switch(p.recoveryMethod){case"privy":g=x(A({},p),{wallet:l});break;case"user-passcode":g=x(A({},p),{wallet:l,password:p.password});break;case"google-drive":if(_=yield Z({provider:p.recoveryMethod,client:e,onError:(w=d.current)==null?void 0:w.onError}),n({status:"upgrading-recovery"}),!_)return null;g={recoveryMethod:"google-drive",wallet:l,recoveryAccessToken:_};break;case"icloud":if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:b,iCloudRecordName:E}=yield ge({user:t,appId:r,client:e});g={recoveryMethod:"icloud-native",recoverySecretOverride:b,iCloudRecordNameOverride:E,wallet:l};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return ue({client:e,recoveryInput:g,setWalletRecoveryCallbacks:d,setRecoveryFlowState:n,setWallet:a})}),[e,l,o.status,t]),v=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:p})}),[e,l,o.status]),y=_react.useCallback.call(void 0, p=>f(void 0,null,function*(){var E;if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:_,recoveryMethod:g}=Qe(p),w,b;if(g==="google-drive"&&(w=yield Z({provider:g,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!w))return null;if(g==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:W}=yield ze({client:e,walletAddress:l.address});b=W}return ae({client:e,account:l,setWallet:a,recoverWalletCallbacks:i,recoveryMethod:g,setRecoveryFlowState:n,password:_,recoveryToken:w,recoverySecretOverride:b})}),[e,l]),h=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){if(!l)throw a({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});a(p=>p.status==="connected"?{status:"reconnecting",account:l}:{status:"connecting",account:l});try{let p=yield e.embeddedWallet.getProvider(l);return a({status:"connected",provider:p,account:l}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(a({status:"needs-recovery",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(a({status:"error",error:p.message,account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(a({status:"error",error:"Error loading embedded wallet",account:l}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,l]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return a({status:"disconnected",account:null});c==="loaded"&&h().catch(()=>{})},[c,t,l]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&h()},[o.status]),{create:u,recover:y,setPassword:v,setRecovery:m,getProvider:h}};var et=({client:e,user:t,isReady:r,customAuth:o})=>{let[a,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>f(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:s,isLoading:i}=o;if(!(!r||i))try{let d=yield s();if(!d&&t){yield e.auth.logout(),n({status:"done"});return}if(!d){n({status:"done"});return}if(t){n({status:"done"});return}if(!(yield e.auth.customProvider.syncWithToken(d))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(d){if(console.log("Error syncing with custom auth provider",d),n({status:"error",error:d}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,r,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:a,customAuthStateIsSettled:a.status!=="loading"&&a.status!=="initial"}};var tt=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:a,setOAuthState:n,recoveryFlowState:c,oAuthStateRef:s})=>{let i=J.useURL(),d=_react.useCallback.call(void 0, l=>{var m,v;let u=U(l);n({status:"error",error:u}),(v=(m=a.current).onError)==null||v.call(m,u)},[n]);return _react.useEffect.call(void 0, ()=>{function l(){return f(this,null,function*(){var y,h;if(!i||o.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=J.parse(i),{privy_oauth_state:m,privy_oauth_code:v}=u;if(!v||!m){n({status:"done"});return}try{let p,_;if(t)p=yield e.auth.oauth.linkWithCode(v,m);else{let g=yield e.auth.oauth.loginWithCode(v,m,void 0,void 0,s.current.disableSignup?"no-signup":"login-or-sign-up");p=g.user,_=!!g.is_new_user}return(h=(y=a.current).onSuccess)==null||h.call(y,p,_),s.current={},n({status:"done"}),yield J.openURL(i.split("?")[0])}catch(p){s.current={},d(p)}})}_reactnative.Platform.OS==="android"&&r&&l()},[i,r])};var rt=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:a,recoveryFlowState:n,oAuthState:c,setRecoveryFlowState:s,setWallet:i,appStateVisible:d,webViewLoaded:l})=>{let u=B.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),v=_react.useCallback.call(void 0, y=>{var p,_,g,w;let h=U(y);n.status==="creating-wallet"?(_=(p=r.current).onError)==null||_.call(p,U(h)):(w=(g=o.current).onError)==null||w.call(g,U(h)),s({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function y(){return f(this,null,function*(){var g;if(!u&&n.status!=="initial"&&d&&v(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||c.status!=="initial"||!d||!l)return;let{queryParams:h}=B.parse(u),{privy_oauth_state:p,privy_oauth_code:_}=h;if(!(!_||!p)){yield B.openURL(u.split("?")[0]);try{let w=yield ce({oAuthCode:_,oAuthState:p,client:e});if(n.status==="creating-wallet"){let b=(g=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))!=null?g:void 0;yield de({client:e,setWallet:i,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:w,solanaAccount:b})}else if(n.status==="upgrading-recovery"){if(!m)throw new Error("Embedded wallet not found");yield ue({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:m,recoveryAccessToken:w},setWalletRecoveryCallbacks:a,setRecoveryFlowState:s,setWallet:i})}else yield ae({client:e,account:m,setWallet:i,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:w})}catch(w){v(w)}}})}_reactnative.Platform.OS==="android"&&y()},[u,n.status,d,l])};var ot=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>f(void 0,null,function*(){try{yield e.initialize()}catch(n){o(n instanceof Error?n:new Error(String(n)))}try{yield e.user.get()}catch(n){}finally{r(!0)}}))()},[e,t,o,r])};var _zustand = require('zustand');var k=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},nt= exports.t =class extends k{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var _e={success:e=>({value:e}),error:e=>({error:e})};var it=e=>{let t=Array.from(new Set(e));return t.length===0?_e.error(new k("no_login_methods_available","No login methods available")):_e.success(t)},Se=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},_n= exports.u =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},Sn= exports.v ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};var _vanilla = require('zustand/vanilla');var at=_vanilla.createStore.call(void 0, )(e=>({isUIMounted:!1,updateUIMounted:t=>e({isUIMounted:t})})),st= exports.w =()=>{let{isUIMounted:e}=at.getState();if(!e)throw new k("privy_elements_not_ready","Privy Elements is not mounted")},kn= exports.x =()=>{_react.useEffect.call(void 0, ()=>{let{updateUIMounted:e}=at.getState();return e(!0),()=>{e(!1)}},[])};function lt(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function wr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function dt(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return wr(e,()=>{clearTimeout(o)})}var br=1e3*60*5,G=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(r,o,a,n)=>lt(c=>{var u,m,v;let s=o.app.getConfig();if(!s)return c.reject(new k("privy_not_ready","Privy is not ready"));if(a!==null)return c.reject(new k("user_already_logged_in","User is already logged in"));if(st(),t().loginPromiseResolvers!==null)return c.reject(new k("existing_login_flow_in_progress","A login flow is already in progress"));let i=it(r.loginMethods);if(i.error)return c.reject(i.error);let d={loginMethods:i.value,appearance:{logo:(v=(m=(u=r.appearance)==null?void 0:u.logo)!=null?m:s.logo_url)!=null?v:void 0}},l=dt(c,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new k("login_flow_timeout","The login flow timed out")),br);n(),e({loginPromiseResolvers:l,privyElementsConfig:d,activeLoginMethod:Se(d.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new k("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:a,closeLoginFlow:n}=t();if(!o){n();return}let c=Se(o.loginMethods)===null;r===null||!c?n():a(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),Mn= exports.A =()=>G(e=>e.privyElementsConfig),Tn= exports.B =()=>G(e=>e.openLoginFlow),Fn= exports.C =()=>G(e=>e.closeLoginFlow),jn= exports.D =()=>G(e=>e.goBack),Nn= exports.E =()=>G(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),_r=e=>{let{loginPromiseResolvers:t}=G.getState();t==null||t.resolve(e)},ct=()=>_r;var Ee=_react.createContext.call(void 0, {}),K;function ri(e){return K?K.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 oi=e=>{var We,xe;let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let R=_reactnative.AppState.addEventListener("change",Ot=>{r(Ot==="active")});return()=>{R.remove()}},[]);let[o,a]=_react.useState.call(void 0, !1),[n,c]=_react.useState.call(void 0, null),[s,i]=_react.useState.call(void 0, "loading"),[d,l]=_react.useState.call(void 0, !1),[u,m]=_react.useState.call(void 0, null),[v,y]=_react.useState.call(void 0, {status:"disconnected",account:null}),[h,p]=_react.useState.call(void 0, {status:"disconnected"}),[_,g]=_react.useState.call(void 0, {status:"initial"}),[w,b]=_react.useState.call(void 0, {status:"initial"}),E=_react.useRef.call(void 0, {}),[W,O]=_react.useState.call(void 0, {status:"initial"}),[q,T]=_react.useState.call(void 0, {status:"initial"}),[N,X]=_react.useState.call(void 0, {status:"initial"}),[me,F]=_react.useState.call(void 0, {status:"initial"}),[L,gt]=_react.useState.call(void 0, {status:"initial"}),[bt,_t]=_react.useState.call(void 0, );_react.useEffect.call(void 0, ()=>{var R;return _t((R=e.config)==null?void 0:R.mfa)},[(We=e.config)==null?void 0:We.mfa]);let ke=_react.useRef.call(void 0, {}),ye=_react.useRef.call(void 0, {}),fe=_react.useRef.call(void 0, {}),ve=_react.useRef.call(void 0, {}),Re=_react.useRef.call(void 0, {}),Oe=_react.useRef.call(void 0, {}),St=ct(),Q=_react.useCallback.call(void 0, R=>{if(R){St(R),Je(m)(R);return}m(null),g({status:"initial"}),b({status:"initial"}),y({status:"disconnected",account:null})},[]),C=_react.useMemo.call(void 0, ()=>{let R=e.storage||vt;return e.client?(K=e.client,K.setCallbacks({setUser:Q,setIsReady:l}),K):(K=new (0, _jssdkcore2.default)({storage:ft(R),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:yt(),baseUrl:e.baseUrl,sdkVersion:`expo:${Me.version}`,callbacks:{setUser:Q,setIsReady:l},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),K)},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,Q]),Et=_react.useCallback.call(void 0, ()=>(Q(null),C.auth.logout()),[Q,C]),At=_react.useCallback.call(void 0, ()=>f(void 0,null,function*(){try{return yield C.getAccessToken()}catch(R){return console.debug(R),null}}),[C]),Ct=_react.useCallback.call(void 0, ()=>C.getIdentityToken(),[C]);ot({client:C,isUserInitialized:o,setIsUserInitialized:a,setError:c});let Pt=$e({client:C,user:u,appId:e.appId,webViewState:s,createWalletCallbacks:ye,recoverWalletCallbacks:fe,setWalletRecoveryCallbacks:ve,setRecoveryFlowState:O,wallet:v,setWallet:y}),kt=Ke({client:C,user:u,webViewState:s,createSolanaWalletCallbacks:Re,recoverSolanaWalletCallbacks:Oe,setSolanaRecoveryFlowState:T,solanaWallet:h,setSolanaWallet:p});tt({client:C,isUserInitialized:o,user:u,oAuthState:w,setOAuthState:b,oAuthCallbacks:ke,recoveryFlowState:W,oAuthStateRef:E}),rt({client:C,user:u,webViewLoaded:s==="loaded",createWalletCallbacks:ye,recoverWalletCallbacks:fe,setWalletRecoveryCallbacks:ve,recoveryFlowState:W,oAuthState:w,setRecoveryFlowState:O,setWallet:y,appStateVisible:t});let{customAuthStateIsSettled:Rt}=et({client:C,user:u,isReady:o,customAuth:(xe=e.config)==null?void 0:xe.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(Ee.Provider,{value:{client:C,user:u,isReady:s!=="loading"&&o&&mt(w)&&Rt,error:n,logout:Et,getAccessToken:At,getIdentityToken:Ct,wallet:A(A({},v),Pt),solanaWallet:A(A({},h),kt),oAuthState:w,oAuthCallbacks:ke,recoveryFlowState:W,setRecoveryFlowState:O,solanaRecoveryFlowState:q,setSolanaRecoveryFlowState:T,createWalletCallbacks:ye,recoverWalletCallbacks:fe,setWalletRecoveryCallbacks:ve,createSolanaWalletCallbacks:Re,recoverSolanaWalletCallbacks:Oe,setOAuthState:b,siweState:N,setSiweState:X,otpState:_,setOtpState:g,passkeyState:me,setPasskeyState:F,farcasterState:L,setFarcasterState:gt,oAuthStateRef:E,mfaConfig:bt}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Fe,{logLevel:e.logLevel,client:C,isClientReady:d,setWebViewState:i,webViewState:s})))};var mt=e=>e.status!=="loading",Ce=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:a,client:n,oAuthStateRef:c}=_react.useContext.call(void 0, Ee),s=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{a.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let i=_react.useCallback.call(void 0, l=>{var m;let u=U(l);return o({status:"error",error:u}),(m=e==null?void 0:e.onError)==null||m.call(e,u),u},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(h){return f(this,arguments,function*({provider:u,redirectUri:m,isLegacyAppleIosBehaviorEnabled:v=!1,disableSignup:y}){var p,_,g;o({status:"loading"}),c.current={disableSignup:y};try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:w}=yield n.auth.oauth.generateURL(u,Y.createURL(m||"/")),b,E;if(_reactnative.Platform.OS==="ios"&&u==="apple"&&!v){let me=(p=new URL(w).searchParams.get("state"))!=null?p:"",F=yield re.signInAsync({state:me,requestedScopes:[re.AppleAuthenticationScope.EMAIL,re.AppleAuthenticationScope.FULL_NAME]}).catch(L=>{throw L instanceof Error&&"code"in L&&L.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):L});if(!F.authorizationCode||!F.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let L=yield n.auth.oauth.loginWithCode(F.authorizationCode,F.state,u,"raw",y?"no-signup":"login-or-sign-up");b=L.user,E=L.is_new_user}else b=yield n.auth.oauth.linkWithCode(F.authorizationCode,F.state,u,"raw");return(_=e==null?void 0:e.onSuccess)==null||_.call(e,b,E),o({status:"done"}),b!=null?b:void 0}let W=_reactnative.Platform.OS==="android"?w.replace("x.com","twitter.com"):w,O=yield oe.openAuthSessionAsync(W);if(_reactnative.Platform.OS==="android")return;if(O.type!=="success")throw[oe.WebBrowserResultType.CANCEL,oe.WebBrowserResultType.DISMISS].includes(O.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:q}=Y.parse(O.url),{privy_oauth_state:T,privy_oauth_code:N}=q;if(!N||!T)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 X=yield n.auth.oauth.loginWithCode(N,T,u,void 0,y?"no-signup":"login-or-sign-up");b=X.user,E=X.is_new_user}else b=yield n.auth.oauth.linkWithCode(N,T,u);return(g=e==null?void 0:e.onSuccess)==null||g.call(e,b,E),yield Y.openURL(O.url.split("?")[0]),o({status:"done"}),b!=null?b:void 0}catch(w){i(w)}})},[t,n,o,i]),state:r}};function pi(e){let{state:t,start:r}=Ce(x(A({},e),{action:"login"}));return{state:t,login:r}}function mi(e){let{state:t,start:r}=Ce(x(A({},e),{action:"link"}));return{state:t,link:r}}function yi(e){return Ce(e)}var yt=()=>{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 ft(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:()=>f(this,null,function*(){return[]})}}var vt={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:()=>f(void 0,null,function*(){return[]})};var xr=e=>f(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 x(A({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Ir=e=>f(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 x(A({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function Ri(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 Oi(e){var t,r,o,a;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:(a=e.allow_credentials)==null?void 0:a.map(({id:n,type:c,transports:s})=>({id:n,type:c,transports:s})),userVerification:e.user_verification}}function Wi(e){var t,r,o,a,n,c,s,i;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:(a=e.extensions)==null?void 0:a.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(n=e.authenticator_selection)==null?void 0:n.authenticator_attachment,residentKey:(c=e.authenticator_selection)==null?void 0:c.resident_key,userVerification:(s=e.authenticator_selection)==null?void 0:s.user_verification,requireResidentKey:(i=e.authenticator_selection)==null?void 0:i.require_resident_key}}}exports.a = A; exports.b = x; exports.c = Lr; exports.d = f; exports.e = Me; exports.f = se; exports.g = ge; exports.h = ze; exports.i = U; exports.j = vo; exports.k = _o; exports.l = Uo; exports.m = pi; exports.n = mi; exports.o = yi; exports.p = yt; exports.q = ft; exports.r = vt; exports.s = k; exports.t = nt; exports.u = _n; exports.v = Sn; exports.w = st; exports.x = kn; exports.y = lt; exports.z = dt; exports.A = Mn; exports.B = Tn; exports.C = Fn; exports.D = jn; exports.E = Nn; exports.F = Ee; exports.G = ri; exports.H = oi; exports.I = xr; exports.J = Ir; exports.K = Ri; exports.L = Oi; exports.M = Wi;
@@ -1 +1 @@
1
- import{F as h,J as ie,K as ae,L as se,a as p,b as te,d as m,f as I,g as oe,h as ne,i as g,j as _,k as M,l as L}from"./chunk-5TI6M4Z3.js";import{useCallback as T,useContext as ke}from"react";import{PrivyClientError as Se}from"@privy-io/js-sdk-core";var vr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=ke(h),n=T(l=>{var u;let y=g(l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=T(f=>m(void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]),i=T(u=>m(void 0,[u],function*({signature:l,messageOverride:y}){var f;try{if(!r)throw new Se({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let s=yield c.auth.siwe.linkWithSiwe(l,void 0,y);return a({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,s),s}catch(s){throw n(s)}}),[r,c,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:o}};import{useCallback as H,useContext as be}from"react";import{PrivyClientError as Ee}from"@privy-io/js-sdk-core";var Wr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=be(h),n=H(l=>{var u;let y=g(l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=H(f=>m(void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(f=>m(void 0,[f],function*({signature:l,messageOverride:y,disableSignup:u}){var s;try{if(r)throw new Ee({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let d=yield c.auth.siwe.loginWithSiwe(l,void 0,y,u?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,d.user,d.is_new_user),d.user}catch(d){throw n(d)}}),[r,c,n,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:o}};import{useCallback as ce,useContext as pe}from"react";import{PrivyClientError as _e}from"@privy-io/js-sdk-core";var Or=e=>{let{user:r,client:c}=pe(h),a=ce(n=>{var i;let t=g(n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:ce(t=>m(void 0,[t],function*({address:n}){var i;try{if(!r)throw new _e({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let l=yield c.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw a(l)}}),[r,c,a,e==null?void 0:e.onSuccess])}};import{useCallback as G,useContext as We,useState as Pe}from"react";import{PrivyClientError as le}from"@privy-io/js-sdk-core";var Gr=e=>{let[r,c]=Pe(""),{user:a,client:o,otpState:n,setOtpState:t}=We(h),i=G(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=G(f=>m(void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=G(s=>m(void 0,[s],function*({code:u,email:f}){var d;try{if(!a)throw new le({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let v=f||r;if(!v)throw new le({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.email.linkWithCode(v,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};import{useCallback as B,useContext as Ce,useState as xe}from"react";import{PrivyClientError as de}from"@privy-io/js-sdk-core";var Jr=e=>{let[r,c]=xe(""),{user:a,client:o,otpState:n,setOtpState:t}=Ce(h),i=B(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=B(f=>m(void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=B(d=>m(void 0,[d],function*({code:u,email:f,disableSignup:s}){var v;try{if(a)throw new de({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 k=f||r;if(!k)throw new de({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.email.loginWithCode(k,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};import{useCallback as N,useContext as Ue,useState as Me}from"react";import{PrivyClientError as ue}from"@privy-io/js-sdk-core";var Zr=e=>{let[r,c]=Me(""),{user:a,client:o,otpState:n,setOtpState:t}=Ue(h),i=N(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=N(f=>m(void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=N(s=>m(void 0,[s],function*({code:u,phone:f}){var d;try{if(!a)throw new ue({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(f||r))throw new ue({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.phone.linkWithCode(f||r,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};import{useCallback as j,useContext as Le,useState as Oe}from"react";import{PrivyClientError as me}from"@privy-io/js-sdk-core";var at=e=>{let[r,c]=Oe(""),{user:a,client:o,otpState:n,setOtpState:t}=Le(h),i=j(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=j(f=>m(void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=j(d=>m(void 0,[d],function*({code:u,phone:f,disableSignup:s}){var v;try{if(a)throw new me({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(f||r))throw new me({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.phone.loginWithCode(f||r,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};import*as O from"expo-linking";import{useCallback as q,useContext as Ae,useRef as Re}from"react";import{PrivyClientError as C}from"@privy-io/js-sdk-core";var ht=e=>{let{appState:r,getCurrentAppState:c}=M(),{client:a,user:o,farcasterState:n,setFarcasterState:t}=Ae(h),i=Re(!1),l=q(f=>{var d;let s=g(f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=q(()=>{i.current=!0},[]);return{linkWithFarcaster:q((v,...k)=>m(void 0,[v,...k],function*({relyingParty:f,redirectUrl:s},d={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(i.current=!1,!o)throw new C({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:b,channel_token:S}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:O.createURL(s!=null?s:"/")});if(!b)throw new C({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!S)throw new C({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield O.openURL(b),t({status:"polling-status"});let E=0;for(;E<d.pollAttempts;){if(i.current)throw new C({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _(d.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let P=yield a.auth.farcaster.link(p({channel_token:S},W));return t({status:"done"}),(w=e==null?void 0:e.onSuccess)==null||w.call(e,P),P}E++,yield _(d.pollIntervalMs)}throw new C({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw l(b)}}),[a,e==null?void 0:e.onSuccess,l,t,o]),state:n,cancel:y}};import{useCallback as he,useContext as Fe}from"react";var kt=e=>{let{client:r}=Fe(h),c=he(o=>{var t;let n=g(o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:he(n=>m(void 0,[n],function*({fid:o}){var t;try{let i=yield r.auth.farcaster.unlink({fid:o});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw c(i)}}),[r,e==null?void 0:e.onSuccess,c])}};import*as A from"expo-linking";import{useCallback as J,useContext as Ie,useRef as Te}from"react";import{PrivyClientError as x}from"@privy-io/js-sdk-core";var Pt=e=>{let{appState:r,getCurrentAppState:c}=M(),{client:a,user:o,farcasterState:n,setFarcasterState:t}=Ie(h),i=Te(!1),l=J(f=>{var d;let s=g(f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=J(()=>{i.current=!0},[]);return{loginWithFarcaster:J((k,...w)=>m(void 0,[k,...w],function*({relyingParty:f,redirectUrl:s,disableSignup:d},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(i.current=!1,o)throw new x({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:S,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:A.createURL(s!=null?s:"/")});if(!S)throw new x({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new x({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield A.openURL(S),t({status:"polling-status"});let W=0;for(;W<v.pollAttempts;){if(i.current)throw new x({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _(v.pollIntervalMs);continue}let P=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(P.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(p({channel_token:E,mode:d?"no-signup":"login-or-sign-up"},P));return t({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,F.user,F.is_new_user),F.user}W++,yield _(v.pollIntervalMs)}throw new x({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(S){throw l(S)}}),[a,l,e==null?void 0:e.onSuccess,t,o,r]),state:n,cancel:y}};import{useCallback as ye,useContext as He}from"react";var Ot=e=>{let{client:r}=He(h),c=ye(o=>{var t;let n=g(o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:ye(t=>m(void 0,[t],function*({provider:o,subject:n}){var i;try{let l=yield r.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw c(l)}}),[r,e==null?void 0:e.onSuccess,c])}};import{useContext as Ge,useEffect as Be,useRef as Ne}from"react";var Tt=e=>{let{client:r}=Ge(h),c=Ne(e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,Be(()=>{let{unsubscribe:a}=r.addOAuthTokensListener(o=>{c.current(o)});return a},[r])};import{useCallback as je,useContext as qe}from"react";import{getUserEmbeddedEthereumWallet as Ke,getUserEmbeddedSolanaWallet as De,PrivyClientError as U,throwIfInvalidRecoveryUpgradePath as Je}from"@privy-io/js-sdk-core";var Kt=()=>{let{user:e,client:r}=qe(h);return{setRecovery:je(a=>m(void 0,null,function*(){var i;let o=r.app.appId;if(!e)throw new U({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=Ke(e))!=null?i:De(e);if(!n)throw new U({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(l){throw new U({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}Je({currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:o,client:r,user:e,primaryAccount:n,recoveryParams:a});try{let{user:l}=yield r.embeddedWallet.setRecovery(t);return{user:l}}catch(l){throw new U({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"})}}),[r,e])}},Ve=n=>m(void 0,[n],function*({appId:e,client:r,user:c,primaryAccount:a,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:a};case"user-passcode":return te(p({},o),{wallet:a});case"google-drive":{let t=yield L(r);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:i}=yield oe({appId:e,client:r,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:i,wallet:a}}default:throw new U({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});import{useCallback as $e,useContext as ze}from"react";import{getUserEmbeddedEthereumWallet as Qe,getUserEmbeddedSolanaWallet as Xe,PrivyClientError as V}from"@privy-io/js-sdk-core";var Yt=()=>{let{user:e,client:r}=ze(h);return{recover:$e(a=>m(void 0,null,function*(){var l;if(!e)throw new V({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(l=Qe(e))!=null?l:Xe(e);if(!o)throw new V({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,t,i;switch(a.recoveryMethod){case"user-passcode":n=a.password;break;case"google-drive":t=yield L(r);break;case"icloud":let{recoverySecret:y}=yield ne({client:r,walletAddress:o.address,chainType:o.chain_type});i=y;break}try{o.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(o,n,t,i):o.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",n,t,i))}catch(y){throw new V({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[r,e])}};import{useContext as Ye,useEffect as $}from"react";var z=(e={})=>{let{wallet:r,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:o}=Ye(h),{onCreateWalletSuccess:n,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:y,onSetWalletRecoveryError:u}=e;return $(()=>{c.current={onSuccess:n,onError:t}},[n,t]),$(()=>{a.current={onSuccess:l,onError:i}},[l,i]),$(()=>{o.current={onSuccess:y,onError:u}},[l,i]),r};import{useEffect as Ze}from"react";var ao=({onStateChange:e})=>{let r=z();return Ze(()=>{e(r)},[r])};import{useContext as er}from"react";var uo=()=>{let{getIdentityToken:e}=er(h);return{getIdentityToken:e}};import{useCallback as fe,useContext as rr}from"react";import{PrivyClientError as tr}from"@privy-io/js-sdk-core";var wo=e=>{let{user:r,client:c}=rr(h),a=fe(n=>{var i;let t=g(n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:fe(()=>m(void 0,null,function*(){var n;try{if(r)throw new tr({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield c.auth.guest.create();return(n=e==null?void 0:e.onSuccess)==null||n.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,r,e==null?void 0:e.onSuccess])}};import{useContext as or,useEffect as nr}from"react";function Eo({onMfaRequired:e}){let{client:r,user:c}=or(h);nr(()=>{function a(){return m(this,null,function*(){var o;yield e((o=c==null?void 0:c.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return r.mfaPromises.on("mfaRequired",a),()=>{r.mfaPromises.off("mfaRequired",a)}},[r,c,e])}import{useCallback as Q,useContext as ir}from"react";import{PrivyClientError as R}from"@privy-io/js-sdk-core";function Uo(){let{client:e,mfaConfig:r}=ir(h),c=Q(n=>m(this,null,function*(){switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:t}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||(r==null?void 0:r.relyingParty)});return se(t);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e,r==null?void 0:r.relyingParty]),a=Q(n=>m(this,null,function*(){var t,i,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new R({code:"invalid_mfa_code",error:"Invalid MFA code"});(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||(r==null?void 0:r.relyingParty)||""}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;case"passkey":if(typeof n.mfaCode=="string")throw new R({code:"invalid_passkey_response",error:"Invalid authenticator response"});let y=yield ie(n.mfaCode),u=ae(y);(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||"",mfaCode:u}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;default:let f=new R({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(f),f}}),[e,r==null?void 0:r.relyingParty]),o=Q(()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new R({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:c,submit:a,cancel:o}}import{useCallback as X,useContext as ar}from"react";function Ro(){let{client:e}=ar(h),r=X(o=>m(this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.mfaMethod}`)}}),[e]),c=X(o=>m(this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.mfaMethod}`)}}),[e]),a=X(o=>m(this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[]});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:r,submitMfaEnrollment:c,unenrollMfa:a}}import{useContext as sr,useEffect as ge}from"react";var cr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=sr(h),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return ge(()=>{c.current={onSuccess:o,onError:n}},[o,n]),ge(()=>{a.current={onSuccess:i,onError:t}},[i,t]),r};import{useContext as lr}from"react";var Y=()=>{let{user:e,isReady:r,logout:c,getAccessToken:a,error:o}=lr(h);return{user:e,isReady:r,error:o,logout:c,getAccessToken:a}};import{useContext as dr}from"react";var Z=()=>{let{client:e}=dr(h);return e};import{useCallback as ur,useMemo as mr}from"react";import{getAllUserEmbeddedBitcoinWallets as ee,getUserEmbeddedEthereumWallet as we,getUserEmbeddedSolanaWallet as ve,PrivyClientError as re}from"@privy-io/js-sdk-core";var hr=()=>{let{user:e}=Y(),r=Z(),c=mr(()=>{var l;let o=(l=we(e))!=null?l:ve(e);if(!o)return[];let n=ee(e),{entropyId:t,entropyIdVerifier:i}=I(o);return n.map(y=>({address:y.address,walletIndex:y.wallet_index,publicKey:y.public_key,chainType:y.chain_type,getProvider:()=>r.embeddedWallet.getBitcoinProvider({wallet:y,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=ur(t=>m(void 0,[t],function*({chainType:o,createAdditional:n=!1}){var k;let{user:i}=yield r.user.get(),l=(k=we(i))!=null?k:ve(i);if(!l)throw new re({code:"embedded_wallet_creation_error",error:"No existing wallet for this user, create an Ethereum walet first to add a Bitcoin wallet"});let{entropyId:y,entropyIdVerifier:u}=I(l),f=ee(i).filter(w=>w.chain_type===o);if(!n&&f.length>0)throw new re({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let s=f.length===0?0:Math.max(...f.map(w=>w.wallet_index),0)+1,d=yield r.embeddedWallet.add({chainType:o,hdWalletIndex:s,entropyId:y,entropyIdVerifier:u}),v=ee(d.user).find(w=>w.chain_type===o&&w.wallet_index===s);if(!d.user||!v)throw new re({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:d.user,provider:yield r.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:y,entropyIdVerifier:u})}}),[r]);return{wallets:c,create:a}};export{vr as a,Wr as b,Or as c,Gr as d,Jr as e,Zr as f,at as g,ht as h,kt as i,Pt as j,Ot as k,Tt as l,Kt as m,Yt as n,z as o,ao as p,uo as q,wo as r,Eo as s,Uo as t,Ro as u,cr as v,Y as w,Z as x,hr as y};
1
+ import{F as h,J as ie,K as ae,L as se,a as p,b as te,d as m,f as I,g as oe,h as ne,i as g,j as _,k as M,l as L}from"./chunk-N6VJQX77.js";import{useCallback as T,useContext as ke}from"react";import{PrivyClientError as Se}from"@privy-io/js-sdk-core";var vr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=ke(h),n=T(l=>{var u;let y=g(l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=T(f=>m(void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]),i=T(u=>m(void 0,[u],function*({signature:l,messageOverride:y}){var f;try{if(!r)throw new Se({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});a({status:"submitting-signature"});let s=yield c.auth.siwe.linkWithSiwe(l,void 0,y);return a({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,s),s}catch(s){throw n(s)}}),[r,c,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:i,state:o}};import{useCallback as H,useContext as be}from"react";import{PrivyClientError as Ee}from"@privy-io/js-sdk-core";var Wr=e=>{let{user:r,client:c,setSiweState:a,siweState:o}=be(h),n=H(l=>{var u;let y=g(l);return a({status:"error",error:y}),(u=e==null?void 0:e.onError)==null||u.call(e,y),y},[e==null?void 0:e.onError]),t=H(f=>m(void 0,[f],function*({wallet:l,from:{domain:y,uri:u}}){var s;try{a({status:"generating-message"});let d=yield c.auth.siwe.init(l,y,u);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,d.message),d.message}catch(d){throw n(d)}}),[c,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(f=>m(void 0,[f],function*({signature:l,messageOverride:y,disableSignup:u}){var s;try{if(r)throw new Ee({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let d=yield c.auth.siwe.loginWithSiwe(l,void 0,y,u?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,d.user,d.is_new_user),d.user}catch(d){throw n(d)}}),[r,c,n,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:o}};import{useCallback as ce,useContext as pe}from"react";import{PrivyClientError as _e}from"@privy-io/js-sdk-core";var Or=e=>{let{user:r,client:c}=pe(h),a=ce(n=>{var i;let t=g(n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:ce(t=>m(void 0,[t],function*({address:n}){var i;try{if(!r)throw new _e({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let l=yield c.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw a(l)}}),[r,c,a,e==null?void 0:e.onSuccess])}};import{useCallback as G,useContext as We,useState as Pe}from"react";import{PrivyClientError as le}from"@privy-io/js-sdk-core";var Gr=e=>{let[r,c]=Pe(""),{user:a,client:o,otpState:n,setOtpState:t}=We(h),i=G(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=G(f=>m(void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=G(s=>m(void 0,[s],function*({code:u,email:f}){var d;try{if(!a)throw new le({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let v=f||r;if(!v)throw new le({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.email.linkWithCode(v,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};import{useCallback as B,useContext as Ce,useState as xe}from"react";import{PrivyClientError as de}from"@privy-io/js-sdk-core";var Jr=e=>{let[r,c]=xe(""),{user:a,client:o,otpState:n,setOtpState:t}=Ce(h),i=B(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=B(f=>m(void 0,[f],function*({email:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.email.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=B(d=>m(void 0,[d],function*({code:u,email:f,disableSignup:s}){var v;try{if(a)throw new de({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 k=f||r;if(!k)throw new de({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.email.loginWithCode(k,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};import{useCallback as N,useContext as Ue,useState as Me}from"react";import{PrivyClientError as ue}from"@privy-io/js-sdk-core";var Zr=e=>{let[r,c]=Me(""),{user:a,client:o,otpState:n,setOtpState:t}=Ue(h),i=N(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=N(f=>m(void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=N(s=>m(void 0,[s],function*({code:u,phone:f}){var d;try{if(!a)throw new ue({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(f||r))throw new ue({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});t({status:"submitting-code"});let k=yield o.auth.phone.linkWithCode(f||r,u);return t({status:"done"}),(d=e==null?void 0:e.onLinkSuccess)==null||d.call(e,k),k}catch(v){i(v)}}),[a,o,r,i,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:y,state:n}};import{useCallback as j,useContext as Le,useState as Oe}from"react";import{PrivyClientError as me}from"@privy-io/js-sdk-core";var at=e=>{let[r,c]=Oe(""),{user:a,client:o,otpState:n,setOtpState:t}=Le(h),i=j(u=>{var s;let f=g(u);return t({status:"error",error:f}),(s=e==null?void 0:e.onError)==null||s.call(e,f),f},[e==null?void 0:e.onError]),l=j(f=>m(void 0,[f],function*({phone:u}){var s;c(u);try{t({status:"sending-code"});let d=yield o.auth.phone.sendCode(u);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:u}),d}catch(d){return i(d),{success:!1}}}),[o,i,e==null?void 0:e.onSendCodeSuccess]),y=j(d=>m(void 0,[d],function*({code:u,phone:f,disableSignup:s}){var v;try{if(a)throw new me({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(f||r))throw new me({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `loginWithCode`"});t({status:"submitting-code"});let w=yield o.auth.phone.loginWithCode(f||r,u,s?"no-signup":"login-or-sign-up");return t({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(k){i(k)}}),[a,o,r,i,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:y,state:n}};import*as O from"expo-linking";import{useCallback as q,useContext as Ae,useRef as Re}from"react";import{PrivyClientError as C}from"@privy-io/js-sdk-core";var ht=e=>{let{appState:r,getCurrentAppState:c}=M(),{client:a,user:o,farcasterState:n,setFarcasterState:t}=Ae(h),i=Re(!1),l=q(f=>{var d;let s=g(f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=q(()=>{i.current=!0},[]);return{linkWithFarcaster:q((v,...k)=>m(void 0,[v,...k],function*({relyingParty:f,redirectUrl:s},d={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(i.current=!1,!o)throw new C({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});t({status:"generating-uri"});let{connect_uri:b,channel_token:S}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:O.createURL(s!=null?s:"/")});if(!b)throw new C({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!S)throw new C({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield O.openURL(b),t({status:"polling-status"});let E=0;for(;E<d.pollAttempts;){if(i.current)throw new C({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _(d.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let P=yield a.auth.farcaster.link(p({channel_token:S},W));return t({status:"done"}),(w=e==null?void 0:e.onSuccess)==null||w.call(e,P),P}E++,yield _(d.pollIntervalMs)}throw new C({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw l(b)}}),[a,e==null?void 0:e.onSuccess,l,t,o]),state:n,cancel:y}};import{useCallback as he,useContext as Fe}from"react";var kt=e=>{let{client:r}=Fe(h),c=he(o=>{var t;let n=g(o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:he(n=>m(void 0,[n],function*({fid:o}){var t;try{let i=yield r.auth.farcaster.unlink({fid:o});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,i),i}catch(i){throw c(i)}}),[r,e==null?void 0:e.onSuccess,c])}};import*as A from"expo-linking";import{useCallback as J,useContext as Ie,useRef as Te}from"react";import{PrivyClientError as x}from"@privy-io/js-sdk-core";var Pt=e=>{let{appState:r,getCurrentAppState:c}=M(),{client:a,user:o,farcasterState:n,setFarcasterState:t}=Ie(h),i=Te(!1),l=J(f=>{var d;let s=g(f);return t({status:"error",error:s}),(d=e==null?void 0:e.onError)==null||d.call(e,s),s},[e==null?void 0:e.onError,t]),y=J(()=>{i.current=!0},[]);return{loginWithFarcaster:J((k,...w)=>m(void 0,[k,...w],function*({relyingParty:f,redirectUrl:s,disableSignup:d},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(i.current=!1,o)throw new x({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});t({status:"generating-uri"});let{connect_uri:S,channel_token:E}=yield a.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:A.createURL(s!=null?s:"/")});if(!S)throw new x({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new x({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield A.openURL(S),t({status:"polling-status"});let W=0;for(;W<v.pollAttempts;){if(i.current)throw new x({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(r.current!=="active"&&c()!=="active"){yield _(v.pollIntervalMs);continue}let P=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(P.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(p({channel_token:E,mode:d?"no-signup":"login-or-sign-up"},P));return t({status:"done"}),(b=e==null?void 0:e.onSuccess)==null||b.call(e,F.user,F.is_new_user),F.user}W++,yield _(v.pollIntervalMs)}throw new x({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(S){throw l(S)}}),[a,l,e==null?void 0:e.onSuccess,t,o,r]),state:n,cancel:y}};import{useCallback as ye,useContext as He}from"react";var Ot=e=>{let{client:r}=He(h),c=ye(o=>{var t;let n=g(o);return(t=e==null?void 0:e.onError)==null||t.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:ye(t=>m(void 0,[t],function*({provider:o,subject:n}){var i;try{let l=yield r.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,l),l}catch(l){throw c(l)}}),[r,e==null?void 0:e.onSuccess,c])}};import{useContext as Ge,useEffect as Be,useRef as Ne}from"react";var Tt=e=>{let{client:r}=Ge(h),c=Ne(e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,Be(()=>{let{unsubscribe:a}=r.addOAuthTokensListener(o=>{c.current(o)});return a},[r])};import{useCallback as je,useContext as qe}from"react";import{getUserEmbeddedEthereumWallet as Ke,getUserEmbeddedSolanaWallet as De,PrivyClientError as U,throwIfInvalidRecoveryUpgradePath as Je}from"@privy-io/js-sdk-core";var Kt=()=>{let{user:e,client:r}=qe(h);return{setRecovery:je(a=>m(void 0,null,function*(){var i;let o=r.app.appId;if(!e)throw new U({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=Ke(e))!=null?i:De(e);if(!n)throw new U({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(l){throw new U({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}Je({currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:o,client:r,user:e,primaryAccount:n,recoveryParams:a});try{let{user:l}=yield r.embeddedWallet.setRecovery(t);return{user:l}}catch(l){throw new U({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"})}}),[r,e])}},Ve=n=>m(void 0,[n],function*({appId:e,client:r,user:c,primaryAccount:a,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:a};case"user-passcode":return te(p({},o),{wallet:a});case"google-drive":{let t=yield L(r);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:i}=yield oe({appId:e,client:r,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:i,wallet:a}}default:throw new U({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});import{useCallback as $e,useContext as ze}from"react";import{getUserEmbeddedEthereumWallet as Qe,getUserEmbeddedSolanaWallet as Xe,PrivyClientError as V}from"@privy-io/js-sdk-core";var Yt=()=>{let{user:e,client:r}=ze(h);return{recover:$e(a=>m(void 0,null,function*(){var l;if(!e)throw new V({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(l=Qe(e))!=null?l:Xe(e);if(!o)throw new V({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,t,i;switch(a.recoveryMethod){case"user-passcode":n=a.password;break;case"google-drive":t=yield L(r);break;case"icloud":let{recoverySecret:y}=yield ne({client:r,walletAddress:o.address,chainType:o.chain_type});i=y;break}try{o.chain_type==="ethereum"?yield r.embeddedWallet.getProvider(o,n,t,i):o.chain_type==="solana"&&(yield r.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",n,t,i))}catch(y){throw new V({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[r,e])}};import{useContext as Ye,useEffect as $}from"react";var z=(e={})=>{let{wallet:r,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:o}=Ye(h),{onCreateWalletSuccess:n,onCreateWalletError:t,onRecoverWalletError:i,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:y,onSetWalletRecoveryError:u}=e;return $(()=>{c.current={onSuccess:n,onError:t}},[n,t]),$(()=>{a.current={onSuccess:l,onError:i}},[l,i]),$(()=>{o.current={onSuccess:y,onError:u}},[l,i]),r};import{useEffect as Ze}from"react";var ao=({onStateChange:e})=>{let r=z();return Ze(()=>{e(r)},[r])};import{useContext as er}from"react";var uo=()=>{let{getIdentityToken:e}=er(h);return{getIdentityToken:e}};import{useCallback as fe,useContext as rr}from"react";import{PrivyClientError as tr}from"@privy-io/js-sdk-core";var wo=e=>{let{user:r,client:c}=rr(h),a=fe(n=>{var i;let t=g(n);return(i=e==null?void 0:e.onError)==null||i.call(e,t),t},[e==null?void 0:e.onError]);return{create:fe(()=>m(void 0,null,function*(){var n;try{if(r)throw new tr({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let t=yield c.auth.guest.create();return(n=e==null?void 0:e.onSuccess)==null||n.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,r,e==null?void 0:e.onSuccess])}};import{useContext as or,useEffect as nr}from"react";function Eo({onMfaRequired:e}){let{client:r,user:c}=or(h);nr(()=>{function a(){return m(this,null,function*(){var o;yield e((o=c==null?void 0:c.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return r.mfaPromises.on("mfaRequired",a),()=>{r.mfaPromises.off("mfaRequired",a)}},[r,c,e])}import{useCallback as Q,useContext as ir}from"react";import{PrivyClientError as R}from"@privy-io/js-sdk-core";function Uo(){let{client:e,mfaConfig:r}=ir(h),c=Q(n=>m(this,null,function*(){switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:t}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||(r==null?void 0:r.relyingParty)});return se(t);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e,r==null?void 0:r.relyingParty]),a=Q(n=>m(this,null,function*(){var t,i,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new R({code:"invalid_mfa_code",error:"Invalid MFA code"});(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||(r==null?void 0:r.relyingParty)||""}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;case"passkey":if(typeof n.mfaCode=="string")throw new R({code:"invalid_passkey_response",error:"Invalid authenticator response"});let y=yield ie(n.mfaCode),u=ae(y);(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||"",mfaCode:u}),yield new Promise((s,d)=>{e.mfaPromises.submitPromise.current={resolve:s,reject:d}});break;default:let f=new R({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(f),f}}),[e,r==null?void 0:r.relyingParty]),o=Q(()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new R({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:c,submit:a,cancel:o}}import{useCallback as X,useContext as ar}from"react";function Ro(){let{client:e}=ar(h),r=X(o=>m(this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.mfaMethod}`)}}),[e]),c=X(o=>m(this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.mfaMethod}`)}}),[e]),a=X(o=>m(this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[]});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:r,submitMfaEnrollment:c,unenrollMfa:a}}import{useContext as sr,useEffect as ge}from"react";var cr=(e={})=>{let{solanaWallet:r,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=sr(h),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:t,onRecoverWalletSuccess:i}=e;return ge(()=>{c.current={onSuccess:o,onError:n}},[o,n]),ge(()=>{a.current={onSuccess:i,onError:t}},[i,t]),r};import{useContext as lr}from"react";var Y=()=>{let{user:e,isReady:r,logout:c,getAccessToken:a,error:o}=lr(h);return{user:e,isReady:r,error:o,logout:c,getAccessToken:a}};import{useContext as dr}from"react";var Z=()=>{let{client:e}=dr(h);return e};import{useCallback as ur,useMemo as mr}from"react";import{getAllUserEmbeddedBitcoinWallets as ee,getUserEmbeddedEthereumWallet as we,getUserEmbeddedSolanaWallet as ve,PrivyClientError as re}from"@privy-io/js-sdk-core";var hr=()=>{let{user:e}=Y(),r=Z(),c=mr(()=>{var l;let o=(l=we(e))!=null?l:ve(e);if(!o)return[];let n=ee(e),{entropyId:t,entropyIdVerifier:i}=I(o);return n.map(y=>({address:y.address,walletIndex:y.wallet_index,publicKey:y.public_key,chainType:y.chain_type,getProvider:()=>r.embeddedWallet.getBitcoinProvider({wallet:y,entropyId:t,entropyIdVerifier:i})}))},[r,e]),a=ur(t=>m(void 0,[t],function*({chainType:o,createAdditional:n=!1}){var k;let{user:i}=yield r.user.get(),l=(k=we(i))!=null?k:ve(i);if(!l)throw new re({code:"embedded_wallet_creation_error",error:"No existing wallet for this user, create an Ethereum walet first to add a Bitcoin wallet"});let{entropyId:y,entropyIdVerifier:u}=I(l),f=ee(i).filter(w=>w.chain_type===o);if(!n&&f.length>0)throw new re({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let s=f.length===0?0:Math.max(...f.map(w=>w.wallet_index),0)+1,d=yield r.embeddedWallet.add({chainType:o,hdWalletIndex:s,entropyId:y,entropyIdVerifier:u}),v=ee(d.user).find(w=>w.chain_type===o&&w.wallet_index===s);if(!d.user||!v)throw new re({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:d.user,provider:yield r.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:y,entropyIdVerifier:u})}}),[r]);return{wallets:c,create:a}};export{vr as a,Wr as b,Or as c,Gr as d,Jr as e,Zr as f,at as g,ht as h,kt as i,Pt as j,Ot as k,Tt as l,Kt as m,Yt as n,z as o,ao as p,uo as q,wo as r,Eo as s,Uo as t,Ro as u,cr as v,Y as w,Z as x,hr as y};