@dcl-regenesislabs/mobile-hub 1.0.0-20723159718.commit-457ece6 → 1.0.0-20724632172.commit-bac4912

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.
@@ -1,4 +1,4 @@
1
- import{$ as T,a0 as H,a1 as Ye,a2 as hr,a3 as we,a4 as L,a5 as ze,a6 as pr,a7 as io,a8 as He,a9 as $a,aa as Ia,ab as Gn,ac as V,ad as Se,ae as tn,af as Sa,ag as Te,ah as oe,ai as Ta,aj as ka,ak as me,al as Na,am as Fa,an as yr,ao as Ra,ap as Dt,aq as Hn,ar as ts,as as ns,at as rs,au as ss,av as os,aw as is,ax as as,ay as cs,az as Dn,aA as Tt,aB as us,aC as Oa,aD as Wt,aE as fs,aF as Ca,aG as qn,aH as ds,aI as ao,aJ as ls,aK as za,aL as co,aM as bs,aN as La,aO as uo,aP as hs,aQ as _a,aR as ps}from"./core-Be_s2Hcs.js";import{b1 as V1,b0 as Z1,b2 as W1,b3 as K1,b4 as Y1,aZ as X1,b5 as J1,b6 as Q1,b7 as eb,b8 as tb,b9 as nb,ba as rb,bb as sb,bc as ob,bd as ib,be as ab,bf as cb,bg as ub,aY as fb,a_ as db,bh as lb,a$ as bb,bi as hb,bj as pb,bk as yb,bl as mb,bm as gb,bn as wb,bo as xb,bq as vb,bp as Eb,aS as Pb,aW as Ab,aT as Bb,aX as $b,aV as Ib,br as Sb,aU as Tb,bs as kb}from"./core-Be_s2Hcs.js";import{_ as fo}from"./index-i2A_phFP.js";import"./index-9uP_tzWK.js";const Ua="1.2.3";let Q=class Vn extends Error{constructor(t,n={}){const r=n.cause instanceof Vn?n.cause.details:n.cause?.message?n.cause.message:n.details,s=n.cause instanceof Vn&&n.cause.docsPath||n.docsPath,o=[t||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...s?[`Docs: https://abitype.dev${s}`]:[],...r?[`Details: ${r}`]:[],`Version: abitype@${Ua}`].join(`
1
+ import{$ as T,a0 as H,a1 as Ye,a2 as hr,a3 as we,a4 as L,a5 as ze,a6 as pr,a7 as io,a8 as He,a9 as $a,aa as Ia,ab as Gn,ac as V,ad as Se,ae as tn,af as Sa,ag as Te,ah as oe,ai as Ta,aj as ka,ak as me,al as Na,am as Fa,an as yr,ao as Ra,ap as Dt,aq as Hn,ar as ts,as as ns,at as rs,au as ss,av as os,aw as is,ax as as,ay as cs,az as Dn,aA as Tt,aB as us,aC as Oa,aD as Wt,aE as fs,aF as Ca,aG as qn,aH as ds,aI as ao,aJ as ls,aK as za,aL as co,aM as bs,aN as La,aO as uo,aP as hs,aQ as _a,aR as ps}from"./core--P1bmxSt.js";import{b1 as V1,b0 as Z1,b2 as W1,b3 as K1,b4 as Y1,aZ as X1,b5 as J1,b6 as Q1,b7 as eb,b8 as tb,b9 as nb,ba as rb,bb as sb,bc as ob,bd as ib,be as ab,bf as cb,bg as ub,aY as fb,a_ as db,bh as lb,a$ as bb,bi as hb,bj as pb,bk as yb,bl as mb,bm as gb,bn as wb,bo as xb,bq as vb,bp as Eb,aS as Pb,aW as Ab,aT as Bb,aX as $b,aV as Ib,br as Sb,aU as Tb,bs as kb}from"./core--P1bmxSt.js";import{_ as fo}from"./index-c9eFvuXm.js";import"./index-ByNdfGTy.js";const Ua="1.2.3";let Q=class Vn extends Error{constructor(t,n={}){const r=n.cause instanceof Vn?n.cause.details:n.cause?.message?n.cause.message:n.details,s=n.cause instanceof Vn&&n.cause.docsPath||n.docsPath,o=[t||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...s?[`Docs: https://abitype.dev${s}`]:[],...r?[`Details: ${r}`]:[],`Version: abitype@${Ua}`].join(`
2
2
  `);super(o),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiTypeError"}),n.cause&&(this.cause=n.cause),this.details=r,this.docsPath=s,this.metaMessages=n.metaMessages,this.shortMessage=t}};function Fe(e,t){return e.exec(t)?.groups}const lo=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,bo=/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,ho=/^\(.+?\).*?$/,ys=/^tuple(?<array>(\[(\d*)\])*)$/;function Zn(e){let t=e.type;if(ys.test(e.type)&&"components"in e){t="(";const n=e.components.length;for(let s=0;s<n;s++){const o=e.components[s];t+=Zn(o),s<n-1&&(t+=", ")}const r=Fe(ys,e.type);return t+=`)${r?.array||""}`,Zn({...e,type:t})}return"indexed"in e&&e.indexed&&(t=`${t} indexed`),e.name?`${t} ${e.name}`:t}function st(e){let t="";const n=e.length;for(let r=0;r<n;r++){const s=e[r];t+=Zn(s),r!==n-1&&(t+=", ")}return t}function Kt(e){return e.type==="function"?`function ${e.name}(${st(e.inputs)})${e.stateMutability&&e.stateMutability!=="nonpayable"?` ${e.stateMutability}`:""}${e.outputs?.length?` returns (${st(e.outputs)})`:""}`:e.type==="event"?`event ${e.name}(${st(e.inputs)})`:e.type==="error"?`error ${e.name}(${st(e.inputs)})`:e.type==="constructor"?`constructor(${st(e.inputs)})${e.stateMutability==="payable"?" payable":""}`:e.type==="fallback"?`fallback() external${e.stateMutability==="payable"?" payable":""}`:"receive() external payable"}const po=/^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;function Ma(e){return po.test(e)}function ja(e){return Fe(po,e)}const yo=/^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;function Ga(e){return yo.test(e)}function Ha(e){return Fe(yo,e)}const mo=/^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\s?\((?<returns>.*?)\))?$/;function Da(e){return mo.test(e)}function qa(e){return Fe(mo,e)}const go=/^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?<properties>.*?)\}$/;function nn(e){return go.test(e)}function Va(e){return Fe(go,e)}const wo=/^constructor\((?<parameters>.*?)\)(?:\s(?<stateMutability>payable{1}))?$/;function Za(e){return wo.test(e)}function Wa(e){return Fe(wo,e)}const xo=/^fallback\(\) external(?:\s(?<stateMutability>payable{1}))?$/;function Ka(e){return xo.test(e)}function Ya(e){return Fe(xo,e)}const Xa=/^receive\(\) external payable$/;function Ja(e){return Xa.test(e)}const ms=new Set(["memory","indexed","storage","calldata"]),Qa=new Set(["indexed"]),Wn=new Set(["calldata","memory","storage"]);class ec extends Q{constructor({signature:t}){super("Failed to parse ABI item.",{details:`parseAbiItem(${JSON.stringify(t,null,2)})`,docsPath:"/api/human#parseabiitem-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiItemError"})}}class tc extends Q{constructor({type:t}){super("Unknown type.",{metaMessages:[`Type "${t}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownTypeError"})}}class nc extends Q{constructor({type:t}){super("Unknown type.",{metaMessages:[`Type "${t}" is not a valid ABI type.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSolidityTypeError"})}}class rc extends Q{constructor({params:t}){super("Failed to parse ABI parameters.",{details:`parseAbiParameters(${JSON.stringify(t,null,2)})`,docsPath:"/api/human#parseabiparameters-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiParametersError"})}}class sc extends Q{constructor({param:t}){super("Invalid ABI parameter.",{details:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParameterError"})}}class oc extends Q{constructor({param:t,name:n}){super("Invalid ABI parameter.",{details:t,metaMessages:[`"${n}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SolidityProtectedKeywordError"})}}class ic extends Q{constructor({param:t,type:n,modifier:r}){super("Invalid ABI parameter.",{details:t,metaMessages:[`Modifier "${r}" not allowed${n?` in "${n}" type`:""}.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidModifierError"})}}class ac extends Q{constructor({param:t,type:n,modifier:r}){super("Invalid ABI parameter.",{details:t,metaMessages:[`Modifier "${r}" not allowed${n?` in "${n}" type`:""}.`,`Data location can only be specified for array, struct, or mapping types, but "${r}" was given.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidFunctionModifierError"})}}class cc extends Q{constructor({abiParameter:t}){super("Invalid ABI parameter.",{details:JSON.stringify(t,null,2),metaMessages:["ABI parameter type is invalid."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiTypeParameterError"})}}class pt extends Q{constructor({signature:t,type:n}){super(`Invalid ${n} signature.`,{details:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidSignatureError"})}}class uc extends Q{constructor({signature:t}){super("Unknown signature.",{details:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSignatureError"})}}class fc extends Q{constructor({signature:t}){super("Invalid struct signature.",{details:t,metaMessages:["No properties exist."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidStructSignatureError"})}}class dc extends Q{constructor({type:t}){super("Circular reference detected.",{metaMessages:[`Struct "${t}" is a circular reference.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"CircularReferenceError"})}}class lc extends Q{constructor({current:t,depth:n}){super("Unbalanced parentheses.",{metaMessages:[`"${t.trim()}" has too many ${n>0?"opening":"closing"} parentheses.`],details:`Depth "${n}"`}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParenthesisError"})}}function bc(e,t,n){let r="";if(n)for(const s of Object.entries(n)){if(!s)continue;let o="";for(const i of s[1])o+=`[${i.type}${i.name?`:${i.name}`:""}]`;r+=`(${s[0]}{${o}})`}return t?`${t}:${e}${r}`:`${e}${r}`}const En=new Map([["address",{type:"address"}],["bool",{type:"bool"}],["bytes",{type:"bytes"}],["bytes32",{type:"bytes32"}],["int",{type:"int256"}],["int256",{type:"int256"}],["string",{type:"string"}],["uint",{type:"uint256"}],["uint8",{type:"uint8"}],["uint16",{type:"uint16"}],["uint24",{type:"uint24"}],["uint32",{type:"uint32"}],["uint64",{type:"uint64"}],["uint96",{type:"uint96"}],["uint112",{type:"uint112"}],["uint160",{type:"uint160"}],["uint192",{type:"uint192"}],["uint256",{type:"uint256"}],["address owner",{type:"address",name:"owner"}],["address to",{type:"address",name:"to"}],["bool approved",{type:"bool",name:"approved"}],["bytes _data",{type:"bytes",name:"_data"}],["bytes data",{type:"bytes",name:"data"}],["bytes signature",{type:"bytes",name:"signature"}],["bytes32 hash",{type:"bytes32",name:"hash"}],["bytes32 r",{type:"bytes32",name:"r"}],["bytes32 root",{type:"bytes32",name:"root"}],["bytes32 s",{type:"bytes32",name:"s"}],["string name",{type:"string",name:"name"}],["string symbol",{type:"string",name:"symbol"}],["string tokenURI",{type:"string",name:"tokenURI"}],["uint tokenId",{type:"uint256",name:"tokenId"}],["uint8 v",{type:"uint8",name:"v"}],["uint256 balance",{type:"uint256",name:"balance"}],["uint256 tokenId",{type:"uint256",name:"tokenId"}],["uint256 value",{type:"uint256",name:"value"}],["event:address indexed from",{type:"address",name:"from",indexed:!0}],["event:address indexed to",{type:"address",name:"to",indexed:!0}],["event:uint indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}],["event:uint256 indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}]]);function Kn(e,t={}){if(Da(e))return hc(e,t);if(Ga(e))return pc(e,t);if(Ma(e))return yc(e,t);if(Za(e))return mc(e,t);if(Ka(e))return gc(e);if(Ja(e))return{type:"receive",stateMutability:"payable"};throw new uc({signature:e})}function hc(e,t={}){const n=qa(e);if(!n)throw new pt({signature:e,type:"function"});const r=ee(n.parameters),s=[],o=r.length;for(let a=0;a<o;a++)s.push(ke(r[a],{modifiers:Wn,structs:t,type:"function"}));const i=[];if(n.returns){const a=ee(n.returns),c=a.length;for(let u=0;u<c;u++)i.push(ke(a[u],{modifiers:Wn,structs:t,type:"function"}))}return{name:n.name,type:"function",stateMutability:n.stateMutability??"nonpayable",inputs:s,outputs:i}}function pc(e,t={}){const n=Ha(e);if(!n)throw new pt({signature:e,type:"event"});const r=ee(n.parameters),s=[],o=r.length;for(let i=0;i<o;i++)s.push(ke(r[i],{modifiers:Qa,structs:t,type:"event"}));return{name:n.name,type:"event",inputs:s}}function yc(e,t={}){const n=ja(e);if(!n)throw new pt({signature:e,type:"error"});const r=ee(n.parameters),s=[],o=r.length;for(let i=0;i<o;i++)s.push(ke(r[i],{structs:t,type:"error"}));return{name:n.name,type:"error",inputs:s}}function mc(e,t={}){const n=Wa(e);if(!n)throw new pt({signature:e,type:"constructor"});const r=ee(n.parameters),s=[],o=r.length;for(let i=0;i<o;i++)s.push(ke(r[i],{structs:t,type:"constructor"}));return{type:"constructor",stateMutability:n.stateMutability??"nonpayable",inputs:s}}function gc(e){const t=Ya(e);if(!t)throw new pt({signature:e,type:"fallback"});return{type:"fallback",stateMutability:t.stateMutability??"nonpayable"}}const wc=/^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*(?:\spayable)?)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,xc=/^\((?<type>.+?)\)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,vc=/^u?int$/;function ke(e,t){const n=bc(e,t?.type,t?.structs);if(En.has(n))return En.get(n);const r=ho.test(e),s=Fe(r?xc:wc,e);if(!s)throw new sc({param:e});if(s.name&&Pc(s.name))throw new oc({param:e,name:s.name});const o=s.name?{name:s.name}:{},i=s.modifier==="indexed"?{indexed:!0}:{},a=t?.structs??{};let c,u={};if(r){c="tuple";const d=ee(s.type),l=[],b=d.length;for(let y=0;y<b;y++)l.push(ke(d[y],{structs:a}));u={components:l}}else if(s.type in a)c="tuple",u={components:a[s.type]};else if(vc.test(s.type))c=`${s.type}256`;else if(s.type==="address payable")c="address";else if(c=s.type,t?.type!=="struct"&&!vo(c))throw new nc({type:c});if(s.modifier){if(!t?.modifiers?.has?.(s.modifier))throw new ic({param:e,type:t?.type,modifier:s.modifier});if(Wn.has(s.modifier)&&!Ac(c,!!s.array))throw new ac({param:e,type:t?.type,modifier:s.modifier})}const f={type:`${c}${s.array??""}`,...o,...i,...u};return En.set(n,f),f}function ee(e,t=[],n="",r=0){const s=e.trim().length;for(let o=0;o<s;o++){const i=e[o],a=e.slice(o+1);switch(i){case",":return r===0?ee(a,[...t,n.trim()]):ee(a,t,`${n}${i}`,r);case"(":return ee(a,t,`${n}${i}`,r+1);case")":return ee(a,t,`${n}${i}`,r-1);default:return ee(a,t,`${n}${i}`,r)}}if(n==="")return t;if(r!==0)throw new lc({current:n,depth:r});return t.push(n.trim()),t}function vo(e){return e==="address"||e==="bool"||e==="function"||e==="string"||lo.test(e)||bo.test(e)}const Ec=/^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/;function Pc(e){return e==="address"||e==="bool"||e==="function"||e==="string"||e==="tuple"||lo.test(e)||bo.test(e)||Ec.test(e)}function Ac(e,t){return t||e==="bytes"||e==="string"||e==="tuple"}function mr(e){const t={},n=e.length;for(let i=0;i<n;i++){const a=e[i];if(!nn(a))continue;const c=Va(a);if(!c)throw new pt({signature:a,type:"struct"});const u=c.properties.split(";"),f=[],d=u.length;for(let l=0;l<d;l++){const y=u[l].trim();if(!y)continue;const p=ke(y,{type:"struct"});f.push(p)}if(!f.length)throw new fc({signature:a});t[c.name]=f}const r={},s=Object.entries(t),o=s.length;for(let i=0;i<o;i++){const[a,c]=s[i];r[a]=Eo(c,t)}return r}const Bc=/^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\[\d*?\])+?)?$/;function Eo(e=[],t={},n=new Set){const r=[],s=e.length;for(let o=0;o<s;o++){const i=e[o];if(ho.test(i.type))r.push(i);else{const c=Fe(Bc,i.type);if(!c?.type)throw new cc({abiParameter:i});const{array:u,type:f}=c;if(f in t){if(n.has(f))throw new dc({type:f});r.push({...i,type:`tuple${u??""}`,components:Eo(t[f],t,new Set([...n,f]))})}else if(vo(f))r.push(i);else throw new tc({type:f})}}return r}function Po(e){const t=mr(e),n=[],r=e.length;for(let s=0;s<r;s++){const o=e[s];nn(o)||n.push(Kn(o,t))}return n}function gs(e){let t;if(typeof e=="string")t=Kn(e);else{const n=mr(e),r=e.length;for(let s=0;s<r;s++){const o=e[s];if(!nn(o)){t=Kn(o,n);break}}}if(!t)throw new ec({signature:e});return t}function ws(e){const t=[];if(typeof e=="string"){const n=ee(e),r=n.length;for(let s=0;s<r;s++)t.push(ke(n[s],{modifiers:ms}))}else{const n=mr(e),r=e.length;for(let s=0;s<r;s++){const o=e[s];if(nn(o))continue;const i=ee(o),a=i.length;for(let c=0;c<a;c++)t.push(ke(i[c],{modifiers:ms,structs:n}))}}if(t.length===0)throw new rc({params:e});return t}function z(e,t,n){const r=e[t.name];if(typeof r=="function")return r;const s=e[n];return typeof s=="function"?s:o=>t(e,o)}function ue(e,{includeName:t=!1}={}){if(e.type!=="function"&&e.type!=="event"&&e.type!=="error")throw new Uc(e.type);return`${e.name}(${rn(e.inputs,{includeName:t})})`}function rn(e,{includeName:t=!1}={}){return e?e.map(n=>$c(n,{includeName:t})).join(t?", ":","):""}function $c(e,{includeName:t}){return e.type.startsWith("tuple")?`(${rn(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:"")}class Ic extends T{constructor({docsPath:t}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
3
3
  `),{docsPath:t,name:"AbiConstructorNotFoundError"})}}class xs extends T{constructor({docsPath:t}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(`
4
4
  `),{docsPath:t,name:"AbiConstructorParamsNotFoundError"})}}class Ao extends T{constructor({data:t,params:n,size:r}){super([`Data size of ${r} bytes is too small for given parameters.`].join(`
@@ -1,4 +1,4 @@
1
- import{N as h,t as Pe,u as Ie,R as u,S as g,b as te,c as O,E as _,v as oe,x as ne,n as m,B as j,a as de,y as M,z as G,D as Fe,m as pe,F as Le,C as re,G as Ee,I as Ne,M as P,J as We,e as S,r as Z,i as k,d as c,j as Re,K as ae,h as ue,f as He,L as F,O as b,s as Oe,A as ee,T as je,P as Me}from"./core-Be_s2Hcs.js";import{c as y,n as p,o as I,r as w,U as De}from"./index-D5ZH0nbD.js";import"./index-i2A_phFP.js";import"./index-9uP_tzWK.js";const D={getGasPriceInEther(e,t){const o=t*e;return Number(o)/1e18},getGasPriceInUSD(e,t,o){const i=D.getGasPriceInEther(t,o);return h.bigNumber(e).times(i).toNumber()},getPriceImpact({sourceTokenAmount:e,sourceTokenPriceInUSD:t,toTokenPriceInUSD:o,toTokenAmount:i}){const a=h.bigNumber(e).times(t),n=h.bigNumber(i).times(o);return a.minus(n).div(a).times(100).toNumber()},getMaxSlippage(e,t){const o=h.bigNumber(e).div(100);return h.multiply(t,o).toNumber()},getProviderFee(e,t=.0085){return h.bigNumber(e).times(t).toString()},isInsufficientNetworkTokenForGas(e,t){const o=t||"0";return h.bigNumber(e).eq(0)?!0:h.bigNumber(h.bigNumber(o)).gt(e)},isInsufficientSourceTokenForSwap(e,t,o){const i=o?.find(n=>n.address===t)?.quantity?.numeric;return h.bigNumber(i||"0").lt(e)}},xe=15e4,Ve=6,T={initializing:!1,initialized:!1,loadingPrices:!1,loadingQuote:!1,loadingApprovalTransaction:!1,loadingBuildTransaction:!1,loadingTransaction:!1,switchingTokens:!1,fetchError:!1,approvalTransaction:void 0,swapTransaction:void 0,transactionError:void 0,sourceToken:void 0,sourceTokenAmount:"",sourceTokenPriceInUSD:0,toToken:void 0,toTokenAmount:"",toTokenPriceInUSD:0,networkPrice:"0",networkBalanceInUSD:"0",networkTokenSymbol:"",inputError:void 0,slippage:pe.CONVERT_SLIPPAGE_TOLERANCE,tokens:void 0,popularTokens:void 0,suggestedTokens:void 0,foundTokens:void 0,myTokensWithBalance:void 0,tokensPriceMap:{},gasFee:"0",gasPriceInUSD:0,priceImpact:void 0,maxSlippage:void 0,providerFee:void 0},r=Ie({...T}),ie={state:r,subscribe(e){return Ne(r,()=>e(r))},subscribeKey(e,t){return Ee(r,e,t)},getParams(){const e=m.state.activeChain,t=m.getAccountData(e)?.caipAddress??m.state.activeCaipAddress,o=de.getPlainAddress(t),i=Le(),a=re.getConnectorId(m.state.activeChain);if(!o)throw new Error("No address found to swap the tokens from.");const n=!r.toToken?.address||!r.toToken?.decimals,s=!r.sourceToken?.address||!r.sourceToken?.decimals||!h.bigNumber(r.sourceTokenAmount).gt(0),l=!r.sourceTokenAmount;return{networkAddress:i,fromAddress:o,fromCaipAddress:t,sourceTokenAddress:r.sourceToken?.address,toTokenAddress:r.toToken?.address,toTokenAmount:r.toTokenAmount,toTokenDecimals:r.toToken?.decimals,sourceTokenAmount:r.sourceTokenAmount,sourceTokenDecimals:r.sourceToken?.decimals,invalidToToken:n,invalidSourceToken:s,invalidSourceTokenAmount:l,availableToSwap:t&&!n&&!s&&!l,isAuthConnector:a===O.CONNECTOR_ID.AUTH}},async setSourceToken(e){if(!e){r.sourceToken=e,r.sourceTokenAmount="",r.sourceTokenPriceInUSD=0;return}r.sourceToken=e,await d.setTokenPrice(e.address,"sourceToken")},setSourceTokenAmount(e){r.sourceTokenAmount=e},async setToToken(e){if(!e){r.toToken=e,r.toTokenAmount="",r.toTokenPriceInUSD=0;return}r.toToken=e,await d.setTokenPrice(e.address,"toToken")},setToTokenAmount(e){r.toTokenAmount=e?h.toFixed(e,Ve):""},async setTokenPrice(e,t){let o=r.tokensPriceMap[e]||0;o||(r.loadingPrices=!0,o=await d.getAddressPrice(e)),t==="sourceToken"?r.sourceTokenPriceInUSD=o:t==="toToken"&&(r.toTokenPriceInUSD=o),r.loadingPrices&&(r.loadingPrices=!1),d.getParams().availableToSwap&&!r.switchingTokens&&d.swapTokens()},async switchTokens(){if(!(r.initializing||!r.initialized||r.switchingTokens)){r.switchingTokens=!0;try{const e=r.toToken?{...r.toToken}:void 0,t=r.sourceToken?{...r.sourceToken}:void 0,o=e&&r.toTokenAmount===""?"1":r.toTokenAmount;d.setSourceTokenAmount(o),d.setToTokenAmount(""),await d.setSourceToken(e),await d.setToToken(t),r.switchingTokens=!1,d.swapTokens()}catch(e){throw r.switchingTokens=!1,e}}},resetState(){r.myTokensWithBalance=T.myTokensWithBalance,r.tokensPriceMap=T.tokensPriceMap,r.initialized=T.initialized,r.initializing=T.initializing,r.switchingTokens=T.switchingTokens,r.sourceToken=T.sourceToken,r.sourceTokenAmount=T.sourceTokenAmount,r.sourceTokenPriceInUSD=T.sourceTokenPriceInUSD,r.toToken=T.toToken,r.toTokenAmount=T.toTokenAmount,r.toTokenPriceInUSD=T.toTokenPriceInUSD,r.networkPrice=T.networkPrice,r.networkTokenSymbol=T.networkTokenSymbol,r.networkBalanceInUSD=T.networkBalanceInUSD,r.inputError=T.inputError},resetValues(){const{networkAddress:e}=d.getParams(),t=r.tokens?.find(o=>o.address===e);d.setSourceToken(t),d.setToToken(void 0)},getApprovalLoadingState(){return r.loadingApprovalTransaction},clearError(){r.transactionError=void 0},async initializeState(){if(!r.initializing){if(r.initializing=!0,!r.initialized)try{await d.fetchTokens(),r.initialized=!0}catch{r.initialized=!1,g.showError("Failed to initialize swap"),u.goBack()}r.initializing=!1}},async fetchTokens(){const{networkAddress:e}=d.getParams();await d.getNetworkTokenPrice(),await d.getMyTokensWithBalance();const t=r.myTokensWithBalance?.find(o=>o.address===e);t&&(r.networkTokenSymbol=t.symbol,d.setSourceToken(t),d.setSourceTokenAmount("0"))},async getTokenList(){const e=m.state.activeCaipNetwork?.caipNetworkId;if(!(r.caipNetworkId===e&&r.tokens))try{r.tokensLoading=!0;const t=await M.getTokenList(e);r.tokens=t,r.caipNetworkId=e,r.popularTokens=t.sort((s,l)=>s.symbol<l.symbol?-1:s.symbol>l.symbol?1:0);const i=(e&&pe.SUGGESTED_TOKENS_BY_CHAIN?.[e]||[]).map(s=>t.find(l=>l.symbol===s)).filter(s=>!!s),n=(pe.SWAP_SUGGESTED_TOKENS||[]).map(s=>t.find(l=>l.symbol===s)).filter(s=>!!s).filter(s=>!i.some(l=>l.address===s.address));r.suggestedTokens=[...i,...n]}catch{r.tokens=[],r.popularTokens=[],r.suggestedTokens=[]}finally{r.tokensLoading=!1}},async getAddressPrice(e){const t=r.tokensPriceMap[e];if(t)return t;const i=(await j.fetchTokenPrice({addresses:[e]}))?.fungibles||[],n=[...r.tokens||[],...r.myTokensWithBalance||[]]?.find(f=>f.address===e)?.symbol,s=i.find(f=>f.symbol.toLowerCase()===n?.toLowerCase())?.price||0,l=parseFloat(s.toString());return r.tokensPriceMap[e]=l,l},async getNetworkTokenPrice(){const{networkAddress:e}=d.getParams(),o=(await j.fetchTokenPrice({addresses:[e]}).catch(()=>(g.showError("Failed to fetch network token price"),{fungibles:[]}))).fungibles?.[0],i=o?.price.toString()||"0";r.tokensPriceMap[e]=parseFloat(i),r.networkTokenSymbol=o?.symbol||"",r.networkPrice=i},async getMyTokensWithBalance(e){const t=await Fe.getMyTokensWithBalance(e),o=M.mapBalancesToSwapTokens(t);o&&(await d.getInitialGasPrice(),d.setBalances(o))},setBalances(e){const{networkAddress:t}=d.getParams(),o=m.state.activeCaipNetwork;if(!o)return;const i=e.find(a=>a.address===t);e.forEach(a=>{r.tokensPriceMap[a.address]=a.price||0}),r.myTokensWithBalance=e.filter(a=>a.address.startsWith(o.caipNetworkId)),r.networkBalanceInUSD=i?h.multiply(i.quantity.numeric,i.price).toString():"0"},async getInitialGasPrice(){const e=await M.fetchGasPrice();if(!e)return{gasPrice:null,gasPriceInUSD:null};switch(m.state?.activeCaipNetwork?.chainNamespace){case O.CHAIN.SOLANA:return r.gasFee=e.standard??"0",r.gasPriceInUSD=h.multiply(e.standard,r.networkPrice).div(1e9).toNumber(),{gasPrice:BigInt(r.gasFee),gasPriceInUSD:Number(r.gasPriceInUSD)};case O.CHAIN.EVM:default:const t=e.standard??"0",o=BigInt(t),i=BigInt(xe),a=D.getGasPriceInUSD(r.networkPrice,i,o);return r.gasFee=t,r.gasPriceInUSD=a,{gasPrice:o,gasPriceInUSD:a}}},async swapTokens(){const e=m.getAccountData()?.address,t=r.sourceToken,o=r.toToken,i=h.bigNumber(r.sourceTokenAmount).gt(0);if(i||d.setToTokenAmount(""),!o||!t||r.loadingPrices||!i||!e)return;r.loadingQuote=!0;const a=h.bigNumber(r.sourceTokenAmount).times(10**t.decimals).round(0);try{const n=await j.fetchSwapQuote({userAddress:e,from:t.address,to:o.address,gasPrice:r.gasFee,amount:a.toString()});r.loadingQuote=!1;const s=n?.quotes?.[0]?.toAmount;if(!s){G.open({displayMessage:"Incorrect amount",debugMessage:"Please enter a valid amount"},"error");return}const l=h.bigNumber(s).div(10**o.decimals).toString();d.setToTokenAmount(l),d.hasInsufficientToken(r.sourceTokenAmount,t.address)?r.inputError="Insufficient balance":(r.inputError=void 0,d.setTransactionDetails())}catch(n){const s=await M.handleSwapError(n);r.loadingQuote=!1,r.inputError=s||"Insufficient balance"}},async getTransaction(){const{fromCaipAddress:e,availableToSwap:t}=d.getParams(),o=r.sourceToken,i=r.toToken;if(!(!e||!t||!o||!i||r.loadingQuote))try{r.loadingBuildTransaction=!0;const a=await M.fetchSwapAllowance({userAddress:e,tokenAddress:o.address,sourceTokenAmount:r.sourceTokenAmount,sourceTokenDecimals:o.decimals});let n;return a?n=await d.createSwapTransaction():n=await d.createAllowanceTransaction(),r.loadingBuildTransaction=!1,r.fetchError=!1,n}catch{u.goBack(),g.showError("Failed to check allowance"),r.loadingBuildTransaction=!1,r.approvalTransaction=void 0,r.swapTransaction=void 0,r.fetchError=!0;return}},async createAllowanceTransaction(){const{fromCaipAddress:e,sourceTokenAddress:t,toTokenAddress:o}=d.getParams();if(!(!e||!o)){if(!t)throw new Error("createAllowanceTransaction - No source token address found.");try{const i=await j.generateApproveCalldata({from:t,to:o,userAddress:e}),a=de.getPlainAddress(i.tx.from);if(!a)throw new Error("SwapController:createAllowanceTransaction - address is required");const n={data:i.tx.data,to:a,gasPrice:BigInt(i.tx.eip155.gasPrice),value:BigInt(i.tx.value),toAmount:r.toTokenAmount};return r.swapTransaction=void 0,r.approvalTransaction={data:n.data,to:n.to,gasPrice:n.gasPrice,value:n.value,toAmount:n.toAmount},{data:n.data,to:n.to,gasPrice:n.gasPrice,value:n.value,toAmount:n.toAmount}}catch{u.goBack(),g.showError("Failed to create approval transaction"),r.approvalTransaction=void 0,r.swapTransaction=void 0,r.fetchError=!0;return}}},async createSwapTransaction(){const{networkAddress:e,fromCaipAddress:t,sourceTokenAmount:o}=d.getParams(),i=r.sourceToken,a=r.toToken;if(!t||!o||!i||!a)return;const n=te.parseUnits(o,i.decimals)?.toString();try{const s=await j.generateSwapCalldata({userAddress:t,from:i.address,to:a.address,amount:n,disableEstimate:!0}),l=i.address===e,f=BigInt(s.tx.eip155.gas),ye=BigInt(s.tx.eip155.gasPrice),ke=de.getPlainAddress(s.tx.to);if(!ke)throw new Error("SwapController:createSwapTransaction - address is required");const Te={data:s.tx.data,to:ke,gas:f,gasPrice:ye,value:BigInt(l?n??"0":"0"),toAmount:r.toTokenAmount};return r.gasPriceInUSD=D.getGasPriceInUSD(r.networkPrice,f,ye),r.approvalTransaction=void 0,r.swapTransaction=Te,Te}catch{u.goBack(),g.showError("Failed to create transaction"),r.approvalTransaction=void 0,r.swapTransaction=void 0,r.fetchError=!0;return}},onEmbeddedWalletApprovalSuccess(){g.showLoading("Approve limit increase in your wallet"),u.replace("SwapPreview")},async sendTransactionForApproval(e){const{fromAddress:t,isAuthConnector:o}=d.getParams();r.loadingApprovalTransaction=!0,o?u.pushTransactionStack({onSuccess:d.onEmbeddedWalletApprovalSuccess}):g.showLoading("Approve limit increase in your wallet");try{await te.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:O.CHAIN.EVM}),await d.swapTokens(),await d.getTransaction(),r.approvalTransaction=void 0,r.loadingApprovalTransaction=!1}catch(a){const n=a;r.transactionError=n?.displayMessage,r.loadingApprovalTransaction=!1,g.showError(n?.displayMessage||"Transaction error"),_.sendEvent({type:"track",event:"SWAP_APPROVAL_ERROR",properties:{message:n?.displayMessage||n?.message||"Unknown",network:m.state.activeCaipNetwork?.caipNetworkId||"",swapFromToken:d.state.sourceToken?.symbol||"",swapToToken:d.state.toToken?.symbol||"",swapFromAmount:d.state.sourceTokenAmount||"",swapToAmount:d.state.toTokenAmount||"",isSmartAccount:oe(O.CHAIN.EVM)===ne.ACCOUNT_TYPES.SMART_ACCOUNT}})}},async sendTransactionForSwap(e){if(!e)return;const{fromAddress:t,toTokenAmount:o,isAuthConnector:i}=d.getParams();r.loadingTransaction=!0;const a=`Swapping ${r.sourceToken?.symbol} to ${h.formatNumberToLocalString(o,3)} ${r.toToken?.symbol}`,n=`Swapped ${r.sourceToken?.symbol} to ${h.formatNumberToLocalString(o,3)} ${r.toToken?.symbol}`;i?u.pushTransactionStack({onSuccess(){u.replace("Account"),g.showLoading(a),ie.resetState()}}):g.showLoading("Confirm transaction in your wallet");try{const s=[r.sourceToken?.address,r.toToken?.address].join(","),l=await te.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:O.CHAIN.EVM});return r.loadingTransaction=!1,g.showSuccess(n),_.sendEvent({type:"track",event:"SWAP_SUCCESS",properties:{network:m.state.activeCaipNetwork?.caipNetworkId||"",swapFromToken:d.state.sourceToken?.symbol||"",swapToToken:d.state.toToken?.symbol||"",swapFromAmount:d.state.sourceTokenAmount||"",swapToAmount:d.state.toTokenAmount||"",isSmartAccount:oe(O.CHAIN.EVM)===ne.ACCOUNT_TYPES.SMART_ACCOUNT}}),ie.resetState(),i||u.replace("Account"),ie.getMyTokensWithBalance(s),l}catch(s){const l=s;r.transactionError=l?.displayMessage,r.loadingTransaction=!1,g.showError(l?.displayMessage||"Transaction error"),_.sendEvent({type:"track",event:"SWAP_ERROR",properties:{message:l?.displayMessage||l?.message||"Unknown",network:m.state.activeCaipNetwork?.caipNetworkId||"",swapFromToken:d.state.sourceToken?.symbol||"",swapToToken:d.state.toToken?.symbol||"",swapFromAmount:d.state.sourceTokenAmount||"",swapToAmount:d.state.toTokenAmount||"",isSmartAccount:oe(O.CHAIN.EVM)===ne.ACCOUNT_TYPES.SMART_ACCOUNT}});return}},hasInsufficientToken(e,t){return D.isInsufficientSourceTokenForSwap(e,t,r.myTokensWithBalance)},setTransactionDetails(){const{toTokenAddress:e,toTokenDecimals:t}=d.getParams();!e||!t||(r.gasPriceInUSD=D.getGasPriceInUSD(r.networkPrice,BigInt(r.gasFee),BigInt(xe)),r.priceImpact=D.getPriceImpact({sourceTokenAmount:r.sourceTokenAmount,sourceTokenPriceInUSD:r.sourceTokenPriceInUSD,toTokenPriceInUSD:r.toTokenPriceInUSD,toTokenAmount:r.toTokenAmount}),r.maxSlippage=D.getMaxSlippage(r.slippage,r.toTokenAmount),r.providerFee=D.getProviderFee(r.sourceTokenAmount))}},d=Pe(ie),A=Ie({message:"",open:!1,triggerRect:{width:0,height:0,top:0,left:0},variant:"shade"}),Ge={state:A,subscribe(e){return Ne(A,()=>e(A))},subscribeKey(e,t){return Ee(A,e,t)},showTooltip({message:e,triggerRect:t,variant:o}){A.open=!0,A.message=e,A.triggerRect=t,A.variant=o},hide(){A.open=!1,A.message="",A.triggerRect={width:0,height:0,top:0,left:0}}},V=Pe(Ge),_e={isUnsupportedChainView(){return u.state.view==="UnsupportedChain"||u.state.view==="SwitchNetwork"&&u.state.history.includes("UnsupportedChain")},async safeClose(){if(this.isUnsupportedChainView()){P.shake();return}if(await We.isSIWXCloseDisabled()){P.shake();return}(u.state.view==="DataCapture"||u.state.view==="DataCaptureOtpConfirm")&&te.disconnect(),P.close()}},Ke=S`
1
+ import{N as h,t as Pe,u as Ie,R as u,S as g,b as te,c as O,E as _,v as oe,x as ne,n as m,B as j,a as de,y as M,z as G,D as Fe,m as pe,F as Le,C as re,G as Ee,I as Ne,M as P,J as We,e as S,r as Z,i as k,d as c,j as Re,K as ae,h as ue,f as He,L as F,O as b,s as Oe,A as ee,T as je,P as Me}from"./core--P1bmxSt.js";import{c as y,n as p,o as I,r as w,U as De}from"./index-BLEMAHWN.js";import"./index-c9eFvuXm.js";import"./index-ByNdfGTy.js";const D={getGasPriceInEther(e,t){const o=t*e;return Number(o)/1e18},getGasPriceInUSD(e,t,o){const i=D.getGasPriceInEther(t,o);return h.bigNumber(e).times(i).toNumber()},getPriceImpact({sourceTokenAmount:e,sourceTokenPriceInUSD:t,toTokenPriceInUSD:o,toTokenAmount:i}){const a=h.bigNumber(e).times(t),n=h.bigNumber(i).times(o);return a.minus(n).div(a).times(100).toNumber()},getMaxSlippage(e,t){const o=h.bigNumber(e).div(100);return h.multiply(t,o).toNumber()},getProviderFee(e,t=.0085){return h.bigNumber(e).times(t).toString()},isInsufficientNetworkTokenForGas(e,t){const o=t||"0";return h.bigNumber(e).eq(0)?!0:h.bigNumber(h.bigNumber(o)).gt(e)},isInsufficientSourceTokenForSwap(e,t,o){const i=o?.find(n=>n.address===t)?.quantity?.numeric;return h.bigNumber(i||"0").lt(e)}},xe=15e4,Ve=6,T={initializing:!1,initialized:!1,loadingPrices:!1,loadingQuote:!1,loadingApprovalTransaction:!1,loadingBuildTransaction:!1,loadingTransaction:!1,switchingTokens:!1,fetchError:!1,approvalTransaction:void 0,swapTransaction:void 0,transactionError:void 0,sourceToken:void 0,sourceTokenAmount:"",sourceTokenPriceInUSD:0,toToken:void 0,toTokenAmount:"",toTokenPriceInUSD:0,networkPrice:"0",networkBalanceInUSD:"0",networkTokenSymbol:"",inputError:void 0,slippage:pe.CONVERT_SLIPPAGE_TOLERANCE,tokens:void 0,popularTokens:void 0,suggestedTokens:void 0,foundTokens:void 0,myTokensWithBalance:void 0,tokensPriceMap:{},gasFee:"0",gasPriceInUSD:0,priceImpact:void 0,maxSlippage:void 0,providerFee:void 0},r=Ie({...T}),ie={state:r,subscribe(e){return Ne(r,()=>e(r))},subscribeKey(e,t){return Ee(r,e,t)},getParams(){const e=m.state.activeChain,t=m.getAccountData(e)?.caipAddress??m.state.activeCaipAddress,o=de.getPlainAddress(t),i=Le(),a=re.getConnectorId(m.state.activeChain);if(!o)throw new Error("No address found to swap the tokens from.");const n=!r.toToken?.address||!r.toToken?.decimals,s=!r.sourceToken?.address||!r.sourceToken?.decimals||!h.bigNumber(r.sourceTokenAmount).gt(0),l=!r.sourceTokenAmount;return{networkAddress:i,fromAddress:o,fromCaipAddress:t,sourceTokenAddress:r.sourceToken?.address,toTokenAddress:r.toToken?.address,toTokenAmount:r.toTokenAmount,toTokenDecimals:r.toToken?.decimals,sourceTokenAmount:r.sourceTokenAmount,sourceTokenDecimals:r.sourceToken?.decimals,invalidToToken:n,invalidSourceToken:s,invalidSourceTokenAmount:l,availableToSwap:t&&!n&&!s&&!l,isAuthConnector:a===O.CONNECTOR_ID.AUTH}},async setSourceToken(e){if(!e){r.sourceToken=e,r.sourceTokenAmount="",r.sourceTokenPriceInUSD=0;return}r.sourceToken=e,await d.setTokenPrice(e.address,"sourceToken")},setSourceTokenAmount(e){r.sourceTokenAmount=e},async setToToken(e){if(!e){r.toToken=e,r.toTokenAmount="",r.toTokenPriceInUSD=0;return}r.toToken=e,await d.setTokenPrice(e.address,"toToken")},setToTokenAmount(e){r.toTokenAmount=e?h.toFixed(e,Ve):""},async setTokenPrice(e,t){let o=r.tokensPriceMap[e]||0;o||(r.loadingPrices=!0,o=await d.getAddressPrice(e)),t==="sourceToken"?r.sourceTokenPriceInUSD=o:t==="toToken"&&(r.toTokenPriceInUSD=o),r.loadingPrices&&(r.loadingPrices=!1),d.getParams().availableToSwap&&!r.switchingTokens&&d.swapTokens()},async switchTokens(){if(!(r.initializing||!r.initialized||r.switchingTokens)){r.switchingTokens=!0;try{const e=r.toToken?{...r.toToken}:void 0,t=r.sourceToken?{...r.sourceToken}:void 0,o=e&&r.toTokenAmount===""?"1":r.toTokenAmount;d.setSourceTokenAmount(o),d.setToTokenAmount(""),await d.setSourceToken(e),await d.setToToken(t),r.switchingTokens=!1,d.swapTokens()}catch(e){throw r.switchingTokens=!1,e}}},resetState(){r.myTokensWithBalance=T.myTokensWithBalance,r.tokensPriceMap=T.tokensPriceMap,r.initialized=T.initialized,r.initializing=T.initializing,r.switchingTokens=T.switchingTokens,r.sourceToken=T.sourceToken,r.sourceTokenAmount=T.sourceTokenAmount,r.sourceTokenPriceInUSD=T.sourceTokenPriceInUSD,r.toToken=T.toToken,r.toTokenAmount=T.toTokenAmount,r.toTokenPriceInUSD=T.toTokenPriceInUSD,r.networkPrice=T.networkPrice,r.networkTokenSymbol=T.networkTokenSymbol,r.networkBalanceInUSD=T.networkBalanceInUSD,r.inputError=T.inputError},resetValues(){const{networkAddress:e}=d.getParams(),t=r.tokens?.find(o=>o.address===e);d.setSourceToken(t),d.setToToken(void 0)},getApprovalLoadingState(){return r.loadingApprovalTransaction},clearError(){r.transactionError=void 0},async initializeState(){if(!r.initializing){if(r.initializing=!0,!r.initialized)try{await d.fetchTokens(),r.initialized=!0}catch{r.initialized=!1,g.showError("Failed to initialize swap"),u.goBack()}r.initializing=!1}},async fetchTokens(){const{networkAddress:e}=d.getParams();await d.getNetworkTokenPrice(),await d.getMyTokensWithBalance();const t=r.myTokensWithBalance?.find(o=>o.address===e);t&&(r.networkTokenSymbol=t.symbol,d.setSourceToken(t),d.setSourceTokenAmount("0"))},async getTokenList(){const e=m.state.activeCaipNetwork?.caipNetworkId;if(!(r.caipNetworkId===e&&r.tokens))try{r.tokensLoading=!0;const t=await M.getTokenList(e);r.tokens=t,r.caipNetworkId=e,r.popularTokens=t.sort((s,l)=>s.symbol<l.symbol?-1:s.symbol>l.symbol?1:0);const i=(e&&pe.SUGGESTED_TOKENS_BY_CHAIN?.[e]||[]).map(s=>t.find(l=>l.symbol===s)).filter(s=>!!s),n=(pe.SWAP_SUGGESTED_TOKENS||[]).map(s=>t.find(l=>l.symbol===s)).filter(s=>!!s).filter(s=>!i.some(l=>l.address===s.address));r.suggestedTokens=[...i,...n]}catch{r.tokens=[],r.popularTokens=[],r.suggestedTokens=[]}finally{r.tokensLoading=!1}},async getAddressPrice(e){const t=r.tokensPriceMap[e];if(t)return t;const i=(await j.fetchTokenPrice({addresses:[e]}))?.fungibles||[],n=[...r.tokens||[],...r.myTokensWithBalance||[]]?.find(f=>f.address===e)?.symbol,s=i.find(f=>f.symbol.toLowerCase()===n?.toLowerCase())?.price||0,l=parseFloat(s.toString());return r.tokensPriceMap[e]=l,l},async getNetworkTokenPrice(){const{networkAddress:e}=d.getParams(),o=(await j.fetchTokenPrice({addresses:[e]}).catch(()=>(g.showError("Failed to fetch network token price"),{fungibles:[]}))).fungibles?.[0],i=o?.price.toString()||"0";r.tokensPriceMap[e]=parseFloat(i),r.networkTokenSymbol=o?.symbol||"",r.networkPrice=i},async getMyTokensWithBalance(e){const t=await Fe.getMyTokensWithBalance(e),o=M.mapBalancesToSwapTokens(t);o&&(await d.getInitialGasPrice(),d.setBalances(o))},setBalances(e){const{networkAddress:t}=d.getParams(),o=m.state.activeCaipNetwork;if(!o)return;const i=e.find(a=>a.address===t);e.forEach(a=>{r.tokensPriceMap[a.address]=a.price||0}),r.myTokensWithBalance=e.filter(a=>a.address.startsWith(o.caipNetworkId)),r.networkBalanceInUSD=i?h.multiply(i.quantity.numeric,i.price).toString():"0"},async getInitialGasPrice(){const e=await M.fetchGasPrice();if(!e)return{gasPrice:null,gasPriceInUSD:null};switch(m.state?.activeCaipNetwork?.chainNamespace){case O.CHAIN.SOLANA:return r.gasFee=e.standard??"0",r.gasPriceInUSD=h.multiply(e.standard,r.networkPrice).div(1e9).toNumber(),{gasPrice:BigInt(r.gasFee),gasPriceInUSD:Number(r.gasPriceInUSD)};case O.CHAIN.EVM:default:const t=e.standard??"0",o=BigInt(t),i=BigInt(xe),a=D.getGasPriceInUSD(r.networkPrice,i,o);return r.gasFee=t,r.gasPriceInUSD=a,{gasPrice:o,gasPriceInUSD:a}}},async swapTokens(){const e=m.getAccountData()?.address,t=r.sourceToken,o=r.toToken,i=h.bigNumber(r.sourceTokenAmount).gt(0);if(i||d.setToTokenAmount(""),!o||!t||r.loadingPrices||!i||!e)return;r.loadingQuote=!0;const a=h.bigNumber(r.sourceTokenAmount).times(10**t.decimals).round(0);try{const n=await j.fetchSwapQuote({userAddress:e,from:t.address,to:o.address,gasPrice:r.gasFee,amount:a.toString()});r.loadingQuote=!1;const s=n?.quotes?.[0]?.toAmount;if(!s){G.open({displayMessage:"Incorrect amount",debugMessage:"Please enter a valid amount"},"error");return}const l=h.bigNumber(s).div(10**o.decimals).toString();d.setToTokenAmount(l),d.hasInsufficientToken(r.sourceTokenAmount,t.address)?r.inputError="Insufficient balance":(r.inputError=void 0,d.setTransactionDetails())}catch(n){const s=await M.handleSwapError(n);r.loadingQuote=!1,r.inputError=s||"Insufficient balance"}},async getTransaction(){const{fromCaipAddress:e,availableToSwap:t}=d.getParams(),o=r.sourceToken,i=r.toToken;if(!(!e||!t||!o||!i||r.loadingQuote))try{r.loadingBuildTransaction=!0;const a=await M.fetchSwapAllowance({userAddress:e,tokenAddress:o.address,sourceTokenAmount:r.sourceTokenAmount,sourceTokenDecimals:o.decimals});let n;return a?n=await d.createSwapTransaction():n=await d.createAllowanceTransaction(),r.loadingBuildTransaction=!1,r.fetchError=!1,n}catch{u.goBack(),g.showError("Failed to check allowance"),r.loadingBuildTransaction=!1,r.approvalTransaction=void 0,r.swapTransaction=void 0,r.fetchError=!0;return}},async createAllowanceTransaction(){const{fromCaipAddress:e,sourceTokenAddress:t,toTokenAddress:o}=d.getParams();if(!(!e||!o)){if(!t)throw new Error("createAllowanceTransaction - No source token address found.");try{const i=await j.generateApproveCalldata({from:t,to:o,userAddress:e}),a=de.getPlainAddress(i.tx.from);if(!a)throw new Error("SwapController:createAllowanceTransaction - address is required");const n={data:i.tx.data,to:a,gasPrice:BigInt(i.tx.eip155.gasPrice),value:BigInt(i.tx.value),toAmount:r.toTokenAmount};return r.swapTransaction=void 0,r.approvalTransaction={data:n.data,to:n.to,gasPrice:n.gasPrice,value:n.value,toAmount:n.toAmount},{data:n.data,to:n.to,gasPrice:n.gasPrice,value:n.value,toAmount:n.toAmount}}catch{u.goBack(),g.showError("Failed to create approval transaction"),r.approvalTransaction=void 0,r.swapTransaction=void 0,r.fetchError=!0;return}}},async createSwapTransaction(){const{networkAddress:e,fromCaipAddress:t,sourceTokenAmount:o}=d.getParams(),i=r.sourceToken,a=r.toToken;if(!t||!o||!i||!a)return;const n=te.parseUnits(o,i.decimals)?.toString();try{const s=await j.generateSwapCalldata({userAddress:t,from:i.address,to:a.address,amount:n,disableEstimate:!0}),l=i.address===e,f=BigInt(s.tx.eip155.gas),ye=BigInt(s.tx.eip155.gasPrice),ke=de.getPlainAddress(s.tx.to);if(!ke)throw new Error("SwapController:createSwapTransaction - address is required");const Te={data:s.tx.data,to:ke,gas:f,gasPrice:ye,value:BigInt(l?n??"0":"0"),toAmount:r.toTokenAmount};return r.gasPriceInUSD=D.getGasPriceInUSD(r.networkPrice,f,ye),r.approvalTransaction=void 0,r.swapTransaction=Te,Te}catch{u.goBack(),g.showError("Failed to create transaction"),r.approvalTransaction=void 0,r.swapTransaction=void 0,r.fetchError=!0;return}},onEmbeddedWalletApprovalSuccess(){g.showLoading("Approve limit increase in your wallet"),u.replace("SwapPreview")},async sendTransactionForApproval(e){const{fromAddress:t,isAuthConnector:o}=d.getParams();r.loadingApprovalTransaction=!0,o?u.pushTransactionStack({onSuccess:d.onEmbeddedWalletApprovalSuccess}):g.showLoading("Approve limit increase in your wallet");try{await te.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:O.CHAIN.EVM}),await d.swapTokens(),await d.getTransaction(),r.approvalTransaction=void 0,r.loadingApprovalTransaction=!1}catch(a){const n=a;r.transactionError=n?.displayMessage,r.loadingApprovalTransaction=!1,g.showError(n?.displayMessage||"Transaction error"),_.sendEvent({type:"track",event:"SWAP_APPROVAL_ERROR",properties:{message:n?.displayMessage||n?.message||"Unknown",network:m.state.activeCaipNetwork?.caipNetworkId||"",swapFromToken:d.state.sourceToken?.symbol||"",swapToToken:d.state.toToken?.symbol||"",swapFromAmount:d.state.sourceTokenAmount||"",swapToAmount:d.state.toTokenAmount||"",isSmartAccount:oe(O.CHAIN.EVM)===ne.ACCOUNT_TYPES.SMART_ACCOUNT}})}},async sendTransactionForSwap(e){if(!e)return;const{fromAddress:t,toTokenAmount:o,isAuthConnector:i}=d.getParams();r.loadingTransaction=!0;const a=`Swapping ${r.sourceToken?.symbol} to ${h.formatNumberToLocalString(o,3)} ${r.toToken?.symbol}`,n=`Swapped ${r.sourceToken?.symbol} to ${h.formatNumberToLocalString(o,3)} ${r.toToken?.symbol}`;i?u.pushTransactionStack({onSuccess(){u.replace("Account"),g.showLoading(a),ie.resetState()}}):g.showLoading("Confirm transaction in your wallet");try{const s=[r.sourceToken?.address,r.toToken?.address].join(","),l=await te.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:O.CHAIN.EVM});return r.loadingTransaction=!1,g.showSuccess(n),_.sendEvent({type:"track",event:"SWAP_SUCCESS",properties:{network:m.state.activeCaipNetwork?.caipNetworkId||"",swapFromToken:d.state.sourceToken?.symbol||"",swapToToken:d.state.toToken?.symbol||"",swapFromAmount:d.state.sourceTokenAmount||"",swapToAmount:d.state.toTokenAmount||"",isSmartAccount:oe(O.CHAIN.EVM)===ne.ACCOUNT_TYPES.SMART_ACCOUNT}}),ie.resetState(),i||u.replace("Account"),ie.getMyTokensWithBalance(s),l}catch(s){const l=s;r.transactionError=l?.displayMessage,r.loadingTransaction=!1,g.showError(l?.displayMessage||"Transaction error"),_.sendEvent({type:"track",event:"SWAP_ERROR",properties:{message:l?.displayMessage||l?.message||"Unknown",network:m.state.activeCaipNetwork?.caipNetworkId||"",swapFromToken:d.state.sourceToken?.symbol||"",swapToToken:d.state.toToken?.symbol||"",swapFromAmount:d.state.sourceTokenAmount||"",swapToAmount:d.state.toTokenAmount||"",isSmartAccount:oe(O.CHAIN.EVM)===ne.ACCOUNT_TYPES.SMART_ACCOUNT}});return}},hasInsufficientToken(e,t){return D.isInsufficientSourceTokenForSwap(e,t,r.myTokensWithBalance)},setTransactionDetails(){const{toTokenAddress:e,toTokenDecimals:t}=d.getParams();!e||!t||(r.gasPriceInUSD=D.getGasPriceInUSD(r.networkPrice,BigInt(r.gasFee),BigInt(xe)),r.priceImpact=D.getPriceImpact({sourceTokenAmount:r.sourceTokenAmount,sourceTokenPriceInUSD:r.sourceTokenPriceInUSD,toTokenPriceInUSD:r.toTokenPriceInUSD,toTokenAmount:r.toTokenAmount}),r.maxSlippage=D.getMaxSlippage(r.slippage,r.toTokenAmount),r.providerFee=D.getProviderFee(r.sourceTokenAmount))}},d=Pe(ie),A=Ie({message:"",open:!1,triggerRect:{width:0,height:0,top:0,left:0},variant:"shade"}),Ge={state:A,subscribe(e){return Ne(A,()=>e(A))},subscribeKey(e,t){return Ee(A,e,t)},showTooltip({message:e,triggerRect:t,variant:o}){A.open=!0,A.message=e,A.triggerRect=t,A.variant=o},hide(){A.open=!1,A.message="",A.triggerRect={width:0,height:0,top:0,left:0}}},V=Pe(Ge),_e={isUnsupportedChainView(){return u.state.view==="UnsupportedChain"||u.state.view==="SwitchNetwork"&&u.state.history.includes("UnsupportedChain")},async safeClose(){if(this.isUnsupportedChainView()){P.shake();return}if(await We.isSIWXCloseDisabled()){P.shake();return}(u.state.view==="DataCapture"||u.state.view==="DataCaptureOtpConfirm")&&te.disconnect(),P.close()}},Ke=S`
2
2
  :host {
3
3
  display: block;
4
4
  border-radius: clamp(0px, ${({borderRadius:e})=>e[8]}, 44px);
package/index.html CHANGED
@@ -2,11 +2,11 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20723159718.commit-457ece6/dcl-regenesislabs.png" />
5
+ <link rel="icon" type="image/svg+xml" href="https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20724632172.commit-bac4912/dcl-regenesislabs.png" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>DCL Regenesis Labs Mobile Hub</title>
8
- <script type="module" crossorigin src="https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20723159718.commit-457ece6/assets/index-i2A_phFP.js"></script>
9
- <link rel="stylesheet" crossorigin href="https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20723159718.commit-457ece6/assets/index-D42x9zzA.css">
8
+ <script type="module" crossorigin src="https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20724632172.commit-bac4912/assets/index-c9eFvuXm.js"></script>
9
+ <link rel="stylesheet" crossorigin href="https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20724632172.commit-bac4912/assets/index-C6ZYCY3y.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl-regenesislabs/mobile-hub",
3
- "version": "1.0.0-20723159718.commit-457ece6",
3
+ "version": "1.0.0-20724632172.commit-bac4912",
4
4
  "description": "Mobile Hub",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -17,6 +17,6 @@
17
17
  "type": "git",
18
18
  "url": "git+https://github.com/decentraland/mobile-hub.git"
19
19
  },
20
- "homepage": "https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20723159718.commit-457ece6",
21
- "commit": "457ece649d377cd3b02a5fe14d6398db0a4a5f25"
20
+ "homepage": "https://cdn.decentraland.org/@dcl-regenesislabs/mobile-hub/1.0.0-20724632172.commit-bac4912",
21
+ "commit": "bac49121acd1c86cf82f4a1ed232c783fdf373ff"
22
22
  }
@@ -1 +0,0 @@
1
- :root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background-color:#1a1a1a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{margin:0}.navbar-container{position:fixed;top:16px;left:16px;right:16px;z-index:50;display:flex;justify-content:space-between;pointer-events:none}.navbar-bar{pointer-events:auto;display:flex;align-items:center;gap:8px;padding:4px;background:#1c1c20f2;border-radius:12px;box-shadow:0 4px 12px #0000004d}.navbar-spacer{flex:1;min-width:16px}.navbar-button{display:flex;align-items:center;gap:8px;padding:10px 16px;border:none;border-radius:8px;background:transparent;color:#ffffffb3;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}.navbar-button:hover{background:#ffffff1a;color:#ffffffe6}.navbar-button:active{background:#ffffff26}.navbar-button:disabled{opacity:.5;cursor:not-allowed}.navbar-button-icon{font-size:16px}.navbar-avatar-button{padding:4px;border:none;border-radius:8px;background:transparent;cursor:pointer;transition:all .2s ease}.navbar-avatar-button:hover{background:#ffffff1a}.navbar-avatar-button:active{background:#ffffff26}.navbar-avatar{width:32px;height:32px;border-radius:8px;object-fit:cover;display:block}.navbar-avatar-placeholder{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:#ffffff1a;color:#ffffffb3;font-size:12px;font-weight:600}.navbar-backdrop{position:fixed;inset:0;z-index:-1}.navbar-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:160px;background:#1c1c20f2;border-radius:12px;box-shadow:0 4px 12px #0000004d;overflow:hidden}.navbar-menu-address{padding:12px 16px;color:#ffffff80;font-size:12px;border-bottom:1px solid rgba(255,255,255,.1)}.navbar-menu-item{display:block;width:100%;padding:12px 16px;border:none;background:transparent;color:#ffffffb3;font-size:14px;text-align:left;cursor:pointer;transition:all .2s ease}.navbar-menu-item:hover{background:#ffffff1a;color:#ffffffe6}.navbar-menu-item:active{background:#ffffff26}.navbar-dev-badge{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#ffc10733;border:1px solid rgba(255,193,7,.5);border-radius:8px;color:#ffc107;font-size:12px;font-weight:600}.navbar-dev-address{color:#fff9;font-weight:400;font-family:monospace}.app-tabs{display:flex;gap:2px;padding:4px;background:#ffffff0d;border-radius:8px}.app-tab{padding:8px 16px;border:none;border-radius:6px;background:transparent;color:#ffffff80;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.app-tab:hover{color:#fffc;background:#ffffff0d}.app-tab-active{background:#00d9ff26;color:#00d9ff}.app-tab-active:hover{background:#00d9ff33;color:#00d9ff}._mapView_10j9q_1{position:fixed;top:0;left:0;width:100vw;height:100vh;overflow:hidden;background-color:#1a1a1a}._controls_10j9q_11{position:absolute;bottom:100px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:10}._controlButton_10j9q_21{width:40px;height:40px;border-radius:8px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;font-size:20px;font-weight:700;cursor:pointer;transition:background .2s;display:flex;align-items:center;justify-content:center}._controlButton_10j9q_21:hover{background:#fff3}._controlButton_10j9q_21:active{background:#ffffff4d}._coordinateDisplay_10j9q_45{position:absolute;bottom:80px;left:24px;padding:8px 16px;background:#000000b3;border-radius:4px;color:#fff;font-family:SF Mono,Monaco,Consolas,monospace;font-size:14px;font-weight:500;z-index:10;-webkit-user-select:none;user-select:none}._sidebar_10p69_1{position:fixed;top:0;right:0;height:100vh;width:320px;background:#1c1c20;border-left:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;transition:transform .3s ease;z-index:9999}._sidebarCollapsed_10p69_15{transform:translate(100%)}._toggleButton_10p69_19{position:absolute;left:-40px;top:50%;transform:translateY(-50%);width:40px;height:80px;background:#1c1c20f2;border:1px solid rgba(255,255,255,.1);border-right:none;border-radius:8px 0 0 8px;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px}._toggleButton_10p69_19:hover{background:#323237f2}._header_10p69_42{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid rgba(255,255,255,.1)}._headerTitle_10p69_50{margin:0;font-size:16px;font-weight:600;color:#ffffffe6}._closeButton_10p69_57{width:32px;height:32px;border:none;border-radius:8px;background:#ffffff1a;color:#ffffffb3;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}._closeButton_10p69_57:hover{background:#ffffff26;color:#ffffffe6}._content_10p69_77{flex:1;overflow-y:auto;padding:16px}._footer_10p69_83{padding:16px;border-top:1px solid rgba(255,255,255,.1);display:flex;gap:8px}._button_10p69_90{flex:1;padding:10px 16px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s}._buttonPrimary_10p69_101{background:#00d9ff;color:#000}._buttonPrimary_10p69_101:hover{background:#00c4e8}._buttonPrimary_10p69_101:disabled{background:#00d9ff4d;cursor:not-allowed}._buttonSecondary_10p69_115{background:#ffffff1a;color:#fff}._buttonSecondary_10p69_115:hover{background:#ffffff26}._buttonDanger_10p69_124{background:#ff6b6b33;color:#ff6b6b}._buttonDanger_10p69_124:hover{background:#ff6b6b4d}._groupCard_10p69_134{background:#ffffff0d;border-radius:8px;padding:12px;margin-bottom:12px;cursor:pointer;transition:background .2s}._groupCard_10p69_134:hover{background:#ffffff14}._groupCardHeader_10p69_147{display:flex;align-items:center;gap:10px;margin-bottom:8px}._groupColorDot_10p69_154{width:12px;height:12px;border-radius:50%;flex-shrink:0}._groupName_10p69_161{flex:1;font-size:14px;font-weight:500;color:#fff;margin:0}._groupMeta_10p69_169{font-size:12px;color:#ffffff80;margin-bottom:8px}._groupTags_10p69_175{display:flex;flex-wrap:wrap;gap:4px}._tag_10p69_181{background:#ffffff1a;color:#ffffffb3;padding:2px 8px;border-radius:12px;font-size:11px}._groupActions_10p69_189{display:flex;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.1)}._actionButton_10p69_197{padding:6px 12px;border:none;border-radius:4px;font-size:12px;cursor:pointer;background:#ffffff1a;color:#fff}._actionButton_10p69_197:hover{background:#ffffff26}._form_10p69_212{display:flex;flex-direction:column;gap:16px}._formGroup_10p69_218{display:flex;flex-direction:column;gap:6px}._label_10p69_224{font-size:12px;font-weight:500;color:#ffffffb3}._input_10p69_230{padding:10px 12px;border:1px solid rgba(255,255,255,.2);border-radius:6px;background:#ffffff0d;color:#fff;font-size:14px}._input_10p69_230:focus{outline:none;border-color:#00d9ff}._textarea_10p69_244{resize:vertical;min-height:80px}._colorPicker_10p69_249{display:flex;flex-wrap:wrap;gap:8px}._colorOption_10p69_255{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .2s}._colorOption_10p69_255:hover{transform:scale(1.1)}._colorOptionSelected_10p69_268{border-color:#fff}._colorOptionDisabled_10p69_272{opacity:.3;cursor:not-allowed}._colorOptionDisabled_10p69_272:hover{transform:none}._tagsInput_10p69_281{display:flex;flex-wrap:wrap;gap:6px;padding:8px;border:1px solid rgba(255,255,255,.2);border-radius:6px;background:#ffffff0d;min-height:40px}._tagInForm_10p69_292{display:flex;align-items:center;gap:4px;background:#00d9ff33;color:#00d9ff;padding:4px 8px;border-radius:12px;font-size:12px}._tagRemove_10p69_303{background:none;border:none;color:inherit;cursor:pointer;padding:0;font-size:14px;line-height:1}._tagInput_10p69_313{border:none;background:transparent;color:#fff;font-size:14px;flex:1;min-width:100px}._tagInput_10p69_313:focus{outline:none}._emptyState_10p69_327{text-align:center;padding:32px 16px;color:#ffffff80}._emptyStateIcon_10p69_333{font-size:48px;margin-bottom:16px;opacity:.5}._emptyStateText_10p69_339{font-size:14px;margin:0}._selectionInfo_10p69_345{background:#00d9ff1a;border:1px solid rgba(0,217,255,.3);border-radius:6px;padding:12px;margin-bottom:16px}._selectionInfoText_10p69_353{font-size:13px;color:#00d9ff;margin:0}._errorMessage_10p69_360{background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;padding:12px;color:#ff6b6b;font-size:13px;margin-bottom:16px}._buttonSecondary_10p69_115:disabled{opacity:.5;cursor:not-allowed}._fab_14mzl_1{position:absolute;bottom:24px;left:24px;width:48px;height:48px;border-radius:12px;border:none;background:#1c1c20f2;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000004d;transition:all .2s ease;z-index:50}._fab_14mzl_1:hover{background:#323237f2;transform:scale(1.05)}._fab_14mzl_1:active{transform:scale(.95)}._fab_14mzl_1:disabled{background:#1c1c2099;color:#fff6;cursor:not-allowed;box-shadow:none}._fab_14mzl_1:disabled:hover{transform:none}._badge_14mzl_40{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#00d9ff;color:#1a1a1a;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center}._sidebar_1ca4w_1{position:fixed;top:0;right:0;width:320px;height:100vh;background:#1c1c20;border-left:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;z-index:9999;animation:_slideIn_1ca4w_1 .2s ease-out}@keyframes _slideIn_1ca4w_1{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}._header_1ca4w_26{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid rgba(255,255,255,.1)}._title_1ca4w_34{margin:0;font-size:16px;font-weight:600;color:#ffffffe6}._closeButton_1ca4w_41{width:32px;height:32px;border:none;border-radius:8px;background:#ffffff1a;color:#ffffffb3;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}._closeButton_1ca4w_41:hover{background:#ffffff26;color:#ffffffe6}._content_1ca4w_61{flex:1;overflow-y:auto;padding:16px}._loading_1ca4w_67,._error_1ca4w_68{padding:24px;text-align:center;color:#ffffff80;font-size:14px}._error_1ca4w_68{color:#ff6b6b}._noScene_1ca4w_79{padding:16px;margin-bottom:16px;text-align:center;color:#ffffff80;font-size:14px;font-style:italic;background:#ffffff08;border-radius:8px;border:1px dashed rgba(255,255,255,.1)}._thumbnailContainer_1ca4w_91{margin-bottom:16px;border-radius:8px;overflow:hidden;background:#ffffff0d}._thumbnail_1ca4w_91{width:100%;height:auto;display:block}._field_1ca4w_104{margin-bottom:16px}._label_1ca4w_108{display:block;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:#fff6;margin-bottom:4px}._value_1ca4w_118{font-size:14px;color:#ffffffe6}._valueSmall_1ca4w_123{font-size:13px;color:#ffffffb3;line-height:1.4}._parcelCount_1ca4w_129{margin-left:8px;color:#ffffff80;font-size:12px}._tags_1ca4w_135{display:flex;flex-wrap:wrap;gap:6px}._tag_1ca4w_135{padding:4px 8px;background:#ffffff1a;border-radius:4px;font-size:12px;color:#ffffffb3}._groupBadge_1ca4w_149{display:inline-block;padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;color:#000c;border:none;cursor:pointer;transition:all .2s ease}._groupBadge_1ca4w_149:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 2px 8px #0000004d}._groupBadge_1ca4w_149:active{transform:translateY(0)}._footer_1ca4w_171{padding:16px;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:8px}._banButton_1ca4w_179{width:100%;padding:12px 16px;border:none;border-radius:8px;background:#f44;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}._banButton_1ca4w_179:hover{background:#f55}._banButton_1ca4w_179:active{background:#e33}._banButton_1ca4w_179._banned_1ca4w_200{background:#ffffff1a;color:#ffffffb3;border:1px solid rgba(255,255,255,.2)}._banButton_1ca4w_179._banned_1ca4w_200:hover{background:#ffffff26;color:#ffffffe6}._addToGroupSection_1ca4w_211{display:flex;gap:8px}._groupSelect_1ca4w_216{flex:1;padding:10px 32px 10px 12px;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:#ffffff0d;color:#fff;font-size:14px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ffffff' d='M6 8L2 4h8z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}._groupSelect_1ca4w_216:focus{outline:none;border-color:#00d9ff}._groupSelect_1ca4w_216 option{background:#1c1c20;color:#fff}._addToGroupButton_1ca4w_242{padding:10px 16px;border:none;border-radius:8px;background:#00d9ff33;color:#00d9ff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}._addToGroupButton_1ca4w_242:hover:not(:disabled){background:#00d9ff4d}._addToGroupButton_1ca4w_242:disabled{opacity:.5;cursor:not-allowed}._disabledMessage_1ca4w_264{flex:1;padding:10px 12px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff08;color:#fff6;font-size:14px;font-style:italic}._removeFromGroupButton_1ca4w_275{width:100%;padding:12px 16px;border:1px solid rgba(255,107,107,.3);border-radius:8px;background:#ff6b6b1a;color:#ff6b6b;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}._removeFromGroupButton_1ca4w_275:hover{background:#ff6b6b33;border-color:#ff6b6b80}.worlds-page{position:fixed;inset:0;background:#1a1a1a;padding-top:80px;overflow-y:auto}.worlds-container{max-width:800px;margin:0 auto;padding:24px}.worlds-search-section{margin-bottom:32px}.worlds-search-section h2{color:#ffffffe6;font-size:20px;font-weight:600;margin-bottom:16px}.worlds-search-box{display:flex;gap:12px}.worlds-search-input{flex:1;padding:12px 16px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0d;color:#ffffffe6;font-size:14px;outline:none;transition:all .2s ease}.worlds-search-input::placeholder{color:#fff6}.worlds-search-input:focus{border-color:#00d9ff80;background:#ffffff14}.worlds-search-button{padding:12px 24px;border:none;border-radius:8px;background:#f44;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.worlds-search-button:hover{background:#f55}.worlds-search-button:active{background:#e33}.worlds-list-section h3{color:#ffffffe6;font-size:16px;font-weight:600;margin-bottom:16px}.worlds-empty-state{color:#fff6;font-size:14px;text-align:center;padding:48px 24px;background:#ffffff05;border-radius:12px;border:1px dashed rgba(255,255,255,.1)}.worlds-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.world-card{padding:16px;background:#ff44441a;border:1px solid rgba(255,68,68,.2);border-radius:12px}.world-card-name{color:#ffffffe6;font-size:14px;font-weight:500;margin-bottom:8px;word-break:break-all}.world-card-date{color:#fff6;font-size:12px;margin-bottom:12px}.world-card-unban{padding:8px 16px;border:1px solid rgba(255,255,255,.2);border-radius:6px;background:transparent;color:#ffffffb3;font-size:12px;cursor:pointer;transition:all .2s ease}.world-card-unban:hover{background:#ffffff1a;color:#ffffffe6}