import"./chunks/modulepreload-polyfill-B5Qt9EMX.js";import{c as Yt}from"./chunks/core-CvwXoH-U.js";function yn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var de={},De,Ct;function Cn(){return Ct||(Ct=1,De=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),De}var Ue={},ee={},Et;function se(){if(Et)return ee;Et=1;let e;const t=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return ee.getSymbolSize=function(o){if(!o)throw new Error('"version" cannot be null or undefined');if(o<1||o>40)throw new Error('"version" should be in range from 1 to 40');return o*4+17},ee.getSymbolTotalCodewords=function(o){return t[o]},ee.getBCHDigit=function(n){let o=0;for(;n!==0;)o++,n>>>=1;return o},ee.setToSJISFunction=function(o){if(typeof o!="function")throw new Error('"toSJISFunc" is not a valid function.');e=o},ee.isKanjiModeEnabled=function(){return typeof e<"u"},ee.toSJIS=function(o){return e(o)},ee}var Fe={},bt;function lt(){return bt||(bt=1,(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}e.isValid=function(o){return o&&typeof o.bit<"u"&&o.bit>=0&&o.bit<4},e.from=function(o,r){if(e.isValid(o))return o;try{return t(o)}catch{return r}}})(Fe)),Fe}var qe,kt;function En(){if(kt)return qe;kt=1;function e(){this.buffer=[],this.length=0}return e.prototype={get:function(t){const n=Math.floor(t/8);return(this.buffer[n]>>>7-t%8&1)===1},put:function(t,n){for(let o=0;o>>n-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(t){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),t&&(this.buffer[n]|=128>>>this.length%8),this.length++}},qe=e,qe}var Ve,At;function bn(){if(At)return Ve;At=1;function e(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}return e.prototype.set=function(t,n,o,r){const i=t*this.size+n;this.data[i]=o,r&&(this.reservedBit[i]=!0)},e.prototype.get=function(t,n){return this.data[t*this.size+n]},e.prototype.xor=function(t,n,o){this.data[t*this.size+n]^=o},e.prototype.isReserved=function(t,n){return this.reservedBit[t*this.size+n]},Ve=e,Ve}var Ke={},Lt;function kn(){return Lt||(Lt=1,(function(e){const t=se().getSymbolSize;e.getRowColCoords=function(o){if(o===1)return[];const r=Math.floor(o/7)+2,i=t(o),a=i===145?26:Math.ceil((i-13)/(2*r-2))*2,l=[i-7];for(let c=1;c=0&&r<=7},e.from=function(r){return e.isValid(r)?parseInt(r,10):void 0},e.getPenaltyN1=function(r){const i=r.size;let a=0,l=0,c=0,d=null,u=null;for(let f=0;f=5&&(a+=t.N1+(l-5)),d=m,l=1),m=r.get(p,f),m===u?c++:(c>=5&&(a+=t.N1+(c-5)),u=m,c=1)}l>=5&&(a+=t.N1+(l-5)),c>=5&&(a+=t.N1+(c-5))}return a},e.getPenaltyN2=function(r){const i=r.size;let a=0;for(let l=0;l=10&&(l===1488||l===93)&&a++,c=c<<1&2047|r.get(u,d),u>=10&&(c===1488||c===93)&&a++}return a*t.N3},e.getPenaltyN4=function(r){let i=0;const a=r.data.length;for(let c=0;c=0;){const a=i[0];for(let c=0;c0){const l=new Uint8Array(this.degree);return l.set(i,a),l}return i},We=t,We}var Je={},He={},Ye={},Rt;function Qt(){return Rt||(Rt=1,Ye.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}),Ye}var z={},It;function Zt(){if(It)return z;It=1;const e="[0-9]+",t="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r ]))+`;z.KANJI=new RegExp(n,"g"),z.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),z.BYTE=new RegExp(o,"g"),z.NUMERIC=new RegExp(e,"g"),z.ALPHANUMERIC=new RegExp(t,"g");const r=new RegExp("^"+n+"$"),i=new RegExp("^"+e+"$"),a=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return z.testKanji=function(c){return r.test(c)},z.testNumeric=function(c){return i.test(c)},z.testAlphanumeric=function(c){return a.test(c)},z}var Pt;function ce(){return Pt||(Pt=1,(function(e){const t=Qt(),n=Zt();e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(i,a){if(!i.ccBits)throw new Error("Invalid mode: "+i);if(!t.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?i.ccBits[0]:a<27?i.ccBits[1]:i.ccBits[2]},e.getBestModeForData=function(i){return n.testNumeric(i)?e.NUMERIC:n.testAlphanumeric(i)?e.ALPHANUMERIC:n.testKanji(i)?e.KANJI:e.BYTE},e.toString=function(i){if(i&&i.id)return i.id;throw new Error("Invalid mode")},e.isValid=function(i){return i&&i.bit&&i.ccBits};function o(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+r)}}e.from=function(i,a){if(e.isValid(i))return i;try{return o(i)}catch{return a}}})(He)),He}var Mt;function _n(){return Mt||(Mt=1,(function(e){const t=se(),n=Gt(),o=lt(),r=ce(),i=Qt(),a=7973,l=t.getBCHDigit(a);function c(p,m,g){for(let v=1;v<=40;v++)if(m<=e.getCapacity(v,g,p))return v}function d(p,m){return r.getCharCountIndicator(p,m)+4}function u(p,m){let g=0;return p.forEach(function(v){const R=d(v.mode,m);g+=R+v.getBitsLength()}),g}function f(p,m){for(let g=1;g<=40;g++)if(u(p,g)<=e.getCapacity(g,m,r.MIXED))return g}e.from=function(m,g){return i.isValid(m)?parseInt(m,10):g},e.getCapacity=function(m,g,v){if(!i.isValid(m))throw new Error("Invalid QR Code version");typeof v>"u"&&(v=r.BYTE);const R=t.getSymbolTotalCodewords(m),C=n.getTotalCodewordsCount(m,g),_=(R-C)*8;if(v===r.MIXED)return _;const E=_-d(v,m);switch(v){case r.NUMERIC:return Math.floor(E/10*3);case r.ALPHANUMERIC:return Math.floor(E/11*2);case r.KANJI:return Math.floor(E/13);case r.BYTE:default:return Math.floor(E/8)}},e.getBestVersionForData=function(m,g){let v;const R=o.from(g,o.M);if(Array.isArray(m)){if(m.length>1)return f(m,R);if(m.length===0)return 1;v=m[0]}else v=m;return c(v.mode,v.getLength(),R)},e.getEncodedBits=function(m){if(!i.isValid(m)||m<7)throw new Error("Invalid QR Code version");let g=m<<12;for(;t.getBCHDigit(g)-l>=0;)g^=a<=0;)c^=t<0&&(i=this.data.substr(r),a=parseInt(i,10),o.put(a,l*3+1))},Ze=t,Ze}var Xe,Ut;function Rn(){if(Ut)return Xe;Ut=1;const e=ce(),t=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function n(o){this.mode=e.ALPHANUMERIC,this.data=o}return n.getBitsLength=function(r){return 11*Math.floor(r/2)+6*(r%2)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(r){let i;for(i=0;i+2<=this.data.length;i+=2){let a=t.indexOf(this.data[i])*45;a+=t.indexOf(this.data[i+1]),r.put(a,11)}this.data.length%2&&r.put(t.indexOf(this.data[i]),6)},Xe=n,Xe}var et,Ft;function In(){if(Ft)return et;Ft=1;const e=ce();function t(n){this.mode=e.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}return t.getBitsLength=function(o){return o*8},t.prototype.getLength=function(){return this.data.length},t.prototype.getBitsLength=function(){return t.getBitsLength(this.data.length)},t.prototype.write=function(n){for(let o=0,r=this.data.length;o=33088&&i<=40956)i-=33088;else if(i>=57408&&i<=60351)i-=49472;else throw new Error("Invalid SJIS character: "+this.data[r]+` Make sure your charset is UTF-8`);i=(i>>>8&255)*192+(i&255),o.put(i,13)}},tt=n,tt}var nt={exports:{}},Vt;function Mn(){return Vt||(Vt=1,(function(e){var t={single_source_shortest_paths:function(n,o,r){var i={},a={};a[o]=0;var l=t.PriorityQueue.make();l.push(o,0);for(var c,d,u,f,p,m,g,v,R;!l.empty();){c=l.pop(),d=c.value,f=c.cost,p=n[d]||{};for(u in p)p.hasOwnProperty(u)&&(m=p[u],g=f+m,v=a[u],R=typeof a[u]>"u",(R||v>g)&&(a[u]=g,l.push(u,g),i[u]=d))}if(typeof r<"u"&&typeof a[r]>"u"){var C=["Could not find a path from ",o," to ",r,"."].join("");throw new Error(C)}return i},extract_shortest_path_from_predecessor_list:function(n,o){for(var r=[],i=o;i;)r.push(i),n[i],i=n[i];return r.reverse(),r},find_path:function(n,o,r){var i=t.single_source_shortest_paths(n,o,r);return t.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(n){var o=t.PriorityQueue,r={},i;n=n||{};for(i in o)o.hasOwnProperty(i)&&(r[i]=o[i]);return r.queue=[],r.sorter=n.sorter||o.default_sorter,r},default_sorter:function(n,o){return n.cost-o.cost},push:function(n,o){var r={value:n,cost:o};this.queue.push(r),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(nt)),nt.exports}var Kt;function $n(){return Kt||(Kt=1,(function(e){const t=ce(),n=xn(),o=Rn(),r=In(),i=Pn(),a=Zt(),l=se(),c=Mn();function d(C){return unescape(encodeURIComponent(C)).length}function u(C,_,E){const N=[];let D;for(;(D=C.exec(E))!==null;)N.push({data:D[0],index:D.index,mode:_,length:D[0].length});return N}function f(C){const _=u(a.NUMERIC,t.NUMERIC,C),E=u(a.ALPHANUMERIC,t.ALPHANUMERIC,C);let N,D;return l.isKanjiModeEnabled()?(N=u(a.BYTE,t.BYTE,C),D=u(a.KANJI,t.KANJI,C)):(N=u(a.BYTE_KANJI,t.BYTE,C),D=[]),_.concat(E,N,D).sort(function(L,A){return L.index-A.index}).map(function(L){return{data:L.data,mode:L.mode,length:L.length}})}function p(C,_){switch(_){case t.NUMERIC:return n.getBitsLength(C);case t.ALPHANUMERIC:return o.getBitsLength(C);case t.KANJI:return i.getBitsLength(C);case t.BYTE:return r.getBitsLength(C)}}function m(C){return C.reduce(function(_,E){const N=_.length-1>=0?_[_.length-1]:null;return N&&N.mode===E.mode?(_[_.length-1].data+=E.data,_):(_.push(E),_)},[])}function g(C){const _=[];for(let E=0;E=0&&k<=6&&(B===0||B===6)||B>=0&&B<=6&&(k===0||k===6)||k>=2&&k<=4&&B>=2&&B<=4?y.set(b+k,S+B,!0,!0):y.set(b+k,S+B,!1,!0))}}function g(y){const L=y.size;for(let A=8;A>k&1)===1,y.set(T,b,S,!0),y.set(b,T,S,!0)}function C(y,L,A){const w=y.size,T=u.getEncodedBits(L,A);let b,S;for(b=0;b<15;b++)S=(T>>b&1)===1,b<6?y.set(b,8,S,!0):b<8?y.set(b+1,8,S,!0):y.set(w-15+b,8,S,!0),b<8?y.set(8,w-b-1,S,!0):b<9?y.set(8,15-b-1+1,S,!0):y.set(8,15-b-1,S,!0);y.set(w-8,8,1,!0)}function _(y,L){const A=y.size;let w=-1,T=A-1,b=7,S=0;for(let k=A-1;k>0;k-=2)for(k===6&&k--;;){for(let B=0;B<2;B++)if(!y.isReserved(T,k-B)){let X=!1;S>>b&1)===1),y.set(T,k-B,X),b--,b===-1&&(S++,b=7)}if(T+=w,T<0||A<=T){T-=w,w=-w;break}}}function E(y,L,A){const w=new n;A.forEach(function(B){w.put(B.mode.bit,4),w.put(B.getLength(),f.getCharCountIndicator(B.mode,y)),B.write(w)});const T=e.getSymbolTotalCodewords(y),b=l.getTotalCodewordsCount(y,L),S=(T-b)*8;for(w.getLengthInBits()+4<=S&&w.put(0,4);w.getLengthInBits()%8!==0;)w.putBit(0);const k=(S-w.getLengthInBits())/8;for(let B=0;B=7&&R(B,L),_(B,S),isNaN(w)&&(w=a.getBestMask(B,C.bind(null,B,A))),a.applyMask(w,B),C(B,A,w),{modules:B,version:L,errorCorrectionLevel:A,maskPattern:w,segments:T}}return Ue.create=function(L,A){if(typeof L>"u"||L==="")throw new Error("No input text");let w=t.M,T,b;return typeof A<"u"&&(w=t.from(A.errorCorrectionLevel,t.M),T=d.from(A.version),b=a.from(A.maskPattern),A.toSJISFunc&&e.setToSJISFunction(A.toSJISFunc)),D(L,T,w,b)},Ue}var rt={},ot={},zt;function Xt(){return zt||(zt=1,(function(e){function t(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let o=n.slice().replace("#","").split("");if(o.length<3||o.length===5||o.length>8)throw new Error("Invalid hex color: "+n);(o.length===3||o.length===4)&&(o=Array.prototype.concat.apply([],o.map(function(i){return[i,i]}))),o.length===6&&o.push("F","F");const r=parseInt(o.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:r&255,hex:"#"+o.slice(0,6).join("")}}e.getOptions=function(o){o||(o={}),o.color||(o.color={});const r=typeof o.margin>"u"||o.margin===null||o.margin<0?4:o.margin,i=o.width&&o.width>=21?o.width:void 0,a=o.scale||4;return{width:i,scale:i?4:a,margin:r,color:{dark:t(o.color.dark||"#000000ff"),light:t(o.color.light||"#ffffffff")},type:o.type,rendererOpts:o.rendererOpts||{}}},e.getScale=function(o,r){return r.width&&r.width>=o+r.margin*2?r.width/(o+r.margin*2):r.scale},e.getImageWidth=function(o,r){const i=e.getScale(o,r);return Math.floor((o+r.margin*2)*i)},e.qrToImageData=function(o,r,i){const a=r.modules.size,l=r.modules.data,c=e.getScale(a,i),d=Math.floor((a+i.margin*2)*c),u=i.margin*c,f=[i.color.light,i.color.dark];for(let p=0;p=u&&m>=u&&p"u"&&(!a||!a.getContext)&&(c=a,a=void 0),a||(d=o()),c=t.getOptions(c);const u=t.getImageWidth(i.modules.size,c),f=d.getContext("2d"),p=f.createImageData(u,u);return t.qrToImageData(p.data,i,c),n(f,d,u),f.putImageData(p,0,0),d},e.renderToDataURL=function(i,a,l){let c=l;typeof c>"u"&&(!a||!a.getContext)&&(c=a,a=void 0),c||(c={});const d=e.render(i,a,c),u=c.type||"image/png",f=c.rendererOpts||{};return d.toDataURL(u,f.quality)}})(rt)),rt}var it={},Wt;function Fn(){if(Wt)return it;Wt=1;const e=Xt();function t(r,i){const a=r.a/255,l=i+'="'+r.hex+'"';return a<1?l+" "+i+'-opacity="'+a.toFixed(2).slice(1)+'"':l}function n(r,i,a){let l=r+i;return typeof a<"u"&&(l+=" "+a),l}function o(r,i,a){let l="",c=0,d=!1,u=0;for(let f=0;f0&&p>0&&r[f-1]||(l+=d?n("M",p+a,.5+m+a):n("m",c,0),c=0,d=!1),p+1':"",m="',g='viewBox="0 0 '+f+" "+f+'"',R=''+p+m+` `;return typeof l=="function"&&l(null,R),R},it}var Jt;function qn(){if(Jt)return de;Jt=1;const e=Cn(),t=Dn(),n=Un(),o=Fn();function r(i,a,l,c,d){const u=[].slice.call(arguments,1),f=u.length,p=typeof u[f-1]=="function";if(!p&&!e())throw new Error("Callback required as last argument");if(p){if(f<2)throw new Error("Too few arguments provided");f===2?(d=l,l=a,a=c=void 0):f===3&&(a.getContext&&typeof d>"u"?(d=c,c=void 0):(d=c,c=l,l=a,a=void 0))}else{if(f<1)throw new Error("Too few arguments provided");return f===1?(l=a,a=c=void 0):f===2&&!a.getContext&&(c=l,l=a,a=void 0),new Promise(function(m,g){try{const v=t.create(l,c);m(i(v,a,c))}catch(v){g(v)}})}try{const m=t.create(l,c);d(null,i(m,a,c))}catch(m){d(m)}}return de.create=t.create,de.toCanvas=r.bind(null,n.render),de.toDataURL=r.bind(null,n.renderToDataURL),de.toString=r.bind(null,function(i,a,l){return o.render(i,l)}),de}var Vn=qn();const Kn=yn(Vn),s=e=>document.getElementById(e),jn=Array.from(document.querySelectorAll(".screen")),M=s("notice");let Ne="",fe="",ge="",ie="",h,dt,Te="held",K=1,ae=0;const ve=8;let x,J=[],Z,P,_e,en="activity",Y,we="",oe="";const he=20,zn={1:"Mining Reward",2:"Transfer",3:"Token Creation",4:"NFT/RWA Creation",5:"Marketing",6:"Swap",7:"Loan",8:"Loan Payment",9:"Collateral Claim",10:"Asset Burn",11:"Token Issuance",12:"Vanity Address",100:"Storage Key",101:"Data Storage Bool",102:"Data Storage U8",103:"Data Storage U16",104:"Data Storage U32",105:"Data Storage U64",106:"Data Storage U128",107:"Data Storage String",108:"Data Storage I8",109:"Data Storage I16",110:"Data Storage I32",111:"Data Storage I64",112:"Data Storage I128",113:"Delete Stored Data",200:"Proposal",201:"Proposal Vote",202:"Activation Vote"};async function $(e,t={}){const n=await chrome.runtime.sendMessage({type:e,...t});if(!(n!=null&&n.ok))throw new Error((n==null?void 0:n.error)??"Wallet request failed.");return n.result}function I(e,t=!0){jn.forEach(n=>{n.hidden=n.id!==e}),t&&(M.textContent="")}function V(e){var i;h=e;const t=e.address??((i=e.wallets.find(a=>a.active))==null?void 0:i.address),n=(t==null?void 0:t.endsWith(".cltc"))??!0,o=n?"Testnet":"Mainnet",r=n?"CLTC":"CLC";document.querySelectorAll("[data-network-name]").forEach(a=>{a.textContent=o}),document.querySelectorAll("[data-network-symbol]").forEach(a=>{a.textContent=r}),s("base-asset-name").textContent=`Contractless ${o}`,s("wallet-address").textContent=e.address??"",s("wallet-address-short").textContent=e.address?`${e.address.slice(0,6)}...${e.address.slice(-6)}`:"Account",s("settings-api-url").value=e.apiUrl,s("settings-lock-timeout").value=String(e.autoLockMinutes),Zn(e),e.exists?e.unlocked?at().then(a=>{a||(I("dashboard-screen"),Be())}):I("locked-screen"):I("create-screen")}function On(e,t){return e==="contractless_connect"?"Connect application":e==="contractless_signMessage"?"Sign text message":e==="contractless_sendTransaction"||e==="contractless_signDualTransaction"?`Sign ${String(t.transaction_type??"transaction")}`:"Review request"}function j(e,t,n){const o=document.createElement("dt");o.textContent=t.replaceAll("_"," ");const r=document.createElement("dd");r.textContent=typeof n=="object"?JSON.stringify(n,null,2):String(n),e.append(o,r)}function te(e,t,n,o){const r=re(e[t]),i=String(e[n]??"").trim().toUpperCase(),a=Number(e[o]??0);return`${r} ${i}${a>0?` #${a}`:""}`}function Ht(e,t,n){var i;const o=n===1?2:1,r=(i=h==null?void 0:h.address)!=null&&i.endsWith(".cltc")?"CLTC":"CLC";j(e,"Your miner tip",te(t,`tip${n}`,`ticker${n}`,`nft_series${n}`)),j(e,"Your transaction fee",`${re(t[`txfee${n}`])} ${r}`),j(e,"Other party miner tip",te(t,`tip${o}`,`ticker${o}`,`nft_series${o}`)),j(e,"Other party transaction fee",`${re(t[`txfee${o}`])} ${r}`)}function Wn(e,t){var a;const n=((a=h==null?void 0:h.address)==null?void 0:a.trim().toLowerCase())??"",o=String(t.sender1??"").trim().toLowerCase(),r=String(t.sender2??"").trim().toLowerCase(),i=n===o?1:n===r?2:0;if(i===1){j(e,"Sending",te(t,"value1","ticker1","nft_series1")),j(e,"Receiving",te(t,"value2","ticker2","nft_series2")),Ht(e,t,1);return}if(i===2){j(e,"Sending",te(t,"value2","ticker2","nft_series2")),j(e,"Receiving",te(t,"value1","ticker1","nft_series1")),Ht(e,t,2);return}j(e,"First party sending",te(t,"value1","ticker1","nft_series1")),j(e,"Second party sending",te(t,"value2","ticker2","nft_series2"))}function ye(e){const t=s("approve-provider-approval"),n=s("reject-provider-approval"),o=e!==null;t.disabled=o,n.disabled=o,t.classList.toggle("is-processing",e==="approve"),n.classList.toggle("is-processing",e==="reject"),t.textContent=e==="approve"?"Processing...":"Approve",n.textContent=e==="reject"?"Rejecting...":"Reject"}async function at(){const e=await $("pending-provider-approval");if(!(e!=null&&e.request))return!1;const t=e.request;ye(null),oe=t.id;const n=(e.total??0)>1?` · Request ${e.position??1} of ${e.total}`:"";s("provider-approval-origin").textContent=`${t.origin}${n}`;const o=s("provider-approval-risk");o.className=`risk-label risk-${t.risk}`,o.textContent=t.risk==="safe"?"Safe":t.risk==="low"?"Low risk":"High risk";const r=t.display??{},i=t.method==="contractless_sendTransaction"||t.method==="contractless_signDualTransaction";s("provider-approval-title").textContent=On(t.method,r),s("provider-approval-intro").textContent=i?"Review every transaction field before signing.":"Review this request before approving it.";const a=s("provider-approval-details");return a.replaceChildren(),Object.entries(r).forEach(([l,c])=>{if(l==="transaction_fields"&&c&&typeof c=="object"){const d=c,u=Number(d.txtype??0),f=new Set(["ticker1","nft_series1","value1","ticker2","nft_series2","value2","tip1","tip2","txfee1","txfee2"]);u===6&&Wn(a,d),Object.entries(d).forEach(([p,m])=>{u===6&&f.has(p)||j(a,p==="txtype"?"transaction_type_id":p,ln(u,p,m))});return}j(a,l,c)}),I("provider-approval-screen"),!0}async function tn(e,t){if(!(e>0&&await at())){if(t){const n=Date.now()+1500;for(;Date.now()setTimeout(o,75))}}window.close()}}function Jn(e){return e.replace(/[.0]/g,"").length>0}function st(){var c;const e=s("token-list");if(e.replaceChildren(),!x){const d=document.createElement("div");d.className="empty-assets";const u=document.createElement("strong");u.textContent="Loading token balances...";const f=document.createElement("span");f.textContent="Balances are retrieved from the selected Contractless API.",d.append(u,f),e.append(d);return}const t=(c=h==null?void 0:h.address)!=null&&c.endsWith(".cltc")?"CLTC":"CLC",n=new Set(x.tokens.map(d=>d.token.trim().toUpperCase())),o=new Set(x.nfts.map(d=>`${d.name.trim().toUpperCase()}|${Number(d.series||0)}`)),r=x.balances.filter(d=>{const u=d.asset.trim().toUpperCase(),f=`${u}|${Number(d.nft_series||0)}`;return d.nft_series===0&&u!=="CLTC"&&u!=="CLC"&&n.has(u)&&!o.has(f)}),i=new Map(r.map(d=>[d.asset.trim().toUpperCase(),d])),a=Te==="all"?x.tokens.map(d=>d.token):r.filter(d=>Jn(d.balance)).map(d=>d.asset),l=[...new Set(a.map(d=>d.trim().toUpperCase()))].filter(d=>d!==t&&!o.has(`${d}|0`)).sort((d,u)=>d.localeCompare(u));if(l.length===0){const d=document.createElement("div");d.className="empty-assets";const u=document.createElement("strong");u.textContent=Te==="held"?"No token balances found":"No tokens found";const f=document.createElement("span");f.textContent=Te==="held"?"Switch to All tokens to view the complete network token list.":x.tokenCatalogError?`Token catalog unavailable: ${x.tokenCatalogError}`:"The selected API did not return any fungible tokens.",d.append(u,f),e.append(d);return}l.forEach(d=>{const u=i.get(d),f=document.createElement("div");f.className="asset-row";const p=document.createElement("div");p.className="asset-symbol token-symbol",p.textContent=d.slice(0,3);const m=document.createElement("div");m.className="asset-name";const g=document.createElement("strong");g.textContent=d;const v=document.createElement("span");v.textContent="Contractless token",m.append(g,v);const R=document.createElement("div");R.className="asset-value";const C=document.createElement("strong");C.textContent=(u==null?void 0:u.balance)??"0.00000000";const _=document.createElement("span");_.textContent=d,R.append(C,_),f.append(p,m,R),e.append(f)})}async function Be(){var e;if(h!=null&&h.unlocked){x=void 0,s("base-balance").textContent="--",s("base-asset-balance").textContent="--",st();try{const t=await $("wallet-balances");x={balances:Array.isArray(t.balances)?t.balances:[],tokens:Array.isArray(t.tokens)?t.tokens:[],nfts:Array.isArray(t.nfts)?t.nfts:[],tokenCatalogError:t.tokenCatalogError,nftCatalogError:t.nftCatalogError};const n=(e=h.address)!=null&&e.endsWith(".cltc")?"CLTC":"CLC",o=x.balances.find(i=>i.nft_series===0&&i.asset.toUpperCase()===n),r=(o==null?void 0:o.balance)??"0.00000000";s("base-balance").textContent=r,s("base-asset-balance").textContent=r,st()}catch(t){const n=s("token-list");n.replaceChildren();const o=document.createElement("div");o.className="empty-assets balance-error";const r=document.createElement("strong");r.textContent="Unable to load balances";const i=document.createElement("span");i.textContent=q(t),o.append(r,i),n.append(o),M.textContent=q(t)}}}function Le(e,t){return`${e.trim().toUpperCase()}|${t}`}function Hn(e){try{return H(e,"Balance")>0n}catch{return!1}}function nn(e){if(e.ownership_type!==1)return"Complete ownership";try{const t=H(e.balance,"Balance"),n=H(e.supply,"Supply");if(n<=0n)return"0% ownership";const o=t*100000000n/n,r=o/1000000n,i=(o%1000000n).toString().padStart(6,"0").replace(/0+$/,"");return`${r}${i?`.${i}`:""}% ownership`}catch{return"Fractional ownership"}}function ut(e){var t;return(t=e.details)!=null&&t.metadata&&typeof e.details.metadata=="object"?e.details.metadata:{}}function ft(e){const t=ut(e).name;return typeof t=="string"&&t.trim()?t.trim():e.series>0?`${e.name} #${e.series}`:e.name}function rn(e){const n=ut(e).contractless;return n&&typeof n=="object"&&String(n.metadata_type??"").toLowerCase()==="rwa"?"RWA":"NFT"}function be(e){return e.series>0?`${e.name}_${e.series}`:e.name}function Yn(e,t=7,n=7){return e.length>t+n+3?`${e.slice(0,t)}...${e.slice(-n)}`:e}function Gn(e,t){var r;const n=document.createElement("div");if(n.className=t,(r=e.details)!=null&&r.image_data_url){const i=document.createElement("img");return i.src=e.details.image_data_url,i.alt=ft(e),n.append(i),n}const o=document.createElement("span");return o.textContent=e.loading?"...":e.name.slice(0,2).toUpperCase(),n.append(o),n}function on(){const e=(K-1)*ve;return J.slice(e,e+ve)}function Ce(){const e=s("nfts-list");e.replaceChildren();const t=Math.max(1,Math.ceil(J.length/ve));if(K=Math.min(Math.max(1,K),t),s("nfts-count").textContent=J.length===1?"1 owned asset":`${J.length} owned assets`,s("nfts-page").textContent=String(K),s("nfts-pages").textContent=String(t),s("nfts-pagination").hidden=t<=1,s("nfts-previous").disabled=K<=1,s("nfts-next").disabled=K>=t,!J.length){const n=document.createElement("div");n.className="nfts-empty";const o=document.createElement("strong");o.textContent="No NFTs or RWAs found";const r=document.createElement("span");r.textContent=x!=null&&x.nftCatalogError?`NFT catalog unavailable: ${x.nftCatalogError}`:"Assets owned by this wallet will appear here.",n.append(o,r),e.append(n);return}on().forEach(n=>{const o=document.createElement("button");o.type="button",o.className="nft-card",o.append(Gn(n,"nft-card-media"));const r=document.createElement("div");r.className="nft-card-identity";const i=document.createElement("span");i.textContent=rn(n);const a=document.createElement("strong");a.textContent=ft(n);const l=document.createElement("small");l.textContent=be(n);const c=document.createElement("b");if(c.textContent=nn(n),r.append(i,a,l,c),n.error){const d=document.createElement("em");d.textContent="Media unavailable",r.append(d)}o.append(r),o.addEventListener("click",()=>Qn(n)),e.append(o)})}function Se(e,t,n){const o=document.createElement("div"),r=document.createElement("dt");r.textContent=t;const i=document.createElement("dd");i.textContent=n||"--",o.append(r,i),e.append(o)}function xe(e){Z=e;const t=e.details,n=ut(e),o=rn(e),r=ft(e);s("nft-detail-title").textContent=r,s("nft-detail-kind").textContent=`${o} details`,s("nft-detail-badge").textContent=o,s("nft-detail-name").textContent=r,s("nft-detail-ownership").textContent=nn(e);const i=s("nft-detail-image");i.src=(t==null?void 0:t.image_data_url)??"",i.alt=r,i.hidden=!(t!=null&&t.image_data_url);const a=n.description??n.summary;s("nft-detail-description").textContent=typeof a=="string"&&a.trim()?a.trim():t?"No description was included in the NFT metadata.":"Loading NFT metadata and provenance...";const l=s("nft-detail-attributes");l.replaceChildren(),(Array.isArray(n.attributes)?n.attributes.slice(0,12):[]).forEach(f=>{if(!f||typeof f!="object")return;const p=f,m=document.createElement("div"),g=document.createElement("span");g.textContent=String(p.trait_type??p.type??"Attribute");const v=document.createElement("strong");v.textContent=String(p.value??""),m.append(g,v),l.append(m)}),l.hidden=l.childElementCount===0;const d=s("nft-detail-fields");d.replaceChildren(),Se(d,"Asset",be(e)),Se(d,"Creator",(t==null?void 0:t.creator)??"--"),Se(d,"IPFS CID",(t==null?void 0:t.item_ipfs)??"--"),Se(d,"Origin transaction",(t==null?void 0:t.genesis_txid)??e.origin_txid);const u=s("nft-detail-history");if(u.replaceChildren(),t)if(t.history.length)t.history.slice().reverse().forEach(f=>{const p=document.createElement("button");p.type="button",p.className="nft-history-row",p.title=`View full transaction ${f.txid}`;const m=document.createElement("strong");m.textContent=f.action;const g=document.createElement("span");g.textContent=`Block ${Number(f.block).toLocaleString()}`;const v=document.createElement("small");v.textContent=Yn(f.txid),p.append(m,g,v),p.addEventListener("click",()=>{un({txid:f.txid,block_height:Number(f.block),transaction_hex:""},"nft")}),u.append(p)});else{const f=document.createElement("p");f.textContent="No provenance records were returned.",u.append(f)}else{const f=document.createElement("p");f.textContent="Loading provenance...",u.append(f)}}function Qn(e){xe(e),I("nft-detail-screen")}async function mt(e){const t=on().filter(r=>!r.details&&!r.loading);let n=0;const o=async()=>{for(;n[Le(r.name,r.series),r]));J=x.nfts.map(r=>{const i=x==null?void 0:x.balances.find(l=>Le(l.asset,Number(l.nft_series||0))===Le(r.name,Number(r.series||0)));if(!i||!Hn(i.balance))return null;const a=n.get(Le(r.name,r.series));return{name:r.name.trim(),series:Number(r.series||0),origin_txid:r.origin_txid,ownership_type:Number(r.ownership_type||0),supply:r.supply,balance:i.balance,details:a==null?void 0:a.details,error:a==null?void 0:a.error}}).filter(r=>r!==null).sort((r,i)=>r.name.localeCompare(i.name)||r.series-i.series);const o=Math.max(1,Math.ceil(J.length/ve));K=Math.min(K,o),Ce(),await mt(t)}function Zn(e){const t=s("known-addresses");t.replaceChildren(),e.wallets.forEach(n=>{const o=document.createElement("div");o.className=`known-address${n.active?" active-address":""}`;const r=document.createElement("button");r.type="button",r.className="address-select",r.dataset.walletId=n.id;const i=document.createElement("span");i.className="address-avatar";const a=document.createElement("img");a.src=chrome.runtime.getURL("contractless-logo.png"),a.alt="",i.append(a);const l=document.createElement("span");l.className="address-details";const c=document.createElement("strong");c.textContent=n.label;const d=document.createElement("small");d.textContent=n.address,l.append(c,d);const u=document.createElement("span");u.className="selected-mark",u.textContent=n.active?"✓":"",r.append(i,l,u),r.addEventListener("click",()=>{if(n.active){G(!1);return}U(async()=>{G(!1),fe="",ie="",V(await $("switch-wallet",{walletId:n.id}))})});const f=document.createElement("button");f.type="button",f.className="rename-address",f.title="Rename wallet",f.setAttribute("aria-label",`Rename ${n.label}`),f.textContent="✎",f.addEventListener("click",()=>{const p=window.prompt("Wallet label",n.label);p===null||p.trim()===n.label||U(async()=>{const m=await $("rename-wallet",{walletId:n.id,label:p});V(m),G(!0)})}),o.append(r,f),t.append(o)})}function G(e){const t=s("account-drawer"),n=s("drawer-backdrop"),o=s("account-menu-button");t.classList.toggle("open",e),t.setAttribute("aria-hidden",String(!e)),o.setAttribute("aria-expanded",String(e)),n.hidden=!e}function gt(){s("revealed-private-key").value="",s("private-key-result").hidden=!0}function Ee(e){if(s("backup-key-modal").hidden=!e,s("backup-key-backdrop").hidden=!e,e){const t=s("backup-key-input");t.value="",t.focus()}else s("backup-key-input").value="",dt=void 0}async function Xn(){const e=await $("wallet-receive-address"),t=String(e.receiveAddress??"");if(!t)throw new Error("No active wallet address is available.");s("receive-address-label").textContent=e.vanity?"Vanity address":"Wallet address",s("receive-address-value").textContent=t;const n=s("receive-qr");await Kn.toCanvas(n,t,{width:220,margin:1,errorCorrectionLevel:"M",color:{dark:"#071016",light:"#ffffff"}}),I("receive-screen")}function H(e,t){const n=e.trim();if(!/^(?:0|[1-9]\d*)(?:\.\d{1,8})?$/.test(n))throw new Error(`${t} must be a positive number with no more than 8 decimal places.`);const[o,r=""]=n.split(".");return BigInt(o)*100000000n+BigInt(r.padEnd(8,"0"))}function ne(e){const t=e/100000000n,n=(e%100000000n).toString().padStart(8,"0");return`${t}.${n}`}function an(){if(P)return P.balance;const e=s("send-asset").value,t=x==null?void 0:x.balances.find(n=>n.nft_series===0&&n.asset.trim().toUpperCase()===e);return(t==null?void 0:t.balance)??"0.00000000"}function sn(){var o;const e=s("send-asset").value,t=(o=h==null?void 0:h.address)!=null&&o.endsWith(".cltc")?"CLTC":"CLC";if(e!==t)return 100000000n;const n=s("send-amount").value.trim();if(!n)return 0n;try{return(H(n,"Amount")+99n)/100n}catch{return 0n}}function Re(){var r;const e=(P==null?void 0:P.name)??s("send-asset").value,t=(r=h==null?void 0:h.address)!=null&&r.endsWith(".cltc")?"CLTC":"CLC",n=P?be(P):e;s("send-amount-symbol").textContent=n,s("send-available").textContent=`Available: ${an()} ${n}`;const o=sn();s("send-fee").value=ne(o),s("send-fee-note").textContent=!P&&e===t?"Minimum fee: 1% of the transfer amount.":`Minimum fee: 1 ${t} for asset transfers.`}function er(){var o;const e=s("send-asset");e.replaceChildren();const t=(o=h==null?void 0:h.address)!=null&&o.endsWith(".cltc")?"CLTC":"CLC",n=new Set([t]);x==null||x.tokens.forEach(r=>{const i=r.token.trim().toUpperCase();(x==null?void 0:x.balances.find(l=>l.nft_series===0&&l.asset.trim().toUpperCase()===i&&H(l.balance,"Balance")>0n))&&n.add(i)}),n.forEach(r=>{const i=document.createElement("option");i.value=r,i.textContent=r,e.append(i)}),Re()}function tr(){if(!x)throw new Error("Wallet balances are still loading.");P=void 0,Y=void 0,s("send-form").reset(),s("send-asset").disabled=!1,s("send-amount").disabled=!1,er(),I("send-screen")}function nr(e){if(!x)throw new Error("Wallet balances are still loading.");P=e,Y=void 0,s("send-form").reset();const t=s("send-asset");t.replaceChildren();const n=document.createElement("option");n.value=e.name,n.textContent=be(e),t.append(n),t.disabled=!0;const o=s("send-amount");e.ownership_type===0?(o.value="1.00000000",o.disabled=!0):(o.value="",o.disabled=!1),Re(),I("send-screen")}async function rr(){var v;if(!(h!=null&&h.address))throw new Error("No active wallet is available.");const e=(P==null?void 0:P.name)??s("send-asset").value,t=P?be(P):e,n=Q(s("send-recipient").value,"Enter a receiving address."),o=Q(s("send-amount").value,"Enter an amount to send."),r=Q(s("send-fee").value,"Enter a transaction fee."),i=H(o,"Amount"),a=H(r,"Transaction fee");if(i===0n)throw new Error("The transfer amount must be greater than zero.");if((P==null?void 0:P.ownership_type)===0&&i!==100000000n)throw new Error("An indivisible NFT must be transferred as one complete asset.");if((P==null?void 0:P.ownership_type)===1&&i>100000000n)throw new Error("A fractional NFT/RWA transfer cannot exceed one complete asset.");const l=sn();if(ac)throw new Error(`Insufficient ${e} balance.`);const d=h.address.endsWith(".cltc")?"CLTC":"CLC",u=((v=x==null?void 0:x.balances.find(R=>R.nft_series===0&&R.asset.trim().toUpperCase()===d))==null?void 0:v.balance)??"0.00000000",f=H(u,"Base balance");if((e===d?i+a:a)>f)throw new Error(`Insufficient ${d} balance including the fee.`);const m=await $("wallet-prepare-transfer",{receiver:n,asset:e,nftSeries:(P==null?void 0:P.series)??0,valueAtomic:i.toString(),feeAtomic:a.toString()}),g=e===d?`${ne(i+a)} ${d}`:`${ne(i)} ${t} + ${ne(a)} ${d}`;Y={transaction:m.transaction,receiverInput:m.receiverInput,asset:e,amount:ne(i),fee:ne(a),total:g},s("review-amount").textContent=Y.amount,s("review-asset").textContent=t,s("review-sender").textContent=h.address,s("review-recipient").textContent=m.receiverInput,s("review-resolved-recipient").textContent=String(m.review.receiver??""),s("review-fee").textContent=Y.fee,s("review-total").textContent=g,I("send-review-screen")}function cn(e){if(!/^[0-9a-f]+$/i.test(e)||e.length<10)return;const t=e.slice(2,10).match(/../g);if(!t||t.length!==4)return;const n=t.reduce((r,i,a)=>r+Number.parseInt(i,16)*2**(a*8),0),o=new Date(n*1e3);return Number.isNaN(o.getTime())?void 0:o}function or(e){return e.split("_").map(t=>t&&`${t[0].toUpperCase()}${t.slice(1)}`).join(" ")}function re(e){try{const t=ne(BigInt(String(e??"0"))),[n,o]=t.split("."),r=o.replace(/0+$/,"");return r?`${n}.${r}`:`${n}.0`}catch{return String(e??"")}}function ir(e,t){var o;return t.startsWith("txfee")?!0:((o={1:new Set(["value"]),2:new Set(["value"]),3:new Set(["number"]),6:new Set(["value1","value2","tip1","tip2"]),7:new Set(["loan_amount","collateral_amount","payment_amount","max_late_value"]),8:new Set(["payback_amount","tip"]),10:new Set(["value"]),11:new Set(["number"])}[e])==null?void 0:o.has(t))??!1}function ln(e,t,n){if(typeof n=="boolean")return n?"True":"False";if(ir(e,t))return re(n);if(t==="time"||t==="timestamp"||t==="offer_expiration"){const o=Number(n);if(Number.isFinite(o))return`${new Date(o*1e3).toLocaleString()} (${o})`}return t==="payment_period"?{d:"Daily",w:"Weekly",m:"Monthly"}[String(n).trim().toLowerCase()]??String(n??""):e===3&&t==="hard_limit"?Number(n)===1?"Yes":"No":e===4&&t==="series"?Number(n)===1?"Series":"Single NFT/RWA":e===4&&t==="ownership_type"?Number(n)===1?"Fractional ownership":"Complete ownership":(e===201||e===202)&&t==="vote"?Number(n)===1?"Approve":"Reject":(t==="previous"||t.endsWith("_hash"))&&/^0+$/.test(String(n))?"None":e===5&&(t==="impression_value"||t==="click_value")?(Number(n)/100).toFixed(2):typeof n=="string"?n.trim():String(n??"")}function F(e,t,n,o=!1,r=0){const i=document.createElement("div");i.className=`transaction-field${o?" technical-field":""}`;const a=document.createElement("span");a.textContent=or(t);const l=document.createElement("strong");l.textContent=o?String(n??""):ln(r,t,n),i.append(a,l),e.append(i)}function ht(e,t){return!e||!t||t=he?`${n} confirmations`:`${n}/${he} confirmations`:`Pending · 0/${he} confirmations`}async function un(e,t="activity"){_e=e,en=t;const n=s("close-transaction");n.title=t==="nft"?"Back to NFT/RWA details":"Back to activity",n.setAttribute("aria-label",t==="nft"?"Back to NFT/RWA details":"Back to activity"),I("transaction-screen"),s("transaction-title").textContent="Loading transaction",s("transaction-header-status").textContent="",s("transaction-full-txid").textContent=e.txid,s("transaction-overview").replaceChildren(),s("transaction-fields").replaceChildren(),s("transaction-technical-fields").replaceChildren(),s("transaction-miner-earnings").replaceChildren(),s("miner-earnings-section").hidden=!0;try{const o=await $("wallet-transaction",{txid:e.txid}),r=await Yt(),i=JSON.parse(r.decode_transaction(o.transaction_hex)),l=ht(o.block_height,o.current_height){F(u,m,g,!1,i.txtype)});const f=e.miner_earnings??[];if(f.length>0){const m=s("transaction-miner-earnings");f.forEach((g,v)=>{F(m,`earning_${v+1}_type`,g.type),F(m,`earning_${v+1}_asset`,g.asset),F(m,`earning_${v+1}_nft_series`,g.nft_series),F(m,`earning_${v+1}_amount`,`${re(g.amount_atomic)} ${g.asset.trim()}`)}),s("miner-earnings-section").hidden=!1}const p=s("transaction-technical-fields");i.stored_hash&&F(p,"stored_hash",i.stored_hash,!0),i.signature&&F(p,"signature",i.signature,!0),i.signature1&&F(p,"signature_1",i.signature1,!0),i.signature2&&F(p,"signature_2",i.signature2,!0),F(p,"raw_transaction_bytes",o.transaction_hex,!0)}catch(o){s("transaction-title").textContent="Transaction unavailable";const r=s("transaction-fields");r.replaceChildren(),F(r,"error",q(o))}}function ue(e){const t=String(e??"").trim();return t.length>18?`${t.slice(0,8)}...${t.slice(-7)}`:t}function ar(e,t){const n=e.fields,o=t.trim().toLowerCase(),r=o.endsWith(".cltc")?"CLTC":"CLC",i=c=>String(n[c]??"").trim(),a=(c,d,u="")=>`${u}${re(n[c])} ${d}`,l=()=>`-${re(n.txfee??0)} ${r}`;switch(e.txtype){case 1:return{title:"Mining reward",subtitle:"From network",amount:a("value",r,"+"),direction:"incoming"};case 2:{const c=i("coin"),d=String(n.sender??"").trim().toLowerCase()===o;return{title:d?`Sent ${c}`:`Received ${c}`,subtitle:d?`To: ${ue(n.receiver)}`:`From: ${ue(n.sender)}`,amount:a("value",c,d?"-":"+"),direction:d?"outgoing":"incoming"}}case 3:{const c=i("ticker");return{title:`Created ${c}`,subtitle:"Token creation",amount:a("number",c,"+"),secondary:l(),direction:"incoming"}}case 4:{const c=String(n.count??"1");return{title:`Created ${i("nft_name")}`,subtitle:Number(n.series??0)===0?"NFT/RWA":"NFT/RWA collection",amount:`+${c} ${Number(c)===1?"item":"items"}`,secondary:l(),direction:"incoming"}}case 6:{const c=String(n.sender1??"").trim().toLowerCase()===o,d=i(c?"ticker1":"ticker2"),u=i(c?"ticker2":"ticker1");return{title:"Completed swap",subtitle:`With: ${ue(n[c?"sender2":"sender1"])}`,amount:a(c?"value1":"value2",d,"-"),secondary:a(c?"value2":"value1",u,"+"),direction:"neutral"}}case 7:{const c=String(n.lender??"").trim().toLowerCase()===o;return{title:c?"Loan funded":"Loan received",subtitle:c?`To: ${ue(n.borrower)}`:`From: ${ue(n.lender)}`,amount:a("loan_amount",i("loan_coin"),c?"-":"+"),direction:c?"outgoing":"incoming"}}case 8:return{title:"Loan payment",subtitle:`Contract: ${ue(n.contract_hash)}`,amount:`-${re(n.payback_amount)}`,direction:"outgoing"};case 10:return{title:`Burned ${i("coin")}`,subtitle:"Removed from supply",amount:a("value",i("coin"),"-"),direction:"outgoing"};case 11:{const c=i("ticker");return{title:`Issued ${c}`,subtitle:"Additional token supply",amount:a("number",c,"+"),secondary:l(),direction:"incoming"}}case 12:return{title:"Created vanity address",subtitle:String(n.vanity_address??"").trim(),amount:l(),direction:"outgoing"};default:return{title:e.transaction_name,subtitle:"Contractless transaction",amount:l(),direction:"outgoing"}}}async function sr(e,t){const n=s("activity-list");if(n.replaceChildren(),s("activity-count").textContent=`${e.length} shown`,e.length===0){const r=document.createElement("div");r.className="activity-empty";const i=document.createElement("strong");i.textContent="No wallet activity found";const a=document.createElement("span");a.textContent="New transactions will appear here after they reach the selected API.",r.append(i,a),n.append(r);return}const o=await Yt();e.forEach(r=>{let i;try{i=JSON.parse(o.decode_transaction(r.transaction_hex))}catch{const E=Number.parseInt(r.transaction_hex.slice(0,2),16);i={txtype:E,transaction_name:zn[E]??`Transaction Type ${E}`,fields:{}}}const a=ar(i,(h==null?void 0:h.address)??""),l=cn(r.transaction_hex),d=ht(r.block_height,t){un(r)}),n.append(u)})}async function fn(){if(!(h!=null&&h.unlocked))return;s("activity-count").textContent="Loading";const e=s("activity-list");e.replaceChildren();const t=document.createElement("div");t.className="activity-empty",t.textContent="Loading recent activity...",e.append(t);try{const n=await $("wallet-activity");await sr(Array.isArray(n.transactions)?n.transactions:[],Number(n.current_height??0))}catch(n){e.replaceChildren();const o=document.createElement("div");o.className="activity-empty activity-error",o.textContent=q(n),e.append(o),s("activity-count").textContent="Unavailable"}}function q(e){return e instanceof Error?e.message:String(e).replace(/^JsValue\((.*)\)$/,"$1")}async function U(e,t=!1){M.textContent="",t&&I("loading");try{await e()}catch(n){throw M.textContent=q(n),n}}function Q(e,t){if(!e.trim())throw new Error(t);return e}function cr(e){let t="";for(let o=0;oURL.revokeObjectURL(r),1e3)}async function pn(e,t){h=e,fe=t,ie=String(await $("export-private-key-image",{password:t,imagePassword:t})),s("wallet-image-preview").src=`data:image/png;base64,${ie}`;const n=s("backup-confirmed");n.disabled=!0,n.checked=!1,s("open-wallet").disabled=!0,I("backup-screen")}document.querySelectorAll(".navigation").forEach(e=>{e.addEventListener("click",()=>I(String(e.dataset.screen)))});s("account-menu-button").addEventListener("click",()=>G(!0));s("close-account-drawer").addEventListener("click",()=>G(!1));s("drawer-backdrop").addEventListener("click",()=>G(!1));function gn(e){G(!1),s("cancel-wallet-add").hidden=!1,I(e)}s("menu-create-wallet").addEventListener("click",()=>{gn("create-screen")});s("menu-import-wallet").addEventListener("click",()=>{gn("image-screen")});s("cancel-wallet-add").addEventListener("click",()=>{s("cancel-wallet-add").hidden=!0,h&&V(h)});s("menu-settings").addEventListener("click",()=>{G(!1),gt(),h&&(s("settings-api-url").value=h.apiUrl,s("settings-lock-timeout").value=String(h.autoLockMinutes)),I("settings-screen")});s("close-settings").addEventListener("click",()=>{gt(),h&&V(h)});s("drawer-lock-wallet").addEventListener("click",()=>{U(async()=>{G(!1),fe="",ie="",V(await $("lock"))})});s("open-receive").addEventListener("click",()=>{U(Xn)});s("open-send").addEventListener("click",()=>{U(async()=>tr())});s("close-send").addEventListener("click",()=>{Y=void 0,P?(xe(P),I("nft-detail-screen")):h&&V(h)});s("send-asset").addEventListener("change",Re);s("send-amount").addEventListener("input",Re);s("send-form").addEventListener("submit",e=>{e.preventDefault(),U(rr)});s("send-form").addEventListener("keydown",e=>{!(e instanceof KeyboardEvent)||e.key!=="Enter"||e.target instanceof HTMLInputElement&&(e.preventDefault(),s("send-form").requestSubmit())});s("edit-send").addEventListener("click",()=>{I("send-screen")});s("sign-broadcast-transfer").addEventListener("click",()=>{U(async()=>{if(!Y)throw new Error("The reviewed transfer is unavailable.");we=(await $("wallet-broadcast-transfer",{transaction:Y.transaction})).txid,s("send-result-txid").textContent=we,Y=void 0,I("send-success-screen")})});s("copy-send-txid").addEventListener("click",()=>{we&&navigator.clipboard.writeText(we).then(()=>{M.textContent="Transaction ID copied."}).catch(e=>{M.textContent=q(e)})});s("finish-send").addEventListener("click",()=>{we="";const e=!!P;P=void 0,h&&(Be(),e?(Z=void 0,I("nfts-screen"),pt(!0)):V(h))});s("open-activity").addEventListener("click",()=>{I("activity-screen"),fn()});s("open-nfts").addEventListener("click",()=>{K=1,Z=void 0,I("nfts-screen"),pt(!0)});s("close-nfts").addEventListener("click",()=>{ae+=1,h&&V(h)});s("refresh-nfts").addEventListener("click",()=>{pt(!0)});s("close-nft-detail").addEventListener("click",()=>{Z=void 0,I("nfts-screen")});s("transfer-nft").addEventListener("click",()=>{U(async()=>{if(!Z)throw new Error("No NFT or RWA is selected.");nr(Z)})});s("nfts-previous").addEventListener("click",()=>{if(K<=1)return;K-=1;const e=++ae;Ce(),mt(e)});s("nfts-next").addEventListener("click",()=>{const e=Math.max(1,Math.ceil(J.length/ve));if(K>=e)return;K+=1;const t=++ae;Ce(),mt(t)});s("close-activity").addEventListener("click",()=>{h&&V(h)});s("close-transaction").addEventListener("click",()=>{en==="nft"&&Z?(xe(Z),I("nft-detail-screen")):I("activity-screen")});s("copy-transaction-txid").addEventListener("click",()=>{const e=_e==null?void 0:_e.txid;e&&navigator.clipboard.writeText(e).then(()=>{M.textContent="Transaction ID copied."}).catch(t=>{M.textContent=q(t)})});s("refresh-activity").addEventListener("click",()=>{fn()});s("refresh-balances").addEventListener("click",()=>{Be()});document.querySelectorAll("[data-token-filter]").forEach(e=>{e.addEventListener("click",()=>{Te=e.dataset.tokenFilter==="all"?"all":"held",document.querySelectorAll("[data-token-filter]").forEach(t=>{t.classList.toggle("active",t===e)}),st()})});s("close-receive").addEventListener("click",()=>{h&&V(h)});s("copy-receive-address").addEventListener("click",()=>{var t;const e=(t=s("receive-address-value").textContent)==null?void 0:t.trim();if(!e){M.textContent="No active wallet address is available.";return}navigator.clipboard.writeText(e).then(()=>{M.textContent="Wallet address copied."}).catch(n=>{M.textContent=q(n)})});s("save-wallet-settings").addEventListener("click",()=>{U(async()=>{const e=s("settings-api-url").value.replace(/\/+$/,""),t=new URL(e);if(t.protocol!=="https:"&&t.hostname!=="localhost"&&t.hostname!=="127.0.0.1")throw new Error("Contractless API URLs must use HTTPS.");const n=`${t.origin}/*`;if(!await chrome.permissions.contains({origins:[n]})&&!await chrome.permissions.request({origins:[n]}))throw new Error("Permission to contact this API endpoint was denied.");h=await $("save-settings",{apiUrl:e,autoLockMinutes:s("settings-lock-timeout").value}),M.textContent="Settings saved."})});document.querySelectorAll("[data-backup-action]").forEach(e=>{e.addEventListener("click",()=>{dt=e.dataset.backupAction,Ee(!0)})});s("close-backup-key").addEventListener("click",()=>Ee(!1));s("backup-key-backdrop").addEventListener("click",()=>Ee(!1));s("confirm-backup-key").addEventListener("click",()=>{const e=dt,t=s("backup-key-input").value;if(e){if(!t){M.textContent="Enter the active wallet encryption key.";return}U(async()=>{var r;if(e==="image"){const i=String(await $("export-private-key-image",{password:t,imagePassword:t})),a=((r=h==null?void 0:h.address)==null?void 0:r.split(".")[0])??"contractless";mn(i,`${a}.wallet.png`),Ee(!1),M.textContent="Wallet image downloaded.";return}const n=await $("reveal-private-key",{password:t});if(Ee(!1),e==="private"){s("revealed-private-key").value=n.privateKey,s("private-key-result").hidden=!1,s("private-key-result").scrollIntoView({block:"nearest"});return}const o=crypto.randomUUID();await chrome.storage.session.set({[`print-backup:${o}`]:{label:n.label,address:n.address,privateKey:n.privateKey,encryptionKey:t}}),await chrome.windows.create({url:chrome.runtime.getURL(`print.html?id=${encodeURIComponent(o)}`),type:"popup",width:820,height:760})})}});s("clear-private-key").addEventListener("click",gt);s("copy-private-key").addEventListener("click",()=>{const e=s("revealed-private-key").value;e&&navigator.clipboard.writeText(e).then(()=>{M.textContent="Private key copied."}).catch(t=>{M.textContent=q(t)})});document.querySelectorAll(".reveal").forEach(e=>{e.addEventListener("click",()=>{const t=s(String(e.dataset.input)),n=t.type==="text";t.type=n?"password":"text",e.textContent=n?"Show":"Hide"})});s("continue-create").addEventListener("click",()=>{try{Ne=Q(s("new-password").value,"Enter an encryption key."),s("verify-password").value="",I("verify-screen")}catch(e){M.textContent=q(e)}});s("create-wallet").addEventListener("click",()=>{if(s("verify-password").value!==Ne){M.textContent="The encryption keys do not match.";return}U(async()=>{const t=Ne,n=await $("create-wallet",{password:t});Ne="",s("new-password").value="",s("verify-password").value="",await pn(n,t)},!0).catch(()=>I("verify-screen",!1))});const ct=s("wallet-image");ct.addEventListener("change",()=>{var t;const e=(t=ct.files)==null?void 0:t[0];ge="",s("image-file-name").textContent=(e==null?void 0:e.name)??"Choose wallet image",e&&e.arrayBuffer().then(n=>{ge=cr(new Uint8Array(n))}).catch(n=>{M.textContent=q(n)})});s("import-image").addEventListener("click",()=>{const e=s("image-password").value;try{Q(e,"Enter the wallet image encryption key."),Q(ge,"Choose a wallet image.")}catch(t){M.textContent=q(t);return}U(async()=>{const t=await $("import-wallet-image",{imageBase64:ge,imagePassword:e,password:e});fe=e,ge="",ct.value="",s("image-password").value="",V(t)},!0).catch(()=>I("image-screen",!1))});s("import-private").addEventListener("click",()=>{const e=s("private-key").value.trim(),t=s("private-password").value;try{Q(e,"Paste the private key."),Q(t,"Enter a new encryption key.")}catch(n){M.textContent=q(n);return}U(async()=>{const n=await $("import-private-key",{privateKey:e,password:t});s("private-key").value="",s("private-password").value="",await pn(n,t)},!0).catch(()=>I("private-screen",!1))});s("save-image").addEventListener("click",()=>{U(async()=>{var n;if(!ie)throw new Error("The wallet image is not ready.");const e=((n=h==null?void 0:h.address)==null?void 0:n.split(".")[0])??"contractless";mn(ie,`${e}.wallet.png`);const t=s("backup-confirmed");t.disabled=!1,t.checked=!1,s("open-wallet").disabled=!0})});s("backup-confirmed").addEventListener("change",e=>{s("open-wallet").disabled=!e.currentTarget.checked});s("open-wallet").addEventListener("click",()=>{fe="",ie="",s("wallet-image-preview").removeAttribute("src"),h&&V(h)});s("unlock-form").addEventListener("submit",e=>{e.preventDefault();const t=s("unlock-password").value;try{Q(t,"Enter your encryption key.")}catch(n){M.textContent=q(n);return}U(async()=>{const n=await $("unlock",{password:t});fe=t,s("unlock-password").value="",V(n)},!0).catch(()=>I("locked-screen",!1))});s("approve-provider-approval").addEventListener("click",()=>{oe&&(ye("approve"),U(async()=>{const e=await $("resolve-provider-approval",{id:oe,approved:!0});oe="",await tn(e.remaining??0,!0)}).catch(()=>ye(null)))});s("reject-provider-approval").addEventListener("click",()=>{oe&&(ye("reject"),U(async()=>{const e=await $("resolve-provider-approval",{id:oe,approved:!1});oe="",await tn(e.remaining??0,!1)}).catch(()=>ye(null)))});$("status").then(e=>V(e)).catch(e=>{I("create-screen"),M.textContent=q(e)});