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