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