@privy-io/expo 0.47.0 → 0.48.0
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-EXOMJIYB.js → chunk-4Y3LXWMT.js} +1 -1
- package/dist/{chunk-WUBTRCPG.js → chunk-DEROHXUE.js} +1 -1
- package/dist/esm/{chunk-EXOMJIYB.js → chunk-4Y3LXWMT.js} +1 -1
- package/dist/esm/{chunk-WUBTRCPG.js → chunk-DEROHXUE.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/passkey.js +1 -1
- package/dist/esm/smart-wallets.js +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.js +1 -1
- package/dist/passkey.d.ts +3 -2
- package/dist/passkey.js +1 -1
- package/dist/{predicates-a469debb.d.ts → predicates-2089cae9.d.ts} +9 -8
- package/dist/smart-wallets.js +1 -1
- package/package.json +7 -7
|
@@ -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 It=Object.defineProperty,Lt=Object.defineProperties;var Mt=Object.getOwnPropertyDescriptors;var se=Object.getOwnPropertySymbols;var Le=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Ie=(e,t,r)=>t in e?It(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C= exports.a =(e,t)=>{for(var r in t||(t={}))Le.call(t,r)&&Ie(e,r,t[r]);if(se)for(var r of se(t))Me.call(t,r)&&Ie(e,r,t[r]);return e},W= exports.b =(e,t)=>Lt(e,Mt(t));var Hr=(e,t)=>{var r={};for(var o in e)Le.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&se)for(var o of se(e))t.indexOf(o)<0&&Me.call(e,o)&&(r[o]=e[o]);return r};var y=(e,t,r)=>new Promise((o,i)=>{var n=a=>{try{s(r.next(a))}catch(c){i(c)}},l=a=>{try{s(r.throw(a))}catch(c){i(c)}},s=a=>a.done?o(a.value):Promise.resolve(a.value).then(n,l);s((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var ne = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var Z = _interopRequireWildcard(_expolinking); var q = _interopRequireWildcard(_expolinking); var Y = _interopRequireWildcard(_expolinking); var X = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var U = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var ie = _interopRequireWildcard(_expowebbrowser); var Ge = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var _zustand = require('zustand');var le=_zustand.create.call(void 0, ()=>{}),Te=e=>le.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),Fe= exports.e =le.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var je=({client:e,isClientReady:t,setWebViewState:r,logLevel:o})=>{let i=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",s=>y(void 0,null,function*(){i.current&&s==="active"&&((yield e.embeddedWallet.ping(500))||(i.current.reload(),r("reloading")))})).remove,[]);let n=_react.useCallback.call(void 0, l=>y(void 0,null,function*(){let{data:s}=l.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(s))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:l=>{l&&(e.setMessagePoster(l),i.current=l)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:o==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:n}):null};function De(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:i}){var l,s,a;t({status:"creating"});try{let{user:c}=yield e.user.get(),d=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, c),p=d[0],m=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, c))!=null?l:void 0;if(i!=null&&i.recoveryMethod&&i.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(i!=null&&i.createAdditional)&&p)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Solana wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let v,f;if(p){let u=m!=null?m:p,{entropyId:h,entropyIdVerifier:b}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, u),g=Math.max(...d.map(E=>E.wallet_index),0)+1,_=yield e.embeddedWallet.add({chainType:"solana",entropyId:h,entropyIdVerifier:b,hdWalletIndex:g}),S=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, _.user).find(E=>E.wallet_index===g);if(!S)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});v=yield e.embeddedWallet.getSolanaProvider(S,h,b),f=_.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:m}),h=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, u.user).find(S=>S.wallet_index===0);if(!h)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=m!=null?m:h,{entropyId:g,entropyIdVerifier:_}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, b);v=yield e.embeddedWallet.getSolanaProvider(h,g,_),f=u.user}let w=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, f)[0];if(!w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(a=(s=r.current)==null?void 0:s.onSuccess)==null||a.call(s,v),t({status:"connected",publicKey:w.public_key}),o({status:"initial"}),v}catch(c){let d=c instanceof Error?c.message:"Error creating embedded wallet";throw t({status:"error",error:d}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:d})}})}function ce(d){return y(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:i,setRecoveryFlowState:n,password:l,recoveryKey:s,recoveryToken:a,recoverySecretOverride:c}){var p,m,v,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(i){case"user-passcode":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let w=yield e.embeddedWallet.getProvider(t,l,a,c,s);return r({status:"connected",provider:w,account:t}),n({status:"initial"}),(m=(p=o.current)==null?void 0:p.onSuccess)==null||m.call(p,w),w}catch(w){r({status:"needs-recovery",account:t}),n({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:w instanceof Error?w.message:"Error recovering embedded wallet"});throw(f=(v=o.current)==null?void 0:v.onError)==null||f.call(v,u),u}})}function Ve(s){return y(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:i,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:l}){var a,c,d,p;i({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return i({status:"connected",publicKey:m._publicKey}),l({status:"initial"}),(c=(a=n.current)==null?void 0:a.onSuccess)==null||c.call(a,m),m}catch(m){i({status:"needs-recovery"}),l({status:"initial"});let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(p=(d=n.current)==null?void 0:d.onError)==null||p.call(d,v),v}})}var qe=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:i,webViewState:n,createSolanaWalletCallbacks:l,recoverSolanaWalletCallbacks:s})=>{let a=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, t),[t]),c=_react.useMemo.call(void 0, ()=>a.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, t),[t,a]),d=_react.useMemo.call(void 0, ()=>{if(!c)return[];let{entropyId:f,entropyIdVerifier:w}=c;return a.map(u=>({address:u.address,publicKey:u.address,walletIndex:u.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(u,f,w)}))},[a,c,e]),p=_react.useCallback.call(void 0, f=>y(void 0,null,function*(){return yield De({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:i,opts:f})}),[e,l]),m=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:f,entropyIdVerifier:w}=c;return Ve({client:e,account:a[0],entropyId:f,entropyIdVerifier:w,setSolanaWallet:o,recoverSolanaWalletCallbacks:s,setSolanaRecoveryFlowState:i})}),[e,c,a,s,i,o]),v=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!c)throw o({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(f=>f.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:f,entropyIdVerifier:w}=c,u=yield e.embeddedWallet.getSolanaProvider(a[0],f,w);return o({status:"connected",publicKey:a[0].public_key}),u}catch(f){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, f)?(o({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):f instanceof Error?(o({status:"error",error:f.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:f.message})):(o({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[a,e,c,o]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return o({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&v()},[r.status]),{create:p,recover:m,getProvider:v,wallets:d}};function ue(p){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:i,password:n,recoveryKey:l,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:d}){var v,f;switch(o){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a||!c)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 m=o==="icloud"?"icloud-native":o;try{let{user:w}=yield e.embeddedWallet.create({password:n,recoveryMethod:m,recoveryKey:l,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:d}),u=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, w);if(!u)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let h=yield e.embeddedWallet.getProvider(u);return(f=(v=r.current)==null?void 0:v.onSuccess)==null||f.call(v,h),t({status:"connected",provider:h,account:u}),i({status:"initial"}),h}catch(w){let u=w instanceof Error?w.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),i({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function ze(){return y(this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function Se(o){return y(this,arguments,function*({user:e,appId:t,client:r}){var s;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let i=yield ze(),n=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(n==null?void 0:n.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:a,iCloudRecordName:c}=yield i.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:a,iCloudRecordName:c}}catch(a){if(a instanceof Error){let c=(s=a.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:c})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Je(o){return y(this,arguments,function*({walletAddress:e,client:t,chainType: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 i=yield ze(),l=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let s=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),a=s==null?void 0:s.container_identifier;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:d}=yield i.readRecoverySecretFromICloud({containerId:a,recordName:l});return{recoverySecret:d}}catch(d){if(d instanceof Error){let p=(c=d.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:p})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var Be=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function x(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var Ao=e=>new Promise(t=>setTimeout(t,e));function xo(){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 te(i){return y(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let n;switch(e){case"google-drive":{let{url:c}=yield r.recovery.auth.generateURL(q.createURL(t||"/"));n=c;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let l=yield Ge.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(l.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:s}=q.parse(l.url),a;switch(e){case"google-drive":{let{privy_oauth_state:c,privy_oauth_code:d}=s;if(!d||!c)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});a=yield pe({oAuthCode:d,oAuthState:c,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return a}catch(n){throw o==null||o(x(n)),n}})}function pe(o){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:i}=yield r.recovery.auth.authorize(e,t);if(!i)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return i})}var er=2*60*1e3;function tr(e){let t;return new Promise((r,o)=>{t=q.addEventListener("url",n=>y(this,[n],function*({url:i}){if(!i)return;let{queryParams:l}=q.parse(i),{privy_oauth_state:s,privy_oauth_code:a}=l!=null?l:{};if(typeof a!="string"||typeof s!="string")return;let c=yield pe({client:e,oAuthCode:a,oAuthState:s});r(c)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},er)}).finally(()=>{t==null||t.remove()})}function Ko(e){return y(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=tr(e));let r=yield te({provider:"google-drive",client:e});return r!=null?r:yield t})}function me(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:i}){var l,s,a,c;try{let{provider:d,user:p}=yield e.embeddedWallet.setRecovery(t),m=d,v=_jssdkcore.getUserEmbeddedWallet.call(void 0, p);return i({status:"connected",provider:m,account:v}),(s=(l=r.current)==null?void 0:l.onSuccess)==null||s.call(l,m),o({status:"initial"}),m}catch(d){let p=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:d instanceof Error?d.message:"Error setting password on embedded wallet"});throw(c=(a=r.current)==null?void 0:a.onError)==null||c.call(a,p),o({status:"initial"}),p}})}function $e(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 Ze=({client:e,user:t,appId:r,wallet:o,setWallet:i,setRecoveryFlowState:n,webViewState:l,createWalletCallbacks:s,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c})=>{let d=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, t),[t]),p=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var z,I;if(d)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:h}=yield e.user.get(),{password:b,recoveryMethod:g,recoveryKey:_}=$e(u),S,E,R;if(g==="google-drive"&&(S=yield te({provider:g,client:e,onError:(z=s.current)==null?void 0:z.onError}),n({status:"creating-wallet"}),!S))return null;if(g==="icloud"){if(!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:D,iCloudRecordName:V}=yield Se({user:h,appId:r,client:e});E=D,R=V}return yield ue({client:e,setWallet:i,createWalletCallbacks:s,recoveryMethod:g,recoveryKey:_,setRecoveryFlowState:n,password:b,recoverySecretOverride:E,iCloudRecordNameOverride:R,solanaAccount:(I=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, h))!=null?I:void 0})}),[e,d,t]),m=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var g;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:d.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let h,b;switch(u.recoveryMethod){case"privy":b=W(C({},u),{wallet:d});break;case"user-passcode":b=W(C({},u),{wallet:d,password:u.password});break;case"google-drive":if(h=yield te({provider:u.recoveryMethod,client:e,onError:(g=c.current)==null?void 0:g.onError}),n({status:"upgrading-recovery"}),!h)return null;b={recoveryMethod:"google-drive",wallet:d,recoveryAccessToken:h};break;case"icloud":if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:_,iCloudRecordName:S}=yield Se({user:t,appId:r,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:S,wallet:d};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return me({client:e,recoveryInput:b,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:i})}),[e,d,o.status,t]),v=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:u})}),[e,d,o.status]),f=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var E;if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:h,recoveryMethod:b,recoveryKey:g}=$e(u),_,S;if(b==="google-drive"&&(_=yield te({provider:b,client:e,onError:(E=a.current)==null?void 0:E.onError}),n({status:"recovering"}),!_))return null;if(b==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:R}=yield Je({client:e,walletAddress:d.address});S=R}return ce({client:e,account:d,setWallet:i,recoverWalletCallbacks:a,recoveryMethod:b,setRecoveryFlowState:n,recoveryKey:g,password:h,recoveryToken:_,recoverySecretOverride:S})}),[e,d]),w=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw i({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});i(u=>u.status==="connected"?{status:"reconnecting",account:d}:{status:"connecting",account:d});try{let u=yield e.embeddedWallet.getProvider(d);return i({status:"connected",provider:u,account:d}),u}catch(u){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, u)?(i({status:"needs-recovery",account:d}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):u instanceof Error?(i({status:"error",error:u.message,account:d}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:u.message})):(i({status:"error",error:"Error loading embedded wallet",account:d}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return i({status:"disconnected",account:null});l==="loaded"&&w().catch(()=>{})},[l,t,d]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:p,recover:f,setPassword:v,setRecovery:m,getProvider:w}};var tt=({client:e,user:t,isReady:r})=>{let o=le(l=>l==null?void 0:l.customAuth),[i,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:s,isLoading:a}=o;if(!(!r||a))try{let c=yield s();if(!c&&t){yield e.auth.logout(),n({status:"done"});return}if(!c){n({status:"done"});return}if(t){n({status:"done"});return}let d=Fe();if(!(yield e.auth.customProvider.syncWithToken(c,{embedded:d==null?void 0:d.embedded}))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(c){if(console.log("Error syncing with custom auth provider",c),n({status:"error",error:c}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,r,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:i,customAuthStateIsSettled:i.status!=="loading"&&i.status!=="initial"}};var rt=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:i,setOAuthState:n,recoveryFlowState:l,oAuthStateRef:s})=>{let a=Y.useURL(),c=_react.useCallback.call(void 0, d=>{var m,v;let p=x(d);n({status:"error",error:p}),(v=(m=i.current).onError)==null||v.call(m,p)},[n]);return _react.useEffect.call(void 0, ()=>{function d(){return y(this,null,function*(){var f,w;if(!a||o.status!=="loading"||l.status!=="initial")return;let{queryParams:p}=Y.parse(a),{privy_oauth_state:m,privy_oauth_code:v}=p;if(!v||!m){n({status:"done"});return}try{let u,h;if(t)u=yield e.auth.oauth.linkWithCode(v,m);else{let b=yield e.auth.oauth.loginWithCode(v,m,void 0,void 0,s.current.disableSignup?"no-signup":"login-or-sign-up");u=b.user,h=!!b.is_new_user}return(w=(f=i.current).onSuccess)==null||w.call(f,u,h),s.current={},n({status:"done"}),yield Y.openURL(a.split("?")[0])}catch(u){s.current={},c(u)}})}_reactnative.Platform.OS==="android"&&r&&d()},[a,r])};var ot=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:i,recoveryFlowState:n,oAuthState:l,setRecoveryFlowState:s,setWallet:a,appStateVisible:c,webViewLoaded:d})=>{let p=X.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),v=_react.useCallback.call(void 0, f=>{var u,h,b,g;let w=x(f);n.status==="creating-wallet"?(h=(u=r.current).onError)==null||h.call(u,x(w)):(g=(b=o.current).onError)==null||g.call(b,x(w)),s({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function f(){return y(this,null,function*(){var b;if(!p&&n.status!=="initial"&&c&&v(new Error("Recovery OAuth session failed")),!p||n.status==="initial"||l.status!=="initial"||!c||!d)return;let{queryParams:w}=X.parse(p),{privy_oauth_state:u,privy_oauth_code:h}=w;if(!(!h||!u)){yield X.openURL(p.split("?")[0]);try{let g=yield pe({oAuthCode:h,oAuthState:u,client:e});if(n.status==="creating-wallet"){let _=(b=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))!=null?b:void 0;yield ue({client:e,setWallet:a,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g,solanaAccount:_})}else if(n.status==="upgrading-recovery"){if(!m)throw new Error("Embedded wallet not found");yield me({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:m,recoveryAccessToken:g},setWalletRecoveryCallbacks:i,setRecoveryFlowState:s,setWallet:a})}else yield ce({client:e,account:m,setWallet:a,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g})}catch(g){v(g)}}})}_reactnative.Platform.OS==="android"&&f()},[p,n.status,c,d])};var nt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.initialize()}catch(n){o(n instanceof Error?n:new Error(String(n)))}try{yield e.user.get()}catch(n){}finally{r(!0)}}))()},[e,t,o,r])};var _expocrypto = require('expo-crypto');var it={name:"@privy-io/expo",version:"0.47.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"npx tsup --clean --minify","check-types":"npx tsc --noEmit",clean:"rm -rf dist .turbo",dev:"npx tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"npx tsup --dts-only",lint:'npx eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.44.0","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^12.8.1","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",jest:"^29.7.0","jest-expo":"~51.0.0","lucide-react-native":"^0.474.0",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.3","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-constants":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.21.36"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var lt=({appId:e,clientId:t,storage:r=ye,supportedChains:o,baseUrl:i,logLevel:n})=>new (0, _jssdkcore2.default)({appId:e,clientId:t,supportedChains:o,storage:st(r),sdkVersion:`expo:${it.version}`,nativeAppIdentifier:at(),crypto:{digest:_expocrypto.digest},baseUrl:i,logLevel:n});var dt=()=>{let{user:e,isReady:t,logout:r,getAccessToken:o,error:i}=_react.useContext.call(void 0, j);return{user:e,isReady:t,error:i,logout:r,getAccessToken:o}};var ct=()=>{let{client:e}=_react.useContext.call(void 0, j);return e};function ut(){let e=ct(),{isReady:t,user:r}=dt();return _react.useMemo.call(void 0, ()=>{var l,s;if(!t)return null;let o=e.app.getConfig();if(!o)return null;let i=(l=o.require_users_accept_terms)!=null?l:!1,n=(s=r==null?void 0:r.has_accepted_terms)!=null?s:!1;return{termsAndConditionsUrl:o.terms_and_conditions_url,privacyPolicyUrl:o.privacy_policy_url,requireUsersAcceptTerms:i&&!n}},[e.app,t,r==null?void 0:r.has_accepted_terms])}var k=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},pt= exports.u =class extends k{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var Ce={success:e=>({value:e}),error:e=>({error:e})};var mt=e=>{let t=Array.from(new Set(e));return t.length===0?Ce.error(new k("no_login_methods_available","No login methods available")):Ce.success(t)},Pe=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},Gn= exports.v =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},Yn= exports.w ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};var _vanilla = require('zustand/vanilla');var Ae=_vanilla.createStore.call(void 0, )(e=>({elementsConfig:null,updateUIMounted:t=>e({elementsConfig:t})})),yt= exports.x =()=>{let{elementsConfig:e}=Ae.getState();if(!(e!==null))throw new k("privy_elements_not_ready","Privy Elements is not mounted")},ei= exports.y =()=>{let{elementsConfig:e}=Ae.getState();if(e===null)throw new k("privy_elements_not_ready","Privy Elements is not mounted");return e},ti= exports.z =e=>{_react.useEffect.call(void 0, ()=>{let{updateUIMounted:t}=Ae.getState();return t(e),()=>{t(null)}},[e])};function vt(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function Rr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function ft(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return Rr(e,()=>{clearTimeout(o)})}var xr=1e3*60*5,Q=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(r,o,i,n)=>vt(l=>{var p,m,v;let s=o.app.getConfig();if(!s)return l.reject(new k("privy_not_ready","Privy is not ready"));if(i!==null)return l.reject(new k("user_already_logged_in","User is already logged in"));if(yt(),t().loginPromiseResolvers!==null)return l.reject(new k("existing_login_flow_in_progress","A login flow is already in progress"));let a=mt(r.loginMethods);if(a.error)return l.reject(a.error);let c={loginMethods:a.value,appearance:{logo:(v=(m=(p=r.appearance)==null?void 0:p.logo)!=null?m:s.logo_url)!=null?v:void 0}},d=ft(l,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new k("login_flow_timeout","The login flow timed out")),xr);n(),e({loginPromiseResolvers:d,privyElementsConfig:c,activeLoginMethod:Pe(c.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new k("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:i,closeLoginFlow:n}=t();if(!o){n();return}let l=Pe(o.loginMethods)===null;r===null||!l?n():i(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),ui= exports.C =()=>Q(e=>e.privyElementsConfig),pi= exports.D =()=>Q(e=>e.openLoginFlow),mi= exports.E =()=>{let e=Q(r=>r.closeLoginFlow),t=ut();return _react.useCallback.call(void 0, r=>{t!=null&&t.requireUsersAcceptTerms&&!(r!=null&&r.termsReviewed)||e()},[e,t])},yi= exports.F =()=>Q(e=>e.goBack),vi= exports.G =()=>Q(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),Ur=e=>{let{loginPromiseResolvers:t}=Q.getState();t==null||t.resolve(e)},wt=()=>Ur;var j=_react.createContext.call(void 0, null),$;function Ui(e){return $?$.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 Ii=e=>{Fr();let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let M=_reactnative.AppState.addEventListener("change",Ut=>{r(Ut==="active")});return()=>{M.remove()}},[]),_react.useEffect.call(void 0, ()=>Te(e.config),[e.config]);let[o,i]=_react.useState.call(void 0, !1),[n,l]=_react.useState.call(void 0, null),[s,a]=_react.useState.call(void 0, "loading"),[c,d]=_react.useState.call(void 0, !1),[p,m]=_react.useState.call(void 0, null),[v,f]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,u]=_react.useState.call(void 0, {status:"disconnected"}),[h,b]=_react.useState.call(void 0, {status:"initial"}),[g,_]=_react.useState.call(void 0, {status:"initial"}),S=_react.useRef.call(void 0, {}),[E,R]=_react.useState.call(void 0, {status:"initial"}),[z,I]=_react.useState.call(void 0, {status:"initial"}),[D,V]=_react.useState.call(void 0, {status:"initial"}),[fe,F]=_react.useState.call(void 0, {status:"initial"}),[L,Ct]=_react.useState.call(void 0, {status:"initial"}),We=_react.useRef.call(void 0, {}),we=_react.useRef.call(void 0, {}),he=_react.useRef.call(void 0, {}),ge=_react.useRef.call(void 0, {}),xe=_react.useRef.call(void 0, {}),Ue=_react.useRef.call(void 0, {}),Pt=wt(),ae=_react.useCallback.call(void 0, M=>{if(M){Pt(M),Be(m)(M);return}m(null),b({status:"initial"}),_({status:"initial"}),f({status:"disconnected",account:null})},[]),A=_react.useMemo.call(void 0, ()=>{let M=e.storage||ye;return e.client?$=e.client:$=lt({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:M,baseUrl:e.baseUrl,logLevel:e.logLevel}),$.setCallbacks({setUser:ae,setIsReady:d}),$},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ae]),At=_react.useCallback.call(void 0, ()=>(ae(null),A.auth.logout()),[ae,A]),kt=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){try{return yield A.getAccessToken()}catch(M){return console.debug(M),null}}),[A]),Rt=_react.useCallback.call(void 0, ()=>A.getIdentityToken(),[A]);nt({client:A,isUserInitialized:o,setIsUserInitialized:i,setError:l});let Ot=Ze({client:A,user:p,appId:e.appId,webViewState:s,createWalletCallbacks:we,recoverWalletCallbacks:he,setWalletRecoveryCallbacks:ge,setRecoveryFlowState:R,wallet:v,setWallet:f}),Wt=qe({client:A,user:p,webViewState:s,createSolanaWalletCallbacks:xe,recoverSolanaWalletCallbacks:Ue,setSolanaRecoveryFlowState:I,solanaWallet:w,setSolanaWallet:u});rt({client:A,isUserInitialized:o,user:p,oAuthState:g,setOAuthState:_,oAuthCallbacks:We,recoveryFlowState:E,oAuthStateRef:S}),ot({client:A,user:p,webViewLoaded:s==="loaded",createWalletCallbacks:we,recoverWalletCallbacks:he,setWalletRecoveryCallbacks:ge,recoveryFlowState:E,oAuthState:g,setRecoveryFlowState:R,setWallet:f,appStateVisible:t});let{customAuthStateIsSettled:xt}=tt({client:A,user:p,isReady:o});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(j.Provider,{value:{client:A,user:p,isReady:s!=="loading"&&o&&bt(g)&&xt,error:n,logout:At,getAccessToken:kt,getIdentityToken:Rt,wallet:C(C({},v),Ot),solanaWallet:C(C({},w),Wt),oAuthState:g,oAuthCallbacks:We,recoveryFlowState:E,setRecoveryFlowState:R,solanaRecoveryFlowState:z,setSolanaRecoveryFlowState:I,createWalletCallbacks:we,recoverWalletCallbacks:he,setWalletRecoveryCallbacks:ge,createSolanaWalletCallbacks:xe,recoverSolanaWalletCallbacks:Ue,setOAuthState:_,siweState:D,setSiweState:V,otpState:h,setOtpState:b,passkeyState:fe,setPasskeyState:F,farcasterState:L,setFarcasterState:Ct,oAuthStateRef:S}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(je,{logLevel:e.logLevel,client:A,isClientReady:c,setWebViewState:a})))},Fr=()=>{if(_react.useContext.call(void 0, j))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var bt=e=>e.status!=="loading",Re=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:i,client:n,oAuthStateRef:l}=_react.useContext.call(void 0, j),s=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{i.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let a=_react.useCallback.call(void 0, d=>{var m;let p=x(d);return o({status:"error",error:p}),(m=e==null?void 0:e.onError)==null||m.call(e,p),p},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(w){return y(this,arguments,function*({provider:p,redirectUri:m,isLegacyAppleIosBehaviorEnabled:v=!1,disableSignup:f}){var u,h,b;o({status:"loading"}),l.current={disableSignup:f};try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:g}=yield n.auth.oauth.generateURL(p,Z.createURL(m||"/")),_,S;if(_reactnative.Platform.OS==="ios"&&p==="apple"&&!v){let fe=(u=new URL(g).searchParams.get("state"))!=null?u:"",F=yield ne.signInAsync({state:fe,requestedScopes:[ne.AppleAuthenticationScope.EMAIL,ne.AppleAuthenticationScope.FULL_NAME]}).catch(L=>{throw L instanceof Error&&"code"in L&&L.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):L});if(!F.authorizationCode||!F.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let L=yield n.auth.oauth.loginWithCode(F.authorizationCode,F.state,p,"raw",f?"no-signup":"login-or-sign-up");_=L.user,S=L.is_new_user}else _=yield n.auth.oauth.linkWithCode(F.authorizationCode,F.state,p,"raw");return(h=e==null?void 0:e.onSuccess)==null||h.call(e,_,S),o({status:"done"}),_!=null?_:void 0}let E=_reactnative.Platform.OS==="android"?g.replace("x.com","twitter.com"):g,R=yield ie.openAuthSessionAsync(E);if(_reactnative.Platform.OS==="android")return;if(R.type!=="success")throw[ie.WebBrowserResultType.CANCEL,ie.WebBrowserResultType.DISMISS].includes(R.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:s?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:z}=Z.parse(R.url),{privy_oauth_state:I,privy_oauth_code:D}=z;if(!D||!I)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let V=yield n.auth.oauth.loginWithCode(D,I,p,void 0,f?"no-signup":"login-or-sign-up");_=V.user,S=V.is_new_user}else _=yield n.auth.oauth.linkWithCode(D,I,p);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,_,S),yield Z.openURL(R.url.split("?")[0]),o({status:"done"}),_!=null?_:void 0}catch(g){a(g)}})},[t,n,o,a]),state:r}};function Ki(e){let{state:t,start:r}=Re(W(C({},e),{action:"login"}));return{state:t,login:r}}function qi(e){let{state:t,start:r}=Re(W(C({},e),{action:"link"}));return{state:t,link:r}}function Hi(e){return Re(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 st(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:()=>y(this,null,function*(){return[]})}}var ye={get(e){return U.getItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return U.setItemAsync(e,t,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return U.deleteItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};var Vr=e=>y(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 W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var qr=e=>y(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 W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function na(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 ia(e){var t,r,o,i;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:(i=e.allow_credentials)==null?void 0:i.map(({id:n,type:l,transports:s})=>({id:n,type:l,transports:s})),userVerification:e.user_verification}}function aa(e){var t,r,o,i,n,l,s,a;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:(i=e.extensions)==null?void 0:i.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(n=e.authenticator_selection)==null?void 0:n.authenticator_attachment,residentKey:(l=e.authenticator_selection)==null?void 0:l.resident_key,userVerification:(s=e.authenticator_selection)==null?void 0:s.user_verification,requireResidentKey:(a=e.authenticator_selection)==null?void 0:a.require_resident_key}}}exports.a = C; exports.b = W; exports.c = Hr; exports.d = y; exports.e = Fe; exports.f = Se; exports.g = Je; exports.h = x; exports.i = Ao; exports.j = xo; exports.k = Ko; exports.l = Ki; exports.m = qi; exports.n = Hi; exports.o = ye; exports.p = lt; exports.q = dt; exports.r = ct; exports.s = ut; exports.t = k; exports.u = pt; exports.v = Gn; exports.w = Yn; exports.x = yt; exports.y = ei; exports.z = ti; exports.A = vt; exports.B = ft; exports.C = ui; exports.D = pi; exports.E = mi; exports.F = yi; exports.G = vi; exports.H = j; exports.I = Ui; exports.J = Ii; exports.K = Vr; exports.L = qr; exports.M = na; exports.N = ia; exports.O = aa;
|
|
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 It=Object.defineProperty,Lt=Object.defineProperties;var Mt=Object.getOwnPropertyDescriptors;var se=Object.getOwnPropertySymbols;var Le=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Ie=(e,t,r)=>t in e?It(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C= exports.a =(e,t)=>{for(var r in t||(t={}))Le.call(t,r)&&Ie(e,r,t[r]);if(se)for(var r of se(t))Me.call(t,r)&&Ie(e,r,t[r]);return e},W= exports.b =(e,t)=>Lt(e,Mt(t));var Hr=(e,t)=>{var r={};for(var o in e)Le.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&se)for(var o of se(e))t.indexOf(o)<0&&Me.call(e,o)&&(r[o]=e[o]);return r};var y=(e,t,r)=>new Promise((o,i)=>{var n=a=>{try{s(r.next(a))}catch(c){i(c)}},l=a=>{try{s(r.throw(a))}catch(c){i(c)}},s=a=>a.done?o(a.value):Promise.resolve(a.value).then(n,l);s((r=r.apply(e,t)).next())});var _expoappleauthentication = require('expo-apple-authentication'); var ne = _interopRequireWildcard(_expoappleauthentication);var _expoapplication = require('expo-application');var _expolinking = require('expo-linking'); var Z = _interopRequireWildcard(_expolinking); var q = _interopRequireWildcard(_expolinking); var Y = _interopRequireWildcard(_expolinking); var X = _interopRequireWildcard(_expolinking);var _exposecurestore = require('expo-secure-store'); var U = _interopRequireWildcard(_exposecurestore);var _expowebbrowser = require('expo-web-browser'); var ie = _interopRequireWildcard(_expowebbrowser); var Ge = _interopRequireWildcard(_expowebbrowser);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactnative = require('react-native');var _jssdkcore = require('@privy-io/js-sdk-core'); var _jssdkcore2 = _interopRequireDefault(_jssdkcore);var _reactfastcompare = require('react-fast-compare'); var _reactfastcompare2 = _interopRequireDefault(_reactfastcompare);var _zustand = require('zustand');var le=_zustand.create.call(void 0, ()=>{}),Te=e=>le.setState(t=>_reactfastcompare2.default.call(void 0, t,e)?t:e),Fe= exports.e =le.getState;var _reactnativewebview = require('react-native-webview'); var _reactnativewebview2 = _interopRequireDefault(_reactnativewebview);var je=({client:e,isClientReady:t,setWebViewState:r,logLevel:o})=>{let i=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>_reactnative.AppState.addEventListener("change",s=>y(void 0,null,function*(){i.current&&s==="active"&&((yield e.embeddedWallet.ping(500))||(i.current.reload(),r("reloading")))})).remove,[]);let n=_react.useCallback.call(void 0, l=>y(void 0,null,function*(){let{data:s}=l.nativeEvent;e.embeddedWallet.onMessage(JSON.parse(s))}),[e]);return t?_react2.default.createElement(_reactnativewebview2.default,{style:{flex:1},ref:l=>{l&&(e.setMessagePoster(l),i.current=l)},cacheEnabled:!1,cacheMode:"LOAD_NO_CACHE",source:{uri:e.embeddedWallet.getURL()},webviewDebuggingEnabled:o==="DEBUG",onLoad:()=>r("loaded"),onError:console.error,onMessage:n}):null};function De(n){return y(this,arguments,function*({client:e,setSolanaWallet:t,createSolanaWalletCallbacks:r,setSolanaRecoveryFlowState:o,opts:i}){var l,s,a;t({status:"creating"});try{let{user:c}=yield e.user.get(),d=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, c),p=d[0],m=(l=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, c))!=null?l:void 0;if(i!=null&&i.recoveryMethod&&i.recoveryMethod!=="privy")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unsupported recovery method for solana wallet."});if(!(i!=null&&i.createAdditional)&&p)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Solana wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let v,f;if(p){let u=m!=null?m:p,{entropyId:h,entropyIdVerifier:b}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, u),g=Math.max(...d.map(E=>E.wallet_index),0)+1,_=yield e.embeddedWallet.add({chainType:"solana",entropyId:h,entropyIdVerifier:b,hdWalletIndex:g}),S=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, _.user).find(E=>E.wallet_index===g);if(!S)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});v=yield e.embeddedWallet.getSolanaProvider(S,h,b),f=_.user}else{let u=yield e.embeddedWallet.createSolana({ethereumAccount:m}),h=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, u.user).find(S=>S.wallet_index===0);if(!h)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let b=m!=null?m:h,{entropyId:g,entropyIdVerifier:_}=_jssdkcore.getEntropyDetailsFromAccount.call(void 0, b);v=yield e.embeddedWallet.getSolanaProvider(h,g,_),f=u.user}let w=_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, f)[0];if(!w)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating solana wallet"});return(a=(s=r.current)==null?void 0:s.onSuccess)==null||a.call(s,v),t({status:"connected",publicKey:w.public_key}),o({status:"initial"}),v}catch(c){let d=c instanceof Error?c.message:"Error creating embedded wallet";throw t({status:"error",error:d}),o({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:d})}})}function ce(d){return y(this,arguments,function*({client:e,account:t,setWallet:r,recoverWalletCallbacks:o,recoveryMethod:i,setRecoveryFlowState:n,password:l,recoveryKey:s,recoveryToken:a,recoverySecretOverride:c}){var p,m,v,f;if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});switch(i){case"user-passcode":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"google-drive":if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Record name is required for icloud recovery method"});break;case"recovery-encryption-key":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"recoveryKey is required for recovery-encryption-key recovery method"});break}r({status:"connecting",account:t});try{let w=yield e.embeddedWallet.getProvider(t,l,a,c,s);return r({status:"connected",provider:w,account:t}),n({status:"initial"}),(m=(p=o.current)==null?void 0:p.onSuccess)==null||m.call(p,w),w}catch(w){r({status:"needs-recovery",account:t}),n({status:"initial"});let u=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:w instanceof Error?w.message:"Error recovering embedded wallet"});throw(f=(v=o.current)==null?void 0:v.onError)==null||f.call(v,u),u}})}function Ve(s){return y(this,arguments,function*({client:e,account:t,entropyId:r,entropyIdVerifier:o,setSolanaWallet:i,recoverSolanaWalletCallbacks:n,setSolanaRecoveryFlowState:l}){var a,c,d,p;i({status:"connecting"});try{let m=yield e.embeddedWallet.getSolanaProvider(t,r,o);return i({status:"connected",publicKey:m._publicKey}),l({status:"initial"}),(c=(a=n.current)==null?void 0:a.onSuccess)==null||c.call(a,m),m}catch(m){i({status:"needs-recovery"}),l({status:"initial"});let v=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:m instanceof Error?m.message:"Error recovering embedded wallet"});throw(p=(d=n.current)==null?void 0:d.onError)==null||p.call(d,v),v}})}var qe=({client:e,user:t,solanaWallet:r,setSolanaWallet:o,setSolanaRecoveryFlowState:i,webViewState:n,createSolanaWalletCallbacks:l,recoverSolanaWalletCallbacks:s})=>{let a=_react.useMemo.call(void 0, ()=>_jssdkcore.getAllUserEmbeddedSolanaWallets.call(void 0, t),[t]),c=_react.useMemo.call(void 0, ()=>a.length===0?null:_jssdkcore.getEntropyDetailsFromUser.call(void 0, t),[t,a]),d=_react.useMemo.call(void 0, ()=>{if(!c)return[];let{entropyId:f,entropyIdVerifier:w}=c;return a.map(u=>({address:u.address,publicKey:u.address,walletIndex:u.wallet_index,getProvider:()=>e.embeddedWallet.getSolanaProvider(u,f,w)}))},[a,c,e]),p=_react.useCallback.call(void 0, f=>y(void 0,null,function*(){return yield De({client:e,setSolanaWallet:o,createSolanaWalletCallbacks:l,setSolanaRecoveryFlowState:i,opts:f})}),[e,l]),m=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{entropyId:f,entropyIdVerifier:w}=c;return Ve({client:e,account:a[0],entropyId:f,entropyIdVerifier:w,setSolanaWallet:o,recoverSolanaWalletCallbacks:s,setSolanaRecoveryFlowState:i})}),[e,c,a,s,i,o]),v=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!c)throw o({status:"not-created"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});o(f=>f.status==="connected"?{status:"reconnecting"}:{status:"connecting"});try{let{entropyId:f,entropyIdVerifier:w}=c,u=yield e.embeddedWallet.getSolanaProvider(a[0],f,w);return o({status:"connected",publicKey:a[0].public_key}),u}catch(f){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, f)?(o({status:"needs-recovery"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):f instanceof Error?(o({status:"error",error:f.message}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:f.message})):(o({status:"error",error:"Error loading embedded wallet"}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[a,e,c,o]);return _react.useEffect.call(void 0, ()=>{if(!t&&r.status!=="disconnected")return o({status:"disconnected"});n==="loaded"&&v().catch(()=>{})},[n,t]),_react.useEffect.call(void 0, ()=>{r.status==="error"&&r.error.includes("User must be logged in")&&v()},[r.status]),{create:p,recover:m,getProvider:v,wallets:d}};function ue(p){return y(this,arguments,function*({client:e,setWallet:t,createWalletCallbacks:r,recoveryMethod:o,setRecoveryFlowState:i,password:n,recoveryKey:l,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:d}){var v,f;switch(o){case"user-passcode":if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"password is required for user-passcode recovery method"});break;case"recovery-encryption-key":if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"key is required for recovery-encryption-key recovery method"});break;case"google-drive":if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Recovery token is required for google-drive recovery method"});break;case"icloud":if(!a||!c)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 m=o==="icloud"?"icloud-native":o;try{let{user:w}=yield e.embeddedWallet.create({password:n,recoveryMethod:m,recoveryKey:l,recoveryToken:s,recoverySecretOverride:a,iCloudRecordNameOverride:c,solanaAccount:d}),u=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, w);if(!u)throw new (0, _jssdkcore.PrivyClientError)({error:"Embedded wallet account not created",code:"embedded_wallet_creation_error"});let h=yield e.embeddedWallet.getProvider(u);return(f=(v=r.current)==null?void 0:v.onSuccess)==null||f.call(v,h),t({status:"connected",provider:h,account:u}),i({status:"initial"}),h}catch(w){let u=w instanceof Error?w.message:"Error creating embedded wallet";throw t({status:"error",error:u,account:null}),i({status:"initial"}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:u})}})}function ze(){return y(this,null,function*(){try{return yield Promise.resolve().then(() => _interopRequireWildcard(require("@privy-io/expo-native-extensions")))}catch(e){throw new Error("@privy-io/expo-native-extensions not found. Ensure that you're explicitly including as a dependency, and running an Expo development build")}})}function Se(o){return y(this,arguments,function*({user:e,appId:t,client:r}){var s;if(_reactnative.Platform.OS==="android")throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery is not supported on Android"});let i=yield ze(),n=yield r.recovery.icloudAuth.getICloudConfiguration("expo-ios");if(!(n==null?void 0:n.container_identifier))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:a,iCloudRecordName:c}=yield i.writeRecoverySecretToICloud({containerId:n.container_identifier,appId:t,userId:e.id});return{recoverySecret:a,iCloudRecordName:c}}catch(a){if(a instanceof Error){let c=(s=a.message.split("Caused by: ")[1])!=null?s:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:c})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}function Je(o){return y(this,arguments,function*({walletAddress:e,client:t,chainType: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 i=yield ze(),l=(yield t.recovery.getRecoveryKeyMaterial(e,r)).icloud_record_name;if(!l)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"iCloud recovery not properly backed up."});let s=yield t.recovery.icloudAuth.getICloudConfiguration("expo-ios"),a=s==null?void 0:s.container_identifier;if(!a)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"An iCloud Container ID must be specified in the Privy Dashboard."});try{let{recoverySecret:d}=yield i.readRecoverySecretFromICloud({containerId:a,recordName:l});return{recoverySecret:d}}catch(d){if(d instanceof Error){let p=(c=d.message.split("Caused by: ")[1])!=null?c:"Error writing to iCloud";throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:p})}throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Error writing to iCloud"})}})}var Be=e=>t=>e(r=>_reactfastcompare2.default.call(void 0, r,t)?r:t);function x(e){return e instanceof Error||e instanceof _jssdkcore.PrivyApiError||e instanceof _jssdkcore.PrivyClientError?e:typeof e=="string"?new Error(e):new Error("Unknown error")}var Ao=e=>new Promise(t=>setTimeout(t,e));function xo(){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 te(i){return y(this,arguments,function*({provider:e,redirectUri:t,client:r,onError:o}){try{let n;switch(e){case"google-drive":{let{url:c}=yield r.recovery.auth.generateURL(q.createURL(t||"/"));n=c;break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid provider",code:"embedded_wallet_recovery_error"})}let l=yield Ge.openAuthSessionAsync(n);if(_reactnative.Platform.OS==="android")return;if(l.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth session failed",code:"embedded_wallet_recovery_error"});let{queryParams:s}=q.parse(l.url),a;switch(e){case"google-drive":{let{privy_oauth_state:c,privy_oauth_code:d}=s;if(!d||!c)throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid credentials",code:"embedded_wallet_recovery_error"});a=yield pe({oAuthCode:d,oAuthState:c,client:r});break}default:throw new (0, _jssdkcore.PrivyClientError)({error:"Recovery OAuth invalid provider",code:"embedded_wallet_recovery_error"})}return a}catch(n){throw o==null||o(x(n)),n}})}function pe(o){return y(this,arguments,function*({oAuthCode:e,oAuthState:t,client:r}){let{access_token:i}=yield r.recovery.auth.authorize(e,t);if(!i)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:"login_with_oauth_returned_with_invalid_credentials"});return i})}var er=2*60*1e3;function tr(e){let t;return new Promise((r,o)=>{t=q.addEventListener("url",n=>y(this,[n],function*({url:i}){if(!i)return;let{queryParams:l}=q.parse(i),{privy_oauth_state:s,privy_oauth_code:a}=l!=null?l:{};if(typeof a!="string"||typeof s!="string")return;let c=yield pe({client:e,oAuthCode:a,oAuthState:s});r(c)})),setTimeout(()=>{o(new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Failed to complete Google Drive recovery flow"}))},er)}).finally(()=>{t==null||t.remove()})}function Ko(e){return y(this,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=tr(e));let r=yield te({provider:"google-drive",client:e});return r!=null?r:yield t})}function me(n){return y(this,arguments,function*({client:e,recoveryInput:t,setWalletRecoveryCallbacks:r,setRecoveryFlowState:o,setWallet:i}){var l,s,a,c;try{let{provider:d,user:p}=yield e.embeddedWallet.setRecovery(t),m=d,v=_jssdkcore.getUserEmbeddedWallet.call(void 0, p);return i({status:"connected",provider:m,account:v}),(s=(l=r.current)==null?void 0:l.onSuccess)==null||s.call(l,m),o({status:"initial"}),m}catch(d){let p=new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:d instanceof Error?d.message:"Error setting password on embedded wallet"});throw(c=(a=r.current)==null?void 0:a.onError)==null||c.call(a,p),o({status:"initial"}),p}})}function $e(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 Ze=({client:e,user:t,appId:r,wallet:o,setWallet:i,setRecoveryFlowState:n,webViewState:l,createWalletCallbacks:s,recoverWalletCallbacks:a,setWalletRecoveryCallbacks:c})=>{let d=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, t),[t]),p=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var z,I;if(d)throw new (0, _jssdkcore.PrivyClientError)({error:"This user already has an embedded wallet",code:"embedded_wallet_already_exists"});let{user:h}=yield e.user.get(),{password:b,recoveryMethod:g,recoveryKey:_}=$e(u),S,E,R;if(g==="google-drive"&&(S=yield te({provider:g,client:e,onError:(z=s.current)==null?void 0:z.onError}),n({status:"creating-wallet"}),!S))return null;if(g==="icloud"){if(!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before creating a wallet with iCloud."});let{recoverySecret:D,iCloudRecordName:V}=yield Se({user:h,appId:r,client:e});E=D,R=V}return yield ue({client:e,setWallet:i,createWalletCallbacks:s,recoveryMethod:g,recoveryKey:_,setRecoveryFlowState:n,password:b,recoverySecretOverride:E,iCloudRecordNameOverride:R,solanaAccount:(I=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, h))!=null?I:void 0})}),[e,d,t]),m=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var g;if(o.status!=="connected")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"});if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});if(_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:"Cannot set user-controlled recovery for a user with an embedded Solana wallet."});_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:d.recovery_method,upgradeToRecoveryMethod:u.recoveryMethod});let h,b;switch(u.recoveryMethod){case"privy":b=W(C({},u),{wallet:d});break;case"user-passcode":b=W(C({},u),{wallet:d,password:u.password});break;case"google-drive":if(h=yield te({provider:u.recoveryMethod,client:e,onError:(g=c.current)==null?void 0:g.onError}),n({status:"upgrading-recovery"}),!h)return null;b={recoveryMethod:"google-drive",wallet:d,recoveryAccessToken:h};break;case"icloud":if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before backing up to iCloud."});let{recoverySecret:_,iCloudRecordName:S}=yield Se({user:t,appId:r,client:e});b={recoveryMethod:"icloud-native",recoverySecretOverride:_,iCloudRecordNameOverride:S,wallet:d};break;default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}return me({client:e,recoveryInput:b,setWalletRecoveryCallbacks:c,setRecoveryFlowState:n,setWallet:i})}),[e,d,o.status,t]),v=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){return m({recoveryMethod:"user-passcode",password:u})}),[e,d,o.status]),f=_react.useCallback.call(void 0, u=>y(void 0,null,function*(){var E;if(!d)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let{password:h,recoveryMethod:b,recoveryKey:g}=$e(u),_,S;if(b==="google-drive"&&(_=yield te({provider:b,client:e,onError:(E=a.current)==null?void 0:E.onError}),n({status:"recovering"}),!_))return null;if(b==="icloud"){if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before recovering via iCloud."});let{recoverySecret:R}=yield Je({client:e,walletAddress:d.address});S=R}return ce({client:e,account:d,setWallet:i,recoverWalletCallbacks:a,recoveryMethod:b,setRecoveryFlowState:n,recoveryKey:g,password:h,recoveryToken:_,recoverySecretOverride:S})}),[e,d]),w=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){if(!d)throw i({status:"not-created",account:null}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});i(u=>u.status==="connected"?{status:"reconnecting",account:d}:{status:"connecting",account:d});try{let u=yield e.embeddedWallet.getProvider(d);return i({status:"connected",provider:u,account:d}),u}catch(u){throw _jssdkcore.errorIndicatesRecoveryIsNeeded.call(void 0, u)?(i({status:"needs-recovery",account:d}),new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_needs_recovery",error:"Embedded wallet not loaded on device"})):u instanceof Error?(i({status:"error",error:u.message,account:d}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:u.message})):(i({status:"error",error:"Error loading embedded wallet",account:d}),new (0, _jssdkcore.PrivyClientError)({code:"unknown_embedded_wallet_error",error:"Error loading embedded wallet"}))}}),[e,d]);return _react.useEffect.call(void 0, ()=>{if(!t&&o.status!=="disconnected")return i({status:"disconnected",account:null});l==="loaded"&&w().catch(()=>{})},[l,t,d]),_react.useEffect.call(void 0, ()=>{o.status==="error"&&o.error.includes("User must be logged in")&&w()},[o.status]),{create:p,recover:f,setPassword:v,setRecovery:m,getProvider:w}};var tt=({client:e,user:t,isReady:r})=>{let o=le(l=>l==null?void 0:l.customAuth),[i,n]=_react.useState.call(void 0, {status:"initial"});return _react.useEffect.call(void 0, ()=>{(()=>y(void 0,null,function*(){if(!(o!=null&&o.enabled)){n({status:"not-enabled"});return}n({status:"loading"});let{getCustomAccessToken:s,isLoading:a}=o;if(!(!r||a))try{let c=yield s();if(!c&&t){yield e.auth.logout(),n({status:"done"});return}if(!c){n({status:"done"});return}if(t){n({status:"done"});return}let d=Fe();if(!(yield e.auth.customProvider.syncWithToken(c,{embedded:d==null?void 0:d.embedded}))){yield e.auth.logout(),n({status:"error",error:new (0, _jssdkcore.PrivyClientError)({error:"Failed to sync with custom auth provider",code:"third_party_auth_error"})});return}n({status:"done"})}catch(c){if(console.log("Error syncing with custom auth provider",c),n({status:"error",error:c}),t)throw yield e.auth.logout(),new (0, _jssdkcore.PrivyClientError)({error:"Third-party auth failed",code:"third_party_auth_error"})}}))()},[e,t,r,o==null?void 0:o.enabled,o==null?void 0:o.getCustomAccessToken,o==null?void 0:o.isLoading]),{customAuthState:i,customAuthStateIsSettled:i.status!=="loading"&&i.status!=="initial"}};var rt=({client:e,user:t,isUserInitialized:r,oAuthState:o,oAuthCallbacks:i,setOAuthState:n,recoveryFlowState:l,oAuthStateRef:s})=>{let a=Y.useURL(),c=_react.useCallback.call(void 0, d=>{var m,v;let p=x(d);n({status:"error",error:p}),(v=(m=i.current).onError)==null||v.call(m,p)},[n]);return _react.useEffect.call(void 0, ()=>{function d(){return y(this,null,function*(){var f,w;if(!a||o.status!=="loading"||l.status!=="initial")return;let{queryParams:p}=Y.parse(a),{privy_oauth_state:m,privy_oauth_code:v}=p;if(!v||!m){n({status:"done"});return}try{let u,h;if(t)u=yield e.auth.oauth.linkWithCode(v,m);else{let b=yield e.auth.oauth.loginWithCode(v,m,void 0,void 0,s.current.disableSignup?"no-signup":"login-or-sign-up");u=b.user,h=!!b.is_new_user}return(w=(f=i.current).onSuccess)==null||w.call(f,u,h),s.current={},n({status:"done"}),yield Y.openURL(a.split("?")[0])}catch(u){s.current={},c(u)}})}_reactnative.Platform.OS==="android"&&r&&d()},[a,r])};var ot=({client:e,user:t,createWalletCallbacks:r,recoverWalletCallbacks:o,setWalletRecoveryCallbacks:i,recoveryFlowState:n,oAuthState:l,setRecoveryFlowState:s,setWallet:a,appStateVisible:c,webViewLoaded:d})=>{let p=X.useURL(),m=_react.useMemo.call(void 0, ()=>_jssdkcore.getUserEmbeddedWallet.call(void 0, t),[t]),v=_react.useCallback.call(void 0, f=>{var u,h,b,g;let w=x(f);n.status==="creating-wallet"?(h=(u=r.current).onError)==null||h.call(u,x(w)):(g=(b=o.current).onError)==null||g.call(b,x(w)),s({status:"initial"})},[n]);return _react.useEffect.call(void 0, ()=>{function f(){return y(this,null,function*(){var b;if(!p&&n.status!=="initial"&&c&&v(new Error("Recovery OAuth session failed")),!p||n.status==="initial"||l.status!=="initial"||!c||!d)return;let{queryParams:w}=X.parse(p),{privy_oauth_state:u,privy_oauth_code:h}=w;if(!(!h||!u)){yield X.openURL(p.split("?")[0]);try{let g=yield pe({oAuthCode:h,oAuthState:u,client:e});if(n.status==="creating-wallet"){let _=(b=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, t))!=null?b:void 0;yield ue({client:e,setWallet:a,createWalletCallbacks:r,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g,solanaAccount:_})}else if(n.status==="upgrading-recovery"){if(!m)throw new Error("Embedded wallet not found");yield me({client:e,recoveryInput:{recoveryMethod:"google-drive",wallet:m,recoveryAccessToken:g},setWalletRecoveryCallbacks:i,setRecoveryFlowState:s,setWallet:a})}else yield ce({client:e,account:m,setWallet:a,recoverWalletCallbacks:o,recoveryMethod:"google-drive",setRecoveryFlowState:s,recoveryToken:g})}catch(g){v(g)}}})}_reactnative.Platform.OS==="android"&&f()},[p,n.status,c,d])};var nt=({client:e,isUserInitialized:t,setIsUserInitialized:r,setError:o})=>{_react.useEffect.call(void 0, ()=>{t||(()=>y(void 0,null,function*(){try{yield e.initialize()}catch(n){o(n instanceof Error?n:new Error(String(n)))}try{yield e.user.get()}catch(n){}finally{r(!0)}}))()},[e,t,o,r])};var _expocrypto = require('expo-crypto');var it={name:"@privy-io/expo",version:"0.48.0",description:"Expo client for the Privy Auth API",keywords:["authentication","authorization","identity","privacy","privy","user data","react-native","expo","web3"],license:"Apache-2.0",author:"privy.io",exports:{".":{require:"./dist/index.js",import:"./dist/esm/index.js",types:"./dist/index.d.ts"},"./passkey":{require:"./dist/passkey.js",import:"./dist/esm/passkey.js",types:"./dist/passkey.d.ts"},"./smart-wallets":{require:"./dist/smart-wallets.js",import:"./dist/esm/smart-wallets.js",types:"./dist/smart-wallets.d.ts"}},main:"./dist/esm/index.js",source:"./src/index.ts",types:"./dist/index.d.ts",files:["dist/**/*","LICENSE","README.md"],scripts:{build:"tsup --clean --minify","check-types":"tsc --noEmit",clean:"rm -rf dist .turbo",dev:"tsup --watch",format:'eslint "src/**/*.{ts,tsx,js,jsx}" --fix',"generate-types":"tsup --dts-only",lint:'eslint "src/**/*.{ts,tsx,js,jsx}"',test:'jest --testMatch "**/test/**/*.test.{ts,tsx}"'},browserslist:["defaults","node >= 18","not op_mini all"],dependencies:{"@privy-io/js-sdk-core":"0.44.2","react-fast-compare":"^3.2.2",zustand:"^4.4.1"},devDependencies:{"@privy-io/eslint-config-custom":"*","@privy-io/tsconfig":"*","@simplewebauthn/types":"9.0.1","@svgr/core":"^8.1.0","@svgr/plugin-jsx":"^8.1.0","@svgr/plugin-svgo":"^8.1.0","@testing-library/react-native":"^12.8.1","@tsconfig/node16-strictest-esm":"^1.0.3","@types/jest":"^29.1.2",buffer:"^5.4.3","eslint-plugin-react-hooks":"^5.0.0-canary-7118f5dd7-20230705",jest:"^29.7.0","jest-expo":"~51.0.0","lucide-react-native":"^0.474.0",tsup:"^6.2.3",typescript:"~5.5.3"},peerDependencies:{"@expo-google-fonts/inter":"*","@privy-io/expo-native-extensions":"0.0.3","expo-apple-authentication":"*","expo-application":"*","expo-clipboard":"*","expo-constants":"*","expo-crypto":"*","expo-font":"*","expo-linking":"*","expo-secure-store":"*","expo-web-browser":"*",permissionless:"^0.2.10",react:"*","react-native":"*","react-native-passkeys":"^0.3.0","react-native-qrcode-styled":"*","react-native-safe-area-context":"*","react-native-svg":"*","react-native-webview":"*",viem:"^2.21.36"},peerDependenciesMeta:{"@expo-google-fonts/inter":{optional:!0},"expo-font":{optional:!0},permissionless:{optional:!0},viem:{optional:!0}},publishConfig:{access:"public"}};var lt=({appId:e,clientId:t,storage:r=ye,supportedChains:o,baseUrl:i,logLevel:n})=>new (0, _jssdkcore2.default)({appId:e,clientId:t,supportedChains:o,storage:st(r),sdkVersion:`expo:${it.version}`,nativeAppIdentifier:at(),crypto:{digest:_expocrypto.digest},baseUrl:i,logLevel:n});var dt=()=>{let{user:e,isReady:t,logout:r,getAccessToken:o,error:i}=_react.useContext.call(void 0, j);return{user:e,isReady:t,error:i,logout:r,getAccessToken:o}};var ct=()=>{let{client:e}=_react.useContext.call(void 0, j);return e};function ut(){let e=ct(),{isReady:t,user:r}=dt();return _react.useMemo.call(void 0, ()=>{var l,s;if(!t)return null;let o=e.app.getConfig();if(!o)return null;let i=(l=o.require_users_accept_terms)!=null?l:!1,n=(s=r==null?void 0:r.has_accepted_terms)!=null?s:!1;return{termsAndConditionsUrl:o.terms_and_conditions_url,privacyPolicyUrl:o.privacy_policy_url,requireUsersAcceptTerms:i&&!n}},[e.app,t,r==null?void 0:r.has_accepted_terms])}var k=class extends Error{constructor(r,o){super(o);this.code=r,this.error=o}},pt= exports.u =class extends k{constructor(r){super("underlying_error",r instanceof Error?r.message:"An underlying error occurred");this.wrappedError=r}};var Ce={success:e=>({value:e}),error:e=>({error:e})};var mt=e=>{let t=Array.from(new Set(e));return t.length===0?Ce.error(new k("no_login_methods_available","No login methods available")):Ce.success(t)},Pe=e=>{let t=e.length,r=e.every(o=>o==="sms"||o==="email");return t<=2&&r?e[0]:null},Gn= exports.v =(e,t)=>{if(e.length!==2)return null;let[r,o]=e;return t===r?o:r},Yn= exports.w ={email:"email",sms:"phone",google:"Google",apple:"Apple",discord:"Discord",twitter:"X",github:"Github",spotify:"Spotify",instagram:"Instagram",tiktok:"Tiktok",linkedin:"LinkedIn"};var _vanilla = require('zustand/vanilla');var Ae=_vanilla.createStore.call(void 0, )(e=>({elementsConfig:null,updateUIMounted:t=>e({elementsConfig:t})})),yt= exports.x =()=>{let{elementsConfig:e}=Ae.getState();if(!(e!==null))throw new k("privy_elements_not_ready","Privy Elements is not mounted")},ei= exports.y =()=>{let{elementsConfig:e}=Ae.getState();if(e===null)throw new k("privy_elements_not_ready","Privy Elements is not mounted");return e},ti= exports.z =e=>{_react.useEffect.call(void 0, ()=>{let{updateUIMounted:t}=Ae.getState();return t(e),()=>{t(null)}},[e])};function vt(e){return new Promise((t,r)=>{e({resolve:t,reject:r})})}function Rr(e,t){return{resolve:r=>{t(),e.resolve(r)},reject:r=>{t(),e.reject(r)}}}function ft(e,t,r){let o=setTimeout(()=>{e.reject(t())},r);return Rr(e,()=>{clearTimeout(o)})}var xr=1e3*60*5,Q=_zustand.create.call(void 0, )((e,t)=>({privyElementsConfig:null,loginPromiseResolvers:null,activeLoginMethod:null,openLoginFlow:(r,o,i,n)=>vt(l=>{var p,m,v;let s=o.app.getConfig();if(!s)return l.reject(new k("privy_not_ready","Privy is not ready"));if(i!==null)return l.reject(new k("user_already_logged_in","User is already logged in"));if(yt(),t().loginPromiseResolvers!==null)return l.reject(new k("existing_login_flow_in_progress","A login flow is already in progress"));let a=mt(r.loginMethods);if(a.error)return l.reject(a.error);let c={loginMethods:a.value,appearance:{logo:(v=(m=(p=r.appearance)==null?void 0:p.logo)!=null?m:s.logo_url)!=null?v:void 0}},d=ft(l,()=>(e({privyElementsConfig:null,loginPromiseResolvers:null}),new k("login_flow_timeout","The login flow timed out")),xr);n(),e({loginPromiseResolvers:d,privyElementsConfig:c,activeLoginMethod:Pe(c.loginMethods)})}),closeLoginFlow:()=>{var r;return(r=t().loginPromiseResolvers)==null||r.reject(new k("login_flow_closed","The login flow was closed")),e({privyElementsConfig:null,loginPromiseResolvers:null})},goBack:()=>{let{activeLoginMethod:r,privyElementsConfig:o,updateActiveLoginMethod:i,closeLoginFlow:n}=t();if(!o){n();return}let l=Pe(o.loginMethods)===null;r===null||!l?n():i(null)},updateActiveLoginMethod:r=>e({activeLoginMethod:r})})),ui= exports.C =()=>Q(e=>e.privyElementsConfig),pi= exports.D =()=>Q(e=>e.openLoginFlow),mi= exports.E =()=>{let e=Q(r=>r.closeLoginFlow),t=ut();return _react.useCallback.call(void 0, r=>{t!=null&&t.requireUsersAcceptTerms&&!(r!=null&&r.termsReviewed)||e()},[e,t])},yi= exports.F =()=>Q(e=>e.goBack),vi= exports.G =()=>Q(e=>[e.activeLoginMethod,e.updateActiveLoginMethod]),Ur=e=>{let{loginPromiseResolvers:t}=Q.getState();t==null||t.resolve(e)},wt=()=>Ur;var j=_react.createContext.call(void 0, null),$;function Ui(e){return $?$.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 Ii=e=>{Fr();let[t,r]=_react.useState.call(void 0, _reactnative.AppState.currentState==="active");_react.useEffect.call(void 0, ()=>{let M=_reactnative.AppState.addEventListener("change",Ut=>{r(Ut==="active")});return()=>{M.remove()}},[]),_react.useEffect.call(void 0, ()=>Te(e.config),[e.config]);let[o,i]=_react.useState.call(void 0, !1),[n,l]=_react.useState.call(void 0, null),[s,a]=_react.useState.call(void 0, "loading"),[c,d]=_react.useState.call(void 0, !1),[p,m]=_react.useState.call(void 0, null),[v,f]=_react.useState.call(void 0, {status:"disconnected",account:null}),[w,u]=_react.useState.call(void 0, {status:"disconnected"}),[h,b]=_react.useState.call(void 0, {status:"initial"}),[g,_]=_react.useState.call(void 0, {status:"initial"}),S=_react.useRef.call(void 0, {}),[E,R]=_react.useState.call(void 0, {status:"initial"}),[z,I]=_react.useState.call(void 0, {status:"initial"}),[D,V]=_react.useState.call(void 0, {status:"initial"}),[fe,F]=_react.useState.call(void 0, {status:"initial"}),[L,Ct]=_react.useState.call(void 0, {status:"initial"}),We=_react.useRef.call(void 0, {}),we=_react.useRef.call(void 0, {}),he=_react.useRef.call(void 0, {}),ge=_react.useRef.call(void 0, {}),xe=_react.useRef.call(void 0, {}),Ue=_react.useRef.call(void 0, {}),Pt=wt(),ae=_react.useCallback.call(void 0, M=>{if(M){Pt(M),Be(m)(M);return}m(null),b({status:"initial"}),_({status:"initial"}),f({status:"disconnected",account:null})},[]),A=_react.useMemo.call(void 0, ()=>{let M=e.storage||ye;return e.client?$=e.client:$=lt({appId:e.appId,clientId:e.clientId,supportedChains:e.supportedChains,storage:M,baseUrl:e.baseUrl,logLevel:e.logLevel}),$.setCallbacks({setUser:ae,setIsReady:d}),$},[e.client,e.storage,e.appId,e.clientId,e.baseUrl,e.supportedChains,e.logLevel,ae]),At=_react.useCallback.call(void 0, ()=>(ae(null),A.auth.logout()),[ae,A]),kt=_react.useCallback.call(void 0, ()=>y(void 0,null,function*(){try{return yield A.getAccessToken()}catch(M){return console.debug(M),null}}),[A]),Rt=_react.useCallback.call(void 0, ()=>A.getIdentityToken(),[A]);nt({client:A,isUserInitialized:o,setIsUserInitialized:i,setError:l});let Ot=Ze({client:A,user:p,appId:e.appId,webViewState:s,createWalletCallbacks:we,recoverWalletCallbacks:he,setWalletRecoveryCallbacks:ge,setRecoveryFlowState:R,wallet:v,setWallet:f}),Wt=qe({client:A,user:p,webViewState:s,createSolanaWalletCallbacks:xe,recoverSolanaWalletCallbacks:Ue,setSolanaRecoveryFlowState:I,solanaWallet:w,setSolanaWallet:u});rt({client:A,isUserInitialized:o,user:p,oAuthState:g,setOAuthState:_,oAuthCallbacks:We,recoveryFlowState:E,oAuthStateRef:S}),ot({client:A,user:p,webViewLoaded:s==="loaded",createWalletCallbacks:we,recoverWalletCallbacks:he,setWalletRecoveryCallbacks:ge,recoveryFlowState:E,oAuthState:g,setRecoveryFlowState:R,setWallet:f,appStateVisible:t});let{customAuthStateIsSettled:xt}=tt({client:A,user:p,isReady:o});return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(j.Provider,{value:{client:A,user:p,isReady:s!=="loading"&&o&&bt(g)&&xt,error:n,logout:At,getAccessToken:kt,getIdentityToken:Rt,wallet:C(C({},v),Ot),solanaWallet:C(C({},w),Wt),oAuthState:g,oAuthCallbacks:We,recoveryFlowState:E,setRecoveryFlowState:R,solanaRecoveryFlowState:z,setSolanaRecoveryFlowState:I,createWalletCallbacks:we,recoverWalletCallbacks:he,setWalletRecoveryCallbacks:ge,createSolanaWalletCallbacks:xe,recoverSolanaWalletCallbacks:Ue,setOAuthState:_,siweState:D,setSiweState:V,otpState:h,setOtpState:b,passkeyState:fe,setPasskeyState:F,farcasterState:L,setFarcasterState:Ct,oAuthStateRef:S}},e.children),_react2.default.createElement(_reactnative.View,{style:{width:0,height:0,overflow:"hidden"}},_react2.default.createElement(je,{logLevel:e.logLevel,client:A,isClientReady:c,setWebViewState:a})))},Fr=()=>{if(_react.useContext.call(void 0, j))throw new (0, _jssdkcore.PrivyClientError)({code:"configuration_error",error:"Found multiple instances of PrivyProvider, ensure there is only one mounted in your application tree."})};var bt=e=>e.status!=="loading",Re=(e={})=>{let{user:t,oAuthState:r,setOAuthState:o,oAuthCallbacks:i,client:n,oAuthStateRef:l}=_react.useContext.call(void 0, j),s=e.action?e.action==="login":!t;_react.useEffect.call(void 0, ()=>{i.current={onSuccess:e.onSuccess,onError:e.onError}},[e.onSuccess,e.onError]);let a=_react.useCallback.call(void 0, d=>{var m;let p=x(d);return o({status:"error",error:p}),(m=e==null?void 0:e.onError)==null||m.call(e,p),p},[e==null?void 0:e.onError]);return{start:_react.useCallback.call(void 0, function(w){return y(this,arguments,function*({provider:p,redirectUri:m,isLegacyAppleIosBehaviorEnabled:v=!1,disableSignup:f}){var u,h,b;o({status:"loading"}),l.current={disableSignup:f};try{if(t&&e.action==="login")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_oauth_while_already_logged_in",error:"Already logged in, if trying to link an OAuth account use `useLinkWithOAuth`"});if(!t&&e.action==="link")throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_oauth_before_logged_in",error:"Must be logged in to link an OAuth account, use `useLoginWithOAuth`"});let{url:g}=yield n.auth.oauth.generateURL(p,Z.createURL(m||"/")),_,S;if(_reactnative.Platform.OS==="ios"&&p==="apple"&&!v){let fe=(u=new URL(g).searchParams.get("state"))!=null?u:"",F=yield ne.signInAsync({state:fe,requestedScopes:[ne.AppleAuthenticationScope.EMAIL,ne.AppleAuthenticationScope.FULL_NAME]}).catch(L=>{throw L instanceof Error&&"code"in L&&L.code==="ERR_REQUEST_CANCELED"?new (0, _jssdkcore.PrivyClientError)({error:"Apple login was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):L});if(!F.authorizationCode||!F.state)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let L=yield n.auth.oauth.loginWithCode(F.authorizationCode,F.state,p,"raw",f?"no-signup":"login-or-sign-up");_=L.user,S=L.is_new_user}else _=yield n.auth.oauth.linkWithCode(F.authorizationCode,F.state,p,"raw");return(h=e==null?void 0:e.onSuccess)==null||h.call(e,_,S),o({status:"done"}),_!=null?_:void 0}let E=_reactnative.Platform.OS==="android"?g.replace("x.com","twitter.com"):g,R=yield ie.openAuthSessionAsync(E);if(_reactnative.Platform.OS==="android")return;if(R.type!=="success")throw[ie.WebBrowserResultType.CANCEL,ie.WebBrowserResultType.DISMISS].includes(R.type)?new (0, _jssdkcore.PrivyClientError)({error:"OAuth was cancelled",code:s?"login_with_oauth_was_cancelled_by_user":"link_with_oauth_was_cancelled_by_user"}):new (0, _jssdkcore.PrivyClientError)({error:"OAuth session failed",code:s?"failed_to_complete_login_with_oauth":"failed_to_complete_link_with_oauth"});let{queryParams:z}=Z.parse(R.url),{privy_oauth_state:I,privy_oauth_code:D}=z;if(!D||!I)throw new (0, _jssdkcore.PrivyClientError)({error:"OAuth invalid credentials",code:s?"login_with_oauth_returned_with_invalid_credentials":"link_with_oauth_returned_with_invalid_credentials"});if(s){let V=yield n.auth.oauth.loginWithCode(D,I,p,void 0,f?"no-signup":"login-or-sign-up");_=V.user,S=V.is_new_user}else _=yield n.auth.oauth.linkWithCode(D,I,p);return(b=e==null?void 0:e.onSuccess)==null||b.call(e,_,S),yield Z.openURL(R.url.split("?")[0]),o({status:"done"}),_!=null?_:void 0}catch(g){a(g)}})},[t,n,o,a]),state:r}};function Ki(e){let{state:t,start:r}=Re(W(C({},e),{action:"login"}));return{state:t,login:r}}function qi(e){let{state:t,start:r}=Re(W(C({},e),{action:"link"}));return{state:t,link:r}}function Hi(e){return Re(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 st(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:()=>y(this,null,function*(){return[]})}}var ye={get(e){return U.getItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},put(e,t){return U.setItemAsync(e,t,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},del(e){return U.deleteItemAsync(e,{keychainAccessible:U.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY})},getKeys:()=>y(void 0,null,function*(){return[]})};var Vr=e=>y(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 W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});var qr=e=>y(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 W(C({},r),{type:(o=r.type)!=null?o:"public-key",clientExtensionResults:{}})});function na(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 ia(e){var t,r,o,i;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:(i=e.allow_credentials)==null?void 0:i.map(({id:n,type:l,transports:s})=>({id:n,type:l,transports:s})),userVerification:e.user_verification}}function aa(e){var t,r,o,i,n,l,s,a;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:(i=e.extensions)==null?void 0:i.app_id},attestation:e.attestation,excludeCredentials:e.exclude_credentials,authenticatorSelection:{authenticatorAttachment:(n=e.authenticator_selection)==null?void 0:n.authenticator_attachment,residentKey:(l=e.authenticator_selection)==null?void 0:l.resident_key,userVerification:(s=e.authenticator_selection)==null?void 0:s.user_verification,requireResidentKey:(a=e.authenticator_selection)==null?void 0:a.require_resident_key}}}exports.a = C; exports.b = W; exports.c = Hr; exports.d = y; exports.e = Fe; exports.f = Se; exports.g = Je; exports.h = x; exports.i = Ao; exports.j = xo; exports.k = Ko; exports.l = Ki; exports.m = qi; exports.n = Hi; exports.o = ye; exports.p = lt; exports.q = dt; exports.r = ct; exports.s = ut; exports.t = k; exports.u = pt; exports.v = Gn; exports.w = Yn; exports.x = yt; exports.y = ei; exports.z = ti; exports.A = vt; exports.B = ft; exports.C = ui; exports.D = pi; exports.E = mi; exports.F = yi; exports.G = vi; exports.H = j; exports.I = Ui; exports.J = Ii; exports.K = Vr; exports.L = qr; exports.M = na; exports.N = ia; exports.O = aa;
|
|
@@ -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 _chunkEXOMJIYBjs = require('./chunk-EXOMJIYB.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var Wt=e=>{let{user:t,client:c,setSiweState:s,siweState:o}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),n=_react.useCallback.call(void 0, a=>{var d;let g=_chunkEXOMJIYBjs.h.call(void 0, a);return s({status:"error",error:g}),(d=e==null?void 0:e.onError)==null||d.call(e,g),g},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({wallet:a,from:{domain:g,uri:d}}){var l;try{s({status:"generating-message"});let m=yield c.auth.siwe.init(a,g,d);return s({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,m.message),m.message}catch(m){throw n(m)}}),[c,n,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, d=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[d],function*({signature:a,messageOverride:g}){var f;try{if(!t)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 l=yield c.auth.siwe.linkWithSiwe(a,void 0,g);return s({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,l),l}catch(l){throw n(l)}}),[t,c,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:i,state:o}};var Lt=e=>{let{user:t,client:c,setSiweState:s,siweState:o}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),n=_react.useCallback.call(void 0, a=>{var d;let g=_chunkEXOMJIYBjs.h.call(void 0, a);return s({status:"error",error:g}),(d=e==null?void 0:e.onError)==null||d.call(e,g),g},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({wallet:a,from:{domain:g,uri:d}}){var l;try{s({status:"generating-message"});let m=yield c.auth.siwe.init(a,g,d);return s({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,m.message),m.message}catch(m){throw n(m)}}),[c,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({signature:a,messageOverride:g,disableSignup:d}){var l;try{if(t)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 m=_chunkEXOMJIYBjs.e.call(void 0, ),h=yield c.auth.siwe.loginWithSiwe(a,void 0,g,d?"no-signup":"login-or-sign-up",{embedded:m==null?void 0:m.embedded});return s({status:"done"}),(l=e==null?void 0:e.onSuccess)==null||l.call(e,h.user,h.is_new_user),h.user}catch(m){throw n(m)}}),[t,c,n,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:o}};var Nt=()=>{let e=_chunkEXOMJIYBjs.r.call(void 0, ),{user:t}=_chunkEXOMJIYBjs.q.call(void 0, ),c=_react.useCallback.call(void 0, i=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[i],function*({wallet:{address:o},from:{domain:n,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:o});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:o,domain:n,uri:r,nonce:a})}}catch(a){throw _chunkEXOMJIYBjs.h.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, a=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[a],function*({signature:o,message:n,wallet:{walletClientType:r,connectorType:i}={}}){try{if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});return yield e.auth.siws.link({signature:o,message:n,walletClientType:r,connectorType:i})}catch(g){throw _chunkEXOMJIYBjs.h.call(void 0, g)}}),[t,e]);return{generateMessage:c,link:s}};var $t=()=>{let e=_chunkEXOMJIYBjs.r.call(void 0, ),{user:t}=_chunkEXOMJIYBjs.q.call(void 0, ),c=_react.useCallback.call(void 0, i=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[i],function*({wallet:{address:o},from:{domain:n,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:o});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:o,domain:n,uri:r,nonce:a})}}catch(a){throw _chunkEXOMJIYBjs.h.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, g=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[g],function*({signature:o,message:n,wallet:{walletClientType:r,connectorType:i}={},disableSignup:a}){try{if(t)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:o,message:n,walletClientType:r,connectorType:i,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw _chunkEXOMJIYBjs.h.call(void 0, d)}}),[t,e]);return{generateMessage:c,login:s}};var eo=e=>{let{user:t,client:c}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),s=_react.useCallback.call(void 0, n=>{var i;let r=_chunkEXOMJIYBjs.h.call(void 0, n);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=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[r],function*({address:n}){var i;try{if(!t)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 a=yield c.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,a),a}catch(a){throw s(a)}}),[t,c,s,e==null?void 0:e.onSuccess])}};var ao=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkEXOMJIYBjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({email:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, l=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[l],function*({code:d,email:f}){var m;try{if(!s)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 h=f||t;if(!h)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 w=yield o.auth.email.linkWithCode(h,d);return r({status:"done"}),(m=e==null?void 0:e.onLinkSuccess)==null||m.call(e,w),w}catch(h){throw i(h)}}),[s,t,r,o,e,i]);return{sendCode:a,linkWithCode:g,state:n}};var ho=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkEXOMJIYBjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({email:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, m=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[m],function*({code:d,email:f,disableSignup:l}){var h;try{if(s)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 w=f||t;if(!w)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 S=_chunkEXOMJIYBjs.e.call(void 0, ),v=yield o.auth.email.loginWithCode(w,d,l?"no-signup":"login-or-sign-up",{embedded:S==null?void 0:S.embedded});return r({status:"done"}),(h=e==null?void 0:e.onLoginSuccess)==null||h.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(w){throw i(w)}}),[s,t,r,o,e,i]);return{sendCode:a,loginWithCode:g,state:n}};var Wo=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkEXOMJIYBjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({phone:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, l=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[l],function*({code:d,phone:f}){var m;try{if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(f||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 w=yield o.auth.phone.linkWithCode(f||t,d);return r({status:"done"}),(m=e==null?void 0:e.onLinkSuccess)==null||m.call(e,w),w}catch(h){throw i(h)}}),[s,t,r,o,e,i]);return{sendCode:a,linkWithCode:g,state:n}};var Lo=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunkEXOMJIYBjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[f],function*({phone:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, m=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[m],function*({code:d,phone:f,disableSignup:l}){var h;try{if(s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(f||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 S=_chunkEXOMJIYBjs.e.call(void 0, ),v=yield o.auth.phone.loginWithCode(f||t,d,l?"no-signup":"login-or-sign-up",{embedded:S==null?void 0:S.embedded});return r({status:"done"}),(h=e==null?void 0:e.onLoginSuccess)==null||h.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(w){throw i(w)}}),[s,t,r,o,e,i]);return{sendCode:a,loginWithCode:g,state:n}};var _expolinking = require('expo-linking'); var T = _interopRequireWildcard(_expolinking); var H = _interopRequireWildcard(_expolinking); var Ue = _interopRequireWildcard(_expolinking); var N = _interopRequireWildcard(_expolinking); var Ae = _interopRequireWildcard(_expolinking); var Me = _interopRequireWildcard(_expolinking); var Re = _interopRequireWildcard(_expolinking); var Ie = _interopRequireWildcard(_expolinking);var Ho=e=>{let{appState:t,getCurrentAppState:c}=_chunkEXOMJIYBjs.j.call(void 0, ),{client:s,user:o,farcasterState:n,setFarcasterState:r}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, f=>{var m;let l=_chunkEXOMJIYBjs.h.call(void 0, f);return r({status:"error",error:l}),(m=e==null?void 0:e.onError)==null||m.call(e,l),l},[e==null?void 0:e.onError,r]),g=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (h,...w)=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[h,...w],function*({relyingParty:f,redirectUrl:l},m={pollAttempts:10,pollIntervalMs:1e3}){var S;try{if(i.current=!1,!o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});r({status:"generating-uri"});let{connect_uri:v,channel_token:E}=yield s.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:T.createURL(l!=null?l:"/")});if(!v)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield T.openURL(v),r({status:"polling-status"});let P=0;for(;P<m.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&c()!=="active"){yield _chunkEXOMJIYBjs.i.call(void 0, m.pollIntervalMs);continue}let A=yield s.auth.farcaster.getFarcasterStatus({channel_token:E});if(A.state==="completed"){r({status:"submitting-token"});let L=yield s.auth.farcaster.link(_chunkEXOMJIYBjs.a.call(void 0, {channel_token:E},A));return r({status:"done"}),(S=e==null?void 0:e.onSuccess)==null||S.call(e,L),L}P++,yield _chunkEXOMJIYBjs.i.call(void 0, m.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(v){throw a(v)}}),[s,e==null?void 0:e.onSuccess,a,r,o]),state:n,cancel:g}};var jo=e=>{let{client:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useCallback.call(void 0, o=>{var r;let n=_chunkEXOMJIYBjs.h.call(void 0, o);return(r=e==null?void 0:e.onError)==null||r.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, n=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[n],function*({fid:o}){var r;try{let i=yield t.auth.farcaster.unlink({fid:o});return(r=e==null?void 0:e.onSuccess)==null||r.call(e,i),i}catch(i){throw c(i)}}),[t,e==null?void 0:e.onSuccess,c])}};var Yo=e=>{let{appState:t,getCurrentAppState:c}=_chunkEXOMJIYBjs.j.call(void 0, ),{client:s,user:o,farcasterState:n,setFarcasterState:r}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, f=>{var m;let l=_chunkEXOMJIYBjs.h.call(void 0, f);return r({status:"error",error:l}),(m=e==null?void 0:e.onError)==null||m.call(e,l),l},[e==null?void 0:e.onError,r]),g=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (w,...S)=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[w,...S],function*({relyingParty:f,redirectUrl:l,disableSignup:m},h={pollAttempts:10,pollIntervalMs:1e3}){var v;try{if(i.current=!1,o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:E,channel_token:P}=yield s.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:H.createURL(l!=null?l:"/")});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield H.openURL(E),r({status:"polling-status"});let A=0;for(;A<h.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&c()!=="active"){yield _chunkEXOMJIYBjs.i.call(void 0, h.pollIntervalMs);continue}let L=yield s.auth.farcaster.getFarcasterStatus({channel_token:P});if(L.state==="completed"){r({status:"submitting-token"});let V=_chunkEXOMJIYBjs.e.call(void 0, ),j=yield s.auth.farcaster.authenticate(_chunkEXOMJIYBjs.a.call(void 0, {channel_token:P,mode:m?"no-signup":"login-or-sign-up"},L),{embedded:V==null?void 0:V.embedded});return r({status:"done"}),(v=e==null?void 0:e.onSuccess)==null||v.call(e,j.user,j.is_new_user),j.user}A++,yield _chunkEXOMJIYBjs.i.call(void 0, h.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(E){throw a(E)}}),[s,a,e==null?void 0:e.onSuccess,r,o,t]),state:n,cancel:g}};var _zustand = require('zustand');var re=_zustand.create.call(void 0, ()=>({status:"initial"})),_=e=>re.setState(e,!0),hr=re.getState,cn= exports.m =()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=re(),s=_react.useCallback.call(void 0, ()=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){try{_({status:"fetching-nonce"});let n=yield e.auth.farcasterV2.initializeAuth();return _({status:"awaiting-signature"}),n}catch(n){let r=_chunkEXOMJIYBjs.h.call(void 0, n);throw _({status:"initial",error:r}),r}}),[e]),o=_react.useCallback.call(void 0, n=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){let r=hr().status;try{if(t){let g=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 _({status:r,error:g}),g}_({status:"submitting-signature"});let i=_chunkEXOMJIYBjs.e.call(void 0, ),a=yield e.auth.farcasterV2.authenticate(n,{embedded:i==null?void 0:i.embedded});return _({status:"done"}),setTimeout(()=>_({status:"initial"}),1500),{user:a.user}}catch(i){let a=_chunkEXOMJIYBjs.h.call(void 0, i);throw _({status:r,error:a}),a}}),[e,t]);return{init:s,login:o,state:c}};var gn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useCallback.call(void 0, o=>{var r;let n=_chunkEXOMJIYBjs.h.call(void 0, o);return(r=e==null?void 0:e.onError)==null||r.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, r=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[r],function*({provider:o,subject:n}){var i;try{let a=yield t.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,a),a}catch(a){throw c(a)}}),[t,e==null?void 0:e.onSuccess,c])}};var vn=e=>{let{client:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useRef.call(void 0, e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:s}=t.addOAuthTokensListener(o=>{c.current(o)});return s},[t])};var Cn=()=>{let{client:e}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};var _expowebbrowser = require('expo-web-browser'); var Pe = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var b=e=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Wr());let c=yield Pe.openAuthSessionAsync(e),s;if(_reactnative.Platform.OS==="android")s=yield t;else{if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_failed",error:"OAuth session failed"});s=c.url}return Cr(s)});function Wr(){let e;return new Promise((t,c)=>{e=N.addEventListener("url",({url:s})=>{s&&t(s)}),setTimeout(()=>{c(new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_timeout",error:"OAuth session timed out"}))},Er)}).finally(()=>{e==null||e.remove()})}function Cr(e){let{queryParams:t}=N.parse(e);return t}var Er=2*60*1e3;var Rn=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:b}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, r=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[r],function*({appId:o,redirectUri:n}){if(t)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:i}=yield c({providerAppId:o,redirectUrl:Ue.createURL(n||"/")});return{user:i}}),[t,c])}};var Bn=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:b}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, r=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[r],function*({appId:o,redirectUri:n}){if(!t)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 c({providerAppId:o,redirectUrl:Ae.createURL(n||"/")})}}),[t,c])}};var zn=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:b}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:s,message:o,redirectUri:n="/"})=>c({user:t,address:s,message:o,redirectUrl:Me.createURL(n)})}),[t,c])};var ei=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:b}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:s,typedData:o,redirectUri:n="/"})=>c({user:t,address:s,typedData:o,redirectUrl:Re.createURL(n)})}),[t,c])};var si=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:b}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:s,transaction:o,redirectUri:n="/"})=>c({user:t,address:s,transaction:o,redirectUrl:Ie.createURL(n)})}),[t,c])};var pi=()=>{let{user:e,client:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H);return{setRecovery:_react.useCallback.call(void 0, s=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){var i;let o=t.app.appId;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?i:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield t.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield t.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(a){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:s.recoveryMethod});let r=yield $r({appId:o,client:t,user:e,primaryAccount:n,recoveryParams:s});try{let{user:a}=yield t.embeddedWallet.setRecovery(r);return{user:a}}catch(a){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:a instanceof Error?a.message:"Error setting password on embedded wallet"})}}),[t,e])}},$r=n=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[n],function*({appId:e,client:t,user:c,primaryAccount:s,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:s};case"user-passcode":return _chunkEXOMJIYBjs.b.call(void 0, _chunkEXOMJIYBjs.a.call(void 0, {},o),{wallet:s});case"google-drive":{let r=yield _chunkEXOMJIYBjs.k.call(void 0, t);return{recoveryMethod:"google-drive",wallet:s,recoveryAccessToken:r}}case"icloud":{let{recoverySecret:r,iCloudRecordName:i}=yield _chunkEXOMJIYBjs.f.call(void 0, {appId:e,client:t,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:r,iCloudRecordNameOverride:i,wallet:s}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:s,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Si=()=>{let{user:e,client:t}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H);return{recover:_react.useCallback.call(void 0, s=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){var g;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(g=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?g:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,r,i,a;switch(s.recoveryMethod){case"user-passcode":r=s.password;break;case"google-drive":i=yield _chunkEXOMJIYBjs.k.call(void 0, t);break;case"icloud":let{recoverySecret:d}=yield _chunkEXOMJIYBjs.g.call(void 0, {client:t,walletAddress:o.address,chainType:o.chain_type});a=d;break;case"recovery-encryption-key":n=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 t.embeddedWallet.getProvider(o,r,i,a,n):o.chain_type==="solana"&&(yield t.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",r,i,a))}catch(d){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[t,e])}};var Te=_zustand.create.call(void 0, ()=>({status:"disconnected"})),He=()=>Te.getState().onNeedsRecovery,et= exports.x =e=>{_react.useEffect.call(void 0, ()=>{Te.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var oe=(e={})=>{let{wallet:t,createWalletCallbacks:c,recoverWalletCallbacks:s,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),{onCreateWalletSuccess:n,onCreateWalletError:r,onRecoverWalletError:i,onRecoverWalletSuccess:a,onSetWalletRecoverySuccess:g,onSetWalletRecoveryError:d}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:n,onError:r}},[n,r]),_react.useEffect.call(void 0, ()=>{s.current={onSuccess:a,onError:i}},[a,i]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:g,onError:d}},[a,i]),t};var Mi=({onStateChange:e})=>{let t=oe();return _react.useEffect.call(void 0, ()=>{e(t)},[t])};var Ii=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H);return{getIdentityToken:e}};var Vi=e=>{let{user:t,client:c}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),s=_react.useCallback.call(void 0, n=>{var i;let r=_chunkEXOMJIYBjs.h.call(void 0, n);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, ()=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){var n;try{if(t)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 r=_chunkEXOMJIYBjs.e.call(void 0, ),i=yield c.auth.guest.create({embedded:r==null?void 0:r.embedded});return(n=e==null?void 0:e.onSuccess)==null||n.call(e,i.user,i.is_new_user),i.user}catch(r){throw s(r)}}),[c,s,t,e==null?void 0:e.onSuccess])}};function zi({onMfaRequired:e}){let{client:t,user:c}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H);_react.useEffect.call(void 0, ()=>{function s(){return _chunkEXOMJIYBjs.d.call(void 0, this,null,function*(){var o;yield e((o=c==null?void 0:c.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",s),()=>{t.mfaPromises.off("mfaRequired",s)}},[t,c,e])}function ts(){let{client:e}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),t=_react.useCallback.call(void 0, n=>_chunkEXOMJIYBjs.d.call(void 0, this,null,function*(){var r,i;switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:a}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||((i=(r=_chunkEXOMJIYBjs.e.call(void 0, ))==null?void 0:r.mfa)==null?void 0:i.relyingParty)});return _chunkEXOMJIYBjs.N.call(void 0, a);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, n=>_chunkEXOMJIYBjs.d.call(void 0, this,null,function*(){var r,i,a,g,d,f,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(a=e.mfaPromises.rootPromise.current)==null||a.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||((i=(r=_chunkEXOMJIYBjs.e.call(void 0, ))==null?void 0:r.mfa)==null?void 0:i.relyingParty)||""}),yield new Promise((S,v)=>{e.mfaPromises.submitPromise.current={resolve:S,reject:v}});break;case"passkey":if(typeof n.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let m=yield _chunkEXOMJIYBjs.L.call(void 0, n.mfaCode),h=_chunkEXOMJIYBjs.M.call(void 0, m);(f=e.mfaPromises.rootPromise.current)==null||f.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||((d=(g=_chunkEXOMJIYBjs.e.call(void 0, ))==null?void 0:g.mfa)==null?void 0:d.relyingParty)||"",mfaCode:h}),yield new Promise((S,v)=>{e.mfaPromises.submitPromise.current={resolve:S,reject:v}});break;default:let w=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(w),w}}),[e]),s=_react.useCallback.call(void 0, ()=>_chunkEXOMJIYBjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:c,prompt:s,cancel:o}}function as(){let{client:e}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),t=_react.useCallback.call(void 0, o=>_chunkEXOMJIYBjs.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]),c=_react.useCallback.call(void 0, o=>_chunkEXOMJIYBjs.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]),s=_react.useCallback.call(void 0, o=>_chunkEXOMJIYBjs.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:c,unenrollMfa:s}}var pt=()=>{let{user:e}=_chunkEXOMJIYBjs.q.call(void 0, ),t=_chunkEXOMJIYBjs.r.call(void 0, ),c=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),{entropyId:r,entropyIdVerifier:i}=o;return n.map(a=>({address:a.address,walletIndex:a.wallet_index,chainType:a.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:a,entropyId:r,entropyIdVerifier:i,onNeedsRecovery:g=>_chunkEXOMJIYBjs.d.call(void 0, void 0,null,function*(){var d;yield(d=He())==null?void 0:d(g)})})}))},[t,e]),s=_react.useCallback.call(void 0, (...n)=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[...n],function*({createAdditional:o=!1}={}){let{user:r}=yield t.user.get(),i=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, r);if(!o&&i.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 a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, r);if(!a){let h=yield t.embeddedWallet.create({});return ie(h.user,0),{user:h.user}}let{entropyId:g,entropyIdVerifier:d}=a;if(d==="solana-address-verifier"){let h=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, r),w=yield t.embeddedWallet.create({solanaAccount:h});return ie(w.user,0),{user:w.user}}let l=i.map(h=>h.wallet_index).reduce((h,w)=>Math.max(h,w),0)+1,m=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:l,entropyId:g,entropyIdVerifier:d});return ie(m.user,l),{user:m.user}}),[t]);return{wallets:c,create:s}};function ie(e,t){let c=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(s=>s.wallet_index===t);if(!e||!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var ft=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:s}=_react.useContext.call(void 0, _chunkEXOMJIYBjs.H),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:r,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:o,onError:n}},[o,n]),_react.useEffect.call(void 0, ()=>{s.current={onSuccess:i,onError:r}},[i,r]),t};var wt=()=>{let{user:e}=_chunkEXOMJIYBjs.q.call(void 0, ),t=_chunkEXOMJIYBjs.r.call(void 0, ),c=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:r,entropyIdVerifier:i}=o;return n.map(a=>({address:a.address,walletIndex:a.wallet_index,publicKey:a.public_key,chainType:a.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:a,entropyId:r,entropyIdVerifier:i})}))},[t,e]),s=_react.useCallback.call(void 0, r=>_chunkEXOMJIYBjs.d.call(void 0, void 0,[r],function*({chainType:o,createAdditional:n=!1}){let{user:i}=yield t.user.get(),a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i);if(!a)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:d}=a,f=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, i).filter(w=>w.chain_type===o);if(!n&&f.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let l=f.length===0?0:Math.max(...f.map(w=>w.wallet_index),0)+1,m=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:l,entropyId:g,entropyIdVerifier:d}),h=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, m.user).find(w=>w.chain_type===o&&w.wallet_index===l);if(!m.user||!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:m.user,provider:yield t.embeddedWallet.getBitcoinProvider({wallet:h,entropyId:g,entropyIdVerifier:d})}}),[t]);return{wallets:c,create:s}};exports.a = Wt; exports.b = Lt; exports.c = Nt; exports.d = $t; exports.e = eo; exports.f = ao; exports.g = ho; exports.h = Wo; exports.i = Lo; exports.j = Ho; exports.k = jo; exports.l = Yo; exports.m = cn; exports.n = gn; exports.o = vn; exports.p = Cn; exports.q = Rn; exports.r = Bn; exports.s = zn; exports.t = ei; exports.u = si; exports.v = pi; exports.w = Si; exports.x = et; exports.y = oe; exports.z = Mi; exports.A = Ii; exports.B = Vi; exports.C = zi; exports.D = ts; exports.E = as; exports.F = pt; exports.G = ft; exports.H = wt;
|
|
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 _chunk4Y3LXWMTjs = require('./chunk-4Y3LXWMT.js');var _react = require('react');var _jssdkcore = require('@privy-io/js-sdk-core');var Wt=e=>{let{user:t,client:c,setSiweState:s,siweState:o}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),n=_react.useCallback.call(void 0, a=>{var d;let g=_chunk4Y3LXWMTjs.h.call(void 0, a);return s({status:"error",error:g}),(d=e==null?void 0:e.onError)==null||d.call(e,g),g},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({wallet:a,from:{domain:g,uri:d}}){var l;try{s({status:"generating-message"});let m=yield c.auth.siwe.init(a,g,d);return s({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,m.message),m.message}catch(m){throw n(m)}}),[c,n,e==null?void 0:e.onGenerateMessage]),i=_react.useCallback.call(void 0, d=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[d],function*({signature:a,messageOverride:g}){var f;try{if(!t)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 l=yield c.auth.siwe.linkWithSiwe(a,void 0,g);return s({status:"done"}),(f=e==null?void 0:e.onSuccess)==null||f.call(e,l),l}catch(l){throw n(l)}}),[t,c,n,e==null?void 0:e.onSuccess]);return{generateSiweMessage:r,linkWithSiwe:i,state:o}};var Lt=e=>{let{user:t,client:c,setSiweState:s,siweState:o}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),n=_react.useCallback.call(void 0, a=>{var d;let g=_chunk4Y3LXWMTjs.h.call(void 0, a);return s({status:"error",error:g}),(d=e==null?void 0:e.onError)==null||d.call(e,g),g},[e==null?void 0:e.onError]),r=_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({wallet:a,from:{domain:g,uri:d}}){var l;try{s({status:"generating-message"});let m=yield c.auth.siwe.init(a,g,d);return s({status:"awaiting-signature"}),(l=e==null?void 0:e.onGenerateMessage)==null||l.call(e,m.message),m.message}catch(m){throw n(m)}}),[c,n,e==null?void 0:e.onGenerateMessage]);return{loginWithSiwe:_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({signature:a,messageOverride:g,disableSignup:d}){var l;try{if(t)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 m=_chunk4Y3LXWMTjs.e.call(void 0, ),h=yield c.auth.siwe.loginWithSiwe(a,void 0,g,d?"no-signup":"login-or-sign-up",{embedded:m==null?void 0:m.embedded});return s({status:"done"}),(l=e==null?void 0:e.onSuccess)==null||l.call(e,h.user,h.is_new_user),h.user}catch(m){throw n(m)}}),[t,c,n,e==null?void 0:e.onSuccess]),generateSiweMessage:r,state:o}};var Nt=()=>{let e=_chunk4Y3LXWMTjs.r.call(void 0, ),{user:t}=_chunk4Y3LXWMTjs.q.call(void 0, ),c=_react.useCallback.call(void 0, i=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[i],function*({wallet:{address:o},from:{domain:n,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:o});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:o,domain:n,uri:r,nonce:a})}}catch(a){throw _chunk4Y3LXWMTjs.h.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, a=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[a],function*({signature:o,message:n,wallet:{walletClientType:r,connectorType:i}={}}){try{if(!t)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_siws_before_logged_in",error:"Must be logged in to link a wallet, Use `useLoginWithSiws` to login with a wallet"});return yield e.auth.siws.link({signature:o,message:n,walletClientType:r,connectorType:i})}catch(g){throw _chunk4Y3LXWMTjs.h.call(void 0, g)}}),[t,e]);return{generateMessage:c,link:s}};var $t=()=>{let e=_chunk4Y3LXWMTjs.r.call(void 0, ),{user:t}=_chunk4Y3LXWMTjs.q.call(void 0, ),c=_react.useCallback.call(void 0, i=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[i],function*({wallet:{address:o},from:{domain:n,uri:r}}){try{let{nonce:a}=yield e.auth.siws.fetchNonce({address:o});return{message:_jssdkcore.createSiwsMessage.call(void 0, {address:o,domain:n,uri:r,nonce:a})}}catch(a){throw _chunk4Y3LXWMTjs.h.call(void 0, a)}}),[e]),s=_react.useCallback.call(void 0, g=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[g],function*({signature:o,message:n,wallet:{walletClientType:r,connectorType:i}={},disableSignup:a}){try{if(t)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:o,message:n,walletClientType:r,connectorType:i,mode:a?"no-signup":"login-or-sign-up"})).user}catch(d){throw _chunk4Y3LXWMTjs.h.call(void 0, d)}}),[t,e]);return{generateMessage:c,login:s}};var eo=e=>{let{user:t,client:c}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),s=_react.useCallback.call(void 0, n=>{var i;let r=_chunk4Y3LXWMTjs.h.call(void 0, n);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=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[r],function*({address:n}){var i;try{if(!t)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 a=yield c.auth.siwe.unlinkWallet(n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,a),a}catch(a){throw s(a)}}),[t,c,s,e==null?void 0:e.onSuccess])}};var ao=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunk4Y3LXWMTjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({email:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, l=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[l],function*({code:d,email:f}){var m;try{if(!s)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 h=f||t;if(!h)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 w=yield o.auth.email.linkWithCode(h,d);return r({status:"done"}),(m=e==null?void 0:e.onLinkSuccess)==null||m.call(e,w),w}catch(h){throw i(h)}}),[s,t,r,o,e,i]);return{sendCode:a,linkWithCode:g,state:n}};var ho=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunk4Y3LXWMTjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({email:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.email.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{email:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, m=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[m],function*({code:d,email:f,disableSignup:l}){var h;try{if(s)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 w=f||t;if(!w)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 S=_chunk4Y3LXWMTjs.e.call(void 0, ),v=yield o.auth.email.loginWithCode(w,d,l?"no-signup":"login-or-sign-up",{embedded:S==null?void 0:S.embedded});return r({status:"done"}),(h=e==null?void 0:e.onLoginSuccess)==null||h.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(w){throw i(w)}}),[s,t,r,o,e,i]);return{sendCode:a,loginWithCode:g,state:n}};var Wo=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunk4Y3LXWMTjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({phone:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, l=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[l],function*({code:d,phone:f}){var m;try{if(!s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_sms_before_logged_in",error:"Must be logged in to link a phone number, Use `useLoginWithSMS` to login with a phone number"});if(!(f||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 w=yield o.auth.phone.linkWithCode(f||t,d);return r({status:"done"}),(m=e==null?void 0:e.onLinkSuccess)==null||m.call(e,w),w}catch(h){throw i(h)}}),[s,t,r,o,e,i]);return{sendCode:a,linkWithCode:g,state:n}};var Lo=e=>{let[t,c]=_react.useState.call(void 0, ""),{user:s,client:o,otpState:n,setOtpState:r}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),i=_react.useCallback.call(void 0, d=>{var l;let f=_chunk4Y3LXWMTjs.h.call(void 0, d);return r({status:"error",error:f}),(l=e==null?void 0:e.onError)==null||l.call(e,f),f},[e,r]),a=_react.useCallback.call(void 0, f=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[f],function*({phone:d}){var l;c(d);try{r({status:"sending-code"});let m=yield o.auth.phone.sendCode(d);return r({status:"awaiting-code-input"}),(l=e==null?void 0:e.onSendCodeSuccess)==null||l.call(e,{phone:d}),m}catch(m){throw i(m)}}),[o,i,e,r]),g=_react.useCallback.call(void 0, m=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[m],function*({code:d,phone:f,disableSignup:l}){var h;try{if(s)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_sms_while_already_logged_in",error:"Already logged in, use `useLinkWithSMS` if you are trying to link a phone number to an existing account"});if(!(f||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 S=_chunk4Y3LXWMTjs.e.call(void 0, ),v=yield o.auth.phone.loginWithCode(f||t,d,l?"no-signup":"login-or-sign-up",{embedded:S==null?void 0:S.embedded});return r({status:"done"}),(h=e==null?void 0:e.onLoginSuccess)==null||h.call(e,v.user,v.is_new_user),v==null?void 0:v.user}catch(w){throw i(w)}}),[s,t,r,o,e,i]);return{sendCode:a,loginWithCode:g,state:n}};var _expolinking = require('expo-linking'); var T = _interopRequireWildcard(_expolinking); var H = _interopRequireWildcard(_expolinking); var Ue = _interopRequireWildcard(_expolinking); var N = _interopRequireWildcard(_expolinking); var Ae = _interopRequireWildcard(_expolinking); var Me = _interopRequireWildcard(_expolinking); var Re = _interopRequireWildcard(_expolinking); var Ie = _interopRequireWildcard(_expolinking);var Ho=e=>{let{appState:t,getCurrentAppState:c}=_chunk4Y3LXWMTjs.j.call(void 0, ),{client:s,user:o,farcasterState:n,setFarcasterState:r}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, f=>{var m;let l=_chunk4Y3LXWMTjs.h.call(void 0, f);return r({status:"error",error:l}),(m=e==null?void 0:e.onError)==null||m.call(e,l),l},[e==null?void 0:e.onError,r]),g=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{linkWithFarcaster:_react.useCallback.call(void 0, (h,...w)=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[h,...w],function*({relyingParty:f,redirectUrl:l},m={pollAttempts:10,pollIntervalMs:1e3}){var S;try{if(i.current=!1,!o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_link_farcaster_before_logged_in",error:"Must be logged in to link a Farcaster account."});r({status:"generating-uri"});let{connect_uri:v,channel_token:E}=yield s.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:T.createURL(l!=null?l:"/")});if(!v)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield T.openURL(v),r({status:"polling-status"});let P=0;for(;P<m.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&c()!=="active"){yield _chunk4Y3LXWMTjs.i.call(void 0, m.pollIntervalMs);continue}let A=yield s.auth.farcaster.getFarcasterStatus({channel_token:E});if(A.state==="completed"){r({status:"submitting-token"});let L=yield s.auth.farcaster.link(_chunk4Y3LXWMTjs.a.call(void 0, {channel_token:E},A));return r({status:"done"}),(S=e==null?void 0:e.onSuccess)==null||S.call(e,L),L}P++,yield _chunk4Y3LXWMTjs.i.call(void 0, m.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(v){throw a(v)}}),[s,e==null?void 0:e.onSuccess,a,r,o]),state:n,cancel:g}};var jo=e=>{let{client:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useCallback.call(void 0, o=>{var r;let n=_chunk4Y3LXWMTjs.h.call(void 0, o);return(r=e==null?void 0:e.onError)==null||r.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkFarcaster:_react.useCallback.call(void 0, n=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[n],function*({fid:o}){var r;try{let i=yield t.auth.farcaster.unlink({fid:o});return(r=e==null?void 0:e.onSuccess)==null||r.call(e,i),i}catch(i){throw c(i)}}),[t,e==null?void 0:e.onSuccess,c])}};var Yo=e=>{let{appState:t,getCurrentAppState:c}=_chunk4Y3LXWMTjs.j.call(void 0, ),{client:s,user:o,farcasterState:n,setFarcasterState:r}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),i=_react.useRef.call(void 0, !1),a=_react.useCallback.call(void 0, f=>{var m;let l=_chunk4Y3LXWMTjs.h.call(void 0, f);return r({status:"error",error:l}),(m=e==null?void 0:e.onError)==null||m.call(e,l),l},[e==null?void 0:e.onError,r]),g=_react.useCallback.call(void 0, ()=>{i.current=!0},[]);return{loginWithFarcaster:_react.useCallback.call(void 0, (w,...S)=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[w,...S],function*({relyingParty:f,redirectUrl:l,disableSignup:m},h={pollAttempts:10,pollIntervalMs:1e3}){var v;try{if(i.current=!1,o)throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_login_with_farcaster_while_already_logged_in",error:"Already logged in, use `useLinkWithFarcaster` if you are trying to link farcaster to an existing account"});r({status:"generating-uri"});let{connect_uri:E,channel_token:P}=yield s.auth.farcaster.initializeAuth({relyingParty:f,redirectUrl:H.createURL(l!=null?l:"/")});if(!E)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_uri",error:"Failed to generate farcaster uri"});if(!P)throw new (0, _jssdkcore.PrivyClientError)({code:"failed_to_generate_farcaster_channel_token",error:"Failed to generate farcaster channel token"});yield H.openURL(E),r({status:"polling-status"});let A=0;for(;A<h.pollAttempts;){if(i.current)throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_canceled",error:"Farcaster polling canceled"});if(t.current!=="active"&&c()!=="active"){yield _chunk4Y3LXWMTjs.i.call(void 0, h.pollIntervalMs);continue}let L=yield s.auth.farcaster.getFarcasterStatus({channel_token:P});if(L.state==="completed"){r({status:"submitting-token"});let V=_chunk4Y3LXWMTjs.e.call(void 0, ),j=yield s.auth.farcaster.authenticate(_chunk4Y3LXWMTjs.a.call(void 0, {channel_token:P,mode:m?"no-signup":"login-or-sign-up"},L),{embedded:V==null?void 0:V.embedded});return r({status:"done"}),(v=e==null?void 0:e.onSuccess)==null||v.call(e,j.user,j.is_new_user),j.user}A++,yield _chunk4Y3LXWMTjs.i.call(void 0, h.pollIntervalMs)}throw new (0, _jssdkcore.PrivyClientError)({code:"farcaster_polling_timeout",error:"Farcasting polling timed out"})}catch(E){throw a(E)}}),[s,a,e==null?void 0:e.onSuccess,r,o,t]),state:n,cancel:g}};var _zustand = require('zustand');var re=_zustand.create.call(void 0, ()=>({status:"initial"})),_=e=>re.setState(e,!0),hr=re.getState,cn= exports.m =()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=re(),s=_react.useCallback.call(void 0, ()=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){try{_({status:"fetching-nonce"});let n=yield e.auth.farcasterV2.initializeAuth();return _({status:"awaiting-signature"}),n}catch(n){let r=_chunk4Y3LXWMTjs.h.call(void 0, n);throw _({status:"initial",error:r}),r}}),[e]),o=_react.useCallback.call(void 0, n=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){let r=hr().status;try{if(t){let g=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 _({status:r,error:g}),g}_({status:"submitting-signature"});let i=_chunk4Y3LXWMTjs.e.call(void 0, ),a=yield e.auth.farcasterV2.authenticate(n,{embedded:i==null?void 0:i.embedded});return _({status:"done"}),setTimeout(()=>_({status:"initial"}),1500),{user:a.user}}catch(i){let a=_chunk4Y3LXWMTjs.h.call(void 0, i);throw _({status:r,error:a}),a}}),[e,t]);return{init:s,login:o,state:c}};var gn=e=>{let{client:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useCallback.call(void 0, o=>{var r;let n=_chunk4Y3LXWMTjs.h.call(void 0, o);return(r=e==null?void 0:e.onError)==null||r.call(e,n),n},[e==null?void 0:e.onError]);return{unlinkOAuth:_react.useCallback.call(void 0, r=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[r],function*({provider:o,subject:n}){var i;try{let a=yield t.auth.oauth.unlink(o,n);return(i=e==null?void 0:e.onSuccess)==null||i.call(e,a),a}catch(a){throw c(a)}}),[t,e==null?void 0:e.onSuccess,c])}};var vn=e=>{let{client:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useRef.call(void 0, e.onOAuthTokenGrant);c.current=e.onOAuthTokenGrant,_react.useEffect.call(void 0, ()=>{let{unsubscribe:s}=t.addOAuthTokensListener(o=>{c.current(o)});return s},[t])};var Cn=()=>{let{client:e}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H);return _react.useMemo.call(void 0, ()=>({delegateWallet:_jssdkcore.delegatedActions.delegateWallet(e),revokeWallets:_jssdkcore.delegatedActions.revokeWallets(e)}),[e])};var _expowebbrowser = require('expo-web-browser'); var Pe = _interopRequireWildcard(_expowebbrowser);var _reactnative = require('react-native');var b=e=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){let t;_reactnative.Platform.OS==="android"&&(t=Wr());let c=yield Pe.openAuthSessionAsync(e),s;if(_reactnative.Platform.OS==="android")s=yield t;else{if(c.type!=="success")throw new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_failed",error:"OAuth session failed"});s=c.url}return Cr(s)});function Wr(){let e;return new Promise((t,c)=>{e=N.addEventListener("url",({url:s})=>{s&&t(s)}),setTimeout(()=>{c(new (0, _jssdkcore.PrivyClientError)({code:"oauth_session_timeout",error:"OAuth session timed out"}))},Er)}).finally(()=>{e==null||e.remove()})}function Cr(e){let{queryParams:t}=N.parse(e);return t}var Er=2*60*1e3;var Rn=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.loginWithCrossAppAuth({client:e,openAuthSession:b}),[e]);return{loginWithCrossApp:_react.useCallback.call(void 0, r=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[r],function*({appId:o,redirectUri:n}){if(t)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:i}=yield c({providerAppId:o,redirectUrl:Ue.createURL(n||"/")});return{user:i}}),[t,c])}};var Bn=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.linkWithCrossAppAuth({client:e,openAuthSession:b}),[e]);return{linkWithCrossApp:_react.useCallback.call(void 0, r=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[r],function*({appId:o,redirectUri:n}){if(!t)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 c({providerAppId:o,redirectUrl:Ae.createURL(n||"/")})}}),[t,c])}};var zn=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signMessage({client:e,openAuthSession:b}),[e]);return _react.useMemo.call(void 0, ()=>({signMessage:({address:s,message:o,redirectUri:n="/"})=>c({user:t,address:s,message:o,redirectUrl:Me.createURL(n)})}),[t,c])};var ei=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.signTypedData({client:e,openAuthSession:b}),[e]);return _react.useMemo.call(void 0, ()=>({signTypedData:({address:s,typedData:o,redirectUri:n="/"})=>c({user:t,address:s,typedData:o,redirectUrl:Re.createURL(n)})}),[t,c])};var si=()=>{let{client:e,user:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),c=_react.useMemo.call(void 0, ()=>_jssdkcore.crossApp.wallet.sendTransaction({client:e,openAuthSession:b}),[e]);return _react.useMemo.call(void 0, ()=>({sendTransaction:({address:s,transaction:o,redirectUri:n="/"})=>c({user:t,address:s,transaction:o,redirectUrl:Ie.createURL(n)})}),[t,c])};var pi=()=>{let{user:e,client:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H);return{setRecovery:_react.useCallback.call(void 0, s=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){var i;let o=t.app.appId;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let n=(i=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?i:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!n)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});try{n.chain_type==="ethereum"?yield t.embeddedWallet.getProvider(n):n.chain_type==="solana"&&(yield t.embeddedWallet.getSolanaProvider(n,n.address,"solana-address-verifier"))}catch(a){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}_jssdkcore.throwIfInvalidRecoveryUpgradePath.call(void 0, {currentRecoveryMethod:n.recovery_method,upgradeToRecoveryMethod:s.recoveryMethod});let r=yield $r({appId:o,client:t,user:e,primaryAccount:n,recoveryParams:s});try{let{user:a}=yield t.embeddedWallet.setRecovery(r);return{user:a}}catch(a){throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_set_recovery_error",error:a instanceof Error?a.message:"Error setting password on embedded wallet"})}}),[t,e])}},$r=n=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[n],function*({appId:e,client:t,user:c,primaryAccount:s,recoveryParams:o}){switch(o.recoveryMethod){case"privy":return{recoveryMethod:"privy",wallet:s};case"user-passcode":return _chunk4Y3LXWMTjs.b.call(void 0, _chunk4Y3LXWMTjs.a.call(void 0, {},o),{wallet:s});case"google-drive":{let r=yield _chunk4Y3LXWMTjs.k.call(void 0, t);return{recoveryMethod:"google-drive",wallet:s,recoveryAccessToken:r}}case"icloud":{let{recoverySecret:r,iCloudRecordName:i}=yield _chunk4Y3LXWMTjs.f.call(void 0, {appId:e,client:t,user:c});return{recoveryMethod:"icloud-native",recoverySecretOverride:r,iCloudRecordNameOverride:i,wallet:s}}case"recovery-encryption-key":return{recoveryMethod:"recovery-encryption-key",wallet:s,recoveryKey:o.recoveryKey};default:throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"Unrecognized recovery method"})}});var Si=()=>{let{user:e,client:t}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H);return{recover:_react.useCallback.call(void 0, s=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){var g;if(!e)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_recovery_error",error:"User must be loaded before attempting to modify the recovery method."});let o=(g=_jssdkcore.getUserEmbeddedEthereumWallet.call(void 0, e))!=null?g:_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, e);if(!o)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_does_not_exist",error:"Embedded wallet does not exist"});let n,r,i,a;switch(s.recoveryMethod){case"user-passcode":r=s.password;break;case"google-drive":i=yield _chunk4Y3LXWMTjs.k.call(void 0, t);break;case"icloud":let{recoverySecret:d}=yield _chunk4Y3LXWMTjs.g.call(void 0, {client:t,walletAddress:o.address,chainType:o.chain_type});a=d;break;case"recovery-encryption-key":n=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 t.embeddedWallet.getProvider(o,r,i,a,n):o.chain_type==="solana"&&(yield t.embeddedWallet.getSolanaProvider(o,o.address,"solana-address-verifier",r,i,a))}catch(d){throw new (0, _jssdkcore.PrivyClientError)({code:"attempted_to_set_password_before_connected",error:"Embedded wallet must be connected before setting password"})}}),[t,e])}};var Te=_zustand.create.call(void 0, ()=>({status:"disconnected"})),He=()=>Te.getState().onNeedsRecovery,et= exports.x =e=>{_react.useEffect.call(void 0, ()=>{Te.setState({onNeedsRecovery:e==null?void 0:e.onNeedsRecovery})},[e==null?void 0:e.onNeedsRecovery])};var oe=(e={})=>{let{wallet:t,createWalletCallbacks:c,recoverWalletCallbacks:s,setWalletRecoveryCallbacks:o}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),{onCreateWalletSuccess:n,onCreateWalletError:r,onRecoverWalletError:i,onRecoverWalletSuccess:a,onSetWalletRecoverySuccess:g,onSetWalletRecoveryError:d}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:n,onError:r}},[n,r]),_react.useEffect.call(void 0, ()=>{s.current={onSuccess:a,onError:i}},[a,i]),_react.useEffect.call(void 0, ()=>{o.current={onSuccess:g,onError:d}},[a,i]),t};var Mi=({onStateChange:e})=>{let t=oe();return _react.useEffect.call(void 0, ()=>{e(t)},[t])};var Ii=()=>{let{getIdentityToken:e}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H);return{getIdentityToken:e}};var Vi=e=>{let{user:t,client:c}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),s=_react.useCallback.call(void 0, n=>{var i;let r=_chunk4Y3LXWMTjs.h.call(void 0, n);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, ()=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){var n;try{if(t)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 r=_chunk4Y3LXWMTjs.e.call(void 0, ),i=yield c.auth.guest.create({embedded:r==null?void 0:r.embedded});return(n=e==null?void 0:e.onSuccess)==null||n.call(e,i.user,i.is_new_user),i.user}catch(r){throw s(r)}}),[c,s,t,e==null?void 0:e.onSuccess])}};function zi({onMfaRequired:e}){let{client:t,user:c}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H);_react.useEffect.call(void 0, ()=>{function s(){return _chunk4Y3LXWMTjs.d.call(void 0, this,null,function*(){var o;yield e((o=c==null?void 0:c.mfa_methods.map(({type:n})=>n))!=null?o:[])})}return t.mfaPromises.on("mfaRequired",s),()=>{t.mfaPromises.off("mfaRequired",s)}},[t,c,e])}function ts(){let{client:e}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),t=_react.useCallback.call(void 0, n=>_chunk4Y3LXWMTjs.d.call(void 0, this,null,function*(){var r,i;switch(n.method){case"sms":yield e.mfa.sms.sendCode({action:"verify"});return;case"passkey":let{options:a}=yield e.mfa.passkey.generateAuthenticationOptions({relying_party:n.relyingParty||((i=(r=_chunk4Y3LXWMTjs.e.call(void 0, ))==null?void 0:r.mfa)==null?void 0:i.relyingParty)});return _chunk4Y3LXWMTjs.N.call(void 0, a);case"totp":return;default:throw new Error(`Unsupported MFA method: ${n.mfaMethod}`)}}),[e]),c=_react.useCallback.call(void 0, n=>_chunk4Y3LXWMTjs.d.call(void 0, this,null,function*(){var r,i,a,g,d,f,l;switch(n.method){case"totp":case"sms":if(typeof n.mfaCode!="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_mfa_code",error:"Invalid MFA code"});(a=e.mfaPromises.rootPromise.current)==null||a.resolve({mfaMethod:n.method,mfaCode:n.mfaCode,relyingParty:n.relyingParty||((i=(r=_chunk4Y3LXWMTjs.e.call(void 0, ))==null?void 0:r.mfa)==null?void 0:i.relyingParty)||""}),yield new Promise((S,v)=>{e.mfaPromises.submitPromise.current={resolve:S,reject:v}});break;case"passkey":if(typeof n.mfaCode=="string")throw new (0, _jssdkcore.PrivyClientError)({code:"invalid_passkey_response",error:"Invalid authenticator response"});let m=yield _chunk4Y3LXWMTjs.L.call(void 0, n.mfaCode),h=_chunk4Y3LXWMTjs.M.call(void 0, m);(f=e.mfaPromises.rootPromise.current)==null||f.resolve({mfaMethod:n.method,relyingParty:n.relyingParty||((d=(g=_chunk4Y3LXWMTjs.e.call(void 0, ))==null?void 0:g.mfa)==null?void 0:d.relyingParty)||"",mfaCode:h}),yield new Promise((S,v)=>{e.mfaPromises.submitPromise.current={resolve:S,reject:v}});break;default:let w=new (0, _jssdkcore.PrivyClientError)({code:"unsupported_mfa_method",error:"Unsupported MFA method"});throw(l=e.mfaPromises.rootPromise.current)==null||l.reject(w),w}}),[e]),s=_react.useCallback.call(void 0, ()=>_chunk4Y3LXWMTjs.d.call(void 0, this,null,function*(){yield e.mfa.verifyMfa()}),[e]),o=_react.useCallback.call(void 0, ()=>{var n;(n=e.mfaPromises.rootPromise.current)==null||n.reject(new (0, _jssdkcore.PrivyClientError)({code:"mfa_canceled",error:"MFA canceled"}))},[e]);return{init:t,submit:c,prompt:s,cancel:o}}function as(){let{client:e}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),t=_react.useCallback.call(void 0, o=>_chunk4Y3LXWMTjs.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]),c=_react.useCallback.call(void 0, o=>_chunk4Y3LXWMTjs.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]),s=_react.useCallback.call(void 0, o=>_chunk4Y3LXWMTjs.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:c,unenrollMfa:s}}var pt=()=>{let{user:e}=_chunk4Y3LXWMTjs.q.call(void 0, ),t=_chunk4Y3LXWMTjs.r.call(void 0, ),c=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e),{entropyId:r,entropyIdVerifier:i}=o;return n.map(a=>({address:a.address,walletIndex:a.wallet_index,chainType:a.chain_type,getProvider:()=>t.embeddedWallet.getEthereumProvider({wallet:a,entropyId:r,entropyIdVerifier:i,onNeedsRecovery:g=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,null,function*(){var d;yield(d=He())==null?void 0:d(g)})})}))},[t,e]),s=_react.useCallback.call(void 0, (...n)=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[...n],function*({createAdditional:o=!1}={}){let{user:r}=yield t.user.get(),i=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, r);if(!o&&i.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 a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, r);if(!a){let h=yield t.embeddedWallet.create({});return ie(h.user,0),{user:h.user}}let{entropyId:g,entropyIdVerifier:d}=a;if(d==="solana-address-verifier"){let h=_jssdkcore.getUserEmbeddedSolanaWallet.call(void 0, r),w=yield t.embeddedWallet.create({solanaAccount:h});return ie(w.user,0),{user:w.user}}let l=i.map(h=>h.wallet_index).reduce((h,w)=>Math.max(h,w),0)+1,m=yield t.embeddedWallet.add({chainType:"ethereum",hdWalletIndex:l,entropyId:g,entropyIdVerifier:d});return ie(m.user,l),{user:m.user}}),[t]);return{wallets:c,create:s}};function ie(e,t){let c=_jssdkcore.getAllUserEmbeddedEthereumWallets.call(void 0, e).find(s=>s.wallet_index===t);if(!e||!c)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"})}var ft=(e={})=>{let{solanaWallet:t,createSolanaWalletCallbacks:c,recoverSolanaWalletCallbacks:s}=_react.useContext.call(void 0, _chunk4Y3LXWMTjs.H),{onCreateWalletSuccess:o,onCreateWalletError:n,onRecoverWalletError:r,onRecoverWalletSuccess:i}=e;return _react.useEffect.call(void 0, ()=>{c.current={onSuccess:o,onError:n}},[o,n]),_react.useEffect.call(void 0, ()=>{s.current={onSuccess:i,onError:r}},[i,r]),t};var wt=()=>{let{user:e}=_chunk4Y3LXWMTjs.q.call(void 0, ),t=_chunk4Y3LXWMTjs.r.call(void 0, ),c=_react.useMemo.call(void 0, ()=>{let o=_jssdkcore.getEntropyDetailsFromUser.call(void 0, e);if(!o)return[];let n=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, e),{entropyId:r,entropyIdVerifier:i}=o;return n.map(a=>({address:a.address,walletIndex:a.wallet_index,publicKey:a.public_key,chainType:a.chain_type,getProvider:()=>t.embeddedWallet.getBitcoinProvider({wallet:a,entropyId:r,entropyIdVerifier:i})}))},[t,e]),s=_react.useCallback.call(void 0, r=>_chunk4Y3LXWMTjs.d.call(void 0, void 0,[r],function*({chainType:o,createAdditional:n=!1}){let{user:i}=yield t.user.get(),a=_jssdkcore.getEntropyDetailsFromUser.call(void 0, i);if(!a)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:d}=a,f=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, i).filter(w=>w.chain_type===o);if(!n&&f.length>0)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Wallet already exists for this user. Set `createAdditional` to `true` to create another wallet"});let l=f.length===0?0:Math.max(...f.map(w=>w.wallet_index),0)+1,m=yield t.embeddedWallet.add({chainType:o,hdWalletIndex:l,entropyId:g,entropyIdVerifier:d}),h=_jssdkcore.getAllUserEmbeddedBitcoinWallets.call(void 0, m.user).find(w=>w.chain_type===o&&w.wallet_index===l);if(!m.user||!h)throw new (0, _jssdkcore.PrivyClientError)({code:"embedded_wallet_creation_error",error:"Unknown error creating wallet"});return{user:m.user,provider:yield t.embeddedWallet.getBitcoinProvider({wallet:h,entropyId:g,entropyIdVerifier:d})}}),[t]);return{wallets:c,create:s}};exports.a = Wt; exports.b = Lt; exports.c = Nt; exports.d = $t; exports.e = eo; exports.f = ao; exports.g = ho; exports.h = Wo; exports.i = Lo; exports.j = Ho; exports.k = jo; exports.l = Yo; exports.m = cn; exports.n = gn; exports.o = vn; exports.p = Cn; exports.q = Rn; exports.r = Bn; exports.s = zn; exports.t = ei; exports.u = si; exports.v = pi; exports.w = Si; exports.x = et; exports.y = oe; exports.z = Mi; exports.A = Ii; exports.B = Vi; exports.C = zi; exports.D = ts; exports.E = as; exports.F = pt; exports.G = ft; exports.H = wt;
|