@particle-network/auth-core
Version:
## Start
3 lines (2 loc) • 45.8 kB
JavaScript
var Ve=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var a=(e,t,r)=>(Ve(e,t,"read from private field"),r?r.call(e):t.get(e)),y=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},I=(e,t,r,n)=>(Ve(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var A=(e,t,r)=>(Ve(e,t,"access private method"),r);var st=(d=>(d[d.SystemError=10001]="SystemError",d[d.ParamError=10002]="ParamError",d[d.AuthorizationError=10004]="AuthorizationError",d[d.InvalidToken=10005]="InvalidToken",d[d.MacError=10009]="MacError",d[d.InvalidCode=20101]="InvalidCode",d[d.ResendCode=20103]="ResendCode",d[d.SecurityAccountFrozen=50010]="SecurityAccountFrozen",d[d.WrongPaymentPassword=50102]="WrongPaymentPassword",d))(st||{});function it(e){return e&&e.message&&typeof e.error_code=="number"&&e.error_code>0}function ot(e){return e&&e.message&&typeof e.code=="number"}var Ot=(T=>(T.email="email",T.phone="phone",T.facebook="facebook",T.google="google",T.apple="apple",T.twitter="twitter",T.discord="discord",T.github="github",T.twitch="twitch",T.microsoft="microsoft",T.linkedin="linkedin",T.jwt="jwt",T.telegram="telegram",T))(Ot||{}),Zr=e=>["facebook","google","apple","twitter","discord","github","twitch","microsoft","linkedin"].includes(e);var qt=(n=>(n[n.KMS_AES=0]="KMS_AES",n[n.KMS_AES_WITH_DATA_KEY_AND_DEFAULT_MASTER_PASSWORD=1]="KMS_AES_WITH_DATA_KEY_AND_DEFAULT_MASTER_PASSWORD",n[n.KMS_AES_WITH_DATA_KEY_AND_MASTER_PASSWORD=2]="KMS_AES_WITH_DATA_KEY_AND_MASTER_PASSWORD",n))(qt||{});var Ht=(t=>(t.enhancedDeserializeTransaction="enhancedDeserializeTransaction",t))(Ht||{}),jt=(i=>(i.deserializeTransaction="particle_deserializeTransaction",i.deserializeTypedData="particle_deserializeTypedData",i.suggestedGasFees="particle_suggestedGasFees",i.getPrice="particle_getPrice",i.getPendingTransactionsByAddress="particle_getPendingTransactionsByAddress",i))(jt||{}),zt=(d=>(d.NativeTransfer="native_transfer",d.ERC20_TRANSFER="erc20_transfer",d.ERC20_APPROVE="erc20_approve",d.ERC721_TRANFER="erc721_transfer",d.ERC1155_TRANFER="erc1155_transfer",d.SEAPORT_FULFILL_ORDER="seaport_fulfill_order",d.SEAPORT_CANCEL_ORDER="seaport_cancel_order",d.SEAPORT_NFT_LISTING="seaport_nft_listing",d.OTHER="other",d))(zt||{}),Ft=(s=>(s.custom="custom",s.low="low",s.medium="medium",s.high="high",s))(Ft||{});var K=e=>{let{mac_key:t,cognito_result:r,wallets:n,...s}=e;return{...s,wallets:n.map(i=>{let{uuid:u,chain_name:o,public_address:p}=i;return{uuid:u,chain_name:o,public_address:p}})}};var S=(e,t)=>{if(!e)throw t?typeof t=="string"?new Error(t):t:new Error("Required conditions not met")},b=(e,t)=>{if(e!=null)return e;throw t?typeof t=="string"?new Error(t):t:new Error("Param is null or undefined")};function D(e){return e==null}var $t=(o=>(o.RequestEthereumAccount="requestEthereumAccount",o.RequestSolanaAccount="requestSolanaAccount",o.ParticleAuthConnect="particleAuthConnect",o.ParticleAuthDisconnect="particleAuthDisconnect",o.UserInfoChanged="userInfoChanged",o.MasterPasswordChanged="masterPasswordChanged",o.ParticleWalletRestored="particleWalletRestored",o))($t||{});var Gt=(t=>(t.CloudflareToken="particle-auth-core-cloudflareToken",t))(Gt||{});var Yt=(s=>(s.signTransaction="signTransaction",s.signAndSendTransaction="signAndSendTransaction",s.signMessage="signMessage",s.signAllTransactions="signAllTransactions",s))(Yt||{}),We=(w=>(w.ethSignTransaction="eth_signTransaction",w.ethSign="eth_sign",w.walletWatchAsset="wallet_watchAsset",w.ethRequestAccounts="eth_requestAccounts",w.ethAccounts="eth_accounts",w.ethChainId="eth_chainId",w.ethSendTransaction="eth_sendTransaction",w.ethSignTypedData="eth_signTypedData",w.ethSignTypedDataV1="eth_signTypedData_v1",w.ethSignTypedDataV3="eth_signTypedData_v3",w.ethSignTypedDataV4="eth_signTypedData_v4",w.personalSign="personal_sign",w.ethSignTypedDataV4Uniq="eth_signTypedData_v4_uniq",w.personalSignUniq="personal_sign_uniq",w.walletSwitchEthereumChain="wallet_switchEthereumChain",w.walletAddEthereumChain="wallet_addEthereumChain",w))(We||{});var Jt=(r=>(r.EVM="evm_chain",r.Solana="solana",r))(Jt||{});var Qt=(n=>(n.V1="V1",n.V3="V3",n.V4="V4",n))(Qt||{});import{BI as nr}from"@particle-network/analytics";import{v4 as mt}from"uuid";import at from"crypto-js/aes.js";import Xt from"crypto-js/enc-utf8.js";import ct from"crypto-js/md5.js";var N=()=>typeof window=="undefined";var re,H,M,pe,ut,ge,lt,he,dt,Be=class{constructor(){y(this,pe);y(this,ge);y(this,he);y(this,re,"particle-auth-core/");y(this,H,"");y(this,M,"")}init(t){I(this,H,t);let r="particle.network";typeof window!="undefined"&&(r=window.location.origin),I(this,M,ct(`${r}/${a(this,H)}`).toString().toLowerCase())}clear(){let t=[],r=localStorage.length;for(let n=0;n<r;n++){let s=localStorage.key(n);s!=null&&s.startsWith(a(this,re))&&t.push(s)}t.forEach(n=>localStorage.removeItem(n))}getItem(t){if(typeof window=="undefined")return null;let r=localStorage.getItem(this.getStorageKey(t));return r!=null&&r.length>0?A(this,he,dt).call(this,r):r}removeItem(t){localStorage.removeItem(this.getStorageKey(t))}setItem(t,r){if(N())return;let n=r;r.length>0&&(n=A(this,ge,lt).call(this,r)),localStorage.setItem(this.getStorageKey(t),n)}getStorageKey(t){return a(this,re)+A(this,pe,ut).call(this,t)}};re=new WeakMap,H=new WeakMap,M=new WeakMap,pe=new WeakSet,ut=function(t){return S(a(this,H),"please init AuthCore first!"),ct(`${a(this,H)}/${t}`).toString().toLowerCase()},ge=new WeakSet,lt=function(t){return S(a(this,M),"please init AuthCore first!"),at.encrypt(t,a(this,M)).toString()},he=new WeakSet,dt=function(t){return S(a(this,M),"please init AuthCore first!"),at.decrypt(t,a(this,M)).toString(Xt)};var Zt=new Be,x=Zt;import er from"events";var pt=new er;pt.setMaxListeners(500);var _=pt;var tr={setUserInfo(e){let t=this.getUserInfo();e?x.setItem("user_info",JSON.stringify(e)):x.removeItem("user_info"),JSON.stringify(t)!==JSON.stringify(e)&&_.emit("userInfoChanged",e?K(e):void 0)},getUserInfo(){let e=x.getItem("user_info");if(e)return JSON.parse(e)},isLogin(){return Boolean(this.getUserInfo())},getUserToken(){let e=this.getUserInfo();if(e)return e.token},getCognitoResult(){let e=this.getUserInfo();if(e)return e.cognito_result},getSecurityAccount(){let e=this.getUserInfo();if(e)return e.security_account},setLatestAuthType(e){localStorage.setItem("particle-auth/latest-auth-type",e==="twitterv1"?"twitter":e)},getLatestAuthType(){return typeof window!="undefined"?localStorage.getItem("particle-auth/latest-auth-type"):null},updateWallet(e){let t=this.getUserInfo();if(t){for(let r=0;r<t.wallets.length;r++)if(t.wallets[r].uuid===e.uuid){t.wallets[r]=e,this.setUserInfo(t);break}}},updateCognitoResult(e){let t=this.getUserInfo();t&&(t.cognito_result=e,this.setUserInfo(t))},updateSecurityAccount(e){let t=this.getUserInfo();t&&(t.security_account=e,this.setUserInfo(t))},hasPaymentPassword(){var e;return Boolean((e=this.getSecurityAccount())==null?void 0:e.has_set_payment_password)},hasMasterPassword(){var e;return Boolean((e=this.getSecurityAccount())==null?void 0:e.has_set_master_password)},getEVMWallet(){let e=this.getUserInfo();return e==null?void 0:e.wallets.find(t=>t.chain_name==="evm_chain")},getSolanaWallet(){let e=this.getUserInfo();return e==null?void 0:e.wallets.find(t=>t.chain_name==="solana")}},c=tr;var gt=()=>Number(x.getItem("evm_chain_id")),me=e=>{x.setItem("evm_chain_id",e.toString())},ht=()=>Number(x.getItem("solana_chain_id")),fe=e=>{x.setItem("solana_chain_id",e.toString())};var F,ye,we,_e,Ne=class{constructor(){y(this,F,void 0);this.initialized=!1;y(this,ye,{basicUsername:"test_user",basicPassword:"test_pass",baseUrl:"https://api-debug.particle.network",rpcUrl:"https://rpc-debug.particle.network",authCore:"https://core-debug.particle.network"});y(this,we,{basicUsername:"PcJBtrqq69TDpQtY",basicPassword:"oGjPXSgKP9QtmxWQUkrfrUvvmsG62t",baseUrl:"https://api.particle.network",rpcUrl:"https://rpc.particle.network",authCore:"https://core.particle.network"});y(this,_e,{basicUsername:"PcJBtrqq69TDpQtY",basicPassword:"oGjPXSgKP9QtmxWQUkrfrUvvmsG62t",baseUrl:"https://api.particle.network",rpcUrl:"https://rpc.particle.network",authCore:"https://core.particle.network"})}init(t){I(this,F,t),this.initialized=!0}get authOptions(){return S(a(this,F),"Please init AuthCore first!"),a(this,F)}get version(){return"web_3.0.0-alpha.3"}get deviceId(){if(typeof window=="undefined")return mt();{let t="pn_device_id",r=x.getItem(t);return r||(r=mt(),x.setItem(t,r)),r}}get env(){return!N()&&window.__PARTICLE_ENVIRONMENT__==="development"?a(this,ye):!N()&&window.__PARTICLE_ENVIRONMENT__==="staging"?a(this,we):a(this,_e)}};F=new WeakMap,ye=new WeakMap,we=new WeakMap,_e=new WeakMap;var rr=new Ne,l=rr;var ft=()=>{try{window.__particleAnalytics||(window.__particleAnalytics=new nr({sdk_api_domain:l.env.baseUrl,device_id:l.deviceId,sdk_version:l.version,project_config:{project_uuid:l.authOptions.projectId,project_key:l.authOptions.clientKey,project_app_uuid:l.authOptions.appId}}))}catch{}return window.__particleAnalytics},zn=e=>{var t;N()||(t=ft())==null||t.records(e)},xe=e=>{var t;N()||(t=ft())==null||t.active(e)};import At from"crypto-js/enc-hex.js";import sr from"crypto-js/sha256.js";var wt="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",yt=wt.split("").reduce((e,t,r)=>(e[t]=r,e),{}),ne=58,_t=e=>{if(e.length===0)return"";let t=[0];for(let r=0;r<e.length;r++){for(let s=0;s<t.length;s++)t[s]<<=8;t[0]+=e[r];let n=0;for(let s=0;s<t.length;++s)t[s]+=n,n=t[s]/ne|0,t[s]%=ne;for(;n;)t.push(n%ne),n=n/ne|0}for(let r=0;e[r]===0&&r<e.length-1;r++)t.push(0);return[...t].reverse().map(r=>wt[r]).join("")},xt=e=>{if(e.length===0)return[];let t=[0];for(let r=0;r<e.length;r++){let n=e[r];if(!(n in yt))throw new Error("Non-base58 character");for(let i=0;i<t.length;i++)t[i]*=ne;t[0]+=yt[n];let s=0;for(let i=0;i<t.length;++i)t[i]+=s,s=t[i]>>8,t[i]&=255;for(;s;)t.push(s&255),s>>=8}for(let r=0;e[r]==="1"&&r<e.length-1;r++)t.push(0);return t.reverse()};var Ae=e=>At.stringify(sr(At.parse(e))),ir=e=>{let t=`41${e.substring(2)}`,n=Ae(Ae(t)).substring(0,8),s=Buffer.from(t+n,"hex");return _t(s)},or=e=>{if(e.length<=4)throw new Error("Invalid address provided");let t=Buffer.from(xt(e)).toString("hex"),r=t.substring(t.length-8,t.length);t=t.substring(0,t.length-8);let n=Ae(Ae(t)).substring(0,8);if(`${r}`==`${n}`)return`0x${t.substring(2)}`;throw new Error("Invalid address provided")};import{defineChain as ar}from"viem";var es="https://static.particle.network/token-list/defaultToken/default.png",ts=ar({id:101,name:"Solana",nativeCurrency:{decimals:9,name:"Solana SOL",symbol:"SOL"},rpcUrls:{default:{http:["https://api.mainnet-beta.solana.com"]}},blockExplorers:{default:{name:"Explorer",url:"https://solscan.io"}},custom:{chainType:"solana"}}),Se=()=>[];function St(e){Se=e}function Tt(e){let t;return typeof e=="string"||typeof e=="number"?t=j(Number(e)):t=j(e.id),t!==void 0&&t.name.toLowerCase()==="tron"}function rs(e){let{id:t}=e;return Se().find(r=>r.id===t)}var O=e=>{var t;return((t=e==null?void 0:e.custom)==null?void 0:t.chainType)||"evm"},cr=()=>Se().filter(e=>O(e)==="evm"),ur=()=>Se().filter(e=>O(e)==="solana"),j=e=>{var t;return(t=cr())==null?void 0:t.find(r=>r.id===e)},ns=e=>{var r,n;if(e&&typeof e!="number"&&typeof((r=e==null?void 0:e.custom)==null?void 0:r.icon)=="string")return(n=e.custom)==null?void 0:n.icon;let t=typeof e=="number"?e:e.id;return lr(t)?`https://static.particle.network/chains/solana/icons/${t}.png`:`https://static.particle.network/chains/evm/icons/${t}.png`},Pt=e=>"maxFeePerGas"in e||"maxPriorityFeePerGas"in e,Me=e=>{var t;return(t=ur())==null?void 0:t.find(r=>r.id===e)},lr=e=>{let t=typeof e=="number"?e:e.id;return t===101||t===102||t===103};var se={getSignTypedVersion(e){return e==="eth_signTypedData"||e==="eth_signTypedData_v1"?"V1":e==="eth_signTypedData_v3"?"V3":"V4"},isUniq(e){return e==="personal_sign_uniq"||e==="eth_signTypedData_v4_uniq"},isSignTypedDataV1(e){return e==="eth_signTypedData_v1"||e==="eth_signTypedData"}};import qr from"base64url";import dr from"axios";import It from"crypto-js/sha256.js";import pr from"fast-json-stable-stringify";import{v4 as gr}from"uuid";var Oe=dr.create({baseURL:l.env.baseUrl,timeout:6e4,validateStatus:function(e){return e>=200&&e<=500},withCredentials:!1});Oe.interceptors.request.use(e=>{var s,i;if(e.headers&&e.headers["Auth-Type"]==="None")return e;let r="";if(e.headers&&e.headers["Auth-Type"]==="Basic"){if(!Ct(e.baseURL)){e.baseURL!==l.env.baseUrl&&(e.baseURL=l.env.baseUrl);let u={username:l.env.basicUsername,password:l.env.basicPassword};r=It(u.username+u.password).toString().toLowerCase(),e.auth=u}}else{let u=c.getUserInfo();if(!u)throw new Error("Please connect AuthCore first!");let o=u.token;r=u.mac_key,e.headers.Authorization=`Bearer ${o}`,e.baseURL!==l.env.baseUrl&&(e.baseURL=l.env.baseUrl)}if(e.params||(e.params={}),Ct(e.baseURL))e.params={...e.params,chainId:((s=e.data)==null?void 0:s.chainId)||1,projectUuid:l.authOptions.projectId,projectKey:l.authOptions.clientKey,method:(i=e.data)==null?void 0:i.method},delete e.data.chainId;else{let u=Math.round(new Date().getTime()/1e3),o=gr();e.params={...e.params,timestamp:u,random_str:o,device_id:l.deviceId,sdk_version:l.version,project_uuid:l.authOptions.projectId,project_client_key:l.authOptions.clientKey,project_app_uuid:l.authOptions.appId};let p={...e.params};e.data&&Object.assign(p,{...e.data}),p.mac_key=r;let d=pr(p);e.params.mac=It(d).toString().toLowerCase()}return e});Oe.interceptors.response.use(e=>{let t=e.data;return e.status<300||e.status===304?it(t)?(t.error_code===10005&&(x.clear(),setTimeout(()=>_.emit("particleAuthDisconnect",t),0)),Promise.reject(t)):t.error&&ot(t.error)?Promise.reject(t.error):Promise.resolve(e):Promise.reject({code:e.status,message:e.statusText||"Network Error",data:e.data})});var Ct=e=>e==null?void 0:e.includes("rpc"),f=Oe;var hr={async sendCaptcha(e){return(await f.post("/code",e,{headers:{"Auth-Type":"Basic"}})).data.success},async login(e){return(await f.post("/login",e,{headers:{"Auth-Type":"Basic"}})).data},async loginWithThirdparty({provider:e,thirdpartyCode:t}){return(await f.post("/login_thirdparty",{provider:e,thirdparty_code:t},{headers:{"Auth-Type":"Basic"}})).data},async loginWithThirdpartyV2(e,t,r){return(await f.post("/login_thirdparty_v2",{provider:e,thirdparty_code:t,nonce:r},{headers:{"Auth-Type":"Basic"}})).data},async getThirdpartyAuthUrl(e,t,r,n){return(await f.post("/thirdparty_auth_url",{provider:e,redirect_url:t,app_state:r,prompt:n},{headers:{"Auth-Type":"Basic"}})).data},async loginBindings(e){return(await f.post("/login_bindings",e)).data},async loginBindingsCheck(e){return(await f.get("/login_bindings/check",{params:e})).data.exists},async getLoginBindings(){return(await f.get("/login_bindings")).data},async deleteLoginBinding(e){return(await f.delete("/login_bindings",{params:e})).data.success},async loginBindingsThirdparty(e){return(await f.post("/login_bindings/thirdparty",{...e,provider:e.provider})).data},async getTwitterToken(){return(await f.post("/twitter_request_token",void 0,{headers:{"Auth-Type":"Basic"}})).data.oauth_token},async syncUserInfo(){var t;return(await f.get(`/users/${(t=c.getUserInfo())==null?void 0:t.uuid}`)).data},async logout(){return(await f.post("/logout")).data.success},async updateWallet(e,t){return(await f.patch(`/wallets/users/${e}`,t)).data.success},async loginCognito(){let t=(await f.post("/login_cognito")).data;return c.updateCognitoResult(t),t},async sendSecurityAccountsCode(e){return f.post("/security/accounts/code",e).then(t=>t.data.success)},async bindSecurityAccount(e){return(await f.post("/security/accounts/bind",e)).data},async getSecurityAccountCode(e){return f.post("/security/accounts/verify_code",{verify_code_method:e}).then(t=>t.data.success)},async getSecurityAccountToken({verifyCodeMethod:e,code:t}){return f.post("/security/accounts/verify",{verify_code_method:e,code:t}).then(r=>r.data.token)},async setPaymentPassword({password:e,verifyCodeMethod:t,code:r}){return(await f.post("/security/payments/reset",{password:e,verify_code_method:t,code:r})).data},async updatePaymentPassword({password:e,oldPassword:t}){return(await f.post("/security/payments/update",{password:e,old_password:t})).data},async verifyPaymentPassword(e){return f.post("/security/payments/verify",{password:e}).then(t=>t.data.payment_token)},async deletePaymentPassword(e){return(await f.post("/security/payments/disable",{password:e})).data},async getAuthorizations(){return f.get("/authorizations").then(e=>e.data)},async deleteAuthorization(e){return f.delete(`/authorizations/${e}`).then(t=>t.data.success)}},g=hr;import{mainnet as Or}from"viem/chains";import{addHexPrefix as Wt,intToHex as oe,isHexString as Vr,toBuffer as Bt}from"@ethereumjs/util";import{concatSig as Nt}from"@metamask/eth-sig-util";import{providerErrors as z,rpcErrors as $}from"@metamask/rpc-errors";import Wr from"events";import{v4 as mr}from"uuid";var fr={async request(e){return(await f.post("/evm-chain",{...e,id:e.id||mr(),jsonrpc:e.jsonrpc||"2.0",chainId:e.chainId||1},{headers:{"Auth-Type":"Basic"},baseURL:l.env.rpcUrl}).then(r=>r.data)).result}},qe=fr;import{arrToBufArr as yr,hashPersonalMessage as wr,isHexPrefixed as _r,isHexString as xr,setLengthLeft as Ar,setLengthRight as Sr,stripHexPrefix as Tr,toBuffer as Pr}from"@ethereumjs/util";import{TypedDataUtils as Ir}from"@metamask/eth-sig-util";import He from"bn.js";import{keccak256 as je}from"ethereum-cryptography/keccak";function Et({data:e}){if(D(e))throw new Error("Missing data parameter");let t=Ut(e);return wr(t)}function kt({data:e,version:t}){if(D(e))throw new Error("Missing data parameter");return t==="V1"?Cr(e):Ir.eip712Hash(e,t)}function Cr(e){let t=new Error("Expect argument to be non-empty array");if(typeof e!="object"||!("length"in e)||!e.length)throw t;let r=e.map(function(i){return i.type!=="bytes"?i.value:Ut(i.value)}),n=e.map(function(i){return i.type}),s=e.map(function(i){if(!i.name)throw t;return`${i.type} ${i.name}`});return yr(je(ze(["bytes32","bytes32"],[je(ze(new Array(e.length).fill("string"),s)),je(ze(n,r))])))}var ze=function(e,t){if(e.length!==t.length)throw new Error("Number of types are not matching the values");let r=[];for(let n=0;n<e.length;n++){let s=br(e[n]),i=t[n];r.push(Dt(s,i,null))}return Buffer.concat(r)};function br(e){return e.startsWith("int[")?"int256"+e.slice(3):e==="int"?"int256":e.startsWith("uint[")?"uint256"+e.slice(4):e==="uint"?"uint256":e.startsWith("fixed[")?"fixed128x128"+e.slice(5):e==="fixed"?"fixed128x128":e.startsWith("ufixed[")?"ufixed128x128"+e.slice(6):e==="ufixed"?"ufixed128x128":e}var Dt=function(e,t,r){let n,s;if(vt(e)){let i=e.replace(/\[.*?\]/,"");if(!vt(i)){let o=vr(e);if(o!=="dynamic"&&o!==0&&t.length>o)throw new Error("Elements exceed array size: "+o)}let u=t.map(function(o){return Dt(i,o,256)});return Buffer.concat(u)}else{if(e==="bytes")return t;if(e==="string")return Buffer.from(t,"utf8");if(e==="bool"){r=r||8;let i=Array(r/4).join("0");return Buffer.from(t?i+"1":i+"0","hex")}else if(e==="address"){let i=20;return r&&(i=r/8),Ar(t,i)}else if(e.startsWith("bytes")){if(n=Fe(e),n<1||n>32)throw new Error("Invalid bytes<N> width: "+n);return Sr(t,n)}else if(e.startsWith("uint")){if(n=Fe(e),n%8||n<8||n>256)throw new Error("Invalid uint<N> width: "+n);if(s=bt(t),s.bitLength()>n)throw new Error("Supplied uint exceeds width: "+n+" vs "+s.bitLength());return r=r||n,s.toArrayLike(Buffer,"be",r/8)}else if(e.startsWith("int")){if(n=Fe(e),n%8||n<8||n>256)throw new Error("Invalid int<N> width: "+n);if(s=bt(t),s.bitLength()>n)throw new Error("Supplied int exceeds width: "+n+" vs "+s.bitLength());return r=r||n,s.toTwos(n).toArrayLike(Buffer,"be",r/8)}else throw new Error("Unsupported or invalid type: "+e)}};function Fe(e){return parseInt(/^\D+(\d+)$/.exec(e)[1],10)}function vr(e){let t=e.match(/(.*)\[(.*?)\]$/);return t?t[2]===""?"dynamic":parseInt(t[2],10):null}function bt(e){let t=typeof e;if(t==="string")return _r(e)?new He(Tr(e),16):new He(e,10);if(t==="number")return new He(e);if(e.toArray)return e;throw new Error("Argument is not a number")}function vt(e){return e.lastIndexOf("]")===e.length-1}function Ut(e){return typeof e=="string"&&!xr(e)?Buffer.from(e):Pr(e)}import{publicToAddress as Er,toChecksumAddress as kr}from"@ethereumjs/util";import Dr from"bs58";var Ur={async edDSA(e){let t=await import("@particle-network/thresh-sig"),{EdDsa:r}=t.default||t;return r.from(e)},async ecDSA(e){let t=await import("@particle-network/thresh-sig"),{Ecdsa:r}=t.default||t;return r.from(e)},async refreshEcdsa(e){let t=await import("@particle-network/thresh-sig"),{Ecdsa:r}=t.default||t;return(await r.from(e).refresh(l.env.baseUrl,this.params())).to()},async decryptData(e,t){try{let r=await import("@particle-network/thresh-sig"),{decryptData:n}=r.default||r;return await n(e,t)}catch{throw c.hasMasterPassword()?new Error("Master password decryption error"):new Error("Decryption failed, please try again later.")}},async encryptData(e,t){let r=await import("@particle-network/thresh-sig"),{encryptData:n}=r.default||r;return await n(e,t)},async generateKey(e,t){let r=await import("@particle-network/thresh-sig"),{generateKey:n}=r.default||r;return await n(e,t)},async create(e){let t=l.env.baseUrl,r=this.params(),n,s;if(e==="solana"){let i=await import("@particle-network/thresh-sig"),{EdDsa:u}=i.default||i,o=await u.gen(t,r);n=o.to(),s=Dr.encode(new Uint8Array(o.pub()))}else{let i=await import("@particle-network/thresh-sig"),{Ecdsa:u}=i.default||i,o=await u.gen(t,r);n=o.to(),s=kr("0x"+Er(o.pub(),!0).toString("hex"))}return{p2Key:n,address:s}},params(){let e=b(c.getUserInfo(),"Please connect AuthCore first!"),t=JSON.stringify({token:e.token,project_uuid:l.authOptions.projectId,project_client_key:l.authOptions.clientKey,project_app_uuid:l.authOptions.appId,sdk_version:l.version,device_id:l.deviceId,mac_key:e.mac_key,payment_token:l.paymentToken});return l.paymentToken=void 0,t}},m=Ur;async function $e(){let[e,t,r]=await Promise.all([import("@aws-sdk/client-kms"),import("@aws-sdk/credential-providers").then(i=>i.fromCognitoIdentity),import("@aws-sdk/client-cognito-identity").then(i=>i.NotAuthorizedException)]),n=c.getCognitoResult();if(!n)throw new Error("cognito result not found!");let s=t({identityId:n.identity_id,logins:{"cognito-identity.amazonaws.com":n.id_token},clientConfig:{region:n.region}});return{kmsClient:new e.KMS({region:n.region,credentials:s}),NotAuthorizedException:r}}function Ge(e,t){var r;return!!(e instanceof t||(e==null?void 0:e.name)==="NotAuthorizedException"||((r=e==null?void 0:e.cause)==null?void 0:r.name)==="NotAuthorizedException"||typeof(e==null?void 0:e.message)=="string"&&e.message.includes("Token is expired"))}async function ie(){var n;let{kmsClient:e,NotAuthorizedException:t}=await $e(),r;try{r=await e.generateDataKey({KeyId:(n=c.getCognitoResult())==null?void 0:n.kms_key_id,KeySpec:"AES_256"})}catch(s){if(Ge(s,t))return await g.loginCognito(),await ie();throw s}if(!r.CiphertextBlob||!r.Plaintext)throw new Error("KMS generate DataKey error.");return{ciphertext:Buffer.from(r.CiphertextBlob).toString("base64"),plaintext:Buffer.from(r.Plaintext).toString("base64")}}async function Ye(e){var s;let{kmsClient:t,NotAuthorizedException:r}=await $e(),n;try{n=(await t.decrypt({KeyId:(s=c.getCognitoResult())==null?void 0:s.kms_key_id,CiphertextBlob:Buffer.from(e,"base64")})).Plaintext}catch(i){if(Ge(i,r))return await g.loginCognito(),await Ye(e);throw i}if(!n)throw new Error("KMS decryption failed, please try again later.");return Buffer.from(n).toString("base64")}async function Te(e,t=!1){var i;let{kmsClient:r,NotAuthorizedException:n}=await $e(),s;try{s=(await r.decrypt({KeyId:(i=c.getCognitoResult())==null?void 0:i.kms_key_id,CiphertextBlob:Buffer.from(e,"base64")})).Plaintext}catch(u){if(Ge(u,n))return await g.loginCognito(),await Te(e,t);throw u}if(!s)throw new Error("KMS decryption failed, please try again later.");if(t){let o=(await import("lzutf8").then(p=>p.default)).decompress(s);return Buffer.from(o).toString("utf8")}else return Buffer.from(s).toString("utf8")}var Kt=async e=>{let t=c.getUserInfo();if(!t)throw new Error("user not login");let{ciphertext:r,plaintext:n}=await ie(),s=await m.generateKey(e,t.uuid),i=await m.generateKey(n,t.uuid),u=t.wallets.map(h=>h.encrypted_type===0?D(h.public_address)?Rr(h,s,i):Kr(h,s,i):(h.encrypted_type===1,Rt(h,s,i))),o=await Promise.all(u);for(let h of o){let C=await Pe(h.p2KeyEncrypted2,s,i);S(C===h.p2Key,"check decrypt p2Key error")}let p=o.map(h=>{let{uuid:C,public_address:T}=h.wallet;return{wallet_uuid:C,public_address:h.created?T:void 0,encrypted_data:h.p2KeyEncrypted2}}),d=r,R=await g.updateWallet(t.uuid,{encrypted_type:2,encrypted_kms_data_key:d,wallets:p});return be(s),Qe(d,i),t.wallets.forEach(h=>{let C=p.find(T=>T.wallet_uuid===h.uuid);C!=null&&C.encrypted_data&&(h.encrypted_data=C.encrypted_data,h.encrypted_kms_data_key=d,h.encrypted_type=2,C.public_address&&(h.public_address=C.public_address))}),t.security_account&&(t.security_account.has_set_master_password=!0),c.setUserInfo(t),R},Rr=async(e,t,r)=>{let{p2Key:n,address:s}=await m.create(e.chain_name),i=await Ie(n,t,r);return e.public_address=s,{p2Key:n,p2KeyEncrypted2:i,wallet:e,created:!0}},Lt=async(e,t,r,n,s)=>{let i=c.getUserInfo();if(!i)throw new Error("user not login");let u=c.hasMasterPassword()?2:1;s||(s=await Ce(n));let o;u===2?o=await Xe():o=await m.generateKey("",i.uuid);let p=await Ie(t,o,s),d=await Pe(p,o,s);S(d===t,"check decrypt p2Key error");let R=await g.updateWallet(i.uuid,{encrypted_type:u,encrypted_kms_data_key:n,wallets:[{wallet_uuid:e.uuid,encrypted_data:p,public_address:r}]});be(o),Qe(n,s);let h=i.wallets.find(C=>C.uuid===e.uuid);return h&&(h.encrypted_data=p,h.encrypted_kms_data_key=n,h.encrypted_type=u,h.public_address=r),c.setUserInfo(i),R},Je=async e=>{let t="";if(e.encrypted_type===0)t=await Te(e.encrypted_data,e.chain_name==="evm_chain");else{let r=await Xe(),n=await Ce(e.encrypted_kms_data_key||"");t=await Pe(e.encrypted_data,r,n)}return t},Kr=async(e,t,r)=>{let n=await Te(e.encrypted_data,e.chain_name==="evm_chain");e.chain_name==="evm_chain"&&(n=await m.refreshEcdsa(n));let s=await Ie(n,t,r);return{p2Key:n,p2KeyEncrypted2:s,wallet:e}},Rt=async(e,t,r)=>{let n=await Ce(e.encrypted_kms_data_key||""),s=await Xe(),i=await Pe(e.encrypted_data,s,n);e.chain_name==="evm_chain"&&(i=await m.refreshEcdsa(i));let u=await Ie(i,t,r);return{p2Key:i,p2KeyEncrypted2:u,wallet:e}},Pe=async(e,t,r)=>{let n=await m.decryptData(e,r);return await m.decryptData(n,t)},Ie=async(e,t,r)=>{let n=await m.encryptData(e,t);return await m.encryptData(n,r)},Vt=async e=>{let t=b(c.getUserInfo(),"Please connect AuthCore first!"),r=await m.generateKey(e,t.uuid),n=t.wallets.find(u=>!D(u.public_address)&&u.encrypted_type===2);if(!n)throw new Error("master password not set");let s=await Ce(n.encrypted_kms_data_key||""),i=await m.decryptData(n.encrypted_data,s);await m.decryptData(i,r),be(r)},Ce=async e=>{if(!e)throw new Error("encryptedKMSDataKey not found");let t=c.getUserInfo();S(t,new Error("please login first!"));let r=x.getItem(e);if(r)return r;let n=await Ye(e);return r=await m.generateKey(n,c.getUserInfo().uuid),Qe(e,r),r},Qe=(e,t)=>{x.setItem(e,t)},Xe=async()=>{let e=x.getItem("local_key");if(!e){if(c.hasMasterPassword())throw new Error("Local Key not found");{let t=c.getUserInfo();S(t,new Error("please login first!"));let r=await m.generateKey("",t.uuid);return be(r),r}}return e},Ze=()=>{let e=x.getItem("local_key");return!D(e)},et=()=>{x.removeItem("local_key")},be=e=>{x.setItem("local_key",e)};var Lr={getWalletInfo(e){let t=c.getUserInfo();if(!t)throw new Error("please login first!");return t.wallets.filter(r=>r.chain_name===e)[0]},hasType1Wallet(){var e,t;return Boolean((t=(e=c.getUserInfo())==null?void 0:e.wallets)==null?void 0:t.some(r=>r.encrypted_type===1))},publicAddress(e){return this.getWalletInfo(e).public_address||""},async gen(e){let t=c.getUserInfo();if(!t)throw new Error("please login first!");let r=this.getWalletInfo(e),n;if(r!=null&&r.public_address)n=r.public_address;else{let i=t.wallets.filter(p=>p.chain_name!==e)[0].encrypted_kms_data_key,u,o;if(i){let{address:p,p2Key:d}=await m.create(r.chain_name);n=p,o=d}else{let[{p2Key:p,address:d},R]=await Promise.all([m.create(r.chain_name),ie().then(({ciphertext:h,plaintext:C})=>Promise.all([m.generateKey(C,t.uuid),Promise.resolve(h)]))]);o=p,n=d,u=R[0],i=R[1]}await Lt(r,o,n,i,u)}return n},async decryptEcdsa(e){let t=await Je(this.getWalletInfo(e));return await m.ecDSA(t)},async decryptEdDsa(e){let t=await Je(this.getWalletInfo(e));return await m.edDSA(t)}},U=Lr;var k,v,G,ve,W,q,Y,Ee,ke=class{constructor(){y(this,G);y(this,W);y(this,Y);y(this,k,new Wr);this.isParticleNetwork=!0;y(this,v,1);a(this,k).setMaxListeners(100);let t=gt();t&&j(t)?I(this,v,t):me(a(this,v)),_.on("particleAuthDisconnect",()=>{a(this,k).emit("disconnect")}),_.on("particleAuthConnect",()=>{this.selectedAddress&&(a(this,k).emit("connect",{chainId:oe(a(this,v))}),a(this,k).emit("accountsChanged",[this.selectedAddress]))}),_.on("connectWithChain",r=>{O(r)==="evm"&&(I(this,v,r.id),me(a(this,v)),a(this,k).emit("chainChanged",oe(a(this,v))))})}get selectedAddress(){var r;let t=(r=c.getEVMWallet())==null?void 0:r.public_address;return t||null}get chainId(){return oe(a(this,v))}isConnected(){return!D(this.selectedAddress)}on(t,r){return a(this,k).on(t,r),this}once(t,r){return a(this,k).once(t,r),this}off(t,r){return a(this,k).off(t,r),this}removeListener(t,r){return a(this,k).removeListener(t,r),this}async enable(){return this.request({method:"eth_requestAccounts"})}async disconnect(){await De()}async connect(t){if(this.selectedAddress)return[this.selectedAddress];if(c.isLogin())return await A(this,G,ve).call(this),[this.selectedAddress];if(await new Promise((r,n)=>{_.emit("requestEthereumAccount",{resolve:r,reject:n,param:t})}),!c.isLogin())throw z.unauthorized();return this.selectedAddress||await A(this,G,ve).call(this),[this.selectedAddress]}async request(t){var n,s,i,u,o,p,d,R,h,C,T;let r=t.method;if(!r)throw $.invalidParams("Invalid parameters: method is required.");if(Object.values(We).includes(r)){if(r==="eth_accounts")return this.selectedAddress?[this.selectedAddress]:[];if(r==="eth_requestAccounts")return await this.connect();if(r==="eth_chainId")return this.chainId;if(r.startsWith("eth_signTypedData")){A(this,W,q).call(this);let P=se.isSignTypedDataV1(r),L=P?(n=t==null?void 0:t.params)==null?void 0:n[1]:(s=t==null?void 0:t.params)==null?void 0:s[0],w=P?(i=t==null?void 0:t.params)==null?void 0:i[0]:(u=t==null?void 0:t.params)==null?void 0:u[1];if(!L||typeof L!="string")throw $.invalidParams("Invalid parameters: must provide an Ethereum address.");if(!w)throw $.invalidParams("Invalid parameters: must provide typed data.");if(L.toLowerCase()!==((o=this.selectedAddress)==null?void 0:o.toLowerCase()))throw z.unauthorized();typeof w=="string"&&(w=JSON.parse(w));let te=se.isUniq(r),Le=se.getSignTypedVersion(r);return await this.signTypedData({data:w,version:Le,uniq:te})}else if(r.startsWith("personal_sign")){A(this,W,q).call(this);let P=(p=t==null?void 0:t.params)==null?void 0:p[0],L=(d=t==null?void 0:t.params)==null?void 0:d[1];if(!P||typeof P!="string")throw $.invalidParams("Invalid parameters: must provide a valid message.");if(!L||typeof L!="string")throw $.invalidParams("Invalid parameters: must provide an Ethereum address.");if(L.toLowerCase()!==((R=this.selectedAddress)==null?void 0:R.toLowerCase()))throw z.unauthorized();Vr(P)||(P=Wt(Buffer.from(P).toString("hex")));let w=se.isUniq(r);return await this.signMessage(P,w)}else if(r==="wallet_switchEthereumChain"){A(this,W,q).call(this);let P=Number((C=(h=t==null?void 0:t.params)==null?void 0:h[0])==null?void 0:C.chainId);return P!==a(this,v)?await this.switchChain(P):null}else if(r==="eth_sendTransaction"){A(this,W,q).call(this);let P=(T=t.params)==null?void 0:T[0];if(!P)throw $.invalidParams("Invalid parameters: must provide an transaction data.");return await this.sendTransaction(P)}else throw z.unsupportedMethod()}else{t.chainId||(t.chainId=a(this,v));let P;try{P=await qe.request(t)}catch(L){let{code:w,message:te,extra:Le}=L;throw w&&te?{code:w,message:te,data:Le}:L}return P}}async sendTransaction(t){A(this,W,q).call(this);let r=Number(t.chainId||this.chainId);if(!j(r))throw z.chainDisconnected();t.chainId||(t.chainId=oe(r)),D(t.type)&&(j(r)&&Pt(t)?t.type="0x2":t.type="0x0"),D(t.nonce)&&(t.nonce="0x0"),D(t.data)&&(t.data="0x");let s=await U.decryptEcdsa("evm_chain"),i;if(Tt(r))i=await s.signTronTx(l.env.baseUrl,m.params(),t);else{D(t.nonce)&&(t.nonce="0x0");let o=await s.signTx(l.env.baseUrl,m.params(),t),p=await import("@ethereumjs/tx"),{TransactionFactory:d}=p.default||p,R=d.fromTxData(o);i=Wt(R.serialize().toString("hex"))}return A(this,Y,Ee).call(this,r),await qe.request({chainId:r,method:"eth_sendRawTransaction",params:[i]})}async signMessage(t,r){A(this,W,q).call(this);let n=Et({data:t}),i=await(await U.decryptEcdsa("evm_chain")).sign(l.env.baseUrl,m.params(),n,r);return A(this,Y,Ee).call(this),Nt(Bt(i.v+27),i.r,i.s)}async signTypedData({data:t,version:r,uniq:n}){A(this,W,q).call(this);let s=kt({data:t,version:r}),u=await(await U.decryptEcdsa("evm_chain")).sign(l.env.baseUrl,m.params(),s,n);return A(this,Y,Ee).call(this),Nt(Bt(u.v+27),u.r,u.s)}async switchChain(t){if(Number(t)!==a(this,v)){if(!j(Number(t)))throw z.chainDisconnected("The chain is not supported.");c.getUserInfo()&&(this.selectedAddress||await A(this,G,ve).call(this)),I(this,v,Number(t)),me(a(this,v)),setTimeout(()=>a(this,k).emit("chainChanged",oe(a(this,v))),0)}return null}};k=new WeakMap,v=new WeakMap,G=new WeakSet,ve=async function(){let t=await U.gen("evm_chain");setTimeout(()=>a(this,k).emit("accountsChanged",[t]),0)},W=new WeakSet,q=function(){if(!this.isConnected())throw z.unauthorized()},Y=new WeakSet,Ee=function(t){let r=c.getUserInfo();if(r)try{xe({chain_id:t!=null?t:a(this,v),identity:r.uuid,login_type:"particle",action:"sign",wallet_address:this.selectedAddress,user_info:JSON.stringify(K(r))})}catch{}};import{providerErrors as tt}from"@metamask/rpc-errors";import Mr from"events";import{v4 as Br}from"uuid";var Nr={async request(e){return(await f.post("/solana",{...e,id:e.id||Br(),jsonrpc:e.jsonrpc||"2.0",chainId:e.chainId||101},{headers:{"Auth-Type":"Basic"},baseURL:l.env.rpcUrl}).then(r=>r.data)).result},async getLatestBlockhash(e){return(await this.request({chainId:e,method:"getLatestBlockhash",params:[{commitment:"finalized"}]})).value.blockhash}},ae=Nr;var ce=e=>e.version==null;var E,J,V,ue,rt,Q,Ue,Re=class{constructor(){y(this,ue);y(this,Q);y(this,E,new Mr);this.isParticleNetwork=!0;this.name="Particle";this.url="https://particle.network";this.icon="https://static.particle.network/wallet-icons/Particle.png";this.publicKey=null;this.isConnected=!1;y(this,J,!1);y(this,V,101);a(this,E).setMaxListeners(100);let t=ht();t&&Me(t)?I(this,V,t):fe(a(this,V)),_.on("particleAuthDisconnect",()=>{this.publicKey=null,this.isConnected=!1,a(this,E).emit("disconnect")}),_.on("particleAuthConnect",()=>{this.selectedAddress&&(a(this,E).emit("connect",this.selectedAddress),a(this,E).emit("accountsChanged",[this.selectedAddress]))}),_.on("connectWithChain",r=>{O(r)==="solana"&&(I(this,V,r.id),fe(a(this,V)),a(this,E).emit("chainChanged",a(this,V)))})}on(t,r){return a(this,E).on(t,r),this}once(t,r){return a(this,E).once(t,r),this}off(t,r){return a(this,E).off(t,r),this}removeListener(t,r){return a(this,E).removeListener(t,r),this}get connecting(){return a(this,J)}get connected(){return this.selectedAddress!==null}async loadPublicKey(){if(this.selectedAddress&&!this.publicKey){let t=await import("@solana/web3.js"),{PublicKey:r}=t.default||t;this.publicKey=new r(this.selectedAddress)}return this.publicKey}get selectedAddress(){var r;let t=(r=c.getSolanaWallet())==null?void 0:r.public_address;return t||null}get chainId(){return a(this,V)}async connect(t){try{if(I(this,J,!0),c.isLogin())this.selectedAddress||await A(this,ue,rt).call(this);else if(await new Promise((r,n)=>{_.emit("requestSolanaAccount",{resolve:r,reject:n,param:t})}),c.isLogin())this.selectedAddress||await A(this,ue,rt).call(this);else throw tt.unauthorized();if(this.selectedAddress)this.publicKey=await this.loadPublicKey(),this.isConnected=!0,a(this,E).emit("connect",this.selectedAddress);else throw tt.unauthorized()}catch(r){return Promise.reject(r)}finally{I(this,J,!1)}}async disconnect(){return await De(),this.publicKey=null,this.isConnected=!1,Promise.resolve()}async signTransaction(t,r){b(this.connected,"Please connect first!");let n=await this.loadPublicKey(),s=await U.decryptEdDsa("solana");if(t.signatures.length===0){let o=await ae.getLatestBlockhash(r||this.chainId);ce(t)?t.recentBlockhash=o:t.message.recentBlockhash=o}let i=ce(t)?t.serializeMessage():t.message.serialize(),u=await s.sign(l.env.baseUrl,m.params(),i);return t.addSignature(b(n),u),A(this,Q,Ue).call(this,r),t}async signAllTransactions(t,r){b(this.connected,"Please connect first!");let n=await this.loadPublicKey(),s;for(let o=0;o<t.length;o++){let p=t[o];p.signatures.length===0&&(s||(s=await ae.getLatestBlockhash(r||this.chainId)),ce(p)?p.recentBlockhash=s:p.message.recentBlockhash=s)}let u=await(await U.decryptEdDsa("solana")).batchSign(l.env.baseUrl,m.params(),t.map(o=>{let p=ce(o)?o.serializeMessage():o.message.serialize();return Buffer.from(p)}));return t.forEach((o,p)=>{o.addSignature(b(n),u[p])}),A(this,Q,Ue).call(this,r),t}async signAndSendTransaction(t,r){let n=await this.signTransaction(t,r);return{signature:await ae.request({chainId:r||this.chainId,method:"sendTransaction",params:[Buffer.from(n.serialize()).toString("base64"),{encoding:"base64",preflightCommitment:"confirmed"}]})}}async signMessage(t){S(this.selectedAddress,"Please connect first!");let n=await(await U.decryptEdDsa("solana")).sign(l.env.baseUrl,m.params(),t);return A(this,Q,Ue).call(this),{signature:n}}async switchChain(t){if(S(typeof t=="number","chainId must be a number"),!Me(t))throw tt.chainDisconnected("The chain is not supported.");c.getUserInfo()&&(this.selectedAddress||await U.gen("solana")),I(this,V,t),fe(t),setTimeout(()=>a(this,E).emit("chainChanged",t),0)}async request(t){return await ae.request({...t,chainId:t.chainId||this.chainId})}};E=new WeakMap,J=new WeakMap,V=new WeakMap,ue=new WeakSet,rt=async function(){let t=await U.gen("solana");setTimeout(()=>a(this,E).emit("accountsChanged",[t]),0)},Q=new WeakSet,Ue=function(t){let r=c.getUserInfo();if(r)try{xe({chain_id:t!=null?t:a(this,V),identity:r.uuid,login_type:"particle",action:"sign",wallet_address:this.selectedAddress,user_info:JSON.stringify(K(r))})}catch{}};var X,Z,ee,nt=class{constructor(){y(this,Z,void 0);y(this,ee,void 0);this.chains=[Or]}static getInstance(){return a(this,X)||I(this,X,new nt),a(this,X)}get ethereum(){return b(a(this,Z),"Please init AuthCore first!")}get solana(){return b(a(this,ee),"Please init AuthCore first!")}get version(){return l.version}init(t){S(t&&t.projectId&&t.clientKey&&t.appId,"Init AuthCore failed, please check project config!"),this.chains=t.chains,St(()=>this.chains),x.init(t.appId),l.init(t),a(this,Z)||I(this,Z,new ke),a(this,ee)||I(this,ee,new Re),typeof window!="undefined"&&(window.particleAuth=this)}on(t,r){_.on(t,r)}once(t,r){_.once(t,r)}off(t,r){_.off(t,r)}removeListener(t,r){_.removeListener(t,r)}},le=nt;X=new WeakMap,Z=new WeakMap,ee=new WeakMap,y(le,X,void 0);var B,Ke=new Proxy({},{get(e,t,r){B||(B=le.getInstance());let n=Reflect.get(B,t,B);return typeof n=="function"?n.bind(B):n},set(e,t,r){return B||(B=le.getInstance()),Reflect.set(B,t,r,B)}});var so=async e=>{let t=document.createElement("iframe"),r="light",n=(e==null?void 0:e.language)||"en";t.src=`${l.env.authCore}/cloudflare.html?language=${n}&theme=${r}&_=0.1.1`,t.classList.add("particle-cloudflare-iframe");let s={position:"absolute",zIndex:"999",display:"flex",justifyContent:"center",alignItems:"center",border:"none",background:"none",width:"300px",height:"65px",left:"50%",top:"50%",transform:"translate(-50%, -50%)",colorScheme:"none"};for(let u in s)t.style[u]=s[u];let i=e!=null&&e.getContainer?typeof e.getContainer=="function"?e.getContainer():e.getContainer:document.body;return i.appendChild(t),new Promise((u,o)=>{let p=d=>{d.data.type==="particle-auth-core-cloudflareToken"&&(window.removeEventListener("message",p),i.removeChild(t),d.data.token?u(d.data.token):o("Validation failed"))};window.addEventListener("message",p)})},Hr=async e=>{let{authType:t,appState:r,prompt:n}=e,{redirectUrl:s}=e;s||(s=window.location.href);let{auth_url:i,state:u}=await g.getThirdpartyAuthUrl(t,s,r,n);if(t==="twitter"){let o=JSON.stringify({authType:t,redirectUrl:s,thirdpartyAuthUrl:i,state:u}),p=qr(o);return`${l.env.authCore}/oauth.html?data=${p}`}return i},io=async e=>{let t=await Hr(e);sessionStorage.setItem("auth-core-oauth-start","true"),window.location.href=t},oo=async e=>(S(l.initialized,"Please init AuthCore first!"),await g.sendCaptcha(e)),ao=async e=>{S(l.initialized,"Please init AuthCore first!");let t=e.chain;t&&(S(Ke.chains.find(i=>i.id===t.id&&i.name===t.name),`The chain ${JSON.stringify(e.chain)} is not supported`),delete e.chain);let r,n;if("phone"in e&&"code"in e&&e.phone&&e.code)r=await g.login(e),n="phone";else if("email"in e&&"code"in e&&e.email&&e.code)r=await g.login(e),n="email";else if("provider"in e&&e.provider&&"thirdpartyCode"in e&&e.thirdpartyCode)r=await g.loginWithThirdparty({provider:e.provider,thirdpartyCode:e.thirdpartyCode}),n=e.provider;else if("socialType"in e&&e.socialType&&"code"in e&&e.code&&"nonce"in e&&e.nonce)r=await g.loginWithThirdpartyV2(e.socialType,e.code,e.nonce),n=e.socialType;else throw new Error("invalid connect param");et(),c.setUserInfo(r);try{await U.gen(t?O(t)==="evm"?"evm_chain":"solana":"evm_chain")}catch(i){throw c.setUserInfo(void 0),i}c.setLatestAuthType(n),t&&_.emit("connectWithChain",t);let s=K(r);return jr(s,e),s},De=async()=>{try{await g.logout()}catch{}x.clear(),zr()},jr=(e,t)=>{var r,n;"socialType"in t&&t.socialType&&"code"in t&&t.code&&"nonce"in t&&t.nonce&&typeof window!="undefined"&&((r=window.particle)!=null&&r.ethereum&&(window.particle.ethereum.isSocialConnecting=!1),(n=window.particle)!=null&&n.solana&&(window.particle.solana.isSocialConnecting=!1),window.dispatchEvent(new CustomEvent("particle:socialConnectCompleted",{detail:Object.freeze(e)}))),setTimeout(()=>_.emit("particleAuthConnect",e),0)},zr=()=>{setTimeout(()=>_.emit("particleAuthDisconnect"),0)},Fr=()=>Boolean($r()),$r=()=>{let e=c.getUserInfo();return e?K(e):void 0},co=async()=>{let e=c.getUserInfo();if(!e)throw new Error("Please connect first!");let t=await g.syncUserInfo();t.wallets.some(s=>{let i=e.wallets.find(u=>u.uuid==s.uuid);return!i||i.encrypted_data!==s.encrypted_data})&&(et(),setTimeout(()=>_.emit("masterPasswordChanged"),0));let n={...e,...t};return c.setUserInfo(n),K(n)},uo=()=>c.getLatestAuthType(),lo=async e=>{S(Fr(),"Please connect first!");let t=b(Ke.ethereum.selectedAddress,"Please create wallet first!"),{version:r,name:n}=e,s=`auth_core_erc4337_${n}_${r}_${t}`,i=localStorage.getItem(s);if(i)return i;let o=(await Ke.ethereum.request({method:"particle_aa_getSmartAccount",params:[{version:r,name:n,ownerAddress:t}]}))[0].smartAccountAddress;return localStorage.setItem(s,o),o};import Gr from"crypto-js/sha256.js";var Ao=async()=>await g.getLoginBindings(),So=async e=>await g.loginBindingsCheck(e),To=async e=>{let t=b(c.getUserInfo(),"Please connect AuthCore first!"),r;if("phone"in e&&e.phone)r=await g.loginBindings(e);else if("email"in e&&e.email)r=await g.loginBindings(e);else if("provider"in e&&e.provider)r=await g.loginBindingsThirdparty(e);else throw new Error("invalid bind login account param");let n={...t,...r};return c.setUserInfo(n),K(n)},Po=async e=>await g.sendSecurityAccountsCode(e),Io=async e=>{let t=await g.bindSecurityAccount(e);return c.updateSecurityAccount(t),t},Co=async e=>await g.getSecurityAccountCode(e),bo=async e=>await g.getSecurityAccountToken(e),vo=()=>c.hasPaymentPassword();function de(e){let t=c.getUserInfo();if(!t)throw new Error("Please connect AuthCore first!");return Gr(t.uuid+e).toString().toLowerCase()}var Eo=async({password:e,verifyCodeMethod:t,code:r})=>{let n=await g.setPaymentPassword({password:de(e),verifyCodeMethod:t,code:r});return c.updateSecurityAccount(n),n},ko=async({password:e,oldPassword:t})=>{let r=await g.updatePaymentPassword({password:de(e),oldPassword:de(t)});return c.updateSecurityAccount(r),r},Do=async e=>{let t=await g.verifyPaymentPassword(de(e));l.paymentToken=t},Uo=async e=>{let t=await g.deletePaymentPassword(de(e));return c.updateSecurityAccount(t),t},Mt=()=>c.hasMasterPassword(),Ro=()=>Mt()&&!Ze(),Ko=async e=>{let t=await Yr(e);return t&&_.emit("particleWalletRestored"),t},Lo=async e=>(Mt()&&S(Ze(),"Please restore wallet first!"),await Kt(e)),Yr=async e=>{try{await Vt(e)}catch(t){if((t==null?void 0:t.message)==="Master password decryption error")return!1;throw t}return!0},Vo=()=>b(c.getSecurityAccount(),"Please connect first!"),Wo=async()=>await g.getAuthorizations(),Bo=async e=>await g.deleteAuthorization(e);export{st as a,it as b,ot as c,Ot as d,Zr as e,qt as f,Ht as g,jt as h,zt as i,Ft as j,K as k,S as l,b as m,D as n,$t as o,Gt as p,Yt as q,We as r,Jt as s,Qt as t,zn as u,xe as v,ir as w,or as x,es as y,ts as z,St as A,Tt as B,rs as C,O as D,cr as E,ur as F,j as G,ns as H,Pt as I,Me as J,lr as K,se as L,so as M,Hr as N,io as O,oo as P,ao as Q,De as R,Fr as S,$r as T,co as U,uo as V,lo as W,Ke as X,Ao as Y,So as Z,To as _,Po as $,Io as aa,Co as ba,bo as ca,vo as da,Eo as ea,ko as fa,Do as ga,Uo as ha,Mt as ia,Ro as ja,Ko as ka,Lo as la,Yr as ma,Vo as na,Wo as oa,Bo as pa};
//# sourceMappingURL=chunk-JEV3CBG7.mjs.map