@privy-io/expo 0.49.0 → 0.49.1

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