@privy-io/expo 0.54.2 → 0.54.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-RUK73PH7.js → chunk-DRSQ4VBD.js} +1 -1
- package/dist/{chunk-JHQ3EQEG.js → chunk-X77JC5K3.js} +1 -1
- package/dist/esm/{chunk-RUK73PH7.js → chunk-DRSQ4VBD.js} +1 -1
- package/dist/esm/{chunk-JHQ3EQEG.js → chunk-X77JC5K3.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/passkey.js +1 -1
- package/dist/esm/smart-wallets.js +1 -1
- package/dist/esm/ui.js +1 -1
- package/dist/index.js +1 -1
- package/dist/passkey.js +1 -1
- package/dist/smart-wallets.js +1 -1
- package/dist/ui.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _zustand = require('zustand');var We=_zustand.create.call(void 0, ()=>({status:"disconnected"})),xe= exports.f =()=>We.getState().onNeedsRecovery,Ar= exports.g =e=>{_react.useEffect.call(void 0, ()=>{We.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var te = _interopRequireWildcard(_expolinking); var J = _interopRequireWildcard(_expolinking); var $ = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var x = _interopRequireWildcard(_exposecurestore); var W = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var ce = _interopRequireWildcard(_expowebbrowser); var Be = _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 ue=_zustand.create.call(void 0, ()=>{}),Ie=e=>ue.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),oe= exports.a =ue.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);function Ue(e){return typeof e!="object"||e===null||!("event"in e&&typeof e.event=="string")||!("id"in e&&typeof e.id=="string")||!("data"in e&&typeof e.data=="object")||e.data===null?!1:e.event.startsWith("app:secure-storage:")}function Le(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(e.event){case"app:secure-storage:get":{let{key:t}=e.data,r=yield W.getItemAsync(ge(t),{keychainAccessible:W.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).catch(o=>(console.warn("Failed to get the value from secure store",o),null));return{event:e.event,id:e.id,data:{value:r}}}case"app:secure-storage:remove":{let{key:t}=e.data,r=yield W.deleteItemAsync(ge(t),{keychainAccessible:W.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(o=>(console.warn("Failed to remove the value from secure store",o),!1));return{event:e.event,id:e.id,data:{success:r}}}case"app:secure-storage:set":{let{key:t,value:r}=e.data,o=yield W.setItemAsync(ge(t),r,{keychainAccessible:W.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(n=>(console.warn("Failed to write the value to secure store",n),!1));return{event:e.event,id:e.id,data:{success:o}}}}})}var ge=e=>e.replaceAll(":","-");var N=_zustand.createStore.call(void 0, )(()=>({user:null,proxyStatus:"loading"}));function Te(){return N.getState().user}var Ur=N.subscribe.bind(N);function _e(e){N.setState(({user:t})=>_reactfastcompare2.default.call(void 0, t,e)?{}:{user:e})}var Ee=e=>N.setState({proxyStatus:e});function j(){return _zustand.useStore.call(void 0, N,e=>e.user)}function Fe(){return _zustand.useStore.call(void 0, N,e=>!!e.user)}function D(){return _zustand.useStore.call(void 0, N,e=>e.proxyStatus!=="loading")}var Lt={shouldUseAppBackedStorage:!0},Me=({client:e,isClientReady:t})=>{let r=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){d==="active"&&((yield e.embeddedWallet.ping(500))||(Ee("reloading"),e.embeddedWallet.reload()))})).remove,[e]);let o=_react.useCallback.call(void 0, n=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var c;let{data:d}=n.nativeEvent,i=JSON.parse(d);if(Ue(i)){let s=yield Le(i);(c=r.current)==null||c.postMessage(JSON.stringify(s));return}e.embeddedWallet.onMessage(i)}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n=>{n&&(e.setMessagePoster(n),r.current=n)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",injectedJavaScriptObject:Lt,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:e.logger.level==="DEBUG",onLoad:()=>Ee("loaded"),onError:console.error,onMessage:o}):null};function je(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:n}){var i,c,s;t({status:"creating"});try{let{user:a}=yield e.user.get(),l=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, a),v=l[0],f=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, a))!=null?i:void 0;if(n!=null&&n.recoveryMethod&&n.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(n!=null&&n.createAdditional)&&v)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 g,w;if(v){let u=f!=null?f:v,{entropyId:b,entropyIdVerifier:y}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, u),m=Math.max(...l.map(E=>E.wallet_index),0)+1,_=yield e.embeddedWallet.add({chainType:"solana",entropyId:b,entropyIdVerifier:y,hdWalletIndex:m}),S=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, _.user).find(E=>E.wallet_index===m);if(!S)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});g=yield e.embeddedWallet.getSolanaProvider(S,b,y),w=_.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:f}),b=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, u.user).find(S=>S.wallet_index===0);if(!b)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let y=f!=null?f:b,{entropyId:m,entropyIdVerifier:_}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, y);g=yield e.embeddedWallet.getSolanaProvider(b,m,_),w=u.user}let h=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, w)[0];if(!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(s=(c=r.current)==null?void 0:c.onSuccess)==null||s.call(c,g),t({status:"connected",publicKey:h.public_key}),o({status:"initial"}),g}catch(a){let l=a instanceof Error?a.message:"Error creating embedded wallet";throw t({status:"error",error:l}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function ye(l){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:n,setRecoveryFlowState:d,password:i,recoveryKey:c,recoveryToken:s,recoverySecretOverride:a}){var v,f,g,w;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(n){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let h=yield e.embeddedWallet.getProvider(t,i,s,a,c);return r({status:"connected",provider:h,account:t}),d({status:"initial"}),(f=(v=o.current)==null?void 0:v.onSuccess)==null||f.call(v,h),h}catch(h){r({status:"needs-recovery",account:t}),d({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:h instanceof Error?h.message:"Error recovering embedded wallet"});throw(w=(g=o.current)==null?void 0:g.onError)==null||w.call(g,u),u}})}function De(c){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:n,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:i}){var s,a,l,v;n({status:"connecting"});try{let f=yield e.embeddedWallet.getSolanaProvider(t,r,o);return n({status:"connected",publicKey:f._publicKey}),i({status:"initial"}),(a=(s=d.current)==null?void 0:s.onSuccess)==null||a.call(s,f),f}catch(f){n({status:"needs-recovery"}),i({status:"initial"});let g=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:f instanceof Error?f.message:"Error recovering embedded wallet"});throw(v=(l=d.current)==null?void 0:l.onError)==null||v.call(l,g),g}})}var qe=({client:e,solanaWallet:t,setSolanaWallet:r,setSolanaRecoveryFlowState:o,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:d})=>{let i=j(),c=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, i),[i]),s=D(),a=_react.useMemo.call(void 0, ()=>c.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, i),[i,c]),l=_react.useMemo.call(void 0, ()=>{let w=c.map(y=>{let m=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i,y);return m?{account:y,entropy:m}:null});if(w.some(y=>y===null))return[];let h=void 0,u=void 0,b=void 0;return w.filter(y=>y!==null).map(({account:y,entropy:{entropyId:m,entropyIdVerifier:_}})=>({address:y.address,publicKey:y.address,walletIndex:y.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(y,m,_,h,u,b,S=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;yield(E=xe())==null?void 0:E(S)}))}))},[c,i,e]),v=_react.useCallback.call(void 0, w=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return yield je({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:o,opts:w})}),[e,n]),f=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:w,entropyIdVerifier:h}=a;return De({client:e,account:c[0],entropyId:w,entropyIdVerifier:h,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:o})}),[e,a,c,d,o,r]),g=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(w=>w.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:w,entropyIdVerifier:h}=a,u=yield e.embeddedWallet.getSolanaProvider(c[0],w,h);return r({status:"connected",publicKey:c[0].public_key}),u}catch(w){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, w)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):w instanceof Error?(r({status:"error",error:w.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:w.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[c,e,a,r]);return _react.useEffect.call(void 0, ()=>{if(!i&&t.status!=="disconnected")return r({status:"disconnected"});s&&g().catch(()=>{})},[s,i]),_react.useEffect.call(void 0, ()=>{t.status==="error"&&t.error.includes("User must be logged in")&&g()},[t.status]),{create:v,recover:f,getProvider:g,wallets:l}};function me(v){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:n,password:d,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,solanaAccount:l}){var g,w;switch(o){case"user-passcode":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s||!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let f=o==="icloud"?"icloud-native":o;try{let{user:h}=yield e.embeddedWallet.create({password:d,recoveryMethod:f,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,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 b=yield e.embeddedWallet.getProvider(u);return(w=(g=r.current)==null?void 0:g.onSuccess)==null||w.call(g,b),t({status:"connected",provider:b,account:u}),n({status:"initial"}),b}catch(h){let u=h instanceof Error?h.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),n({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function Je(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function ke(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({user:e,appId:t,client:r}){var c;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 Je(),d=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(d==null?void 0:d.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:s,iCloudRecordName:a}=yield n.writeRecoverySecretToICloud({containerId:d.container_identifier,appId:t,userId:e.id});return{recoverySecret:s,iCloudRecordName:a}}catch(s){if(s instanceof Error){let a=(c=s.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:a})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function He(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({walletAddress:e,client:t,chainType:r}){var a;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield Je(),i=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),s=c==null?void 0:c.container_identifier;if(!s)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:s,recordName:i});return{recoverySecret:l}}catch(l){if(l instanceof Error){let v=(a=l.message.split("Caused by: ")[1])!=null?a:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:v})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function K(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(t=>setTimeout(t,e));function _o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function ne(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let d;switch(e){case"google-drive":{let{url:a}=yield r.recovery.auth.generateURL(J.createURL(t||"/"));d=a;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Be.openAuthSessionAsync(d);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:c}=J.parse(i.url),s;switch(e){case"google-drive":{let{privy_oauth_state:a,privy_oauth_code:l}=c;if(!l||!a)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});s=yield ve({oAuthCode:l,oAuthState:a,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return s}catch(d){throw o==null||o(K(d)),d}})}function ve(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:n}=yield r.recovery.auth.authorize(e,t);if(!n)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return n})}var qt=2*60*1e3;function zt(e){let t;return new Promise((r,o)=>{t=J.addEventListener("url",d=>_chunkOWCFWPALjs.d.call(void 0, this,[d],function*({url:n}){if(!n)return;let{queryParams:i}=J.parse(n),{privy_oauth_state:c,privy_oauth_code:s}=i!=null?i:{};if(typeof s!="string"||typeof c!="string")return;let a=yield ve({client:e,oAuthCode:s,oAuthState:c});r(a)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},qt)}).finally(()=>{t==null||t.remove()})}function Uo(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=zt(e));let r=yield ne({provider:"google-drive",client:e});return r!=null?r:yield t})}function fe(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:n}){var i,c,s,a;try{let{provider:l,user:v}=yield e.embeddedWallet.setRecovery(t),f=l,g=_jssdkcore.getUserEmbeddedWallet.call(void 0, v);return n({status:"connected",provider:f,account:g}),(c=(i=r.current)==null?void 0:i.onSuccess)==null||c.call(i,f),o({status:"initial"}),f}catch(l){let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(a=(s=r.current)==null?void 0:s.onError)==null||a.call(s,v),o({status:"initial"}),v}})}function Qe(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:e.recoveryMethod==="recovery-encryption-key"?{recoveryMethod:"recovery-encryption-key",recoveryKey:e.recoveryKey}:{recoveryMethod:e.recoveryMethod}}var $e=({client:e,appId:t,wallet:r,setWallet:o,setRecoveryFlowState:n,createWalletCallbacks:d,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:c})=>{let s=j(),a=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, s),[s]),l=D(),v=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var I,B;if(a)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:b}=yield e.user.get(),{password:y,recoveryMethod:m,recoveryKey:_}=Qe(u),S,E,L;if(m==="google-drive"&&(S=yield ne({provider:m,client:e,onError:(I=d.current)==null?void 0:I.onError}),n({status:"creating-wallet"}),!S))return null;if(m==="icloud"){if(!b)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:b,appId:t,client:e});E=V,L=q}return yield me({client:e,setWallet:o,createWalletCallbacks:d,recoveryMethod:m,recoveryKey:_,setRecoveryFlowState:n,password:y,recoverySecretOverride:E,iCloudRecordNameOverride:L,solanaAccount:(B=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, b))!=null?B:void 0})}),[e,a,s]),f=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var m;if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, 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."});if(_jssdkcore.isUnifiedWallet.call(void 0, a))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:a.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let b,y;switch(u.recoveryMethod){case"privy":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},u),{wallet:a});break;case"user-passcode":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},u),{wallet:a,password:u.password});break;case"google-drive":if(b=yield ne({provider:u.recoveryMethod,client:e,onError:(m=c.current)==null?void 0:m.onError}),n({status:"upgrading-recovery"}),!b)return null;y={recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:b};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:_,iCloudRecordName:S}=yield ke({user:s,appId:t,client:e});y={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:S,wallet:a};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return fe({client:e,recoveryInput:y,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:o})}),[e,a,r.status,s]),g=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return f({recoveryMethod:"user-passcode",password:u})}),[e,a,r.status]),w=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:b,recoveryMethod:y,recoveryKey:m}=Qe(u),_,S;if(y==="google-drive"&&(_=yield ne({provider:y,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!_))return null;if(y==="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 He({client:e,walletAddress:a.address});S=L}return ye({client:e,account:a,setWallet:o,recoverWalletCallbacks:i,recoveryMethod:y,setRecoveryFlowState:n,recoveryKey:m,password:b,recoveryToken:_,recoverySecretOverride:S})}),[e,a]),h=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw o({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(u=>u.status==="connected"?{status:"reconnecting",account:a}:{status:"connecting",account:a});try{let u=yield e.embeddedWallet.getProvider(a);return o({status:"connected",provider:u,account:a}),u}catch(u){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, u)?(o({status:"needs-recovery",account:a}),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:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:u.message})):(o({status:"error",error:"Error loading embedded wallet",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,a]);return _react.useEffect.call(void 0, ()=>{if(!s&&r.status!=="disconnected")return o({status:"disconnected",account:null});l&&h().catch(()=>{})},[l,s,a]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&h()},[r.status]),{create:v,recover:w,setPassword:g,setRecovery:f,getProvider:h}};var et=({client:e,isReady:t})=>{let r=j(),o=ue(i=>i==null?void 0:i.customAuth),[n,d]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!(o!=null&&o.enabled)){d({status:"not-enabled"});return}d({status:"loading"});let{getCustomAccessToken:c,isLoading:s}=o;if(!(!t||s))try{let a=yield c();if(!a&&r){yield e.auth.logout(),d({status:"done"});return}if(!a){d({status:"done"});return}if(r){d({status:"done"});return}let l=oe();if(!(yield e.auth.customProvider.syncWithToken(a,{embedded:l==null?void 0:l.embedded}))){yield e.auth.logout(),d({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}d({status:"done"})}catch(a){if(console.log("Error syncing with custom auth provider",a),d({status:"error",error:a}),r)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,r,t,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:n,customAuthStateIsSettled:n.status!=="loading"&&n.status!=="initial"}};var tt=({client:e,createWalletCallbacks:t,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:o,recoveryFlowState:n,oAuthState:d,setRecoveryFlowState:i,setWallet:c,appStateVisible:s})=>{let a=$.useURL(),l=j(),v=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, l),[l]),f=D(),g=_react.useCallback.call(void 0, w=>{var u,b,y,m;let h=K(w);n.status==="creating-wallet"?(b=(u=t.current).onError)==null||b.call(u,K(h)):(m=(y=r.current).onError)==null||m.call(y,K(h)),i({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function w(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var y;if(!a&&n.status!=="initial"&&s&&g(new Error("Recovery OAuth session failed")),!a||n.status==="initial"||d.status!=="initial"||!s||!f)return;let{queryParams:h}=$.parse(a),{privy_oauth_state:u,privy_oauth_code:b}=h;if(!(!b||!u)){yield $.openURL(a.split("?")[0]);try{let m=yield ve({oAuthCode:b,oAuthState:u,client:e});if(n.status==="creating-wallet"){let _=(y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, l))!=null?y:void 0;yield me({client:e,setWallet:c,createWalletCallbacks:t,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:m,solanaAccount:_})}else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield fe({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:m},setWalletRecoveryCallbacks:o,setRecoveryFlowState:i,setWallet:c})}else yield ye({client:e,account:v,setWallet:c,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:m})}catch(m){g(m)}}})}_reactnative.Platform.OS==="android"&&w()},[a,n.status,s,f])};var rt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{yield e.initialize()}catch(d){o(d instanceof Error?d:new Error(String(d)))}try{yield e.user.get()}catch(d){}finally{r(!0)}}))()},[e,t,o,r])};var _expocrypto = require('expo-crypto');var ot={name:"@privy-io/expo",version:"0.54.2",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],homepage:"https://docs.privy.io",bugs:{url:"https://privy.io/slack"},license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"},"./ui":{require:"./dist/ui.js",import:"./dist/esm/ui.js",types:"./dist/ui.d.ts"},"./connectors":{require:"./dist/connectors.js",import:"./dist/esm/connectors.js",types:"./dist/connectors.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:"jest"},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.51.0","@scure/base":"^1.2.4",tweetnacl:"^1.0.3","react-fast-compare":"^3.2.2",zustand:"^5.0.4"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@solana/web3.js":"^1.98.0","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^13.1.0","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",expo:"52.0.37","expo-apple-authentication":"7.1.3","expo-application":"6.0.2","expo-clipboard":"7.0.1","expo-crypto":"14.0.2",jest:"^29.7.0","jest-expo":"52.0.5","lucide-react-native":"^0.474.0",react:"^18.3.1","react-native":"0.77.1","react-test-renderer":"^18.3.1",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.5","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.30.6"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0},"react-native-svg":{optional:!0},"expo-clipboard":{optional:!0},"react-native-qrcode-styled":{optional:!0},"react-native-safe-area-context":{optional:!0}},publishConfig:{access:"public"}};var it=({appId:e,clientId:t,storage:r=he,supportedChains:o,baseUrl:n,logLevel:d})=>new (0, _jssdkcore2.default)({appId:e,clientId:t,supportedChains:o,storage:nt(r),sdkVersion:`expo:${ot.version}`,nativeAppIdentifier:at(),crypto:{digest:_expocrypto.digest},baseUrl:n,logLevel:d});var be=_react.createContext.call(void 0, null),ee;function Ta(e){return ee?ee.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 Fa=e=>{mr();let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let M=_reactnative.AppState.addEventListener("change",St=>{r(St==="active")});return()=>{M.remove()}},[]),_react.useEffect.call(void 0, ()=>Ie(e.config),[e.config]);let[o,n]=_react.useState.call(void 0, !1),[d,i]=_react.useState.call(void 0, null),[c,s]=_react.useState.call(void 0, !1),[a,l]=_react.useState.call(void 0, {status:"disconnected",account:null}),[v,f]=_react.useState.call(void 0, {status:"disconnected"}),[g,w]=_react.useState.call(void 0, {status:"initial"}),[h,u]=_react.useState.call(void 0, {status:"initial"}),[b,y]=_react.useState.call(void 0, {status:"initial"}),[m,_]=_react.useState.call(void 0, {status:"initial"}),[S,E]=_react.useState.call(void 0, {status:"initial"}),[L,I]=_react.useState.call(void 0, {status:"initial"}),[B,V]=_react.useState.call(void 0, {status:"initial"}),q=_react.useRef.call(void 0, {}),T=_react.useRef.call(void 0, {}),F=_react.useRef.call(void 0, {}),P=_react.useRef.call(void 0, {}),G=_react.useRef.call(void 0, {}),re=_react.useRef.call(void 0, {}),le=_react.useCallback.call(void 0, M=>{if(M){_e(M),i(null);return}_e(null),w({status:"initial"}),u({status:"initial"}),l({status:"disconnected",account:null})},[]),k=_react.useMemo.call(void 0, ()=>{let M=e.storage||he;return e.client?ee=e.client:ee=it({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:M,baseUrl:e.baseUrl,logLevel:e.logLevel}),ee.setCallbacks({setUser:le,setIsReady:s}),ee},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,le]),mt=_react.useCallback.call(void 0, ()=>(le(null),k.auth.logout()),[le,k]),vt=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{return yield k.getAccessToken()}catch(M){return console.debug(M),null}}),[k]),ft=_react.useCallback.call(void 0, ()=>k.getIdentityToken(),[k]);rt({client:k,isUserInitialized:o,setIsUserInitialized:n,setError:i});let ht=$e({client:k,appId:e.appId,createWalletCallbacks:T,recoverWalletCallbacks:F,setWalletRecoveryCallbacks:P,setRecoveryFlowState:y,wallet:a,setWallet:l}),wt=qe({client:k,createSolanaWalletCallbacks:G,recoverSolanaWalletCallbacks:re,setSolanaRecoveryFlowState:_,solanaWallet:v,setSolanaWallet:f});tt({client:k,createWalletCallbacks:T,recoverWalletCallbacks:F,setWalletRecoveryCallbacks:P,recoveryFlowState:b,oAuthState:h,setRecoveryFlowState:y,setWallet:l,appStateVisible:t});let{customAuthStateIsSettled:bt}=et({client:k,isReady:o}),gt=D();return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(be.Provider,{value:{client:k,isReady:gt&&o&&bt,error:d,logout:mt,getAccessToken:vt,getIdentityToken:ft,wallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},a),ht),solanaWallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},v),wt),oAuthState:h,oAuthCallbacks:q,recoveryFlowState:b,setRecoveryFlowState:y,solanaRecoveryFlowState:m,setSolanaRecoveryFlowState:_,createWalletCallbacks:T,recoverWalletCallbacks:F,setWalletRecoveryCallbacks:P,createSolanaWalletCallbacks:G,recoverSolanaWalletCallbacks:re,setOAuthState:u,siweState:S,setSiweState:E,otpState:g,setOtpState:w,passkeyState:L,setPasskeyState:I,farcasterState:B,setFarcasterState:V}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Me,{client:k,isClientReady:c})))},mr=()=>{if(_react.useContext.call(void 0, be))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var _expoappleauthentication = require('expo-apple-authentication'); var de = _interopRequireWildcard(_expoappleauthentication);function lt(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield de.signInAsync({state:e.state,requestedScopes:[de.AppleAuthenticationScope.EMAIL,de.AppleAuthenticationScope.FULL_NAME]})}catch(t){throw t instanceof Error&&"code"in t&&t.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:e.isLogin?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):t}})}var Pe=(e={})=>{let{oAuthState:t,setOAuthState:r,oAuthCallbacks:o,client:n}=_react.useContext.call(void 0, be),d=Fe(),i=e.action?e.action==="login":!d;_react.useEffect.call(void 0, ()=>{o.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let c=_react.useCallback.call(void 0, a=>{var v;let l=K(a);return r({status:"error",error:l}),(v=e==null?void 0:e.onError)==null||v.call(e,l),l},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(w){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:l,redirectUri:v,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:g}){var u,b,y;r({status:"loading"});let h=Te();try{if(h&&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(!h&&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 m=te.createURL(v||"/"),{url:_}=yield n.auth.oauth.generateURL(l,m),S,E;if(_reactnative.Platform.OS==="ios"&&l==="apple"&&!f){let F=(u=new URL(_).searchParams.get("state"))!=null?u:"",P=yield lt({state:F,isLogin:i});if(!P.authorizationCode||!P.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 G=oe(),re=yield n.auth.oauth.loginWithCode(P.authorizationCode,P.state,l,"raw",g?"no-signup":"login-or-sign-up",{embedded:G==null?void 0:G.embedded});S=re.user,E=re.is_new_user}else({user:S}=yield n.auth.oauth.linkWithCode(P.authorizationCode,P.state,l,"raw"));return(b=e==null?void 0:e.onSuccess)==null||b.call(e,S,E),r({status:"done"}),S!=null?S:void 0}let L=_reactnative.Platform.OS==="android"?_.replace("x.com","twitter.com"):_,I=yield ce.openAuthSessionAsync(L,m);if(I.type!=="success")throw[ce.WebBrowserResultType.CANCEL,ce.WebBrowserResultType.DISMISS].includes(I.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}=te.parse(I.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 T=oe(),F=yield n.auth.oauth.loginWithCode(q,V,l,void 0,g?"no-signup":"login-or-sign-up",{embedded:T==null?void 0:T.embedded});S=F.user,E=F.is_new_user}else({user:S}=yield n.auth.oauth.linkWithCode(q,V,l));return(y=e==null?void 0:e.onSuccess)==null||y.call(e,S,E),yield te.openURL(I.url.split("?")[0]),r({status:"done"}),S!=null?S:void 0}catch(m){throw c(m),m}})},[n,r,c]),state:t}};function Qa(e){let{state:t,start:r}=Pe(_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},e),{action:"login"}));return{state:t,login:r}}function $a(e){let{state:t,start:r}=Pe(_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},e),{action:"link"}));return{state:t,link:r}}function Za(e){return Pe(e)}var at=()=>{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 nt(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){return[]})}}var he={get(e){return x.getItemAsync(e,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return x.setItemAsync(e,t,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return x.deleteItemAsync(e,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return[]})};var br=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Sr=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function mn(e){var t;return{id:e.id,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},raw_id:e.rawId,type:e.type,authenticator_attachment:(t=e.authenticatorAttachment)!=null?t:"platform",response:{authenticator_data:e.response.authenticatorData,client_data_json:e.response.clientDataJSON,signature:e.response.signature,user_handle:e.response.userHandle}}}function vn(e){var t,r,o,n;return{challenge:e.challenge,rpId:e.rp_id,extensions:{appid:(t=e.extensions)==null?void 0:t.app_id,credProps:(r=e.extensions)==null?void 0:r.cred_props,hmacCreateSecret:(o=e.extensions)==null?void 0:o.hmac_create_secret},timeout:e.timeout,allowCredentials:(n=e.allow_credentials)==null?void 0:n.map(({id:d,type:i,transports:c})=>({id:d,type:i,transports:c})),userVerification:e.user_verification}}function fn(e){var t,r,o,n,d,i,c,s;return{rp:e.rp,user:{id:e.user.id,name:e.user.name,displayName:e.user.display_name},challenge:e.challenge,pubKeyCredParams:e.pub_key_cred_params,extensions:{hmacCreateSecret:(t=e.extensions)==null?void 0:t.hmac_create_secret,credProps:(o=(r=e.extensions)==null?void 0:r.cred_props)==null?void 0:o.rk,appid:(n=e.extensions)==null?void 0:n.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(d=e.authenticator_selection)==null?void 0:d.authenticator_attachment,residentKey:(i=e.authenticator_selection)==null?void 0:i.resident_key,userVerification:(c=e.authenticator_selection)==null?void 0:c.user_verification,requireResidentKey:(s=e.authenticator_selection)==null?void 0:s.require_resident_key}}}exports.a = oe; exports.b = Te; exports.c = Ur; exports.d = j; exports.e = Fe; exports.f = xe; exports.g = Ar; exports.h = ke; exports.i = He; exports.j = K; exports.k = ho; exports.l = _o; exports.m = Uo; exports.n = Qa; exports.o = $a; exports.p = Za; exports.q = he; exports.r = it; exports.s = be; exports.t = Ta; exports.u = Fa; exports.v = br; exports.w = Sr; exports.x = mn; exports.y = vn; exports.z = fn;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _zustand = require('zustand');var We=_zustand.create.call(void 0, ()=>({status:"disconnected"})),xe= exports.f =()=>We.getState().onNeedsRecovery,Ar= exports.g =e=>{_react.useEffect.call(void 0, ()=>{We.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var te = _interopRequireWildcard(_expolinking); var J = _interopRequireWildcard(_expolinking); var $ = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var x = _interopRequireWildcard(_exposecurestore); var W = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var ce = _interopRequireWildcard(_expowebbrowser); var Be = _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 ue=_zustand.create.call(void 0, ()=>{}),Ie=e=>ue.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),oe= exports.a =ue.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);function Ue(e){return typeof e!="object"||e===null||!("event"in e&&typeof e.event=="string")||!("id"in e&&typeof e.id=="string")||!("data"in e&&typeof e.data=="object")||e.data===null?!1:e.event.startsWith("app:secure-storage:")}function Le(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(e.event){case"app:secure-storage:get":{let{key:t}=e.data,r=yield W.getItemAsync(ge(t),{keychainAccessible:W.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).catch(o=>(console.warn("Failed to get the value from secure store",o),null));return{event:e.event,id:e.id,data:{value:r}}}case"app:secure-storage:remove":{let{key:t}=e.data,r=yield W.deleteItemAsync(ge(t),{keychainAccessible:W.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(o=>(console.warn("Failed to remove the value from secure store",o),!1));return{event:e.event,id:e.id,data:{success:r}}}case"app:secure-storage:set":{let{key:t,value:r}=e.data,o=yield W.setItemAsync(ge(t),r,{keychainAccessible:W.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY}).then(()=>!0).catch(n=>(console.warn("Failed to write the value to secure store",n),!1));return{event:e.event,id:e.id,data:{success:o}}}}})}var ge=e=>e.replaceAll(":","-");var N=_zustand.createStore.call(void 0, )(()=>({user:null,proxyStatus:"loading"}));function Te(){return N.getState().user}var Ur=N.subscribe.bind(N);function _e(e){N.setState(({user:t})=>_reactfastcompare2.default.call(void 0, t,e)?{}:{user:e})}var Ee=e=>N.setState({proxyStatus:e});function j(){return _zustand.useStore.call(void 0, N,e=>e.user)}function Fe(){return _zustand.useStore.call(void 0, N,e=>!!e.user)}function D(){return _zustand.useStore.call(void 0, N,e=>e.proxyStatus!=="loading")}var Lt={shouldUseAppBackedStorage:!0},Me=({client:e,isClientReady:t})=>{let r=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){d==="active"&&((yield e.embeddedWallet.ping(500))||(Ee("reloading"),e.embeddedWallet.reload()))})).remove,[e]);let o=_react.useCallback.call(void 0, n=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var c;let{data:d}=n.nativeEvent,i=JSON.parse(d);if(Ue(i)){let s=yield Le(i);(c=r.current)==null||c.postMessage(JSON.stringify(s));return}e.embeddedWallet.onMessage(i)}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:n=>{n&&(e.setMessagePoster(n),r.current=n)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",injectedJavaScriptObject:Lt,source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:e.logger.level==="DEBUG",onLoad:()=>Ee("loaded"),onError:console.error,onMessage:o}):null};function je(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:n}){var i,c,s;t({status:"creating"});try{let{user:a}=yield e.user.get(),l=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, a),v=l[0],f=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, a))!=null?i:void 0;if(n!=null&&n.recoveryMethod&&n.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(n!=null&&n.createAdditional)&&v)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 g,w;if(v){let u=f!=null?f:v,{entropyId:b,entropyIdVerifier:y}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, u),m=Math.max(...l.map(E=>E.wallet_index),0)+1,_=yield e.embeddedWallet.add({chainType:"solana",entropyId:b,entropyIdVerifier:y,hdWalletIndex:m}),S=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, _.user).find(E=>E.wallet_index===m);if(!S)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});g=yield e.embeddedWallet.getSolanaProvider(S,b,y),w=_.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:f}),b=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, u.user).find(S=>S.wallet_index===0);if(!b)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let y=f!=null?f:b,{entropyId:m,entropyIdVerifier:_}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, y);g=yield e.embeddedWallet.getSolanaProvider(b,m,_),w=u.user}let h=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, w)[0];if(!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(s=(c=r.current)==null?void 0:c.onSuccess)==null||s.call(c,g),t({status:"connected",publicKey:h.public_key}),o({status:"initial"}),g}catch(a){let l=a instanceof Error?a.message:"Error creating embedded wallet";throw t({status:"error",error:l}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:l})}})}function ye(l){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:n,setRecoveryFlowState:d,password:i,recoveryKey:c,recoveryToken:s,recoverySecretOverride:a}){var v,f,g,w;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(n){case"user-passcode":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let h=yield e.embeddedWallet.getProvider(t,i,s,a,c);return r({status:"connected",provider:h,account:t}),d({status:"initial"}),(f=(v=o.current)==null?void 0:v.onSuccess)==null||f.call(v,h),h}catch(h){r({status:"needs-recovery",account:t}),d({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:h instanceof Error?h.message:"Error recovering embedded wallet"});throw(w=(g=o.current)==null?void 0:g.onError)==null||w.call(g,u),u}})}function De(c){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:n,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:i}){var s,a,l,v;n({status:"connecting"});try{let f=yield e.embeddedWallet.getSolanaProvider(t,r,o);return n({status:"connected",publicKey:f._publicKey}),i({status:"initial"}),(a=(s=d.current)==null?void 0:s.onSuccess)==null||a.call(s,f),f}catch(f){n({status:"needs-recovery"}),i({status:"initial"});let g=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:f instanceof Error?f.message:"Error recovering embedded wallet"});throw(v=(l=d.current)==null?void 0:l.onError)==null||v.call(l,g),g}})}var qe=({client:e,solanaWallet:t,setSolanaWallet:r,setSolanaRecoveryFlowState:o,createSolanaWalletCallbacks:n,recoverSolanaWalletCallbacks:d})=>{let i=j(),c=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, i),[i]),s=D(),a=_react.useMemo.call(void 0, ()=>c.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, i),[i,c]),l=_react.useMemo.call(void 0, ()=>{let w=c.map(y=>{let m=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i,y);return m?{account:y,entropy:m}:null});if(w.some(y=>y===null))return[];let h=void 0,u=void 0,b=void 0;return w.filter(y=>y!==null).map(({account:y,entropy:{entropyId:m,entropyIdVerifier:_}})=>({address:y.address,publicKey:y.address,walletIndex:y.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(y,m,_,h,u,b,S=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;yield(E=xe())==null?void 0:E(S)}))}))},[c,i,e]),v=_react.useCallback.call(void 0, w=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return yield je({client:e,setSolanaWallet:r,createSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:o,opts:w})}),[e,n]),f=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:w,entropyIdVerifier:h}=a;return De({client:e,account:c[0],entropyId:w,entropyIdVerifier:h,setSolanaWallet:r,recoverSolanaWalletCallbacks:d,setSolanaRecoveryFlowState:o})}),[e,a,c,d,o,r]),g=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw r({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});r(w=>w.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:w,entropyIdVerifier:h}=a,u=yield e.embeddedWallet.getSolanaProvider(c[0],w,h);return r({status:"connected",publicKey:c[0].public_key}),u}catch(w){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, w)?(r({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):w instanceof Error?(r({status:"error",error:w.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:w.message})):(r({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[c,e,a,r]);return _react.useEffect.call(void 0, ()=>{if(!i&&t.status!=="disconnected")return r({status:"disconnected"});s&&g().catch(()=>{})},[s,i]),_react.useEffect.call(void 0, ()=>{t.status==="error"&&t.error.includes("User must be logged in")&&g()},[t.status]),{create:v,recover:f,getProvider:g,wallets:l}};function me(v){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:n,password:d,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,solanaAccount:l}){var g,w;switch(o){case"user-passcode":if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!s||!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery failed due to inability to store credentials"});break}t({status:"creating",account:null});let f=o==="icloud"?"icloud-native":o;try{let{user:h}=yield e.embeddedWallet.create({password:d,recoveryMethod:f,recoveryKey:i,recoveryToken:c,recoverySecretOverride:s,iCloudRecordNameOverride:a,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 b=yield e.embeddedWallet.getProvider(u);return(w=(g=r.current)==null?void 0:g.onSuccess)==null||w.call(g,b),t({status:"connected",provider:b,account:u}),n({status:"initial"}),b}catch(h){let u=h instanceof Error?h.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),n({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function Je(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function ke(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({user:e,appId:t,client:r}){var c;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 Je(),d=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(d==null?void 0:d.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:s,iCloudRecordName:a}=yield n.writeRecoverySecretToICloud({containerId:d.container_identifier,appId:t,userId:e.id});return{recoverySecret:s,iCloudRecordName:a}}catch(s){if(s instanceof Error){let a=(c=s.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:a})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function He(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({walletAddress:e,client:t,chainType:r}){var a;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let n=yield Je(),i=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!i)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let c=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),s=c==null?void 0:c.container_identifier;if(!s)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:s,recordName:i});return{recoverySecret:l}}catch(l){if(l instanceof Error){let v=(a=l.message.split("Caused by: ")[1])!=null?a:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:v})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function K(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(t=>setTimeout(t,e));function _o(){let e=_react.useRef.call(void 0, _reactnative.AppState.currentState);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",o=>{e.current=o}).remove,[]);function t(){return _reactnative.AppState.currentState}return{appState:e,getCurrentAppState:t}}function ne(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let d;switch(e){case"google-drive":{let{url:a}=yield r.recovery.auth.generateURL(J.createURL(t||"/"));d=a;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let i=yield Be.openAuthSessionAsync(d);if(_reactnative.Platform.OS==="android")return;if(i.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:c}=J.parse(i.url),s;switch(e){case"google-drive":{let{privy_oauth_state:a,privy_oauth_code:l}=c;if(!l||!a)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});s=yield ve({oAuthCode:l,oAuthState:a,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return s}catch(d){throw o==null||o(K(d)),d}})}function ve(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:n}=yield r.recovery.auth.authorize(e,t);if(!n)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return n})}var qt=2*60*1e3;function zt(e){let t;return new Promise((r,o)=>{t=J.addEventListener("url",d=>_chunkOWCFWPALjs.d.call(void 0, this,[d],function*({url:n}){if(!n)return;let{queryParams:i}=J.parse(n),{privy_oauth_state:c,privy_oauth_code:s}=i!=null?i:{};if(typeof s!="string"||typeof c!="string")return;let a=yield ve({client:e,oAuthCode:s,oAuthState:c});r(a)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},qt)}).finally(()=>{t==null||t.remove()})}function Uo(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=zt(e));let r=yield ne({provider:"google-drive",client:e});return r!=null?r:yield t})}function fe(d){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:n}){var i,c,s,a;try{let{provider:l,user:v}=yield e.embeddedWallet.setRecovery(t),f=l,g=_jssdkcore.getUserEmbeddedWallet.call(void 0, v);return n({status:"connected",provider:f,account:g}),(c=(i=r.current)==null?void 0:i.onSuccess)==null||c.call(i,f),o({status:"initial"}),f}catch(l){let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:l instanceof Error?l.message:"Error setting password on embedded wallet"});throw(a=(s=r.current)==null?void 0:s.onError)==null||a.call(s,v),o({status:"initial"}),v}})}function Qe(e){return e===void 0?{recoveryMethod:"privy"}:typeof e=="string"?{recoveryMethod:"user-passcode",password:e}:e.recoveryMethod==="user-passcode"?{recoveryMethod:"user-passcode",password:e.password}:e.recoveryMethod==="recovery-encryption-key"?{recoveryMethod:"recovery-encryption-key",recoveryKey:e.recoveryKey}:{recoveryMethod:e.recoveryMethod}}var $e=({client:e,appId:t,wallet:r,setWallet:o,setRecoveryFlowState:n,createWalletCallbacks:d,recoverWalletCallbacks:i,setWalletRecoveryCallbacks:c})=>{let s=j(),a=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, s),[s]),l=D(),v=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var I,B;if(a)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:b}=yield e.user.get(),{password:y,recoveryMethod:m,recoveryKey:_}=Qe(u),S,E,L;if(m==="google-drive"&&(S=yield ne({provider:m,client:e,onError:(I=d.current)==null?void 0:I.onError}),n({status:"creating-wallet"}),!S))return null;if(m==="icloud"){if(!b)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:b,appId:t,client:e});E=V,L=q}return yield me({client:e,setWallet:o,createWalletCallbacks:d,recoveryMethod:m,recoveryKey:_,setRecoveryFlowState:n,password:y,recoverySecretOverride:E,iCloudRecordNameOverride:L,solanaAccount:(B=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, b))!=null?B:void 0})}),[e,a,s]),f=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var m;if(r.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, 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."});if(_jssdkcore.isUnifiedWallet.call(void 0, a))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:a.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let b,y;switch(u.recoveryMethod){case"privy":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},u),{wallet:a});break;case"user-passcode":y=_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},u),{wallet:a,password:u.password});break;case"google-drive":if(b=yield ne({provider:u.recoveryMethod,client:e,onError:(m=c.current)==null?void 0:m.onError}),n({status:"upgrading-recovery"}),!b)return null;y={recoveryMethod:"google-drive",wallet:a,recoveryAccessToken:b};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:_,iCloudRecordName:S}=yield ke({user:s,appId:t,client:e});y={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:S,wallet:a};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return fe({client:e,recoveryInput:y,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:o})}),[e,a,r.status,s]),g=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return f({recoveryMethod:"user-passcode",password:u})}),[e,a,r.status]),w=_react.useCallback.call(void 0, u=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var E;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:b,recoveryMethod:y,recoveryKey:m}=Qe(u),_,S;if(y==="google-drive"&&(_=yield ne({provider:y,client:e,onError:(E=i.current)==null?void 0:E.onError}),n({status:"recovering"}),!_))return null;if(y==="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 He({client:e,walletAddress:a.address});S=L}return ye({client:e,account:a,setWallet:o,recoverWalletCallbacks:i,recoveryMethod:y,setRecoveryFlowState:n,recoveryKey:m,password:b,recoveryToken:_,recoverySecretOverride:S})}),[e,a]),h=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!a)throw o({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(u=>u.status==="connected"?{status:"reconnecting",account:a}:{status:"connecting",account:a});try{let u=yield e.embeddedWallet.getProvider(a);return o({status:"connected",provider:u,account:a}),u}catch(u){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, u)?(o({status:"needs-recovery",account:a}),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:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:u.message})):(o({status:"error",error:"Error loading embedded wallet",account:a}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,a]);return _react.useEffect.call(void 0, ()=>{if(!s&&r.status!=="disconnected")return o({status:"disconnected",account:null});l&&h().catch(()=>{})},[l,s,a]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&h()},[r.status]),{create:v,recover:w,setPassword:g,setRecovery:f,getProvider:h}};var et=({client:e,isReady:t})=>{let r=j(),o=ue(i=>i==null?void 0:i.customAuth),[n,d]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){if(!(o!=null&&o.enabled)){d({status:"not-enabled"});return}d({status:"loading"});let{getCustomAccessToken:c,isLoading:s}=o;if(!(!t||s))try{let a=yield c();if(!a&&r){yield e.auth.logout(),d({status:"done"});return}if(!a){d({status:"done"});return}if(r){d({status:"done"});return}let l=oe();if(!(yield e.auth.customProvider.syncWithToken(a,{embedded:l==null?void 0:l.embedded}))){yield e.auth.logout(),d({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}d({status:"done"})}catch(a){if(console.log("Error syncing with custom auth provider",a),d({status:"error",error:a}),r)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,r,t,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:n,customAuthStateIsSettled:n.status!=="loading"&&n.status!=="initial"}};var tt=({client:e,createWalletCallbacks:t,recoverWalletCallbacks:r,setWalletRecoveryCallbacks:o,recoveryFlowState:n,oAuthState:d,setRecoveryFlowState:i,setWallet:c,appStateVisible:s})=>{let a=$.useURL(),l=j(),v=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, l),[l]),f=D(),g=_react.useCallback.call(void 0, w=>{var u,b,y,m;let h=K(w);n.status==="creating-wallet"?(b=(u=t.current).onError)==null||b.call(u,K(h)):(m=(y=r.current).onError)==null||m.call(y,K(h)),i({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function w(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var y;if(!a&&n.status!=="initial"&&s&&g(new Error("Recovery OAuth session failed")),!a||n.status==="initial"||d.status!=="initial"||!s||!f)return;let{queryParams:h}=$.parse(a),{privy_oauth_state:u,privy_oauth_code:b}=h;if(!(!b||!u)){yield $.openURL(a.split("?")[0]);try{let m=yield ve({oAuthCode:b,oAuthState:u,client:e});if(n.status==="creating-wallet"){let _=(y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, l))!=null?y:void 0;yield me({client:e,setWallet:c,createWalletCallbacks:t,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:m,solanaAccount:_})}else if(n.status==="upgrading-recovery"){if(!v)throw new Error("Embedded wallet not found");yield fe({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:v,recoveryAccessToken:m},setWalletRecoveryCallbacks:o,setRecoveryFlowState:i,setWallet:c})}else yield ye({client:e,account:v,setWallet:c,recoverWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:i,recoveryToken:m})}catch(m){g(m)}}})}_reactnative.Platform.OS==="android"&&w()},[a,n.status,s,f])};var rt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{yield e.initialize()}catch(d){o(d instanceof Error?d:new Error(String(d)))}try{yield e.user.get()}catch(d){}finally{r(!0)}}))()},[e,t,o,r])};var _expocrypto = require('expo-crypto');var ot={name:"@privy-io/expo",version:"0.54.3",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],homepage:"https://docs.privy.io",bugs:{url:"https://privy.io/slack"},license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"},"./ui":{require:"./dist/ui.js",import:"./dist/esm/ui.js",types:"./dist/ui.d.ts"},"./connectors":{require:"./dist/connectors.js",import:"./dist/esm/connectors.js",types:"./dist/connectors.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:"jest"},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.51.1","@scure/base":"^1.2.4",tweetnacl:"^1.0.3","react-fast-compare":"^3.2.2",zustand:"^5.0.4"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@solana/web3.js":"^1.98.0","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^13.1.0","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",expo:"52.0.37","expo-apple-authentication":"7.1.3","expo-application":"6.0.2","expo-clipboard":"7.0.1","expo-crypto":"14.0.2",jest:"^29.7.0","jest-expo":"52.0.5","lucide-react-native":"^0.474.0",react:"^18.3.1","react-native":"0.77.1","react-test-renderer":"^18.3.1",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.5","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.30.6"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0},"react-native-svg":{optional:!0},"expo-clipboard":{optional:!0},"react-native-qrcode-styled":{optional:!0},"react-native-safe-area-context":{optional:!0}},publishConfig:{access:"public"}};var it=({appId:e,clientId:t,storage:r=he,supportedChains:o,baseUrl:n,logLevel:d})=>new (0, _jssdkcore2.default)({appId:e,clientId:t,supportedChains:o,storage:nt(r),sdkVersion:`expo:${ot.version}`,nativeAppIdentifier:at(),crypto:{digest:_expocrypto.digest},baseUrl:n,logLevel:d});var be=_react.createContext.call(void 0, null),ee;function Ta(e){return ee?ee.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 Fa=e=>{mr();let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let M=_reactnative.AppState.addEventListener("change",St=>{r(St==="active")});return()=>{M.remove()}},[]),_react.useEffect.call(void 0, ()=>Ie(e.config),[e.config]);let[o,n]=_react.useState.call(void 0, !1),[d,i]=_react.useState.call(void 0, null),[c,s]=_react.useState.call(void 0, !1),[a,l]=_react.useState.call(void 0, {status:"disconnected",account:null}),[v,f]=_react.useState.call(void 0, {status:"disconnected"}),[g,w]=_react.useState.call(void 0, {status:"initial"}),[h,u]=_react.useState.call(void 0, {status:"initial"}),[b,y]=_react.useState.call(void 0, {status:"initial"}),[m,_]=_react.useState.call(void 0, {status:"initial"}),[S,E]=_react.useState.call(void 0, {status:"initial"}),[L,I]=_react.useState.call(void 0, {status:"initial"}),[B,V]=_react.useState.call(void 0, {status:"initial"}),q=_react.useRef.call(void 0, {}),T=_react.useRef.call(void 0, {}),F=_react.useRef.call(void 0, {}),P=_react.useRef.call(void 0, {}),G=_react.useRef.call(void 0, {}),re=_react.useRef.call(void 0, {}),le=_react.useCallback.call(void 0, M=>{if(M){_e(M),i(null);return}_e(null),w({status:"initial"}),u({status:"initial"}),l({status:"disconnected",account:null})},[]),k=_react.useMemo.call(void 0, ()=>{let M=e.storage||he;return e.client?ee=e.client:ee=it({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:M,baseUrl:e.baseUrl,logLevel:e.logLevel}),ee.setCallbacks({setUser:le,setIsReady:s}),ee},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,le]),mt=_react.useCallback.call(void 0, ()=>(le(null),k.auth.logout()),[le,k]),vt=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){try{return yield k.getAccessToken()}catch(M){return console.debug(M),null}}),[k]),ft=_react.useCallback.call(void 0, ()=>k.getIdentityToken(),[k]);rt({client:k,isUserInitialized:o,setIsUserInitialized:n,setError:i});let ht=$e({client:k,appId:e.appId,createWalletCallbacks:T,recoverWalletCallbacks:F,setWalletRecoveryCallbacks:P,setRecoveryFlowState:y,wallet:a,setWallet:l}),wt=qe({client:k,createSolanaWalletCallbacks:G,recoverSolanaWalletCallbacks:re,setSolanaRecoveryFlowState:_,solanaWallet:v,setSolanaWallet:f});tt({client:k,createWalletCallbacks:T,recoverWalletCallbacks:F,setWalletRecoveryCallbacks:P,recoveryFlowState:b,oAuthState:h,setRecoveryFlowState:y,setWallet:l,appStateVisible:t});let{customAuthStateIsSettled:bt}=et({client:k,isReady:o}),gt=D();return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(be.Provider,{value:{client:k,isReady:gt&&o&&bt,error:d,logout:mt,getAccessToken:vt,getIdentityToken:ft,wallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},a),ht),solanaWallet:_chunkOWCFWPALjs.a.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},v),wt),oAuthState:h,oAuthCallbacks:q,recoveryFlowState:b,setRecoveryFlowState:y,solanaRecoveryFlowState:m,setSolanaRecoveryFlowState:_,createWalletCallbacks:T,recoverWalletCallbacks:F,setWalletRecoveryCallbacks:P,createSolanaWalletCallbacks:G,recoverSolanaWalletCallbacks:re,setOAuthState:u,siweState:S,setSiweState:E,otpState:g,setOtpState:w,passkeyState:L,setPasskeyState:I,farcasterState:B,setFarcasterState:V}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(Me,{client:k,isClientReady:c})))},mr=()=>{if(_react.useContext.call(void 0, be))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var _expoappleauthentication = require('expo-apple-authentication'); var de = _interopRequireWildcard(_expoappleauthentication);function lt(e){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){try{return yield de.signInAsync({state:e.state,requestedScopes:[de.AppleAuthenticationScope.EMAIL,de.AppleAuthenticationScope.FULL_NAME]})}catch(t){throw t instanceof Error&&"code"in t&&t.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:e.isLogin?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):t}})}var Pe=(e={})=>{let{oAuthState:t,setOAuthState:r,oAuthCallbacks:o,client:n}=_react.useContext.call(void 0, be),d=Fe(),i=e.action?e.action==="login":!d;_react.useEffect.call(void 0, ()=>{o.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let c=_react.useCallback.call(void 0, a=>{var v;let l=K(a);return r({status:"error",error:l}),(v=e==null?void 0:e.onError)==null||v.call(e,l),l},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(w){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({provider:l,redirectUri:v,isLegacyAppleIosBehaviorEnabled:f=!1,disableSignup:g}){var u,b,y;r({status:"loading"});let h=Te();try{if(h&&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(!h&&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 m=te.createURL(v||"/"),{url:_}=yield n.auth.oauth.generateURL(l,m),S,E;if(_reactnative.Platform.OS==="ios"&&l==="apple"&&!f){let F=(u=new URL(_).searchParams.get("state"))!=null?u:"",P=yield lt({state:F,isLogin:i});if(!P.authorizationCode||!P.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 G=oe(),re=yield n.auth.oauth.loginWithCode(P.authorizationCode,P.state,l,"raw",g?"no-signup":"login-or-sign-up",{embedded:G==null?void 0:G.embedded});S=re.user,E=re.is_new_user}else({user:S}=yield n.auth.oauth.linkWithCode(P.authorizationCode,P.state,l,"raw"));return(b=e==null?void 0:e.onSuccess)==null||b.call(e,S,E),r({status:"done"}),S!=null?S:void 0}let L=_reactnative.Platform.OS==="android"?_.replace("x.com","twitter.com"):_,I=yield ce.openAuthSessionAsync(L,m);if(I.type!=="success")throw[ce.WebBrowserResultType.CANCEL,ce.WebBrowserResultType.DISMISS].includes(I.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}=te.parse(I.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 T=oe(),F=yield n.auth.oauth.loginWithCode(q,V,l,void 0,g?"no-signup":"login-or-sign-up",{embedded:T==null?void 0:T.embedded});S=F.user,E=F.is_new_user}else({user:S}=yield n.auth.oauth.linkWithCode(q,V,l));return(y=e==null?void 0:e.onSuccess)==null||y.call(e,S,E),yield te.openURL(I.url.split("?")[0]),r({status:"done"}),S!=null?S:void 0}catch(m){throw c(m),m}})},[n,r,c]),state:t}};function Qa(e){let{state:t,start:r}=Pe(_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},e),{action:"login"}));return{state:t,login:r}}function $a(e){let{state:t,start:r}=Pe(_chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},e),{action:"link"}));return{state:t,link:r}}function Za(e){return Pe(e)}var at=()=>{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 nt(e){return{get(t){return e.get(t.replaceAll(":","-"))},put(t,r){return e.put(t.replaceAll(":","-"),r)},del(t){return e.del(t.replaceAll(":","-"))},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){return[]})}}var he={get(e){return x.getItemAsync(e,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return x.setItemAsync(e,t,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return x.deleteItemAsync(e,{keychainAccessible:x.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){return[]})};var br=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).create({rp:e.rp,user:e.user,challenge:e.challenge,pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:e.excludeCredentials,authenticatorSelection:e.authenticatorSelection,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_create_passkey",error:"Could not create passkey"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var Sr=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;let r=yield(yield Promise.resolve().then(() => _interopRequireWildcard(require("react-native-passkeys")))).get({rpId:e.rpId,challenge:e.challenge,allowCredentials:e.allowCredentials,timeout:12e4});if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"no_passkey_found_for_challenge",error:"Could not find a matching passkey to login with"});return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function mn(e){var t;return{id:e.id,client_extension_results:{app_id:e.clientExtensionResults.appid,cred_props:e.clientExtensionResults.credProps,hmac_create_secret:e.clientExtensionResults.hmacCreateSecret},raw_id:e.rawId,type:e.type,authenticator_attachment:(t=e.authenticatorAttachment)!=null?t:"platform",response:{authenticator_data:e.response.authenticatorData,client_data_json:e.response.clientDataJSON,signature:e.response.signature,user_handle:e.response.userHandle}}}function vn(e){var t,r,o,n;return{challenge:e.challenge,rpId:e.rp_id,extensions:{appid:(t=e.extensions)==null?void 0:t.app_id,credProps:(r=e.extensions)==null?void 0:r.cred_props,hmacCreateSecret:(o=e.extensions)==null?void 0:o.hmac_create_secret},timeout:e.timeout,allowCredentials:(n=e.allow_credentials)==null?void 0:n.map(({id:d,type:i,transports:c})=>({id:d,type:i,transports:c})),userVerification:e.user_verification}}function fn(e){var t,r,o,n,d,i,c,s;return{rp:e.rp,user:{id:e.user.id,name:e.user.name,displayName:e.user.display_name},challenge:e.challenge,pubKeyCredParams:e.pub_key_cred_params,extensions:{hmacCreateSecret:(t=e.extensions)==null?void 0:t.hmac_create_secret,credProps:(o=(r=e.extensions)==null?void 0:r.cred_props)==null?void 0:o.rk,appid:(n=e.extensions)==null?void 0:n.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(d=e.authenticator_selection)==null?void 0:d.authenticator_attachment,residentKey:(i=e.authenticator_selection)==null?void 0:i.resident_key,userVerification:(c=e.authenticator_selection)==null?void 0:c.user_verification,requireResidentKey:(s=e.authenticator_selection)==null?void 0:s.require_resident_key}}}exports.a = oe; exports.b = Te; exports.c = Ur; exports.d = j; exports.e = Fe; exports.f = xe; exports.g = Ar; exports.h = ke; exports.i = He; exports.j = K; exports.k = ho; exports.l = _o; exports.m = Uo; exports.n = Qa; exports.o = $a; exports.p = Za; exports.q = he; exports.r = it; exports.s = be; exports.t = Ta; exports.u = Fa; exports.v = br; exports.w = Sr; exports.x = mn; exports.y = vn; exports.z = fn;
|
|
@@ -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 _chunkRUK73PH7js = require('./chunk-RUK73PH7.js');var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var jt=e=>{let{client:t,setSiweState:s,siweState:n}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkRUK73PH7js.j.call(void 0, a);return s({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{s({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return s({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, d=>_chunkOWCFWPALjs.d.call(void 0, void 0,[d],function*({signature:a,messageOverride:c}){var g;try{if(!_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});s({status:"submitting-signature"});let{user:p}=yield t.auth.siwe.linkWithSiwe(a,void 0,c);return s({status:"done"}),(g=e==null?void 0:e.onSuccess)==null||g.call(e,p),p}catch(m){throw o(m)}}),[t,o,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:i,state:n}};var eo=e=>{let{client:t,setSiweState:s,siweState:n}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkRUK73PH7js.j.call(void 0, a);return s({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{s({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return s({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({signature:a,messageOverride:c,disableSignup:d}){var m;try{if(_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});s({status:"submitting-signature"});let v=_chunkRUK73PH7js.a.call(void 0, ),y=yield t.auth.siwe.loginWithSiwe(a,void 0,c,d?"no-signup":"login-or-sign-up",{embedded:v==null?void 0:v.embedded});return s({status:"done"}),(m=e==null?void 0:e.onSuccess)==null||m.call(e,y.user,y.is_new_user),y.user}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:n}};var W=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return e};var mo=()=>{let e=W(),t=_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkRUK73PH7js.j.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, a=>_chunkOWCFWPALjs.d.call(void 0, void 0,[a],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:i}={}}){try{if(!_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});let{user:d}=yield e.auth.siws.link({signature:n,message:o,walletClientType:r,connectorType:i});return d}catch(c){throw _chunkRUK73PH7js.j.call(void 0, c)}}),[e]);return{generateMessage:t,link:s}};var So=()=>{let e=W(),t=_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkRUK73PH7js.j.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, c=>_chunkOWCFWPALjs.d.call(void 0, void 0,[c],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:i}={},disableSignup:a}){try{if(_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siws_while_already_logged_in",error:"Already logged in, use `useLinkWithSiws` if you are trying to link a wallet to an existing account"});return(yield e.auth.siws.login({signature:n,message:o,walletClientType:r,connectorType:i,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw _chunkRUK73PH7js.j.call(void 0, d)}}),[e]);return{generateMessage:t,login:s}};var _o=e=>{let{client:t}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkRUK73PH7js.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({address:o}){var i;try{if(!_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let{user:c}=yield t.auth.siwe.unlinkWallet(o);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,c),c}catch(a){throw s(a)}}),[t,s,e==null?void 0:e.onSuccess])}};var Fo=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkRUK73PH7js.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({email:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,[m],function*({code:d,email:g}){var p;try{if(!_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let y=g||t;if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.email.linkWithCode(y,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw i(v)}}),[t,r,n,e,i]);return{sendCode:a,linkWithCode:c,state:o}};var jo=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkRUK73PH7js.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({email:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, p=>_chunkOWCFWPALjs.d.call(void 0, void 0,[p],function*({code:d,email:g,disableSignup:m}){var v;try{if(_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let S=g||t;if(!S)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 k=_chunkRUK73PH7js.a.call(void 0, ),w=yield n.auth.email.loginWithCode(S,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw i(y)}}),[t,r,n,e,i]);return{sendCode:a,loginWithCode:c,state:o}};var Zo=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkRUK73PH7js.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({phone:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,[m],function*({code:d,phone:g}){var p;try{if(!_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(g||t))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.phone.linkWithCode(g||t,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw i(v)}}),[t,r,n,e,i]);return{sendCode:a,linkWithCode:c,state:o}};var ln=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkRUK73PH7js.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({phone:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, p=>_chunkOWCFWPALjs.d.call(void 0, void 0,[p],function*({code:d,phone:g,disableSignup:m}){var v;try{if(_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(g||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 k=_chunkRUK73PH7js.a.call(void 0, ),w=yield n.auth.phone.loginWithCode(g||t,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw i(y)}}),[t,r,n,e,i]);return{sendCode:a,loginWithCode:c,state:o}};var _expolinking = require('expo-linking'); var N = _interopRequireWildcard(_expolinking); var B = _interopRequireWildcard(_expolinking); var Fe = _interopRequireWildcard(_expolinking); var D = _interopRequireWildcard(_expolinking); var Te = _interopRequireWildcard(_expolinking); var Ne = _interopRequireWildcard(_expolinking); var De = _interopRequireWildcard(_expolinking); var Ve = _interopRequireWildcard(_expolinking);var yn=e=>{let{appState:t,getCurrentAppState:s}=_chunkRUK73PH7js.l.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, g=>{var p;let m=_chunkRUK73PH7js.j.call(void 0, g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...y)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[v,...y],function*({relyingParty:g,redirectUrl:m},p={pollAttempts:10,pollIntervalMs:1e3}){var S;try{let k=_chunkRUK73PH7js.b.call(void 0, );if(i.current=!1,!k)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:w,channel_token:P}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:N.createURL(m!=null?m:"/")});if(!w)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(w),r({status:"polling-status"});let U=0;for(;U<p.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&s()!=="active"){yield _chunkRUK73PH7js.k.call(void 0, p.pollIntervalMs);continue}let M=yield n.auth.farcaster.getFarcasterStatus({channel_token:P});if(M.state==="completed"){r({status:"submitting-token"});let{user:O}=yield n.auth.farcaster.link(_chunkOWCFWPALjs.a.call(void 0, {channel_token:P},M));return r({status:"done"}),(S=e==null?void 0:e.onSuccess)==null||S.call(e,O),O}U++,yield _chunkRUK73PH7js.k.call(void 0, p.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(k){throw a(k)}}),[n,e==null?void 0:e.onSuccess,a,r]),state:o,cancel:c}};var Cn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkRUK73PH7js.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({fid:o}){var i;try{let{user:a}=yield t.auth.farcaster.unlink({fid:o});return(i=e==null?void 0:e.onSuccess)==null||i.call(e,a),a}catch(a){throw s(a)}}),[t,e==null?void 0:e.onSuccess,s])}};var Mn=e=>{let{appState:t,getCurrentAppState:s}=_chunkRUK73PH7js.l.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, g=>{var p;let m=_chunkRUK73PH7js.j.call(void 0, g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (y,...S)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[y,...S],function*({relyingParty:g,redirectUrl:m,disableSignup:p},v={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(i.current=!1,_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:P,channel_token:U}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:B.createURL(m!=null?m:"/")});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!U)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield B.openURL(P),r({status:"polling-status"});let M=0;for(;M<v.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&s()!=="active"){yield _chunkRUK73PH7js.k.call(void 0, v.pollIntervalMs);continue}let O=yield n.auth.farcaster.getFarcasterStatus({channel_token:U});if(O.state==="completed"){r({status:"submitting-token"});let j=_chunkRUK73PH7js.a.call(void 0, ),q=yield n.auth.farcaster.authenticate(_chunkOWCFWPALjs.a.call(void 0, {channel_token:U,mode:p?"no-signup":"login-or-sign-up"},O),{embedded:j==null?void 0:j.embedded});return r({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,q.user,q.is_new_user),q.user}M++,yield _chunkRUK73PH7js.k.call(void 0, v.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(w){throw a(w)}}),[n,a,e==null?void 0:e.onSuccess,r,t]),state:o,cancel:c}};var _zustand = require('zustand');var oe=_zustand.create.call(void 0, ()=>({status:"initial"})),E=e=>oe.setState(e,!0),br=oe.getState,Gn= exports.n =()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=oe(),s=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.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=_chunkRUK73PH7js.j.call(void 0, o);throw E({status:"initial",error:r}),r}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){let r=br().status;try{if(_chunkRUK73PH7js.b.call(void 0, )){let d=new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use a link helper if you are trying to link farcaster to an existing account"});throw E({status:r,error:d}),d}E({status:"submitting-signature"});let a=_chunkRUK73PH7js.a.call(void 0, ),c=yield e.auth.farcasterV2.authenticate(o,{embedded:a==null?void 0:a.embedded});return E({status:"done"}),setTimeout(()=>E({status:"initial"}),1500),{user:c.user}}catch(i){let a=_chunkRUK73PH7js.j.call(void 0, i);throw E({status:r,error:a}),a}}),[e]);return{init:s,login:n,state:t}};var zn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkRUK73PH7js.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({provider:o,subject:r}){var a;try{let{user:c}=yield t.auth.oauth.unlink(o,r);return(a=e==null?void 0:e.onSuccess)==null||a.call(e,c),c}catch(c){throw s(c)}}),[t,e==null?void 0:e.onSuccess,s])}};var Zn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),s=_react.useRef.call(void 0, e.onOAuthTokenGrant);s.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:n}=t.addOAuthTokensListener(o=>{s.current(o)});return n},[t])};var ni=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};function Mr(e,t){return[..._jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),..._jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, e),..._jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e)].find(n=>n.address===t)}function ne(e){let t=_chunkRUK73PH7js.b.call(void 0, );if(!t)throw new Error("User must be authenticated to perform this operation");let s=Mr(t,e);if(!s)throw new Error(`No wallet found with address ${e}`);return s}var pi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return _react.useMemo.call(void 0, ()=>({addSessionSigners:({address:t,signers:s})=>_jssdkcore.addSessionSigners.call(void 0, {client:e,wallet:ne(t),signers:s.map(n=>({signer_id:n.signerId,override_policy_ids:n.policyIds}))}),removeSessionSigners:({address:t})=>_jssdkcore.removeSessionSigners.call(void 0, {client:e,wallet:ne(t)})}),[e])};var vi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newEmailAddress:s}){xe(),yield e.auth.email.sendCode(s)})},updateEmail(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newEmailAddress:s,code:n}){let{address:r}=xe(),{user:i}=yield e.auth.email.updateEmail({oldEmailAddress:r,newEmailAddress:s,code:n});return i})}}),[e])};function xe(){let t=Nr().linked_accounts.find(s=>s.type==="email");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_email_without_a_linked_email",error:"Must have a linked email account already to update an email address. Use `useLinkEmail` to link an email account."});return t}function Nr(){let e=_chunkRUK73PH7js.b.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var Pi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newPhoneNumber:s}){Le(),yield e.auth.phone.sendCode(s)})},updatePhone(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newPhoneNumber:s,code:n}){let{phoneNumber:r}=Le(),{user:i}=yield e.auth.phone.updatePhone({oldPhoneNumber:r,newPhoneNumber:s,code:n});return i})}}),[e])};function Le(){let t=Gr().linked_accounts.find(s=>s.type==="phone");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_phone_without_a_linked_phone",error:"Must have a linked phone account already to update a phone number. Use `useLinkSMS` to link a phone number."});return t}function Gr(){let e=_chunkRUK73PH7js.b.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var _expowebbrowser = require('expo-web-browser'); var Ie = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var C=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Vr());let s=yield Ie.openAuthSessionAsync(e),n;if(_reactnative.Platform.OS==="android")n=yield t;else{if(s.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_failed",error:"OAuth session failed"});n=s.url}return Kr(n)});function Vr(){let e;return new Promise((t,s)=>{e=D.addEventListener("url",({url:n})=>{n&&t(n)}),setTimeout(()=>{s(new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_timeout",error:"OAuth session timed out"}))},jr)}).finally(()=>{e==null||e.remove()})}function Kr(e){let{queryParams:t}=D.parse(e);return t}var jr=2*60*1e3;var Hi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:C}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_cross_app_while_already_logged_in",error:"Already logged in, use `linkCrossAppAccount` if you are trying to link a cross app account to an existing account"});let{user:a}=yield t({providerAppId:n,redirectUrl:Fe.createURL(o||"/")});return{user:a}}),[t])}};var qi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:C}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(!_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_cross_app_before_logged_in",error:"Must be logged in to link a cross app account, Use `loginWithCrossAppAccount` to login with cross app"});return{user:yield t({providerAppId:n,redirectUrl:Te.createURL(o||"/")})}}),[t])}};var es=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:C}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:s,message:n,redirectUri:o="/"})=>t({user:_chunkRUK73PH7js.b.call(void 0, ),address:s,message:n,redirectUrl:Ne.createURL(o)})}),[t])};var as=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:C}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:s,typedData:n,redirectUri:o="/"})=>t({user:_chunkRUK73PH7js.b.call(void 0, ),address:s,typedData:n,redirectUrl:De.createURL(o)})}),[t])};var gs=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:C}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:s,transaction:n,redirectUri:o="/"})=>t({user:_chunkRUK73PH7js.b.call(void 0, ),address:s,transaction:n,redirectUrl:Ve.createURL(o)})}),[t])};var bs=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return{setRecovery:_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var a;let n=_chunkRUK73PH7js.b.call(void 0, ),o=e.app.appId;if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let r=(a=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?a:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.isUnifiedWallet.call(void 0, r))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});try{r.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(r):r.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier"))}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:s.recoveryMethod});let i=yield gt({appId:o,client:e,user:n,primaryAccount:r,recoveryParams:s});try{let{user:c}=yield e.embeddedWallet.setRecovery(i);return{user:c}}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[e])}},gt=r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:e,client:t,user:s,primaryAccount:n,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:n};case"user-passcode":return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},o),{wallet:n});case"google-drive":{let i=yield _chunkRUK73PH7js.m.call(void 0, t);return{recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:i}}case"icloud":{let{recoverySecret:i,iCloudRecordName:a}=yield _chunkRUK73PH7js.h.call(void 0, {appId:e,client:t,user:s});return{recoveryMethod:"icloud-native",recoverySecretOverride:i,iCloudRecordNameOverride:a,wallet:n}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:n,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Ls=()=>{let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return{recover:_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var d;let n=_chunkRUK73PH7js.b.call(void 0, );if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(d=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?d:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.isUnifiedWallet.call(void 0, o))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"User owned wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let r,i,a,c;switch(s.recoveryMethod){case"user-passcode":i=s.password;break;case"google-drive":a=yield _chunkRUK73PH7js.m.call(void 0, e);break;case"icloud":let{recoverySecret:g}=yield _chunkRUK73PH7js.i.call(void 0, {client:e,walletAddress:o.address,chainType:o.chain_type});c=g;break;case"recovery-encryption-key":r=s.recoveryKey;break;case"privy":break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_recovery_method",error:`Unsupported recovery options ${s}`})}try{o.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(o,i,a,c,r):o.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",i,a,c))}catch(g){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[e])}};var se=(e={})=>{let{wallet:t,createWalletCallbacks:s,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),{onCreateWalletSuccess:r,onCreateWalletError:i,onRecoverWalletError:a,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:d,onSetWalletRecoveryError:g}=e;return _react.useEffect.call(void 0, ()=>{s.current={onSuccess:r,onError:i}},[r,i]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:c,onError:a}},[c,a]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:d,onError:g}},[c,a]),t};var Ns=({onStateChange:e})=>{let t=se();return _react.useEffect.call(void 0, ()=>{e(t)},[t])};var Vs=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return{getIdentityToken:e}};var Xs=e=>{let{client:t}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkRUK73PH7js.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;try{if(_chunkRUK73PH7js.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let i=_chunkRUK73PH7js.a.call(void 0, ),a=yield t.auth.guest.create({embedded:i==null?void 0:i.embedded});return(o=e==null?void 0:e.onSuccess)==null||o.call(e,a.user,a.is_new_user),a.user}catch(r){throw s(r)}}),[t,s,e==null?void 0:e.onSuccess])}};function oa({onMfaRequired:e}){let{client:t}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);_react.useEffect.call(void 0, ()=>{function s(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var o;let n=_chunkRUK73PH7js.b.call(void 0, );yield e((o=n==null?void 0:n.mfa_methods.map(({type:r})=>r))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",s),()=>{t.mfaPromises.off("mfaRequired",s)}},[t,e])}function ua(){let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var i,a;switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty||((a=(i=_chunkRUK73PH7js.a.call(void 0, ))==null?void 0:i.mfa)==null?void 0:a.relyingParty)});return _chunkRUK73PH7js.y.call(void 0, c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),s=_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var i,a,c,d,g,m,p;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||((a=(i=_chunkRUK73PH7js.a.call(void 0, ))==null?void 0:i.mfa)==null?void 0:a.relyingParty)||""}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;case"passkey":if(typeof r.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let v=yield _chunkRUK73PH7js.w.call(void 0, r.mfaCode),y=_chunkRUK73PH7js.x.call(void 0, v);(m=e.mfaPromises.rootPromise.current)==null||m.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||((g=(d=_chunkRUK73PH7js.a.call(void 0, ))==null?void 0:d.mfa)==null?void 0:g.relyingParty)||"",mfaCode:y}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;default:let S=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(p=e.mfaPromises.rootPromise.current)==null||p.reject(S),S}}),[e]),n=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:s,prompt:n,cancel:o}}function ha(){let{client:e}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),t=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),s=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[],removeForLogin:o.removeForLogin});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:t,submitMfaEnrollment:s,unenrollMfa:n}}var Mt=()=>{let e=_chunkRUK73PH7js.d.call(void 0, ),t=W(),s=_react.useMemo.call(void 0, ()=>{let r=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).map(i=>{let a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e,i);return a?{account:i,entropy:a}:null});return r.some(i=>i===null)?[]:r.filter(i=>i!==null).map(({account:i,entropy:{entropyId:a,entropyIdVerifier:c}})=>({address:i.address,walletIndex:i.wallet_index,chainType:i.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:i,entropyId:a,entropyIdVerifier:c,onNeedsRecovery:d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var g;yield(g=_chunkRUK73PH7js.f.call(void 0, ))==null?void 0:g(d)})})}))},[t,e]),n=_react.useCallback.call(void 0, (...r)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[...r],function*({createAdditional:o=!1}={}){let{user:i}=yield t.user.get(),a=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, i);if(!o&&a.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i);if(!c){let y=yield t.embeddedWallet.create({});return ce(y.user,0),{user:y.user}}let{entropyId:d,entropyIdVerifier:g}=c;if(g==="solana-address-verifier"){let y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, i),S=yield t.embeddedWallet.create({solanaAccount:y});return ce(S.user,0),{user:S.user}}let p=a.map(y=>y.wallet_index).reduce((y,S)=>Math.max(y,S),0)+1,v=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:p,entropyId:d,entropyIdVerifier:g});return ce(v.user,p),{user:v.user}}),[t]);return{wallets:s,create:n}};function ce(e,t){let s=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(n=>n.wallet_index===t);if(!e||!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var It=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:s,recoverSolanaWalletCallbacks:n}=_react.useContext.call(void 0, _chunkRUK73PH7js.s),{onCreateWalletSuccess:o,onCreateWalletError:r,onRecoverWalletError:i,onRecoverWalletSuccess:a}=e;return _react.useEffect.call(void 0, ()=>{s.current={onSuccess:o,onError:r}},[o,r]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:a,onError:i}},[a,i]),t};var Tt=()=>{let e=_chunkRUK73PH7js.d.call(void 0, ),t=W(),s=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let r=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:i,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:i,entropyIdVerifier:a})}))},[t,e]),n=_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({chainType:o,createAdditional:r=!1}){var k;let a=t.app.getConfig();if(((k=a==null?void 0:a.embedded_wallet_config)==null?void 0:k.mode)==="user-controlled-server-wallets-only")throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Bitcoin wallets are only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let{user:c}=yield t.user.get(),d=_jssdkcore.getEntropyDetailsFromUser.call(void 0, c);if(!d)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:g,entropyIdVerifier:m}=d,p=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, c).filter(w=>w.chain_type===o);if(!r&&p.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 v=p.length===0?0:Math.max(...p.map(w=>w.wallet_index),0)+1,y=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:v,entropyId:g,entropyIdVerifier:m}),S=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, y.user).find(w=>w.chain_type===o&&w.wallet_index===v);if(!y.user||!S)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:S,entropyId:g,entropyIdVerifier:m})}}),[t]);return{wallets:s,create:n}};var Nt=()=>{let{isReady:e,logout:t,getAccessToken:s,error:n}=_react.useContext.call(void 0, _chunkRUK73PH7js.s);return{user:_chunkRUK73PH7js.d.call(void 0, ),isReady:e,error:n,logout:t,getAccessToken:s}};exports.a = jt; exports.b = eo; exports.c = W; exports.d = mo; exports.e = So; exports.f = _o; exports.g = Fo; exports.h = jo; exports.i = Zo; exports.j = ln; exports.k = yn; exports.l = Cn; exports.m = Mn; exports.n = Gn; exports.o = zn; exports.p = Zn; exports.q = ni; exports.r = pi; exports.s = vi; exports.t = Pi; exports.u = Hi; exports.v = qi; exports.w = es; exports.x = as; exports.y = gs; exports.z = bs; exports.A = Ls; exports.B = se; exports.C = Ns; exports.D = Vs; exports.E = Xs; exports.F = oa; exports.G = ua; exports.H = ha; exports.I = Mt; exports.J = It; exports.K = Tt; exports.L = Nt;
|
|
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 _chunkDRSQ4VBDjs = require('./chunk-DRSQ4VBD.js');var _chunkOWCFWPALjs = require('./chunk-OWCFWPAL.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var jt=e=>{let{client:t,setSiweState:s,siweState:n}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkDRSQ4VBDjs.j.call(void 0, a);return s({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{s({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return s({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, d=>_chunkOWCFWPALjs.d.call(void 0, void 0,[d],function*({signature:a,messageOverride:c}){var g;try{if(!_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siwe_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiwe` to login with a wallet"});s({status:"submitting-signature"});let{user:p}=yield t.auth.siwe.linkWithSiwe(a,void 0,c);return s({status:"done"}),(g=e==null?void 0:e.onSuccess)==null||g.call(e,p),p}catch(m){throw o(m)}}),[t,o,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:i,state:n}};var eo=e=>{let{client:t,setSiweState:s,siweState:n}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),o=_react.useCallback.call(void 0, a=>{var d;let c=_chunkDRSQ4VBDjs.j.call(void 0, a);return s({status:"error",error:c}),(d=e==null?void 0:e.onError)==null||d.call(e,c),c},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({wallet:a,from:{domain:c,uri:d}}){var m;try{s({status:"generating-message"});let p=yield t.auth.siwe.init(a,c,d);return s({status:"awaiting-signature"}),(m=e==null?void 0:e.onGenerateMessage)==null||m.call(e,p.message),p.message}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({signature:a,messageOverride:c,disableSignup:d}){var m;try{if(_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siwe_while_already_logged_in",error:"Already logged in, use `useLinkWithSiwe` if you are trying to link a wallet to an existing account"});s({status:"submitting-signature"});let v=_chunkDRSQ4VBDjs.a.call(void 0, ),y=yield t.auth.siwe.loginWithSiwe(a,void 0,c,d?"no-signup":"login-or-sign-up",{embedded:v==null?void 0:v.embedded});return s({status:"done"}),(m=e==null?void 0:e.onSuccess)==null||m.call(e,y.user,y.is_new_user),y.user}catch(p){throw o(p)}}),[t,o,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:n}};var W=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return e};var mo=()=>{let e=W(),t=_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkDRSQ4VBDjs.j.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, a=>_chunkOWCFWPALjs.d.call(void 0, void 0,[a],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:i}={}}){try{if(!_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});let{user:d}=yield e.auth.siws.link({signature:n,message:o,walletClientType:r,connectorType:i});return d}catch(c){throw _chunkDRSQ4VBDjs.j.call(void 0, c)}}),[e]);return{generateMessage:t,link:s}};var So=()=>{let e=W(),t=_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({wallet:{address:n},from:{domain:o,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:n});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:n,domain:o,uri:r,nonce:a})}}catch(a){throw _chunkDRSQ4VBDjs.j.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, c=>_chunkOWCFWPALjs.d.call(void 0, void 0,[c],function*({signature:n,message:o,wallet:{walletClientType:r,connectorType:i}={},disableSignup:a}){try{if(_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_siws_while_already_logged_in",error:"Already logged in, use `useLinkWithSiws` if you are trying to link a wallet to an existing account"});return(yield e.auth.siws.login({signature:n,message:o,walletClientType:r,connectorType:i,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw _chunkDRSQ4VBDjs.j.call(void 0, d)}}),[e]);return{generateMessage:t,login:s}};var _o=e=>{let{client:t}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkDRSQ4VBDjs.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkWallet:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({address:o}){var i;try{if(!_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_unlink_siwe_before_logged_in",error:"Must be logged in to unlink a wallet, Use `useLoginWithSiwe` to login with a wallet"});let{user:c}=yield t.auth.siwe.unlinkWallet(o);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,c),c}catch(a){throw s(a)}}),[t,s,e==null?void 0:e.onSuccess])}};var Fo=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkDRSQ4VBDjs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({email:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,[m],function*({code:d,email:g}){var p;try{if(!_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_email_before_logged_in",error:"Must be logged in to link an email, Use `useLoginWithEmail` to login with email"});let y=g||t;if(!y)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid email before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.email.linkWithCode(y,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw i(v)}}),[t,r,n,e,i]);return{sendCode:a,linkWithCode:c,state:o}};var jo=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkDRSQ4VBDjs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({email:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{email:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, p=>_chunkOWCFWPALjs.d.call(void 0, void 0,[p],function*({code:d,email:g,disableSignup:m}){var v;try{if(_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_email_while_already_logged_in",error:"Already logged in, use `useLinkWithEmail` if you are trying to link an email to an existing account"});let S=g||t;if(!S)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 k=_chunkDRSQ4VBDjs.a.call(void 0, ),w=yield n.auth.email.loginWithCode(S,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw i(y)}}),[t,r,n,e,i]);return{sendCode:a,loginWithCode:c,state:o}};var Zo=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkDRSQ4VBDjs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({phone:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, m=>_chunkOWCFWPALjs.d.call(void 0, void 0,[m],function*({code:d,phone:g}){var p;try{if(!_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(g||t))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_submit_otp_before_sending",error:"Must `sendCode` with a valid phone number before calling `linkWithCode`"});r({status:"submitting-code"});let{user:S}=yield n.auth.phone.linkWithCode(g||t,d);return r({status:"done"}),(p=e==null?void 0:e.onLinkSuccess)==null||p.call(e,S),S}catch(v){throw i(v)}}),[t,r,n,e,i]);return{sendCode:a,linkWithCode:c,state:o}};var ln=e=>{let[t,s]=_react.useState.call(void 0, ""),{client:n,otpState:o,setOtpState:r}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),i=_react.useCallback.call(void 0, d=>{var m;let g=_chunkDRSQ4VBDjs.j.call(void 0, d);return r({status:"error",error:g}),(m=e==null?void 0:e.onError)==null||m.call(e,g),g},[e,r]),a=_react.useCallback.call(void 0, g=>_chunkOWCFWPALjs.d.call(void 0, void 0,[g],function*({phone:d}){var m;s(d);try{r({status:"sending-code"});let p=yield n.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(m=e==null?void 0:e.onSendCodeSuccess)==null||m.call(e,{phone:d}),p}catch(p){throw i(p)}}),[n,i,e,r]),c=_react.useCallback.call(void 0, p=>_chunkOWCFWPALjs.d.call(void 0, void 0,[p],function*({code:d,phone:g,disableSignup:m}){var v;try{if(_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(g||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 k=_chunkDRSQ4VBDjs.a.call(void 0, ),w=yield n.auth.phone.loginWithCode(g||t,d,m?"no-signup":"login-or-sign-up",{embedded:k==null?void 0:k.embedded});return r({status:"done"}),(v=e==null?void 0:e.onLoginSuccess)==null||v.call(e,w.user,w.is_new_user),w==null?void 0:w.user}catch(y){throw i(y)}}),[t,r,n,e,i]);return{sendCode:a,loginWithCode:c,state:o}};var _expolinking = require('expo-linking'); var N = _interopRequireWildcard(_expolinking); var B = _interopRequireWildcard(_expolinking); var Fe = _interopRequireWildcard(_expolinking); var D = _interopRequireWildcard(_expolinking); var Te = _interopRequireWildcard(_expolinking); var Ne = _interopRequireWildcard(_expolinking); var De = _interopRequireWildcard(_expolinking); var Ve = _interopRequireWildcard(_expolinking);var yn=e=>{let{appState:t,getCurrentAppState:s}=_chunkDRSQ4VBDjs.l.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, g=>{var p;let m=_chunkDRSQ4VBDjs.j.call(void 0, g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (v,...y)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[v,...y],function*({relyingParty:g,redirectUrl:m},p={pollAttempts:10,pollIntervalMs:1e3}){var S;try{let k=_chunkDRSQ4VBDjs.b.call(void 0, );if(i.current=!1,!k)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:w,channel_token:P}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:N.createURL(m!=null?m:"/")});if(!w)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(w),r({status:"polling-status"});let U=0;for(;U<p.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&s()!=="active"){yield _chunkDRSQ4VBDjs.k.call(void 0, p.pollIntervalMs);continue}let M=yield n.auth.farcaster.getFarcasterStatus({channel_token:P});if(M.state==="completed"){r({status:"submitting-token"});let{user:O}=yield n.auth.farcaster.link(_chunkOWCFWPALjs.a.call(void 0, {channel_token:P},M));return r({status:"done"}),(S=e==null?void 0:e.onSuccess)==null||S.call(e,O),O}U++,yield _chunkDRSQ4VBDjs.k.call(void 0, p.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(k){throw a(k)}}),[n,e==null?void 0:e.onSuccess,a,r]),state:o,cancel:c}};var Cn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkDRSQ4VBDjs.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({fid:o}){var i;try{let{user:a}=yield t.auth.farcaster.unlink({fid:o});return(i=e==null?void 0:e.onSuccess)==null||i.call(e,a),a}catch(a){throw s(a)}}),[t,e==null?void 0:e.onSuccess,s])}};var Mn=e=>{let{appState:t,getCurrentAppState:s}=_chunkDRSQ4VBDjs.l.call(void 0, ),{client:n,farcasterState:o,setFarcasterState:r}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, g=>{var p;let m=_chunkDRSQ4VBDjs.j.call(void 0, g);return r({status:"error",error:m}),(p=e==null?void 0:e.onError)==null||p.call(e,m),m},[e==null?void 0:e.onError,r]),c=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (y,...S)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[y,...S],function*({relyingParty:g,redirectUrl:m,disableSignup:p},v={pollAttempts:10,pollIntervalMs:1e3}){var k;try{if(i.current=!1,_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:P,channel_token:U}=yield n.auth.farcaster.initializeAuth({relyingParty:g,redirectUrl:B.createURL(m!=null?m:"/")});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!U)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield B.openURL(P),r({status:"polling-status"});let M=0;for(;M<v.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&s()!=="active"){yield _chunkDRSQ4VBDjs.k.call(void 0, v.pollIntervalMs);continue}let O=yield n.auth.farcaster.getFarcasterStatus({channel_token:U});if(O.state==="completed"){r({status:"submitting-token"});let j=_chunkDRSQ4VBDjs.a.call(void 0, ),q=yield n.auth.farcaster.authenticate(_chunkOWCFWPALjs.a.call(void 0, {channel_token:U,mode:p?"no-signup":"login-or-sign-up"},O),{embedded:j==null?void 0:j.embedded});return r({status:"done"}),(k=e==null?void 0:e.onSuccess)==null||k.call(e,q.user,q.is_new_user),q.user}M++,yield _chunkDRSQ4VBDjs.k.call(void 0, v.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(w){throw a(w)}}),[n,a,e==null?void 0:e.onSuccess,r,t]),state:o,cancel:c}};var _zustand = require('zustand');var oe=_zustand.create.call(void 0, ()=>({status:"initial"})),E=e=>oe.setState(e,!0),br=oe.getState,Gn= exports.n =()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=oe(),s=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.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=_chunkDRSQ4VBDjs.j.call(void 0, o);throw E({status:"initial",error:r}),r}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){let r=br().status;try{if(_chunkDRSQ4VBDjs.b.call(void 0, )){let d=new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use a link helper if you are trying to link farcaster to an existing account"});throw E({status:r,error:d}),d}E({status:"submitting-signature"});let a=_chunkDRSQ4VBDjs.a.call(void 0, ),c=yield e.auth.farcasterV2.authenticate(o,{embedded:a==null?void 0:a.embedded});return E({status:"done"}),setTimeout(()=>E({status:"initial"}),1500),{user:c.user}}catch(i){let a=_chunkDRSQ4VBDjs.j.call(void 0, i);throw E({status:r,error:a}),a}}),[e]);return{init:s,login:n,state:t}};var zn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkDRSQ4VBDjs.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({provider:o,subject:r}){var a;try{let{user:c}=yield t.auth.oauth.unlink(o,r);return(a=e==null?void 0:e.onSuccess)==null||a.call(e,c),c}catch(c){throw s(c)}}),[t,e==null?void 0:e.onSuccess,s])}};var Zn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),s=_react.useRef.call(void 0, e.onOAuthTokenGrant);s.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:n}=t.addOAuthTokensListener(o=>{s.current(o)});return n},[t])};var ni=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};function Mr(e,t){return[..._jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),..._jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, e),..._jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e)].find(n=>n.address===t)}function ne(e){let t=_chunkDRSQ4VBDjs.b.call(void 0, );if(!t)throw new Error("User must be authenticated to perform this operation");let s=Mr(t,e);if(!s)throw new Error(`No wallet found with address ${e}`);return s}var pi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return _react.useMemo.call(void 0, ()=>({addSessionSigners:({address:t,signers:s})=>_jssdkcore.addSessionSigners.call(void 0, {client:e,wallet:ne(t),signers:s.map(n=>({signer_id:n.signerId,override_policy_ids:n.policyIds}))}),removeSessionSigners:({address:t})=>_jssdkcore.removeSessionSigners.call(void 0, {client:e,wallet:ne(t)})}),[e])};var vi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newEmailAddress:s}){xe(),yield e.auth.email.sendCode(s)})},updateEmail(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newEmailAddress:s,code:n}){let{address:r}=xe(),{user:i}=yield e.auth.email.updateEmail({oldEmailAddress:r,newEmailAddress:s,code:n});return i})}}),[e])};function xe(){let t=Nr().linked_accounts.find(s=>s.type==="email");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_email_without_a_linked_email",error:"Must have a linked email account already to update an email address. Use `useLinkEmail` to link an email account."});return t}function Nr(){let e=_chunkDRSQ4VBDjs.b.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var Pi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return _react.useMemo.call(void 0, ()=>({sendCode(n){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newPhoneNumber:s}){Le(),yield e.auth.phone.sendCode(s)})},updatePhone(o){return _chunkOWCFWPALjs.d.call(void 0, this,arguments,function*({newPhoneNumber:s,code:n}){let{phoneNumber:r}=Le(),{user:i}=yield e.auth.phone.updatePhone({oldPhoneNumber:r,newPhoneNumber:s,code:n});return i})}}),[e])};function Le(){let t=Gr().linked_accounts.find(s=>s.type==="phone");if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_phone_without_a_linked_phone",error:"Must have a linked phone account already to update a phone number. Use `useLinkSMS` to link a phone number."});return t}function Gr(){let e=_chunkDRSQ4VBDjs.b.call(void 0, );if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_update_before_logged_in",error:"Must be logged in to update a user profile."});return e}var _expowebbrowser = require('expo-web-browser'); var Ie = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var C=e=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Vr());let s=yield Ie.openAuthSessionAsync(e),n;if(_reactnative.Platform.OS==="android")n=yield t;else{if(s.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_failed",error:"OAuth session failed"});n=s.url}return Kr(n)});function Vr(){let e;return new Promise((t,s)=>{e=D.addEventListener("url",({url:n})=>{n&&t(n)}),setTimeout(()=>{s(new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_timeout",error:"OAuth session timed out"}))},jr)}).finally(()=>{e==null||e.remove()})}function Kr(e){let{queryParams:t}=D.parse(e);return t}var jr=2*60*1e3;var Hi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:C}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_cross_app_while_already_logged_in",error:"Already logged in, use `linkCrossAppAccount` if you are trying to link a cross app account to an existing account"});let{user:a}=yield t({providerAppId:n,redirectUrl:Fe.createURL(o||"/")});return{user:a}}),[t])}};var qi=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:C}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:n,redirectUri:o}){if(!_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_cross_app_before_logged_in",error:"Must be logged in to link a cross app account, Use `loginWithCrossAppAccount` to login with cross app"});return{user:yield t({providerAppId:n,redirectUrl:Te.createURL(o||"/")})}}),[t])}};var es=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:C}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:s,message:n,redirectUri:o="/"})=>t({user:_chunkDRSQ4VBDjs.b.call(void 0, ),address:s,message:n,redirectUrl:Ne.createURL(o)})}),[t])};var as=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:C}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:s,typedData:n,redirectUri:o="/"})=>t({user:_chunkDRSQ4VBDjs.b.call(void 0, ),address:s,typedData:n,redirectUrl:De.createURL(o)})}),[t])};var gs=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:C}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:s,transaction:n,redirectUri:o="/"})=>t({user:_chunkDRSQ4VBDjs.b.call(void 0, ),address:s,transaction:n,redirectUrl:Ve.createURL(o)})}),[t])};var bs=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return{setRecovery:_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var a;let n=_chunkDRSQ4VBDjs.b.call(void 0, ),o=e.app.appId;if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let r=(a=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?a:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!r)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.isUnifiedWallet.call(void 0, r))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Embedded wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});try{r.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(r):r.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(r,r.address,"solana-address-verifier"))}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:r.recovery_method,upgradeToRecoveryMethod:s.recoveryMethod});let i=yield gt({appId:o,client:e,user:n,primaryAccount:r,recoveryParams:s});try{let{user:c}=yield e.embeddedWallet.setRecovery(i);return{user:c}}catch(c){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:c instanceof Error?c.message:"Error setting password on embedded wallet"})}}),[e])}},gt=r=>_chunkOWCFWPALjs.d.call(void 0, void 0,[r],function*({appId:e,client:t,user:s,primaryAccount:n,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:n};case"user-passcode":return _chunkOWCFWPALjs.b.call(void 0, _chunkOWCFWPALjs.a.call(void 0, {},o),{wallet:n});case"google-drive":{let i=yield _chunkDRSQ4VBDjs.m.call(void 0, t);return{recoveryMethod:"google-drive",wallet:n,recoveryAccessToken:i}}case"icloud":{let{recoverySecret:i,iCloudRecordName:a}=yield _chunkDRSQ4VBDjs.h.call(void 0, {appId:e,client:t,user:s});return{recoveryMethod:"icloud-native",recoverySecretOverride:i,iCloudRecordNameOverride:a,wallet:n}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:n,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Ls=()=>{let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return{recover:_react.useCallback.call(void 0, s=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var d;let n=_chunkDRSQ4VBDjs.b.call(void 0, );if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(d=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, n))!=null?d:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, n);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.isUnifiedWallet.call(void 0, o))throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"User owned wallet recovery is only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let r,i,a,c;switch(s.recoveryMethod){case"user-passcode":i=s.password;break;case"google-drive":a=yield _chunkDRSQ4VBDjs.m.call(void 0, e);break;case"icloud":let{recoverySecret:g}=yield _chunkDRSQ4VBDjs.i.call(void 0, {client:e,walletAddress:o.address,chainType:o.chain_type});c=g;break;case"recovery-encryption-key":r=s.recoveryKey;break;case"privy":break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_recovery_method",error:`Unsupported recovery options ${s}`})}try{o.chain_type==="ethereum"?yield e.embeddedWallet.getProvider(o,i,a,c,r):o.chain_type==="solana"&&(yield e.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",i,a,c))}catch(g){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[e])}};var se=(e={})=>{let{wallet:t,createWalletCallbacks:s,recoverWalletCallbacks:n,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),{onCreateWalletSuccess:r,onCreateWalletError:i,onRecoverWalletError:a,onRecoverWalletSuccess:c,onSetWalletRecoverySuccess:d,onSetWalletRecoveryError:g}=e;return _react.useEffect.call(void 0, ()=>{s.current={onSuccess:r,onError:i}},[r,i]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:c,onError:a}},[c,a]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:d,onError:g}},[c,a]),t};var Ns=({onStateChange:e})=>{let t=se();return _react.useEffect.call(void 0, ()=>{e(t)},[t])};var Vs=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return{getIdentityToken:e}};var Xs=e=>{let{client:t}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),s=_react.useCallback.call(void 0, o=>{var i;let r=_chunkDRSQ4VBDjs.j.call(void 0, o);return(i=e==null?void 0:e.onError)==null||i.call(e,r),r},[e==null?void 0:e.onError]);return{create:_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var o;try{if(_chunkDRSQ4VBDjs.b.call(void 0, ))throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_create_guest_account_for_logged_in_user",error:"Already logged in, you cannot create a guest account"});let i=_chunkDRSQ4VBDjs.a.call(void 0, ),a=yield t.auth.guest.create({embedded:i==null?void 0:i.embedded});return(o=e==null?void 0:e.onSuccess)==null||o.call(e,a.user,a.is_new_user),a.user}catch(r){throw s(r)}}),[t,s,e==null?void 0:e.onSuccess])}};function oa({onMfaRequired:e}){let{client:t}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);_react.useEffect.call(void 0, ()=>{function s(){return _chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var o;let n=_chunkDRSQ4VBDjs.b.call(void 0, );yield e((o=n==null?void 0:n.mfa_methods.map(({type:r})=>r))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",s),()=>{t.mfaPromises.off("mfaRequired",s)}},[t,e])}function ua(){let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var i,a;switch(r.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:c}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:r.relyingParty||((a=(i=_chunkDRSQ4VBDjs.a.call(void 0, ))==null?void 0:i.mfa)==null?void 0:a.relyingParty)});return _chunkDRSQ4VBDjs.y.call(void 0, c);case"totp":return;default:throw new Error(`Unsupported MFA method: ${r.mfaMethod}`)}}),[e]),s=_react.useCallback.call(void 0, r=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){var i,a,c,d,g,m,p;switch(r.method){case"totp":case"sms":if(typeof r.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(c=e.mfaPromises.rootPromise.current)==null||c.resolve({mfaMethod:r.method,mfaCode:r.mfaCode,relyingParty:r.relyingParty||((a=(i=_chunkDRSQ4VBDjs.a.call(void 0, ))==null?void 0:i.mfa)==null?void 0:a.relyingParty)||""}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;case"passkey":if(typeof r.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let v=yield _chunkDRSQ4VBDjs.w.call(void 0, r.mfaCode),y=_chunkDRSQ4VBDjs.x.call(void 0, v);(m=e.mfaPromises.rootPromise.current)==null||m.resolve({mfaMethod:r.method,relyingParty:r.relyingParty||((g=(d=_chunkDRSQ4VBDjs.a.call(void 0, ))==null?void 0:d.mfa)==null?void 0:g.relyingParty)||"",mfaCode:y}),yield new Promise((k,w)=>{e.mfaPromises.submitPromise.current={resolve:k,reject:w}});break;default:let S=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(p=e.mfaPromises.rootPromise.current)==null||p.reject(S),S}}),[e]),n=_react.useCallback.call(void 0, ()=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var r;(r=e.mfaPromises.rootPromise.current)==null||r.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:s,prompt:n,cancel:o}}function ha(){let{client:e}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),t=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":return yield e.mfa.initEnrollMfa(o);case"passkey":return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),s=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":case"passkey":yield e.mfa.submitEnrollMfa(o);return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]),n=_react.useCallback.call(void 0, o=>_chunkOWCFWPALjs.d.call(void 0, this,null,function*(){switch(o.method){case"sms":case"totp":yield e.mfa.unenrollMfa(o.method);return;case"passkey":yield e.mfa.submitEnrollMfa({method:"passkey",credentialIds:[],removeForLogin:o.removeForLogin});return;default:throw new Error(`Unsupported MFA method: ${o.method}`)}}),[e]);return{initMfaEnrollment:t,submitMfaEnrollment:s,unenrollMfa:n}}var Mt=()=>{let e=_chunkDRSQ4VBDjs.d.call(void 0, ),t=W(),s=_react.useMemo.call(void 0, ()=>{let r=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).map(i=>{let a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e,i);return a?{account:i,entropy:a}:null});return r.some(i=>i===null)?[]:r.filter(i=>i!==null).map(({account:i,entropy:{entropyId:a,entropyIdVerifier:c}})=>({address:i.address,walletIndex:i.wallet_index,chainType:i.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:i,entropyId:a,entropyIdVerifier:c,onNeedsRecovery:d=>_chunkOWCFWPALjs.d.call(void 0, void 0,null,function*(){var g;yield(g=_chunkDRSQ4VBDjs.f.call(void 0, ))==null?void 0:g(d)})})}))},[t,e]),n=_react.useCallback.call(void 0, (...r)=>_chunkOWCFWPALjs.d.call(void 0, void 0,[...r],function*({createAdditional:o=!1}={}){let{user:i}=yield t.user.get(),a=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, i);if(!o&&a.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let c=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i);if(!c){let y=yield t.embeddedWallet.create({});return ce(y.user,0),{user:y.user}}let{entropyId:d,entropyIdVerifier:g}=c;if(g==="solana-address-verifier"){let y=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, i),S=yield t.embeddedWallet.create({solanaAccount:y});return ce(S.user,0),{user:S.user}}let p=a.map(y=>y.wallet_index).reduce((y,S)=>Math.max(y,S),0)+1,v=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:p,entropyId:d,entropyIdVerifier:g});return ce(v.user,p),{user:v.user}}),[t]);return{wallets:s,create:n}};function ce(e,t){let s=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(n=>n.wallet_index===t);if(!e||!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var It=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:s,recoverSolanaWalletCallbacks:n}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s),{onCreateWalletSuccess:o,onCreateWalletError:r,onRecoverWalletError:i,onRecoverWalletSuccess:a}=e;return _react.useEffect.call(void 0, ()=>{s.current={onSuccess:o,onError:r}},[o,r]),_react.useEffect.call(void 0, ()=>{n.current={onSuccess:a,onError:i}},[a,i]),t};var Tt=()=>{let e=_chunkDRSQ4VBDjs.d.call(void 0, ),t=W(),s=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let r=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:i,entropyIdVerifier:a}=o;return r.map(c=>({address:c.address,walletIndex:c.wallet_index,publicKey:c.public_key,chainType:c.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:c,entropyId:i,entropyIdVerifier:a})}))},[t,e]),n=_react.useCallback.call(void 0, i=>_chunkOWCFWPALjs.d.call(void 0, void 0,[i],function*({chainType:o,createAdditional:r=!1}){var k;let a=t.app.getConfig();if(((k=a==null?void 0:a.embedded_wallet_config)==null?void 0:k.mode)==="user-controlled-server-wallets-only")throw new (0, _jssdkcore.PrivyClientError)({code:"unsupported_wallet_type",error:"Bitcoin wallets are only supported for on-device execution and this app uses TEE execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide"});let{user:c}=yield t.user.get(),d=_jssdkcore.getEntropyDetailsFromUser.call(void 0, c);if(!d)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:g,entropyIdVerifier:m}=d,p=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, c).filter(w=>w.chain_type===o);if(!r&&p.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 v=p.length===0?0:Math.max(...p.map(w=>w.wallet_index),0)+1,y=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:v,entropyId:g,entropyIdVerifier:m}),S=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, y.user).find(w=>w.chain_type===o&&w.wallet_index===v);if(!y.user||!S)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:S,entropyId:g,entropyIdVerifier:m})}}),[t]);return{wallets:s,create:n}};var Nt=()=>{let{isReady:e,logout:t,getAccessToken:s,error:n}=_react.useContext.call(void 0, _chunkDRSQ4VBDjs.s);return{user:_chunkDRSQ4VBDjs.d.call(void 0, ),isReady:e,error:n,logout:t,getAccessToken:s}};exports.a = jt; exports.b = eo; exports.c = W; exports.d = mo; exports.e = So; exports.f = _o; exports.g = Fo; exports.h = jo; exports.i = Zo; exports.j = ln; exports.k = yn; exports.l = Cn; exports.m = Mn; exports.n = Gn; exports.o = zn; exports.p = Zn; exports.q = ni; exports.r = pi; exports.s = vi; exports.t = Pi; exports.u = Hi; exports.v = qi; exports.w = es; exports.x = as; exports.y = gs; exports.z = bs; exports.A = Ls; exports.B = se; exports.C = Ns; exports.D = Vs; exports.E = Xs; exports.F = oa; exports.G = ua; exports.H = ha; exports.I = Mt; exports.J = It; exports.K = Tt; exports.L = Nt;
|