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