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