@privy-io/expo 0.34.2 → 0.34.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-RRHSSUHM.js → chunk-CD2ASMNW.js} +1 -1
- package/dist/{chunk-M624SPNN.js → chunk-K6NA65EX.js} +1 -1
- package/dist/esm/{chunk-RRHSSUHM.js → chunk-CD2ASMNW.js} +1 -1
- package/dist/esm/{chunk-M624SPNN.js → chunk-K6NA65EX.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/passkey.js +1 -1
- package/dist/esm/smart-wallets.js +1 -1
- package/dist/index.js +1 -1
- package/dist/passkey.js +1 -1
- package/dist/smart-wallets.js +1 -1
- package/package.json +2 -2
|
@@ -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 _chunkM624SPNNjs = require('./chunk-M624SPNN.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var vr=e=>{let{user:o,client:c,setSiweState:a,siweState:r}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),i=_react.useCallback.call(void 0, l=>{var d;let f=_chunkM624SPNNjs.i.call(void 0, l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]),n=_react.useCallback.call(void 0, d=>_chunkM624SPNNjs.d.call(void 0, void 0,[d],function*({signature:l,messageOverride:f}){var y;try{if(!o)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,f);return a({status:"done"}),(y=e==null?void 0:e.onSuccess)==null||y.call(e,s),s}catch(s){throw i(s)}}),[o,c,i,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:n,state:r}};var Wr=e=>{let{user:o,client:c,setSiweState:a,siweState:r}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),i=_react.useCallback.call(void 0, l=>{var d;let f=_chunkM624SPNNjs.i.call(void 0, l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({signature:l,messageOverride:f,disableSignup:d}){var s;try{if(o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let u=yield c.auth.siwe.loginWithSiwe(l,void 0,f,d?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,u.user,u.is_new_user),u.user}catch(u){throw i(u)}}),[o,c,i,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:r}};var Or=e=>{let{user:o,client:c}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),a=_react.useCallback.call(void 0, i=>{var n;let t=_chunkM624SPNNjs.i.call(void 0, i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunkM624SPNNjs.d.call(void 0, void 0,[t],function*({address:i}){var n;try{if(!o)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(i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw a(l)}}),[o,c,a,e==null?void 0:e.onSuccess])}};var Gr=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkM624SPNNjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, s=>_chunkM624SPNNjs.d.call(void 0, void 0,[s],function*({code:d,email:y}){var u;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let v=y||o;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 r.auth.email.linkWithCode(v,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};var Jr=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkM624SPNNjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, u=>_chunkM624SPNNjs.d.call(void 0, void 0,[u],function*({code:d,email:y,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=y||o;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 r.auth.email.loginWithCode(k,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};var Zr=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkM624SPNNjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, s=>_chunkM624SPNNjs.d.call(void 0, void 0,[s],function*({code:d,phone:y}){var u;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(y||o))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 r.auth.phone.linkWithCode(y||o,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};var at=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkM624SPNNjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkM624SPNNjs.d.call(void 0, void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, u=>_chunkM624SPNNjs.d.call(void 0, void 0,[u],function*({code:d,phone:y,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(!(y||o))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 r.auth.phone.loginWithCode(y||o,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};var _expolinking = require('expo-linking'); var O = _interopRequireWildcard(_expolinking); var A = _interopRequireWildcard(_expolinking);var ht=e=>{let{appState:o,getCurrentAppState:c}=_chunkM624SPNNjs.k.call(void 0, ),{client:a,user:r,farcasterState:i,setFarcasterState:t}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),n=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, y=>{var u;let s=_chunkM624SPNNjs.i.call(void 0, y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=_react.useCallback.call(void 0, ()=>{n.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...k)=>_chunkM624SPNNjs.d.call(void 0, void 0,[v,...k],function*({relyingParty:y,redirectUrl:s},u={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(n.current=!1,!r)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:y,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<u.pollAttempts;){if(n.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _chunkM624SPNNjs.j.call(void 0, u.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let C=yield a.auth.farcaster.link(_chunkM624SPNNjs.a.call(void 0, {channel_token:S},W));return t({status:"done"}),(w=e==null?void 0:e.onSuccess)==null||w.call(e,C),C}E++,yield _chunkM624SPNNjs.j.call(void 0, u.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,r]),state:i,cancel:f}};var kt=e=>{let{client:o}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),c=_react.useCallback.call(void 0, r=>{var t;let i=_chunkM624SPNNjs.i.call(void 0, r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, i=>_chunkM624SPNNjs.d.call(void 0, void 0,[i],function*({fid:r}){var t;try{let n=yield o.auth.farcaster.unlink({fid:r});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,n),n}catch(n){throw c(n)}}),[o,e==null?void 0:e.onSuccess,c])}};var Ct=e=>{let{appState:o,getCurrentAppState:c}=_chunkM624SPNNjs.k.call(void 0, ),{client:a,user:r,farcasterState:i,setFarcasterState:t}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),n=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, y=>{var u;let s=_chunkM624SPNNjs.i.call(void 0, y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=_react.useCallback.call(void 0, ()=>{n.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (k,...w)=>_chunkM624SPNNjs.d.call(void 0, void 0,[k,...w],function*({relyingParty:y,redirectUrl:s,disableSignup:u},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(n.current=!1,r)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:y,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(n.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _chunkM624SPNNjs.j.call(void 0, v.pollIntervalMs);continue}let C=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(C.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(_chunkM624SPNNjs.a.call(void 0, {channel_token:E,mode:u?"no-signup":"login-or-sign-up"},C));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 _chunkM624SPNNjs.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,r,o]),state:i,cancel:f}};var Ot=e=>{let{client:o}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),c=_react.useCallback.call(void 0, r=>{var t;let i=_chunkM624SPNNjs.i.call(void 0, r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunkM624SPNNjs.d.call(void 0, void 0,[t],function*({provider:r,subject:i}){var n;try{let l=yield o.auth.oauth.unlink(r,i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw c(l)}}),[o,e==null?void 0:e.onSuccess,c])}};var Tt=e=>{let{client:o}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),c=_react.useRef.call(void 0, e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:a}=o.addOAuthTokensListener(r=>{c.current(r)});return a},[o])};var Kt=()=>{let{user:e,client:o}=_react.useContext.call(void 0, _chunkM624SPNNjs.E);return{setRecovery:_react.useCallback.call(void 0, a=>_chunkM624SPNNjs.d.call(void 0, void 0,null,function*(){var n;let r=o.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 i=(n=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?n:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{i.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(i):i.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(i,i.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:i.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:r,client:o,user:e,primaryAccount:i,recoveryParams:a});try{let{user:l}=yield o.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"})}}),[o,e])}},Ve=i=>_chunkM624SPNNjs.d.call(void 0, void 0,[i],function*({appId:e,client:o,user:c,primaryAccount:a,recoveryParams:r}){switch(r.recoveryMethod){case"user-passcode":return _chunkM624SPNNjs.b.call(void 0, _chunkM624SPNNjs.a.call(void 0, {},r),{wallet:a});case"google-drive":{let t=yield _chunkM624SPNNjs.l.call(void 0, o);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:n}=yield _chunkM624SPNNjs.g.call(void 0, {appId:e,client:o,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:n,wallet:a}}default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Yt=()=>{let{user:e,client:o}=_react.useContext.call(void 0, _chunkM624SPNNjs.E);return{recover:_react.useCallback.call(void 0, a=>_chunkM624SPNNjs.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 r=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let i,t,n;switch(a.recoveryMethod){case"user-passcode":i=a.password;break;case"google-drive":t=yield _chunkM624SPNNjs.l.call(void 0, o);break;case"icloud":let{recoverySecret:f}=yield _chunkM624SPNNjs.h.call(void 0, {client:o,walletAddress:r.address,chainType:r.chain_type});n=f;break}try{r.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(r,i,t,n):r.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier",i,t,n))}catch(f){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[o,e])}};var z=(e={})=>{let{wallet:o,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:r}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),{onCreateWalletSuccess:i,onCreateWalletError:t,onRecoverWalletError:n,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:f,onSetWalletRecoveryError:d}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:i,onError:t}},[i,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:l,onError:n}},[l,n]),_react.useEffect.call(void 0, ()=>{r.current={onSuccess:f,onError:d}},[l,n]),o};var ao=({onStateChange:e})=>{let o=z();return _react.useEffect.call(void 0, ()=>{e(o)},[o])};var uo=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkM624SPNNjs.E);return{getIdentityToken:e}};var wo=e=>{let{user:o,client:c}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),a=_react.useCallback.call(void 0, i=>{var n;let t=_chunkM624SPNNjs.i.call(void 0, i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkM624SPNNjs.d.call(void 0, void 0,null,function*(){var i;try{if(o)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(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,o,e==null?void 0:e.onSuccess])}};function Eo({onMfaRequired:e}){let{client:o,user:c}=_react.useContext.call(void 0, _chunkM624SPNNjs.E);_react.useEffect.call(void 0, ()=>{function a(){return _chunkM624SPNNjs.d.call(void 0, this,null,function*(){var r;yield e((r=c==null?void 0:c.mfa_methods.map(({type:i})=>i))!=null?r:[])})}return o.mfaPromises.on("mfaRequired",a),()=>{o.mfaPromises.off("mfaRequired",a)}},[o,c,e])}function Uo(){let{client:e}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),o=_react.useCallback.call(void 0, r=>_chunkM624SPNNjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:i}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty});return _chunkM624SPNNjs.K.call(void 0, i);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, r=>_chunkM624SPNNjs.d.call(void 0, this,null,function*(){var i,t,n;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||""}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;case"passkey":if(typeof r.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let l=yield _chunkM624SPNNjs.I.call(void 0, r.mfaCode),f=_chunkM624SPNNjs.J.call(void 0, l);(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||"",mfaCode:f}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;default:let d=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(n=e.mfaPromises.rootPromise.current)==null||n.reject(d),d}}),[e]),a=_react.useCallback.call(void 0, ()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:o,submit:c,cancel:a}}function Ro(){let{client:e}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),o=_react.useCallback.call(void 0, r=>_chunkM624SPNNjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(r);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, r=>_chunkM624SPNNjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(r);return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),a=_react.useCallback.call(void 0, r=>_chunkM624SPNNjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":case"totp":yield e.mfa.unenrollMfa(r.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[]});return;default:throw new Error(`Unsupported MFA method: ${r.method}`)}}),[e]);return{initMfaEnrollment:o,submitMfaEnrollment:c,unenrollMfa:a}}var cr=(e={})=>{let{solanaWallet:o,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunkM624SPNNjs.E),{onCreateWalletSuccess:r,onCreateWalletError:i,onRecoverWalletError:t,onRecoverWalletSuccess:n}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:r,onError:i}},[r,i]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:n,onError:t}},[n,t]),o};var Y=()=>{let{user:e,isReady:o,logout:c,getAccessToken:a,error:r}=_react.useContext.call(void 0, _chunkM624SPNNjs.E);return{user:e,isReady:o,error:r,logout:c,getAccessToken:a}};var Z=()=>{let{client:e}=_react.useContext.call(void 0, _chunkM624SPNNjs.E);return e};var hr=()=>{let{user:e}=Y(),o=Z(),c=_react.useMemo.call(void 0, ()=>{var l;let r=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!r)return[];let i=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:t,entropyIdVerifier:n}=_chunkM624SPNNjs.f.call(void 0, r);return i.map(f=>({address:f.address,walletIndex:f.wallet_index,publicKey:f.public_key,chainType:f.chain_type,getProvider:()=>o.embeddedWallet.getBitcoinProvider({wallet:f,entropyId:t,entropyIdVerifier:n})}))},[o,e]),a=_react.useCallback.call(void 0, t=>_chunkM624SPNNjs.d.call(void 0, void 0,[t],function*({chainType:r,createAdditional:i=!1}){var k;let{user:n}=yield o.user.get(),l=(k=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?k:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);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:f,entropyIdVerifier:d}=_chunkM624SPNNjs.f.call(void 0, l),y=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, n).filter(w=>w.chain_type===r);if(!i&&y.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=y.length===0?0:Math.max(...y.map(w=>w.wallet_index),0)+1,u=yield o.embeddedWallet.add({chainType:r,hdWalletIndex:s,entropyId:f,entropyIdVerifier:d}),v=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, u.user).find(w=>w.chain_type===r&&w.wallet_index===s);if(!u.user||!v)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:u.user,provider:yield o.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:f,entropyIdVerifier:d})}}),[o]);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 = Ct; 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 _chunkK6NA65EXjs = require('./chunk-K6NA65EX.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var vr=e=>{let{user:o,client:c,setSiweState:a,siweState:r}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),i=_react.useCallback.call(void 0, l=>{var d;let f=_chunkK6NA65EXjs.i.call(void 0, l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]),n=_react.useCallback.call(void 0, d=>_chunkK6NA65EXjs.d.call(void 0, void 0,[d],function*({signature:l,messageOverride:f}){var y;try{if(!o)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,f);return a({status:"done"}),(y=e==null?void 0:e.onSuccess)==null||y.call(e,s),s}catch(s){throw i(s)}}),[o,c,i,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:n,state:r}};var Wr=e=>{let{user:o,client:c,setSiweState:a,siweState:r}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),i=_react.useCallback.call(void 0, l=>{var d;let f=_chunkK6NA65EXjs.i.call(void 0, l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({signature:l,messageOverride:f,disableSignup:d}){var s;try{if(o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});a({status:"submitting-signature"});let u=yield c.auth.siwe.loginWithSiwe(l,void 0,f,d?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,u.user,u.is_new_user),u.user}catch(u){throw i(u)}}),[o,c,i,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:r}};var Or=e=>{let{user:o,client:c}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),a=_react.useCallback.call(void 0, i=>{var n;let t=_chunkK6NA65EXjs.i.call(void 0, i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, t=>_chunkK6NA65EXjs.d.call(void 0, void 0,[t],function*({address:i}){var n;try{if(!o)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(i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw a(l)}}),[o,c,a,e==null?void 0:e.onSuccess])}};var Gr=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkK6NA65EXjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, s=>_chunkK6NA65EXjs.d.call(void 0, void 0,[s],function*({code:d,email:y}){var u;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let v=y||o;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 r.auth.email.linkWithCode(v,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};var Jr=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkK6NA65EXjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, u=>_chunkK6NA65EXjs.d.call(void 0, void 0,[u],function*({code:d,email:y,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=y||o;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 r.auth.email.loginWithCode(k,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};var Zr=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkK6NA65EXjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, s=>_chunkK6NA65EXjs.d.call(void 0, void 0,[s],function*({code:d,phone:y}){var u;try{if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(y||o))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 r.auth.phone.linkWithCode(y||o,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};var at=e=>{let[o,c]=_react.useState.call(void 0, ""),{user:a,client:r,otpState:i,setOtpState:t}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),n=_react.useCallback.call(void 0, d=>{var s;let y=_chunkK6NA65EXjs.i.call(void 0, d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=_react.useCallback.call(void 0, y=>_chunkK6NA65EXjs.d.call(void 0, void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=_react.useCallback.call(void 0, u=>_chunkK6NA65EXjs.d.call(void 0, void 0,[u],function*({code:d,phone:y,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(!(y||o))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 r.auth.phone.loginWithCode(y||o,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};var _expolinking = require('expo-linking'); var O = _interopRequireWildcard(_expolinking); var A = _interopRequireWildcard(_expolinking);var ht=e=>{let{appState:o,getCurrentAppState:c}=_chunkK6NA65EXjs.k.call(void 0, ),{client:a,user:r,farcasterState:i,setFarcasterState:t}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),n=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, y=>{var u;let s=_chunkK6NA65EXjs.i.call(void 0, y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=_react.useCallback.call(void 0, ()=>{n.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...k)=>_chunkK6NA65EXjs.d.call(void 0, void 0,[v,...k],function*({relyingParty:y,redirectUrl:s},u={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(n.current=!1,!r)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:y,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<u.pollAttempts;){if(n.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _chunkK6NA65EXjs.j.call(void 0, u.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let C=yield a.auth.farcaster.link(_chunkK6NA65EXjs.a.call(void 0, {channel_token:S},W));return t({status:"done"}),(w=e==null?void 0:e.onSuccess)==null||w.call(e,C),C}E++,yield _chunkK6NA65EXjs.j.call(void 0, u.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,r]),state:i,cancel:f}};var kt=e=>{let{client:o}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),c=_react.useCallback.call(void 0, r=>{var t;let i=_chunkK6NA65EXjs.i.call(void 0, r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, i=>_chunkK6NA65EXjs.d.call(void 0, void 0,[i],function*({fid:r}){var t;try{let n=yield o.auth.farcaster.unlink({fid:r});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,n),n}catch(n){throw c(n)}}),[o,e==null?void 0:e.onSuccess,c])}};var Ct=e=>{let{appState:o,getCurrentAppState:c}=_chunkK6NA65EXjs.k.call(void 0, ),{client:a,user:r,farcasterState:i,setFarcasterState:t}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),n=_react.useRef.call(void 0, !1),l=_react.useCallback.call(void 0, y=>{var u;let s=_chunkK6NA65EXjs.i.call(void 0, y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=_react.useCallback.call(void 0, ()=>{n.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (k,...w)=>_chunkK6NA65EXjs.d.call(void 0, void 0,[k,...w],function*({relyingParty:y,redirectUrl:s,disableSignup:u},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(n.current=!1,r)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:y,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(n.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _chunkK6NA65EXjs.j.call(void 0, v.pollIntervalMs);continue}let C=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(C.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(_chunkK6NA65EXjs.a.call(void 0, {channel_token:E,mode:u?"no-signup":"login-or-sign-up"},C));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 _chunkK6NA65EXjs.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,r,o]),state:i,cancel:f}};var Ot=e=>{let{client:o}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),c=_react.useCallback.call(void 0, r=>{var t;let i=_chunkK6NA65EXjs.i.call(void 0, r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, t=>_chunkK6NA65EXjs.d.call(void 0, void 0,[t],function*({provider:r,subject:i}){var n;try{let l=yield o.auth.oauth.unlink(r,i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw c(l)}}),[o,e==null?void 0:e.onSuccess,c])}};var Tt=e=>{let{client:o}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),c=_react.useRef.call(void 0, e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:a}=o.addOAuthTokensListener(r=>{c.current(r)});return a},[o])};var Kt=()=>{let{user:e,client:o}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E);return{setRecovery:_react.useCallback.call(void 0, a=>_chunkK6NA65EXjs.d.call(void 0, void 0,null,function*(){var n;let r=o.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 i=(n=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?n:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{i.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(i):i.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(i,i.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:i.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:r,client:o,user:e,primaryAccount:i,recoveryParams:a});try{let{user:l}=yield o.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"})}}),[o,e])}},Ve=i=>_chunkK6NA65EXjs.d.call(void 0, void 0,[i],function*({appId:e,client:o,user:c,primaryAccount:a,recoveryParams:r}){switch(r.recoveryMethod){case"user-passcode":return _chunkK6NA65EXjs.b.call(void 0, _chunkK6NA65EXjs.a.call(void 0, {},r),{wallet:a});case"google-drive":{let t=yield _chunkK6NA65EXjs.l.call(void 0, o);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:n}=yield _chunkK6NA65EXjs.g.call(void 0, {appId:e,client:o,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:n,wallet:a}}default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Yt=()=>{let{user:e,client:o}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E);return{recover:_react.useCallback.call(void 0, a=>_chunkK6NA65EXjs.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 r=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let i,t,n;switch(a.recoveryMethod){case"user-passcode":i=a.password;break;case"google-drive":t=yield _chunkK6NA65EXjs.l.call(void 0, o);break;case"icloud":let{recoverySecret:f}=yield _chunkK6NA65EXjs.h.call(void 0, {client:o,walletAddress:r.address,chainType:r.chain_type});n=f;break}try{r.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(r,i,t,n):r.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier",i,t,n))}catch(f){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[o,e])}};var z=(e={})=>{let{wallet:o,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:r}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),{onCreateWalletSuccess:i,onCreateWalletError:t,onRecoverWalletError:n,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:f,onSetWalletRecoveryError:d}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:i,onError:t}},[i,t]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:l,onError:n}},[l,n]),_react.useEffect.call(void 0, ()=>{r.current={onSuccess:f,onError:d}},[l,n]),o};var ao=({onStateChange:e})=>{let o=z();return _react.useEffect.call(void 0, ()=>{e(o)},[o])};var uo=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E);return{getIdentityToken:e}};var wo=e=>{let{user:o,client:c}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),a=_react.useCallback.call(void 0, i=>{var n;let t=_chunkK6NA65EXjs.i.call(void 0, i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkK6NA65EXjs.d.call(void 0, void 0,null,function*(){var i;try{if(o)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(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,o,e==null?void 0:e.onSuccess])}};function Eo({onMfaRequired:e}){let{client:o,user:c}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E);_react.useEffect.call(void 0, ()=>{function a(){return _chunkK6NA65EXjs.d.call(void 0, this,null,function*(){var r;yield e((r=c==null?void 0:c.mfa_methods.map(({type:i})=>i))!=null?r:[])})}return o.mfaPromises.on("mfaRequired",a),()=>{o.mfaPromises.off("mfaRequired",a)}},[o,c,e])}function Uo(){let{client:e}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),o=_react.useCallback.call(void 0, r=>_chunkK6NA65EXjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:i}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty});return _chunkK6NA65EXjs.K.call(void 0, i);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, r=>_chunkK6NA65EXjs.d.call(void 0, this,null,function*(){var i,t,n;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||""}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;case"passkey":if(typeof r.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let l=yield _chunkK6NA65EXjs.I.call(void 0, r.mfaCode),f=_chunkK6NA65EXjs.J.call(void 0, l);(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||"",mfaCode:f}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;default:let d=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(n=e.mfaPromises.rootPromise.current)==null||n.reject(d),d}}),[e]),a=_react.useCallback.call(void 0, ()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:o,submit:c,cancel:a}}function Ro(){let{client:e}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),o=_react.useCallback.call(void 0, r=>_chunkK6NA65EXjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(r);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, r=>_chunkK6NA65EXjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(r);return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),a=_react.useCallback.call(void 0, r=>_chunkK6NA65EXjs.d.call(void 0, this,null,function*(){switch(r.method){case"sms":case"totp":yield e.mfa.unenrollMfa(r.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[]});return;default:throw new Error(`Unsupported MFA method: ${r.method}`)}}),[e]);return{initMfaEnrollment:o,submitMfaEnrollment:c,unenrollMfa:a}}var cr=(e={})=>{let{solanaWallet:o,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E),{onCreateWalletSuccess:r,onCreateWalletError:i,onRecoverWalletError:t,onRecoverWalletSuccess:n}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:r,onError:i}},[r,i]),_react.useEffect.call(void 0, ()=>{a.current={onSuccess:n,onError:t}},[n,t]),o};var Y=()=>{let{user:e,isReady:o,logout:c,getAccessToken:a,error:r}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E);return{user:e,isReady:o,error:r,logout:c,getAccessToken:a}};var Z=()=>{let{client:e}=_react.useContext.call(void 0, _chunkK6NA65EXjs.E);return e};var hr=()=>{let{user:e}=Y(),o=Z(),c=_react.useMemo.call(void 0, ()=>{var l;let r=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?l:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!r)return[];let i=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:t,entropyIdVerifier:n}=_chunkK6NA65EXjs.f.call(void 0, r);return i.map(f=>({address:f.address,walletIndex:f.wallet_index,publicKey:f.public_key,chainType:f.chain_type,getProvider:()=>o.embeddedWallet.getBitcoinProvider({wallet:f,entropyId:t,entropyIdVerifier:n})}))},[o,e]),a=_react.useCallback.call(void 0, t=>_chunkK6NA65EXjs.d.call(void 0, void 0,[t],function*({chainType:r,createAdditional:i=!1}){var k;let{user:n}=yield o.user.get(),l=(k=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?k:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);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:f,entropyIdVerifier:d}=_chunkK6NA65EXjs.f.call(void 0, l),y=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, n).filter(w=>w.chain_type===r);if(!i&&y.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=y.length===0?0:Math.max(...y.map(w=>w.wallet_index),0)+1,u=yield o.embeddedWallet.add({chainType:r,hdWalletIndex:s,entropyId:f,entropyIdVerifier:d}),v=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, u.user).find(w=>w.chain_type===r&&w.wallet_index===s);if(!u.user||!v)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:u.user,provider:yield o.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:f,entropyIdVerifier:d})}}),[o]);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 = Ct; 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 kt=Object.defineProperty,Ct=Object.defineProperties;var At=Object.getOwnPropertyDescriptors;var ne=Object.getOwnPropertySymbols;var xe=Object.prototype.hasOwnProperty,Ie=Object.prototype.propertyIsEnumerable;var Oe=(e,t,r)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,E= exports.a =(e,t)=>{for(var r in t||(t={}))xe.call(t,r)&&Oe(e,r,t[r]);if(ne)for(var r of ne(t))Ie.call(t,r)&&Oe(e,r,t[r]);return e},O= exports.b =(e,t)=>Ct(e,At(t));var Rr=(e,t)=>{var r={};for(var o in e)xe.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&&Ie.call(e,o)&&(r[o]=e[o]);return r};var v=(e,t,r)=>new Promise((o,s)=>{var n=i=>{try{l(r.next(i))}catch(d){s(d)}},c=i=>{try{l(r.throw(i))}catch(d){s(d)}},l=i=>i.done?o(i.value):Promise.resolve(i.value).then(n,c);l((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var yt = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var G = _interopRequireWildcard(_expolinking); var N = _interopRequireWildcard(_expolinking); var B = _interopRequireWildcard(_expolinking); var J = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var I = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var oe = _interopRequireWildcard(_expowebbrowser); var ze = _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 Ue={name:"@privy-io/expo",version:"0.34.2",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"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.35.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 Me=({client:e,isClientReady:t,setWebViewState:r,webViewState:o,logLevel:s})=>{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=>v(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, l=>v(void 0,null,function*(){let{data:i}=l.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:s==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:c}):null};function Fe(n){return v(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:s}){var c,l,i;t({status:"creating"});try{let{user:d}=yield e.user.get(),a=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, d),u=a[0];if(s!=null&&s.recoveryMethod&&s.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(s!=null&&s.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,f;if(u){let w=Math.max(...a.map(_=>_.wallet_index),0)+1,p=yield e.embeddedWallet.createAdditionalSolana({primaryPublicKey:u.address,hdWalletIndex:w});m=p.provider,f=p.user}else{let w=(c=_jssdkcore.getUserEmbeddedWallet.call(void 0, d))!=null?c:void 0,p=yield e.embeddedWallet.createSolana({ethereumAccount:w});m=p.provider,f=p.user}let y=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, f)[0];if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(i=(l=r.current)==null?void 0:l.onSuccess)==null||i.call(l,m),t({status:"connected",publicKey:y.public_key}),o({status:"initial"}),m}catch(d){let a=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:a}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:a})}})}function ae(d){return v(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:s,setRecoveryFlowState:n,password:c,recoveryToken:l,recoverySecretOverride:i}){var a,u,m,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(s){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(!l)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,l,i);return r({status:"connected",provider:y,account:t}),n({status:"initial"}),(u=(a=o.current)==null?void 0:a.onSuccess)==null||u.call(a,y),y}catch(y){r({status:"needs-recovery",account:t}),n({status:"initial"});let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:y instanceof Error?y.message:"Error recovering embedded wallet"});throw(f=(m=o.current)==null?void 0:m.onError)==null||f.call(m,w),w}})}function je(l){return v(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:s,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:c}){var i,d,a,u;s({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return s({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){s({status:"needs-recovery"}),c({status:"initial"});let f=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(u=(a=n.current)==null?void 0:a.onError)==null||u.call(a,f),f}})}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 Ne=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:s,webViewState:n,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:l})=>{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]),a=_react.useMemo.call(void 0, ()=>{if(!d)return[];let{entropyId:y,entropyIdVerifier:w}=se(d);return i.map(p=>({address:p.address,publicKey:p.address,walletIndex:p.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(p,y,w)}))},[i,d,e]),u=_react.useCallback.call(void 0, y=>v(void 0,null,function*(){return yield Fe({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:s,opts:y})}),[e,c]),m=_react.useCallback.call(void 0, ()=>v(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:w}=se(d);return je({client:e,account:i[0],entropyId:y,entropyIdVerifier:w,setSolanaWallet:o,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:s})}),[e,d,i,l,s,o]),f=_react.useCallback.call(void 0, ()=>v(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:w}=se(d),p=yield e.embeddedWallet.getSolanaProvider(i[0],y,w);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"&&f().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:u,recover:m,getProvider:f,wallets:a}};function de(a){return v(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:s,password:n,recoveryToken:c,recoverySecretOverride:l,iCloudRecordNameOverride:i,solanaAccount:d}){var m,f;switch(o){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"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(!l||!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:w}=yield e.embeddedWallet.create(n,u,c,l,i,d),p=_jssdkcore.getUserEmbeddedWallet.call(void 0, w);return(f=(m=r.current)==null?void 0:m.onSuccess)==null||f.call(m,y),t({status:"connected",provider:y,account:p}),s({status:"initial"}),y}catch(y){let w=y instanceof Error?y.message:"Error creating embedded wallet";throw t({status:"error",error:w,account:null}),s({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:w})}})}function Ke(){return v(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 he(o){return v(this,arguments,function*({user:e,appId:t,client:r}){var l;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let s=yield Ke(),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 s.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:i,iCloudRecordName:d}}catch(i){if(i instanceof Error){let d=(l=i.message.split("Caused by: ")[1])!=null?l:"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 qe(o){return v(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 s=yield Ke(),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 l=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),i=l==null?void 0:l.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:a}=yield s.readRecoverySecretFromICloud({containerId:i,recordName:c});return{recoverySecret:a}}catch(a){if(a instanceof Error){let u=(d=a.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 He=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function x(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var co=e=>new Promise(t=>setTimeout(t,e));function vo(){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 ee(s){return v(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(N.createURL(t||"/"));n=d;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield ze.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:l}=N.parse(c.url),i;switch(e){case"google-drive":{let{privy_oauth_state:d,privy_oauth_code:a}=l;if(!a||!d)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});i=yield ce({oAuthCode:a,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(x(n)),n}})}function ce(o){return v(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:s}=yield r.recovery.auth.authorize(e,t);if(!s)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return s})}var Ht=2*60*1e3;function zt(e){let t;return new Promise((r,o)=>{t=N.addEventListener("url",n=>v(this,[n],function*({url:s}){if(!s)return;let{queryParams:c}=N.parse(s),{privy_oauth_state:l,privy_oauth_code:i}=c!=null?c:{};if(typeof i!="string"||typeof l!="string")return;let d=yield ce({client:e,oAuthCode:i,oAuthState:l});r(d)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Ht)}).finally(()=>{t==null||t.remove()})}function Ao(e){return v(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=zt(e));let r=yield ee({provider:"google-drive",client:e});return r!=null?r:yield t})}function ue(n){return v(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:s}){var c,l,i,d;try{let{provider:a,user:u}=yield e.embeddedWallet.setRecovery(t),m=a,f=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return s({status:"connected",provider:m,account:f}),(l=(c=r.current)==null?void 0:c.onSuccess)==null||l.call(c,m),o({status:"initial"}),m}catch(a){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:a instanceof Error?a.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 Ye(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var Xe=({client:e,user:t,appId:r,wallet:o,setWallet:s,setRecoveryFlowState:n,webViewState:c,createWalletCallbacks:l,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:d})=>{let a=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){var R,q;if(a)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:h}=Ye(p),b,S,W;if(h==="google-drive"&&(b=yield ee({provider:h,client:e,onError:(R=l.current)==null?void 0:R.onError}),n({status:"creating-wallet"}),!b))return null;if(h==="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:D}=yield he({user:_,appId:r,client:e});S=T,W=D}return yield de({client:e,setWallet:s,createWalletCallbacks:l,recoveryMethod:h,setRecoveryFlowState:n,password:g,recoverySecretOverride:S,iCloudRecordNameOverride:W,solanaAccount:(q=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, _))!=null?q:void 0})}),[e,a,t]),m=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){var h;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(!a)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:a.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let _,g;switch(p.recoveryMethod){case"privy":g=O(E({},p),{wallet:a});break;case"user-passcode":g=O(E({},p),{wallet:a,password:p.password});break;case"google-drive":if(_=yield ee({provider:p.recoveryMethod,client:e,onError:(h=d.current)==null?void 0:h.onError}),n({status:"upgrading-recovery"}),!_)return null;g={recoveryMethod:"google-drive",wallet:a,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:S}=yield he({user:t,appId:r,client:e});g={recoveryMethod:"icloud-native",recoverySecretOverride:b,iCloudRecordNameOverride:S,wallet:a};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:s})}),[e,a,o.status,t]),f=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:p})}),[e,a,o.status]),y=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){var S;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:_,recoveryMethod:g}=Ye(p),h,b;if(g==="google-drive"&&(h=yield ee({provider:g,client:e,onError:(S=i.current)==null?void 0:S.onError}),n({status:"recovering"}),!h))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 qe({client:e,walletAddress:a.address});b=W}return ae({client:e,account:a,setWallet:s,recoverWalletCallbacks:i,recoveryMethod:g,setRecoveryFlowState:n,password:_,recoveryToken:h,recoverySecretOverride:b})}),[e,a]),w=_react.useCallback.call(void 0, ()=>v(void 0,null,function*(){if(!a)throw s({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});s(p=>p.status==="connected"?{status:"reconnecting",account:a}:{status:"connecting",account:a});try{let p=yield e.embeddedWallet.getProvider(a);return s({status:"connected",provider:p,account:a}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(s({status:"needs-recovery",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(s({status:"error",error:p.message,account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(s({status:"error",error:"Error loading embedded wallet",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,a]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return s({status:"disconnected",account:null});c==="loaded"&&w().catch(()=>{})},[c,t,a]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:u,recover:y,setPassword:f,setRecovery:m,getProvider:w}};var $e=({client:e,user:t,isReady:r,customAuth:o})=>{let[s,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>v(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:i}=o;if(!(!r||i))try{let d=yield l();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:s,customAuthStateIsSettled:s.status!=="loading"&&s.status!=="initial"}};var Ze=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:s,setOAuthState:n,recoveryFlowState:c,oAuthStateRef:l})=>{let i=B.useURL(),d=_react.useCallback.call(void 0, a=>{var m,f;let u=x(a);n({status:"error",error:u}),(f=(m=s.current).onError)==null||f.call(m,u)},[n]);return _react.useEffect.call(void 0, ()=>{function a(){return v(this,null,function*(){var y,w;if(!i||o.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=B.parse(i),{privy_oauth_state:m,privy_oauth_code:f}=u;if(!f||!m){n({status:"done"});return}try{let p,_;if(t)p=yield e.auth.oauth.linkWithCode(f,m);else{let g=yield e.auth.oauth.loginWithCode(f,m,void 0,void 0,l.current.disableSignup?"no-signup":"login-or-sign-up");p=g.user,_=!!g.is_new_user}return(w=(y=s.current).onSuccess)==null||w.call(y,p,_),l.current={},n({status:"done"}),yield B.openURL(i.split("?")[0])}catch(p){l.current={},d(p)}})}_reactnative.Platform.OS==="android"&&r&&a()},[i,r])};var et=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:s,recoveryFlowState:n,oAuthState:c,setRecoveryFlowState:l,setWallet:i,appStateVisible:d,webViewLoaded:a})=>{let u=J.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),f=_react.useCallback.call(void 0, y=>{var p,_,g,h;let w=x(y);n.status==="creating-wallet"?(_=(p=r.current).onError)==null||_.call(p,x(w)):(h=(g=o.current).onError)==null||h.call(g,x(w)),l({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function y(){return v(this,null,function*(){var g;if(!u&&n.status!=="initial"&&d&&f(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||c.status!=="initial"||!d||!a)return;let{queryParams:w}=J.parse(u),{privy_oauth_state:p,privy_oauth_code:_}=w;if(!(!_||!p)){yield J.openURL(u.split("?")[0]);try{let h=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:l,recoveryToken:h,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:h},setWalletRecoveryCallbacks:s,setRecoveryFlowState:l,setWallet:i})}else yield ae({client:e,account:m,setWallet:i,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:h})}catch(h){f(h)}}})}_reactnative.Platform.OS==="android"&&y()},[u,n.status,d,a])};var tt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>v(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 P=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},rt= exports.t =class extends P{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var be={success:e=>({value:e}),error:e=>({error:e})};var ot=e=>{let t=Array.from(new Set(e));return t.length===0?be.error(new P("no_login_methods_available","No login methods available")):be.success(t)},_e=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},vn= exports.u =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},fn= exports.v ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};function nt(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function cr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function it(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return cr(e,()=>{clearTimeout(o)})}var mr=1e3*60*5,F=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,isUIMounted:!1,activeLoginMethod:null,updateUIMounted:r=>e({isUIMounted:r}),openLoginFlow:(r,o,s,n)=>nt(c=>{var u,m,f;let l=o.app.getConfig();if(!l)return c.reject(new P("privy_not_ready","Privy is not ready"));if(s!==null)return c.reject(new P("user_already_logged_in","User is already logged in"));if(!t().isUIMounted)return c.reject(new P("privy_elements_not_ready","Privy Elements is not mounted"));if(t().loginPromiseResolvers!==null)return c.reject(new P("existing_login_flow_in_progress","A login flow is already in progress"));let i=ot(r.loginMethods);if(i.error)return c.reject(i.error);let d={loginMethods:i.value,appearance:{logo:(f=(m=(u=r.appearance)==null?void 0:u.logo)!=null?m:l.logo_url)!=null?f:void 0}},a=it(c,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new P("login_flow_timeout","The login flow timed out")),mr);n(),e({loginPromiseResolvers:a,privyElementsConfig:d,activeLoginMethod:_e(d.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new P("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:s,closeLoginFlow:n}=t();if(!o){n();return}let c=_e(o.loginMethods)===null;r===null||!c?n():s(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),kn= exports.y =()=>{let e=F(r=>r.privyElementsConfig);return F(r=>r.isUIMounted)?e:null},Cn= exports.z =()=>F(e=>e.openLoginFlow),An= exports.A =()=>F(e=>e.closeLoginFlow),Pn= exports.B =()=>F(e=>e.goBack),Rn= exports.C =()=>F(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),yr=e=>{let{loginPromiseResolvers:t}=F.getState();t==null||t.resolve(e)},at=()=>yr,Wn= exports.D =()=>{let e=F(t=>t.updateUIMounted);_react.useEffect.call(void 0, ()=>(e(!0),()=>{e(!1)}),[e])};var Se=_react.createContext.call(void 0, {}),K;function Bn(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 Jn=e=>{var We;let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let L=_reactnative.AppState.addEventListener("change",Et=>{r(Et==="active")});return()=>{L.remove()}},[]);let[o,s]=_react.useState.call(void 0, !1),[n,c]=_react.useState.call(void 0, null),[l,i]=_react.useState.call(void 0, "loading"),[d,a]=_react.useState.call(void 0, !1),[u,m]=_react.useState.call(void 0, null),[f,y]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,p]=_react.useState.call(void 0, {status:"disconnected"}),[_,g]=_react.useState.call(void 0, {status:"initial"}),[h,b]=_react.useState.call(void 0, {status:"initial"}),S=_react.useRef.call(void 0, {}),[W,R]=_react.useState.call(void 0, {status:"initial"}),[q,T]=_react.useState.call(void 0, {status:"initial"}),[D,Y]=_react.useState.call(void 0, {status:"initial"}),[X,Q]=_react.useState.call(void 0, {status:"initial"}),[U,vt]=_react.useState.call(void 0, {status:"initial"}),Ae=_react.useRef.call(void 0, {}),me=_react.useRef.call(void 0, {}),ye=_react.useRef.call(void 0, {}),ve=_react.useRef.call(void 0, {}),Pe=_react.useRef.call(void 0, {}),Re=_react.useRef.call(void 0, {}),ft=at(),$=_react.useCallback.call(void 0, L=>{if(L){ft(L),He(m)(L);return}m(null),g({status:"initial"}),b({status:"initial"}),y({status:"disconnected",account:null})},[]),C=_react.useMemo.call(void 0, ()=>{let L=e.storage||ut;return e.client?(K=e.client,K.setCallbacks({setUser:$,setIsReady:a}),K):(K=new (0, _jssdkcore2.default)({storage:ct(L),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:dt(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ue.version}`,callbacks:{setUser:$,setIsReady:a},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),K)},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,$]),wt=_react.useCallback.call(void 0, ()=>($(null),C.auth.logout()),[$,C]),ht=_react.useCallback.call(void 0, ()=>v(void 0,null,function*(){try{return yield C.getAccessToken()}catch(L){return console.debug(L),null}}),[C]),gt=_react.useCallback.call(void 0, ()=>C.getIdentityToken(),[C]);tt({client:C,isUserInitialized:o,setIsUserInitialized:s,setError:c});let bt=Xe({client:C,user:u,appId:e.appId,webViewState:l,createWalletCallbacks:me,recoverWalletCallbacks:ye,setWalletRecoveryCallbacks:ve,setRecoveryFlowState:R,wallet:f,setWallet:y}),_t=Ne({client:C,user:u,webViewState:l,createSolanaWalletCallbacks:Pe,recoverSolanaWalletCallbacks:Re,setSolanaRecoveryFlowState:T,solanaWallet:w,setSolanaWallet:p});Ze({client:C,isUserInitialized:o,user:u,oAuthState:h,setOAuthState:b,oAuthCallbacks:Ae,recoveryFlowState:W,oAuthStateRef:S}),et({client:C,user:u,webViewLoaded:l==="loaded",createWalletCallbacks:me,recoverWalletCallbacks:ye,setWalletRecoveryCallbacks:ve,recoveryFlowState:W,oAuthState:h,setRecoveryFlowState:R,setWallet:y,appStateVisible:t});let{customAuthStateIsSettled:St}=$e({client:C,user:u,isReady:o,customAuth:(We=e.config)==null?void 0:We.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(Se.Provider,{value:{client:C,user:u,isReady:l!=="loading"&&o&<(h)&&St,error:n,logout:wt,getAccessToken:ht,getIdentityToken:gt,wallet:E(E({},f),bt),solanaWallet:E(E({},w),_t),oAuthState:h,oAuthCallbacks:Ae,recoveryFlowState:W,setRecoveryFlowState:R,solanaRecoveryFlowState:q,setSolanaRecoveryFlowState:T,createWalletCallbacks:me,recoverWalletCallbacks:ye,setWalletRecoveryCallbacks:ve,createSolanaWalletCallbacks:Pe,recoverSolanaWalletCallbacks:Re,setOAuthState:b,siweState:D,setSiweState:Y,otpState:_,setOtpState:g,passkeyState:X,setPasskeyState:Q,farcasterState:U,setFarcasterState:vt,oAuthStateRef:S}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Me,{logLevel:e.logLevel,client:C,isClientReady:d,setWebViewState:i,webViewState:l})))};var lt=e=>e.status!=="loading",ke=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:s,client:n,oAuthStateRef:c}=_react.useContext.call(void 0, Se),l=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{s.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let i=_react.useCallback.call(void 0, a=>{var m;let u=x(a);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(w){return v(this,arguments,function*({provider:u,redirectUri:m,isLegacyAppleIosBehaviorEnabled:f=!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:h}=yield n.auth.oauth.generateURL(u,G.createURL(m||"/")),b,S;if(_reactnative.Platform.OS==="ios"&&u==="apple"&&!f){let X=(p=new URL(h).searchParams.get("state"))!=null?p:"",Q=yield yt.signInAsync({state:X}).catch(U=>{throw U instanceof Error&&"code"in U&&U.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:l?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):U});if(!Q.authorizationCode)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:l?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(l){let U=yield n.auth.oauth.loginWithCode(Q.authorizationCode,X,u,"raw",y?"no-signup":"login-or-sign-up");b=U.user,S=U.is_new_user}else b=yield n.auth.oauth.linkWithCode(Q.authorizationCode,X,u,"raw");return(_=e==null?void 0:e.onSuccess)==null||_.call(e,b,S),o({status:"done"}),b!=null?b:void 0}let W=_reactnative.Platform.OS==="android"?h.replace("x.com","twitter.com"):h,R=yield oe.openAuthSessionAsync(W);if(_reactnative.Platform.OS==="android")return;if(R.type!=="success")throw[oe.WebBrowserResultType.CANCEL,oe.WebBrowserResultType.DISMISS].includes(R.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:l?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:l?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:q}=G.parse(R.url),{privy_oauth_state:T,privy_oauth_code:D}=q;if(!D||!T)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:l?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(l){let Y=yield n.auth.oauth.loginWithCode(D,T,u,void 0,y?"no-signup":"login-or-sign-up");b=Y.user,S=Y.is_new_user}else b=yield n.auth.oauth.linkWithCode(D,T,u);return(g=e==null?void 0:e.onSuccess)==null||g.call(e,b,S),yield G.openURL(R.url.split("?")[0]),o({status:"done"}),b!=null?b:void 0}catch(h){i(h)}})},[t,n,o,i]),state:r}};function ri(e){let{state:t,start:r}=ke(O(E({},e),{action:"login"}));return{state:t,login:r}}function oi(e){let{state:t,start:r}=ke(O(E({},e),{action:"link"}));return{state:t,link:r}}function ni(e){return ke(e)}var dt=()=>{if(typeof _expoapplication.applicationId!="string")throw new (0, _jssdkcore.PrivyClientError)({error:"Cannot determine native application ID. Please make sure `expo-application` is installed as a dependency and that `ios.bundleId` or `android.package` is set.",code:"invalid_native_app_id"});return _expoapplication.applicationId};function ct(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>v(this,null,function*(){return[]})}}var ut={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:()=>v(void 0,null,function*(){return[]})};var Cr=e=>v(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 O(E({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Pr=e=>v(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 O(E({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function hi(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 gi(e){var t,r,o,s;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:(s=e.allow_credentials)==null?void 0:s.map(({id:n,type:c,transports:l})=>({id:n,type:c,transports:l})),userVerification:e.user_verification}}exports.a = E; exports.b = O; exports.c = Rr; exports.d = v; exports.e = Ue; exports.f = se; exports.g = he; exports.h = qe; exports.i = x; exports.j = co; exports.k = vo; exports.l = Ao; exports.m = ri; exports.n = oi; exports.o = ni; exports.p = dt; exports.q = ct; exports.r = ut; exports.s = P; exports.t = rt; exports.u = vn; exports.v = fn; exports.w = nt; exports.x = it; exports.y = kn; exports.z = Cn; exports.A = An; exports.B = Pn; exports.C = Rn; exports.D = Wn; exports.E = Se; exports.F = Bn; exports.G = Jn; exports.H = Cr; exports.I = Pr; exports.J = hi; exports.K = gi;
|
|
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 kt=Object.defineProperty,Ct=Object.defineProperties;var At=Object.getOwnPropertyDescriptors;var ne=Object.getOwnPropertySymbols;var xe=Object.prototype.hasOwnProperty,Ie=Object.prototype.propertyIsEnumerable;var Oe=(e,t,r)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,E= exports.a =(e,t)=>{for(var r in t||(t={}))xe.call(t,r)&&Oe(e,r,t[r]);if(ne)for(var r of ne(t))Ie.call(t,r)&&Oe(e,r,t[r]);return e},O= exports.b =(e,t)=>Ct(e,At(t));var Rr=(e,t)=>{var r={};for(var o in e)xe.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&&Ie.call(e,o)&&(r[o]=e[o]);return r};var v=(e,t,r)=>new Promise((o,s)=>{var n=i=>{try{l(r.next(i))}catch(d){s(d)}},c=i=>{try{l(r.throw(i))}catch(d){s(d)}},l=i=>i.done?o(i.value):Promise.resolve(i.value).then(n,c);l((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var yt = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var G = _interopRequireWildcard(_expolinking); var N = _interopRequireWildcard(_expolinking); var B = _interopRequireWildcard(_expolinking); var J = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var I = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var oe = _interopRequireWildcard(_expowebbrowser); var ze = _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 Ue={name:"@privy-io/expo",version:"0.34.3",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.35.2","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 Me=({client:e,isClientReady:t,setWebViewState:r,webViewState:o,logLevel:s})=>{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=>v(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, l=>v(void 0,null,function*(){let{data:i}=l.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:s==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:c}):null};function Fe(n){return v(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:s}){var c,l,i;t({status:"creating"});try{let{user:d}=yield e.user.get(),a=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, d),u=a[0];if(s!=null&&s.recoveryMethod&&s.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(s!=null&&s.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,f;if(u){let w=Math.max(...a.map(_=>_.wallet_index),0)+1,p=yield e.embeddedWallet.createAdditionalSolana({primaryPublicKey:u.address,hdWalletIndex:w});m=p.provider,f=p.user}else{let w=(c=_jssdkcore.getUserEmbeddedWallet.call(void 0, d))!=null?c:void 0,p=yield e.embeddedWallet.createSolana({ethereumAccount:w});m=p.provider,f=p.user}let y=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, f)[0];if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(i=(l=r.current)==null?void 0:l.onSuccess)==null||i.call(l,m),t({status:"connected",publicKey:y.public_key}),o({status:"initial"}),m}catch(d){let a=d instanceof Error?d.message:"Error creating embedded wallet";throw t({status:"error",error:a}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:a})}})}function ae(d){return v(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:s,setRecoveryFlowState:n,password:c,recoveryToken:l,recoverySecretOverride:i}){var a,u,m,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(s){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(!l)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,l,i);return r({status:"connected",provider:y,account:t}),n({status:"initial"}),(u=(a=o.current)==null?void 0:a.onSuccess)==null||u.call(a,y),y}catch(y){r({status:"needs-recovery",account:t}),n({status:"initial"});let w=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:y instanceof Error?y.message:"Error recovering embedded wallet"});throw(f=(m=o.current)==null?void 0:m.onError)==null||f.call(m,w),w}})}function je(l){return v(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:s,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:c}){var i,d,a,u;s({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return s({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){s({status:"needs-recovery"}),c({status:"initial"});let f=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(u=(a=n.current)==null?void 0:a.onError)==null||u.call(a,f),f}})}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 Ne=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:s,webViewState:n,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:l})=>{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]),a=_react.useMemo.call(void 0, ()=>{if(!d)return[];let{entropyId:y,entropyIdVerifier:w}=se(d);return i.map(p=>({address:p.address,publicKey:p.address,walletIndex:p.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(p,y,w)}))},[i,d,e]),u=_react.useCallback.call(void 0, y=>v(void 0,null,function*(){return yield Fe({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:c,setSolanaRecoveryFlowState:s,opts:y})}),[e,c]),m=_react.useCallback.call(void 0, ()=>v(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:w}=se(d);return je({client:e,account:i[0],entropyId:y,entropyIdVerifier:w,setSolanaWallet:o,recoverSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:s})}),[e,d,i,l,s,o]),f=_react.useCallback.call(void 0, ()=>v(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:w}=se(d),p=yield e.embeddedWallet.getSolanaProvider(i[0],y,w);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"&&f().catch(()=>{})},[n,t,d]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&f()},[r.status]),{create:u,recover:m,getProvider:f,wallets:a}};function de(a){return v(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:s,password:n,recoveryToken:c,recoverySecretOverride:l,iCloudRecordNameOverride:i,solanaAccount:d}){var m,f;switch(o){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"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(!l||!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:w}=yield e.embeddedWallet.create(n,u,c,l,i,d),p=_jssdkcore.getUserEmbeddedWallet.call(void 0, w);return(f=(m=r.current)==null?void 0:m.onSuccess)==null||f.call(m,y),t({status:"connected",provider:y,account:p}),s({status:"initial"}),y}catch(y){let w=y instanceof Error?y.message:"Error creating embedded wallet";throw t({status:"error",error:w,account:null}),s({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:w})}})}function Ke(){return v(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 he(o){return v(this,arguments,function*({user:e,appId:t,client:r}){var l;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let s=yield Ke(),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 s.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:i,iCloudRecordName:d}}catch(i){if(i instanceof Error){let d=(l=i.message.split("Caused by: ")[1])!=null?l:"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 qe(o){return v(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 s=yield Ke(),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 l=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),i=l==null?void 0:l.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:a}=yield s.readRecoverySecretFromICloud({containerId:i,recordName:c});return{recoverySecret:a}}catch(a){if(a instanceof Error){let u=(d=a.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 He=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function x(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var co=e=>new Promise(t=>setTimeout(t,e));function vo(){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 ee(s){return v(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(N.createURL(t||"/"));n=d;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let c=yield ze.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:l}=N.parse(c.url),i;switch(e){case"google-drive":{let{privy_oauth_state:d,privy_oauth_code:a}=l;if(!a||!d)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});i=yield ce({oAuthCode:a,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(x(n)),n}})}function ce(o){return v(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:s}=yield r.recovery.auth.authorize(e,t);if(!s)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return s})}var Ht=2*60*1e3;function zt(e){let t;return new Promise((r,o)=>{t=N.addEventListener("url",n=>v(this,[n],function*({url:s}){if(!s)return;let{queryParams:c}=N.parse(s),{privy_oauth_state:l,privy_oauth_code:i}=c!=null?c:{};if(typeof i!="string"||typeof l!="string")return;let d=yield ce({client:e,oAuthCode:i,oAuthState:l});r(d)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},Ht)}).finally(()=>{t==null||t.remove()})}function Ao(e){return v(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=zt(e));let r=yield ee({provider:"google-drive",client:e});return r!=null?r:yield t})}function ue(n){return v(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:s}){var c,l,i,d;try{let{provider:a,user:u}=yield e.embeddedWallet.setRecovery(t),m=a,f=_jssdkcore.getUserEmbeddedWallet.call(void 0, u);return s({status:"connected",provider:m,account:f}),(l=(c=r.current)==null?void 0:c.onSuccess)==null||l.call(c,m),o({status:"initial"}),m}catch(a){let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:a instanceof Error?a.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 Ye(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:{recoveryMethod:e.recoveryMethod}}var Xe=({client:e,user:t,appId:r,wallet:o,setWallet:s,setRecoveryFlowState:n,webViewState:c,createWalletCallbacks:l,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:d})=>{let a=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),u=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){var R,q;if(a)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:h}=Ye(p),b,S,W;if(h==="google-drive"&&(b=yield ee({provider:h,client:e,onError:(R=l.current)==null?void 0:R.onError}),n({status:"creating-wallet"}),!b))return null;if(h==="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:D}=yield he({user:_,appId:r,client:e});S=T,W=D}return yield de({client:e,setWallet:s,createWalletCallbacks:l,recoveryMethod:h,setRecoveryFlowState:n,password:g,recoverySecretOverride:S,iCloudRecordNameOverride:W,solanaAccount:(q=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, _))!=null?q:void 0})}),[e,a,t]),m=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){var h;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(!a)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:a.recovery_method,upgradeToRecoveryMethod:p.recoveryMethod});let _,g;switch(p.recoveryMethod){case"privy":g=O(E({},p),{wallet:a});break;case"user-passcode":g=O(E({},p),{wallet:a,password:p.password});break;case"google-drive":if(_=yield ee({provider:p.recoveryMethod,client:e,onError:(h=d.current)==null?void 0:h.onError}),n({status:"upgrading-recovery"}),!_)return null;g={recoveryMethod:"google-drive",wallet:a,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:S}=yield he({user:t,appId:r,client:e});g={recoveryMethod:"icloud-native",recoverySecretOverride:b,iCloudRecordNameOverride:S,wallet:a};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:s})}),[e,a,o.status,t]),f=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:p})}),[e,a,o.status]),y=_react.useCallback.call(void 0, p=>v(void 0,null,function*(){var S;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:_,recoveryMethod:g}=Ye(p),h,b;if(g==="google-drive"&&(h=yield ee({provider:g,client:e,onError:(S=i.current)==null?void 0:S.onError}),n({status:"recovering"}),!h))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 qe({client:e,walletAddress:a.address});b=W}return ae({client:e,account:a,setWallet:s,recoverWalletCallbacks:i,recoveryMethod:g,setRecoveryFlowState:n,password:_,recoveryToken:h,recoverySecretOverride:b})}),[e,a]),w=_react.useCallback.call(void 0, ()=>v(void 0,null,function*(){if(!a)throw s({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});s(p=>p.status==="connected"?{status:"reconnecting",account:a}:{status:"connecting",account:a});try{let p=yield e.embeddedWallet.getProvider(a);return s({status:"connected",provider:p,account:a}),p}catch(p){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, p)?(s({status:"needs-recovery",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):p instanceof Error?(s({status:"error",error:p.message,account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:p.message})):(s({status:"error",error:"Error loading embedded wallet",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,a]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return s({status:"disconnected",account:null});c==="loaded"&&w().catch(()=>{})},[c,t,a]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:u,recover:y,setPassword:f,setRecovery:m,getProvider:w}};var $e=({client:e,user:t,isReady:r,customAuth:o})=>{let[s,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>v(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:l,isLoading:i}=o;if(!(!r||i))try{let d=yield l();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:s,customAuthStateIsSettled:s.status!=="loading"&&s.status!=="initial"}};var Ze=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:s,setOAuthState:n,recoveryFlowState:c,oAuthStateRef:l})=>{let i=B.useURL(),d=_react.useCallback.call(void 0, a=>{var m,f;let u=x(a);n({status:"error",error:u}),(f=(m=s.current).onError)==null||f.call(m,u)},[n]);return _react.useEffect.call(void 0, ()=>{function a(){return v(this,null,function*(){var y,w;if(!i||o.status!=="loading"||c.status!=="initial")return;let{queryParams:u}=B.parse(i),{privy_oauth_state:m,privy_oauth_code:f}=u;if(!f||!m){n({status:"done"});return}try{let p,_;if(t)p=yield e.auth.oauth.linkWithCode(f,m);else{let g=yield e.auth.oauth.loginWithCode(f,m,void 0,void 0,l.current.disableSignup?"no-signup":"login-or-sign-up");p=g.user,_=!!g.is_new_user}return(w=(y=s.current).onSuccess)==null||w.call(y,p,_),l.current={},n({status:"done"}),yield B.openURL(i.split("?")[0])}catch(p){l.current={},d(p)}})}_reactnative.Platform.OS==="android"&&r&&a()},[i,r])};var et=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:s,recoveryFlowState:n,oAuthState:c,setRecoveryFlowState:l,setWallet:i,appStateVisible:d,webViewLoaded:a})=>{let u=J.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),f=_react.useCallback.call(void 0, y=>{var p,_,g,h;let w=x(y);n.status==="creating-wallet"?(_=(p=r.current).onError)==null||_.call(p,x(w)):(h=(g=o.current).onError)==null||h.call(g,x(w)),l({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function y(){return v(this,null,function*(){var g;if(!u&&n.status!=="initial"&&d&&f(new Error("Recovery OAuth session failed")),!u||n.status==="initial"||c.status!=="initial"||!d||!a)return;let{queryParams:w}=J.parse(u),{privy_oauth_state:p,privy_oauth_code:_}=w;if(!(!_||!p)){yield J.openURL(u.split("?")[0]);try{let h=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:l,recoveryToken:h,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:h},setWalletRecoveryCallbacks:s,setRecoveryFlowState:l,setWallet:i})}else yield ae({client:e,account:m,setWallet:i,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:l,recoveryToken:h})}catch(h){f(h)}}})}_reactnative.Platform.OS==="android"&&y()},[u,n.status,d,a])};var tt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>v(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 P=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},rt= exports.t =class extends P{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var be={success:e=>({value:e}),error:e=>({error:e})};var ot=e=>{let t=Array.from(new Set(e));return t.length===0?be.error(new P("no_login_methods_available","No login methods available")):be.success(t)},_e=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},vn= exports.u =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},fn= exports.v ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};function nt(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function cr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function it(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return cr(e,()=>{clearTimeout(o)})}var mr=1e3*60*5,F=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,isUIMounted:!1,activeLoginMethod:null,updateUIMounted:r=>e({isUIMounted:r}),openLoginFlow:(r,o,s,n)=>nt(c=>{var u,m,f;let l=o.app.getConfig();if(!l)return c.reject(new P("privy_not_ready","Privy is not ready"));if(s!==null)return c.reject(new P("user_already_logged_in","User is already logged in"));if(!t().isUIMounted)return c.reject(new P("privy_elements_not_ready","Privy Elements is not mounted"));if(t().loginPromiseResolvers!==null)return c.reject(new P("existing_login_flow_in_progress","A login flow is already in progress"));let i=ot(r.loginMethods);if(i.error)return c.reject(i.error);let d={loginMethods:i.value,appearance:{logo:(f=(m=(u=r.appearance)==null?void 0:u.logo)!=null?m:l.logo_url)!=null?f:void 0}},a=it(c,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new P("login_flow_timeout","The login flow timed out")),mr);n(),e({loginPromiseResolvers:a,privyElementsConfig:d,activeLoginMethod:_e(d.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new P("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:s,closeLoginFlow:n}=t();if(!o){n();return}let c=_e(o.loginMethods)===null;r===null||!c?n():s(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),kn= exports.y =()=>{let e=F(r=>r.privyElementsConfig);return F(r=>r.isUIMounted)?e:null},Cn= exports.z =()=>F(e=>e.openLoginFlow),An= exports.A =()=>F(e=>e.closeLoginFlow),Pn= exports.B =()=>F(e=>e.goBack),Rn= exports.C =()=>F(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),yr=e=>{let{loginPromiseResolvers:t}=F.getState();t==null||t.resolve(e)},at=()=>yr,Wn= exports.D =()=>{let e=F(t=>t.updateUIMounted);_react.useEffect.call(void 0, ()=>(e(!0),()=>{e(!1)}),[e])};var Se=_react.createContext.call(void 0, {}),K;function Bn(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 Jn=e=>{var We;let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let L=_reactnative.AppState.addEventListener("change",Et=>{r(Et==="active")});return()=>{L.remove()}},[]);let[o,s]=_react.useState.call(void 0, !1),[n,c]=_react.useState.call(void 0, null),[l,i]=_react.useState.call(void 0, "loading"),[d,a]=_react.useState.call(void 0, !1),[u,m]=_react.useState.call(void 0, null),[f,y]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,p]=_react.useState.call(void 0, {status:"disconnected"}),[_,g]=_react.useState.call(void 0, {status:"initial"}),[h,b]=_react.useState.call(void 0, {status:"initial"}),S=_react.useRef.call(void 0, {}),[W,R]=_react.useState.call(void 0, {status:"initial"}),[q,T]=_react.useState.call(void 0, {status:"initial"}),[D,Y]=_react.useState.call(void 0, {status:"initial"}),[X,Q]=_react.useState.call(void 0, {status:"initial"}),[U,vt]=_react.useState.call(void 0, {status:"initial"}),Ae=_react.useRef.call(void 0, {}),me=_react.useRef.call(void 0, {}),ye=_react.useRef.call(void 0, {}),ve=_react.useRef.call(void 0, {}),Pe=_react.useRef.call(void 0, {}),Re=_react.useRef.call(void 0, {}),ft=at(),$=_react.useCallback.call(void 0, L=>{if(L){ft(L),He(m)(L);return}m(null),g({status:"initial"}),b({status:"initial"}),y({status:"disconnected",account:null})},[]),C=_react.useMemo.call(void 0, ()=>{let L=e.storage||ut;return e.client?(K=e.client,K.setCallbacks({setUser:$,setIsReady:a}),K):(K=new (0, _jssdkcore2.default)({storage:ct(L),appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,nativeAppIdentifier:dt(),baseUrl:e.baseUrl,sdkVersion:`expo:${Ue.version}`,callbacks:{setUser:$,setIsReady:a},logLevel:e.logLevel,crypto:{digest:_expocrypto.digest}}),K)},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,$]),wt=_react.useCallback.call(void 0, ()=>($(null),C.auth.logout()),[$,C]),ht=_react.useCallback.call(void 0, ()=>v(void 0,null,function*(){try{return yield C.getAccessToken()}catch(L){return console.debug(L),null}}),[C]),gt=_react.useCallback.call(void 0, ()=>C.getIdentityToken(),[C]);tt({client:C,isUserInitialized:o,setIsUserInitialized:s,setError:c});let bt=Xe({client:C,user:u,appId:e.appId,webViewState:l,createWalletCallbacks:me,recoverWalletCallbacks:ye,setWalletRecoveryCallbacks:ve,setRecoveryFlowState:R,wallet:f,setWallet:y}),_t=Ne({client:C,user:u,webViewState:l,createSolanaWalletCallbacks:Pe,recoverSolanaWalletCallbacks:Re,setSolanaRecoveryFlowState:T,solanaWallet:w,setSolanaWallet:p});Ze({client:C,isUserInitialized:o,user:u,oAuthState:h,setOAuthState:b,oAuthCallbacks:Ae,recoveryFlowState:W,oAuthStateRef:S}),et({client:C,user:u,webViewLoaded:l==="loaded",createWalletCallbacks:me,recoverWalletCallbacks:ye,setWalletRecoveryCallbacks:ve,recoveryFlowState:W,oAuthState:h,setRecoveryFlowState:R,setWallet:y,appStateVisible:t});let{customAuthStateIsSettled:St}=$e({client:C,user:u,isReady:o,customAuth:(We=e.config)==null?void 0:We.customAuth});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(Se.Provider,{value:{client:C,user:u,isReady:l!=="loading"&&o&<(h)&&St,error:n,logout:wt,getAccessToken:ht,getIdentityToken:gt,wallet:E(E({},f),bt),solanaWallet:E(E({},w),_t),oAuthState:h,oAuthCallbacks:Ae,recoveryFlowState:W,setRecoveryFlowState:R,solanaRecoveryFlowState:q,setSolanaRecoveryFlowState:T,createWalletCallbacks:me,recoverWalletCallbacks:ye,setWalletRecoveryCallbacks:ve,createSolanaWalletCallbacks:Pe,recoverSolanaWalletCallbacks:Re,setOAuthState:b,siweState:D,setSiweState:Y,otpState:_,setOtpState:g,passkeyState:X,setPasskeyState:Q,farcasterState:U,setFarcasterState:vt,oAuthStateRef:S}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Me,{logLevel:e.logLevel,client:C,isClientReady:d,setWebViewState:i,webViewState:l})))};var lt=e=>e.status!=="loading",ke=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:s,client:n,oAuthStateRef:c}=_react.useContext.call(void 0, Se),l=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{s.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let i=_react.useCallback.call(void 0, a=>{var m;let u=x(a);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(w){return v(this,arguments,function*({provider:u,redirectUri:m,isLegacyAppleIosBehaviorEnabled:f=!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:h}=yield n.auth.oauth.generateURL(u,G.createURL(m||"/")),b,S;if(_reactnative.Platform.OS==="ios"&&u==="apple"&&!f){let X=(p=new URL(h).searchParams.get("state"))!=null?p:"",Q=yield yt.signInAsync({state:X}).catch(U=>{throw U instanceof Error&&"code"in U&&U.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:l?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):U});if(!Q.authorizationCode)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:l?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(l){let U=yield n.auth.oauth.loginWithCode(Q.authorizationCode,X,u,"raw",y?"no-signup":"login-or-sign-up");b=U.user,S=U.is_new_user}else b=yield n.auth.oauth.linkWithCode(Q.authorizationCode,X,u,"raw");return(_=e==null?void 0:e.onSuccess)==null||_.call(e,b,S),o({status:"done"}),b!=null?b:void 0}let W=_reactnative.Platform.OS==="android"?h.replace("x.com","twitter.com"):h,R=yield oe.openAuthSessionAsync(W);if(_reactnative.Platform.OS==="android")return;if(R.type!=="success")throw[oe.WebBrowserResultType.CANCEL,oe.WebBrowserResultType.DISMISS].includes(R.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:l?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:l?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:q}=G.parse(R.url),{privy_oauth_state:T,privy_oauth_code:D}=q;if(!D||!T)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:l?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(l){let Y=yield n.auth.oauth.loginWithCode(D,T,u,void 0,y?"no-signup":"login-or-sign-up");b=Y.user,S=Y.is_new_user}else b=yield n.auth.oauth.linkWithCode(D,T,u);return(g=e==null?void 0:e.onSuccess)==null||g.call(e,b,S),yield G.openURL(R.url.split("?")[0]),o({status:"done"}),b!=null?b:void 0}catch(h){i(h)}})},[t,n,o,i]),state:r}};function ri(e){let{state:t,start:r}=ke(O(E({},e),{action:"login"}));return{state:t,login:r}}function oi(e){let{state:t,start:r}=ke(O(E({},e),{action:"link"}));return{state:t,link:r}}function ni(e){return ke(e)}var dt=()=>{if(typeof _expoapplication.applicationId!="string")throw new (0, _jssdkcore.PrivyClientError)({error:"Cannot determine native application ID. Please make sure `expo-application` is installed as a dependency and that `ios.bundleId` or `android.package` is set.",code:"invalid_native_app_id"});return _expoapplication.applicationId};function ct(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>v(this,null,function*(){return[]})}}var ut={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:()=>v(void 0,null,function*(){return[]})};var Cr=e=>v(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 O(E({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Pr=e=>v(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 O(E({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function hi(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 gi(e){var t,r,o,s;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:(s=e.allow_credentials)==null?void 0:s.map(({id:n,type:c,transports:l})=>({id:n,type:c,transports:l})),userVerification:e.user_verification}}exports.a = E; exports.b = O; exports.c = Rr; exports.d = v; exports.e = Ue; exports.f = se; exports.g = he; exports.h = qe; exports.i = x; exports.j = co; exports.k = vo; exports.l = Ao; exports.m = ri; exports.n = oi; exports.o = ni; exports.p = dt; exports.q = ct; exports.r = ut; exports.s = P; exports.t = rt; exports.u = vn; exports.v = fn; exports.w = nt; exports.x = it; exports.y = kn; exports.z = Cn; exports.A = An; exports.B = Pn; exports.C = Rn; exports.D = Wn; exports.E = Se; exports.F = Bn; exports.G = Jn; exports.H = Cr; exports.I = Pr; exports.J = hi; exports.K = gi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as h,I as ie,J as ae,K 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-M624SPNN.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:o,client:c,setSiweState:a,siweState:r}=ke(h),i=T(l=>{var d;let f=g(l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=T(y=>m(void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]),n=T(d=>m(void 0,[d],function*({signature:l,messageOverride:f}){var y;try{if(!o)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,f);return a({status:"done"}),(y=e==null?void 0:e.onSuccess)==null||y.call(e,s),s}catch(s){throw i(s)}}),[o,c,i,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:n,state:r}};import{useCallback as H,useContext as be}from"react";import{PrivyClientError as Ee}from"@privy-io/js-sdk-core";var Wr=e=>{let{user:o,client:c,setSiweState:a,siweState:r}=be(h),i=H(l=>{var d;let f=g(l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=H(y=>m(void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(y=>m(void 0,[y],function*({signature:l,messageOverride:f,disableSignup:d}){var s;try{if(o)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 u=yield c.auth.siwe.loginWithSiwe(l,void 0,f,d?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,u.user,u.is_new_user),u.user}catch(u){throw i(u)}}),[o,c,i,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:r}};import{useCallback as ce,useContext as pe}from"react";import{PrivyClientError as _e}from"@privy-io/js-sdk-core";var Or=e=>{let{user:o,client:c}=pe(h),a=ce(i=>{var n;let t=g(i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:ce(t=>m(void 0,[t],function*({address:i}){var n;try{if(!o)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(i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw a(l)}}),[o,c,a,e==null?void 0:e.onSuccess])}};import{useCallback as G,useContext as We,useState as Ce}from"react";import{PrivyClientError as le}from"@privy-io/js-sdk-core";var Gr=e=>{let[o,c]=Ce(""),{user:a,client:r,otpState:i,setOtpState:t}=We(h),n=G(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=G(y=>m(void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=G(s=>m(void 0,[s],function*({code:d,email:y}){var u;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=y||o;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 r.auth.email.linkWithCode(v,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};import{useCallback as B,useContext as Pe,useState as xe}from"react";import{PrivyClientError as de}from"@privy-io/js-sdk-core";var Jr=e=>{let[o,c]=xe(""),{user:a,client:r,otpState:i,setOtpState:t}=Pe(h),n=B(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=B(y=>m(void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=B(u=>m(void 0,[u],function*({code:d,email:y,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=y||o;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 r.auth.email.loginWithCode(k,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};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[o,c]=Me(""),{user:a,client:r,otpState:i,setOtpState:t}=Ue(h),n=N(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=N(y=>m(void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=N(s=>m(void 0,[s],function*({code:d,phone:y}){var u;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(!(y||o))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 r.auth.phone.linkWithCode(y||o,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};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[o,c]=Oe(""),{user:a,client:r,otpState:i,setOtpState:t}=Le(h),n=j(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=j(y=>m(void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=j(u=>m(void 0,[u],function*({code:d,phone:y,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(!(y||o))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 r.auth.phone.loginWithCode(y||o,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};import*as O from"expo-linking";import{useCallback as q,useContext as Ae,useRef as Re}from"react";import{PrivyClientError as P}from"@privy-io/js-sdk-core";var ht=e=>{let{appState:o,getCurrentAppState:c}=M(),{client:a,user:r,farcasterState:i,setFarcasterState:t}=Ae(h),n=Re(!1),l=q(y=>{var u;let s=g(y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=q(()=>{n.current=!0},[]);return{linkWithFarcaster:q((v,...k)=>m(void 0,[v,...k],function*({relyingParty:y,redirectUrl:s},u={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(n.current=!1,!r)throw new P({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:y,redirectUrl:O.createURL(s!=null?s:"/")});if(!b)throw new P({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!S)throw new P({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<u.pollAttempts;){if(n.current)throw new P({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _(u.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let C=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,C),C}E++,yield _(u.pollIntervalMs)}throw new P({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw l(b)}}),[a,e==null?void 0:e.onSuccess,l,t,r]),state:i,cancel:f}};import{useCallback as he,useContext as Fe}from"react";var kt=e=>{let{client:o}=Fe(h),c=he(r=>{var t;let i=g(r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkFarcaster:he(i=>m(void 0,[i],function*({fid:r}){var t;try{let n=yield o.auth.farcaster.unlink({fid:r});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,n),n}catch(n){throw c(n)}}),[o,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 Ct=e=>{let{appState:o,getCurrentAppState:c}=M(),{client:a,user:r,farcasterState:i,setFarcasterState:t}=Ie(h),n=Te(!1),l=J(y=>{var u;let s=g(y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=J(()=>{n.current=!0},[]);return{loginWithFarcaster:J((k,...w)=>m(void 0,[k,...w],function*({relyingParty:y,redirectUrl:s,disableSignup:u},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(n.current=!1,r)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:y,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(n.current)throw new x({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _(v.pollIntervalMs);continue}let C=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(C.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(p({channel_token:E,mode:u?"no-signup":"login-or-sign-up"},C));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,r,o]),state:i,cancel:f}};import{useCallback as fe,useContext as He}from"react";var Ot=e=>{let{client:o}=He(h),c=fe(r=>{var t;let i=g(r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkOAuth:fe(t=>m(void 0,[t],function*({provider:r,subject:i}){var n;try{let l=yield o.auth.oauth.unlink(r,i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw c(l)}}),[o,e==null?void 0:e.onSuccess,c])}};import{useContext as Ge,useEffect as Be,useRef as Ne}from"react";var Tt=e=>{let{client:o}=Ge(h),c=Ne(e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,Be(()=>{let{unsubscribe:a}=o.addOAuthTokensListener(r=>{c.current(r)});return a},[o])};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:o}=qe(h);return{setRecovery:je(a=>m(void 0,null,function*(){var n;let r=o.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 i=(n=Ke(e))!=null?n:De(e);if(!i)throw new U({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{i.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(i):i.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(i,i.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:i.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:r,client:o,user:e,primaryAccount:i,recoveryParams:a});try{let{user:l}=yield o.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"})}}),[o,e])}},Ve=i=>m(void 0,[i],function*({appId:e,client:o,user:c,primaryAccount:a,recoveryParams:r}){switch(r.recoveryMethod){case"user-passcode":return te(p({},r),{wallet:a});case"google-drive":{let t=yield L(o);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:n}=yield oe({appId:e,client:o,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:n,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:o}=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 r=(l=Qe(e))!=null?l:Xe(e);if(!r)throw new V({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let i,t,n;switch(a.recoveryMethod){case"user-passcode":i=a.password;break;case"google-drive":t=yield L(o);break;case"icloud":let{recoverySecret:f}=yield ne({client:o,walletAddress:r.address,chainType:r.chain_type});n=f;break}try{r.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(r,i,t,n):r.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier",i,t,n))}catch(f){throw new V({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[o,e])}};import{useContext as Ye,useEffect as $}from"react";var z=(e={})=>{let{wallet:o,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:r}=Ye(h),{onCreateWalletSuccess:i,onCreateWalletError:t,onRecoverWalletError:n,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:f,onSetWalletRecoveryError:d}=e;return $(()=>{c.current={onSuccess:i,onError:t}},[i,t]),$(()=>{a.current={onSuccess:l,onError:n}},[l,n]),$(()=>{r.current={onSuccess:f,onError:d}},[l,n]),o};import{useEffect as Ze}from"react";var ao=({onStateChange:e})=>{let o=z();return Ze(()=>{e(o)},[o])};import{useContext as er}from"react";var uo=()=>{let{getIdentityToken:e}=er(h);return{getIdentityToken:e}};import{useCallback as ye,useContext as rr}from"react";import{PrivyClientError as tr}from"@privy-io/js-sdk-core";var wo=e=>{let{user:o,client:c}=rr(h),a=ye(i=>{var n;let t=g(i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{create:ye(()=>m(void 0,null,function*(){var i;try{if(o)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(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,o,e==null?void 0:e.onSuccess])}};import{useContext as or,useEffect as nr}from"react";function Eo({onMfaRequired:e}){let{client:o,user:c}=or(h);nr(()=>{function a(){return m(this,null,function*(){var r;yield e((r=c==null?void 0:c.mfa_methods.map(({type:i})=>i))!=null?r:[])})}return o.mfaPromises.on("mfaRequired",a),()=>{o.mfaPromises.off("mfaRequired",a)}},[o,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}=ir(h),o=Q(r=>m(this,null,function*(){switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:i}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty});return se(i);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=Q(r=>m(this,null,function*(){var i,t,n;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new R({code:"invalid_mfa_code",error:"Invalid MFA code"});(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||""}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;case"passkey":if(typeof r.mfaCode=="string")throw new R({code:"invalid_passkey_response",error:"Invalid authenticator response"});let l=yield ie(r.mfaCode),f=ae(l);(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||"",mfaCode:f}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;default:let d=new R({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(n=e.mfaPromises.rootPromise.current)==null||n.reject(d),d}}),[e]),a=Q(()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new R({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:o,submit:c,cancel:a}}import{useCallback as X,useContext as ar}from"react";function Ro(){let{client:e}=ar(h),o=X(r=>m(this,null,function*(){switch(r.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(r);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=X(r=>m(this,null,function*(){switch(r.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(r);return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),a=X(r=>m(this,null,function*(){switch(r.method){case"sms":case"totp":yield e.mfa.unenrollMfa(r.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[]});return;default:throw new Error(`Unsupported MFA method: ${r.method}`)}}),[e]);return{initMfaEnrollment:o,submitMfaEnrollment:c,unenrollMfa:a}}import{useContext as sr,useEffect as ge}from"react";var cr=(e={})=>{let{solanaWallet:o,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=sr(h),{onCreateWalletSuccess:r,onCreateWalletError:i,onRecoverWalletError:t,onRecoverWalletSuccess:n}=e;return ge(()=>{c.current={onSuccess:r,onError:i}},[r,i]),ge(()=>{a.current={onSuccess:n,onError:t}},[n,t]),o};import{useContext as lr}from"react";var Y=()=>{let{user:e,isReady:o,logout:c,getAccessToken:a,error:r}=lr(h);return{user:e,isReady:o,error:r,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(),o=Z(),c=mr(()=>{var l;let r=(l=we(e))!=null?l:ve(e);if(!r)return[];let i=ee(e),{entropyId:t,entropyIdVerifier:n}=I(r);return i.map(f=>({address:f.address,walletIndex:f.wallet_index,publicKey:f.public_key,chainType:f.chain_type,getProvider:()=>o.embeddedWallet.getBitcoinProvider({wallet:f,entropyId:t,entropyIdVerifier:n})}))},[o,e]),a=ur(t=>m(void 0,[t],function*({chainType:r,createAdditional:i=!1}){var k;let{user:n}=yield o.user.get(),l=(k=we(n))!=null?k:ve(n);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:f,entropyIdVerifier:d}=I(l),y=ee(n).filter(w=>w.chain_type===r);if(!i&&y.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=y.length===0?0:Math.max(...y.map(w=>w.wallet_index),0)+1,u=yield o.embeddedWallet.add({chainType:r,hdWalletIndex:s,entropyId:f,entropyIdVerifier:d}),v=ee(u.user).find(w=>w.chain_type===r&&w.wallet_index===s);if(!u.user||!v)throw new re({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:u.user,provider:yield o.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:f,entropyIdVerifier:d})}}),[o]);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,Ct 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{E as h,I as ie,J as ae,K 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-K6NA65EX.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:o,client:c,setSiweState:a,siweState:r}=ke(h),i=T(l=>{var d;let f=g(l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=T(y=>m(void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]),n=T(d=>m(void 0,[d],function*({signature:l,messageOverride:f}){var y;try{if(!o)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,f);return a({status:"done"}),(y=e==null?void 0:e.onSuccess)==null||y.call(e,s),s}catch(s){throw i(s)}}),[o,c,i,e==null?void 0:e.onSuccess]);return{generateSiweMessage:t,linkWithSiwe:n,state:r}};import{useCallback as H,useContext as be}from"react";import{PrivyClientError as Ee}from"@privy-io/js-sdk-core";var Wr=e=>{let{user:o,client:c,setSiweState:a,siweState:r}=be(h),i=H(l=>{var d;let f=g(l);return a({status:"error",error:f}),(d=e==null?void 0:e.onError)==null||d.call(e,f),f},[e==null?void 0:e.onError]),t=H(y=>m(void 0,[y],function*({wallet:l,from:{domain:f,uri:d}}){var s;try{a({status:"generating-message"});let u=yield c.auth.siwe.init(l,f,d);return a({status:"awaiting-signature"}),(s=e==null?void 0:e.onGenerateMessage)==null||s.call(e,u.message),u.message}catch(u){throw i(u)}}),[c,i,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:H(y=>m(void 0,[y],function*({signature:l,messageOverride:f,disableSignup:d}){var s;try{if(o)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 u=yield c.auth.siwe.loginWithSiwe(l,void 0,f,d?"no-signup":"login-or-sign-up");return a({status:"done"}),(s=e==null?void 0:e.onSuccess)==null||s.call(e,u.user,u.is_new_user),u.user}catch(u){throw i(u)}}),[o,c,i,e==null?void 0:e.onSuccess]),generateSiweMessage:t,state:r}};import{useCallback as ce,useContext as pe}from"react";import{PrivyClientError as _e}from"@privy-io/js-sdk-core";var Or=e=>{let{user:o,client:c}=pe(h),a=ce(i=>{var n;let t=g(i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{unlinkWallet:ce(t=>m(void 0,[t],function*({address:i}){var n;try{if(!o)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(i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw a(l)}}),[o,c,a,e==null?void 0:e.onSuccess])}};import{useCallback as G,useContext as We,useState as Ce}from"react";import{PrivyClientError as le}from"@privy-io/js-sdk-core";var Gr=e=>{let[o,c]=Ce(""),{user:a,client:r,otpState:i,setOtpState:t}=We(h),n=G(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=G(y=>m(void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=G(s=>m(void 0,[s],function*({code:d,email:y}){var u;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=y||o;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 r.auth.email.linkWithCode(v,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};import{useCallback as B,useContext as Pe,useState as xe}from"react";import{PrivyClientError as de}from"@privy-io/js-sdk-core";var Jr=e=>{let[o,c]=xe(""),{user:a,client:r,otpState:i,setOtpState:t}=Pe(h),n=B(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=B(y=>m(void 0,[y],function*({email:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.email.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{email:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=B(u=>m(void 0,[u],function*({code:d,email:y,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=y||o;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 r.auth.email.loginWithCode(k,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};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[o,c]=Me(""),{user:a,client:r,otpState:i,setOtpState:t}=Ue(h),n=N(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=N(y=>m(void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=N(s=>m(void 0,[s],function*({code:d,phone:y}){var u;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(!(y||o))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 r.auth.phone.linkWithCode(y||o,d);return t({status:"done"}),(u=e==null?void 0:e.onLinkSuccess)==null||u.call(e,k),k}catch(v){n(v)}}),[a,r,o,n,e==null?void 0:e.onLinkSuccess]);return{sendCode:l,linkWithCode:f,state:i}};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[o,c]=Oe(""),{user:a,client:r,otpState:i,setOtpState:t}=Le(h),n=j(d=>{var s;let y=g(d);return t({status:"error",error:y}),(s=e==null?void 0:e.onError)==null||s.call(e,y),y},[e==null?void 0:e.onError]),l=j(y=>m(void 0,[y],function*({phone:d}){var s;c(d);try{t({status:"sending-code"});let u=yield r.auth.phone.sendCode(d);return t({status:"awaiting-code-input"}),(s=e==null?void 0:e.onSendCodeSuccess)==null||s.call(e,{phone:d}),u}catch(u){return n(u),{success:!1}}}),[r,n,e==null?void 0:e.onSendCodeSuccess]),f=j(u=>m(void 0,[u],function*({code:d,phone:y,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(!(y||o))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 r.auth.phone.loginWithCode(y||o,d,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){n(k)}}),[a,r,o,n,e==null?void 0:e.onLoginSuccess]);return{sendCode:l,loginWithCode:f,state:i}};import*as O from"expo-linking";import{useCallback as q,useContext as Ae,useRef as Re}from"react";import{PrivyClientError as P}from"@privy-io/js-sdk-core";var ht=e=>{let{appState:o,getCurrentAppState:c}=M(),{client:a,user:r,farcasterState:i,setFarcasterState:t}=Ae(h),n=Re(!1),l=q(y=>{var u;let s=g(y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=q(()=>{n.current=!0},[]);return{linkWithFarcaster:q((v,...k)=>m(void 0,[v,...k],function*({relyingParty:y,redirectUrl:s},u={pollAttempts:10,pollIntervalMs:1e3}){var w;try{if(n.current=!1,!r)throw new P({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:y,redirectUrl:O.createURL(s!=null?s:"/")});if(!b)throw new P({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!S)throw new P({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<u.pollAttempts;){if(n.current)throw new P({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _(u.pollIntervalMs);continue}let W=yield a.auth.farcaster.getFarcasterStatus({channel_token:S});if(W.state==="completed"){t({status:"submitting-token"});let C=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,C),C}E++,yield _(u.pollIntervalMs)}throw new P({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(b){throw l(b)}}),[a,e==null?void 0:e.onSuccess,l,t,r]),state:i,cancel:f}};import{useCallback as he,useContext as Fe}from"react";var kt=e=>{let{client:o}=Fe(h),c=he(r=>{var t;let i=g(r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkFarcaster:he(i=>m(void 0,[i],function*({fid:r}){var t;try{let n=yield o.auth.farcaster.unlink({fid:r});return(t=e==null?void 0:e.onSuccess)==null||t.call(e,n),n}catch(n){throw c(n)}}),[o,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 Ct=e=>{let{appState:o,getCurrentAppState:c}=M(),{client:a,user:r,farcasterState:i,setFarcasterState:t}=Ie(h),n=Te(!1),l=J(y=>{var u;let s=g(y);return t({status:"error",error:s}),(u=e==null?void 0:e.onError)==null||u.call(e,s),s},[e==null?void 0:e.onError,t]),f=J(()=>{n.current=!0},[]);return{loginWithFarcaster:J((k,...w)=>m(void 0,[k,...w],function*({relyingParty:y,redirectUrl:s,disableSignup:u},v={pollAttempts:10,pollIntervalMs:1e3}){var b;try{if(n.current=!1,r)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:y,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(n.current)throw new x({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(o.current!=="active"&&c()!=="active"){yield _(v.pollIntervalMs);continue}let C=yield a.auth.farcaster.getFarcasterStatus({channel_token:E});if(C.state==="completed"){t({status:"submitting-token"});let F=yield a.auth.farcaster.authenticate(p({channel_token:E,mode:u?"no-signup":"login-or-sign-up"},C));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,r,o]),state:i,cancel:f}};import{useCallback as fe,useContext as He}from"react";var Ot=e=>{let{client:o}=He(h),c=fe(r=>{var t;let i=g(r);return(t=e==null?void 0:e.onError)==null||t.call(e,i),i},[e==null?void 0:e.onError]);return{unlinkOAuth:fe(t=>m(void 0,[t],function*({provider:r,subject:i}){var n;try{let l=yield o.auth.oauth.unlink(r,i);return(n=e==null?void 0:e.onSuccess)==null||n.call(e,l),l}catch(l){throw c(l)}}),[o,e==null?void 0:e.onSuccess,c])}};import{useContext as Ge,useEffect as Be,useRef as Ne}from"react";var Tt=e=>{let{client:o}=Ge(h),c=Ne(e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,Be(()=>{let{unsubscribe:a}=o.addOAuthTokensListener(r=>{c.current(r)});return a},[o])};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:o}=qe(h);return{setRecovery:je(a=>m(void 0,null,function*(){var n;let r=o.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 i=(n=Ke(e))!=null?n:De(e);if(!i)throw new U({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{i.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(i):i.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(i,i.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:i.recovery_method,upgradeToRecoveryMethod:a.recoveryMethod});let t=yield Ve({appId:r,client:o,user:e,primaryAccount:i,recoveryParams:a});try{let{user:l}=yield o.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"})}}),[o,e])}},Ve=i=>m(void 0,[i],function*({appId:e,client:o,user:c,primaryAccount:a,recoveryParams:r}){switch(r.recoveryMethod){case"user-passcode":return te(p({},r),{wallet:a});case"google-drive":{let t=yield L(o);return{recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:t}}case"icloud":{let{recoverySecret:t,iCloudRecordName:n}=yield oe({appId:e,client:o,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:t,iCloudRecordNameOverride:n,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:o}=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 r=(l=Qe(e))!=null?l:Xe(e);if(!r)throw new V({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let i,t,n;switch(a.recoveryMethod){case"user-passcode":i=a.password;break;case"google-drive":t=yield L(o);break;case"icloud":let{recoverySecret:f}=yield ne({client:o,walletAddress:r.address,chainType:r.chain_type});n=f;break}try{r.chain_type==="ethereum"?yield o.embeddedWallet.getProvider(r,i,t,n):r.chain_type==="solana"&&(yield o.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier",i,t,n))}catch(f){throw new V({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[o,e])}};import{useContext as Ye,useEffect as $}from"react";var z=(e={})=>{let{wallet:o,createWalletCallbacks:c,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:r}=Ye(h),{onCreateWalletSuccess:i,onCreateWalletError:t,onRecoverWalletError:n,onRecoverWalletSuccess:l,onSetWalletRecoverySuccess:f,onSetWalletRecoveryError:d}=e;return $(()=>{c.current={onSuccess:i,onError:t}},[i,t]),$(()=>{a.current={onSuccess:l,onError:n}},[l,n]),$(()=>{r.current={onSuccess:f,onError:d}},[l,n]),o};import{useEffect as Ze}from"react";var ao=({onStateChange:e})=>{let o=z();return Ze(()=>{e(o)},[o])};import{useContext as er}from"react";var uo=()=>{let{getIdentityToken:e}=er(h);return{getIdentityToken:e}};import{useCallback as ye,useContext as rr}from"react";import{PrivyClientError as tr}from"@privy-io/js-sdk-core";var wo=e=>{let{user:o,client:c}=rr(h),a=ye(i=>{var n;let t=g(i);return(n=e==null?void 0:e.onError)==null||n.call(e,t),t},[e==null?void 0:e.onError]);return{create:ye(()=>m(void 0,null,function*(){var i;try{if(o)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(i=e==null?void 0:e.onSuccess)==null||i.call(e,t.user,t.is_new_user),t.user}catch(t){throw a(t)}}),[c,a,o,e==null?void 0:e.onSuccess])}};import{useContext as or,useEffect as nr}from"react";function Eo({onMfaRequired:e}){let{client:o,user:c}=or(h);nr(()=>{function a(){return m(this,null,function*(){var r;yield e((r=c==null?void 0:c.mfa_methods.map(({type:i})=>i))!=null?r:[])})}return o.mfaPromises.on("mfaRequired",a),()=>{o.mfaPromises.off("mfaRequired",a)}},[o,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}=ir(h),o=Q(r=>m(this,null,function*(){switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:i}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty});return se(i);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=Q(r=>m(this,null,function*(){var i,t,n;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new R({code:"invalid_mfa_code",error:"Invalid MFA code"});(i=e.mfaPromises.rootPromise.current)==null||i.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||""}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;case"passkey":if(typeof r.mfaCode=="string")throw new R({code:"invalid_passkey_response",error:"Invalid authenticator response"});let l=yield ie(r.mfaCode),f=ae(l);(t=e.mfaPromises.rootPromise.current)==null||t.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||"",mfaCode:f}),yield new Promise((y,s)=>{e.mfaPromises.submitPromise.current={resolve:y,reject:s}});break;default:let d=new R({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(n=e.mfaPromises.rootPromise.current)==null||n.reject(d),d}}),[e]),a=Q(()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new R({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:o,submit:c,cancel:a}}import{useCallback as X,useContext as ar}from"react";function Ro(){let{client:e}=ar(h),o=X(r=>m(this,null,function*(){switch(r.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(r);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),c=X(r=>m(this,null,function*(){switch(r.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(r);return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),a=X(r=>m(this,null,function*(){switch(r.method){case"sms":case"totp":yield e.mfa.unenrollMfa(r.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[]});return;default:throw new Error(`Unsupported MFA method: ${r.method}`)}}),[e]);return{initMfaEnrollment:o,submitMfaEnrollment:c,unenrollMfa:a}}import{useContext as sr,useEffect as ge}from"react";var cr=(e={})=>{let{solanaWallet:o,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:a}=sr(h),{onCreateWalletSuccess:r,onCreateWalletError:i,onRecoverWalletError:t,onRecoverWalletSuccess:n}=e;return ge(()=>{c.current={onSuccess:r,onError:i}},[r,i]),ge(()=>{a.current={onSuccess:n,onError:t}},[n,t]),o};import{useContext as lr}from"react";var Y=()=>{let{user:e,isReady:o,logout:c,getAccessToken:a,error:r}=lr(h);return{user:e,isReady:o,error:r,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(),o=Z(),c=mr(()=>{var l;let r=(l=we(e))!=null?l:ve(e);if(!r)return[];let i=ee(e),{entropyId:t,entropyIdVerifier:n}=I(r);return i.map(f=>({address:f.address,walletIndex:f.wallet_index,publicKey:f.public_key,chainType:f.chain_type,getProvider:()=>o.embeddedWallet.getBitcoinProvider({wallet:f,entropyId:t,entropyIdVerifier:n})}))},[o,e]),a=ur(t=>m(void 0,[t],function*({chainType:r,createAdditional:i=!1}){var k;let{user:n}=yield o.user.get(),l=(k=we(n))!=null?k:ve(n);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:f,entropyIdVerifier:d}=I(l),y=ee(n).filter(w=>w.chain_type===r);if(!i&&y.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=y.length===0?0:Math.max(...y.map(w=>w.wallet_index),0)+1,u=yield o.embeddedWallet.add({chainType:r,hdWalletIndex:s,entropyId:f,entropyIdVerifier:d}),v=ee(u.user).find(w=>w.chain_type===r&&w.wallet_index===s);if(!u.user||!v)throw new re({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:u.user,provider:yield o.embeddedWallet.getBitcoinProvider({wallet:v,entropyId:f,entropyIdVerifier:d})}}),[o]);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,Ct 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};
|