From 11ef67f631e6fdb39192bede6d10f8d03b87b513 Mon Sep 17 00:00:00 2001 From: Armani Ferrante Date: Wed, 3 Mar 2021 19:06:32 +0800 Subject: [PATCH] Updates --- asset-manifest.json | 6 +++--- index.html | 2 +- static/js/main.178c7d0d.chunk.js | 2 ++ static/js/main.178c7d0d.chunk.js.map | 1 + static/js/main.7db7d235.chunk.js | 2 -- static/js/main.7db7d235.chunk.js.map | 1 - 6 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 static/js/main.178c7d0d.chunk.js create mode 100644 static/js/main.178c7d0d.chunk.js.map delete mode 100644 static/js/main.7db7d235.chunk.js delete mode 100644 static/js/main.7db7d235.chunk.js.map diff --git a/asset-manifest.json b/asset-manifest.json index f0beb1b2..d79b98d5 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "/static/css/main.de5ef912.chunk.css", - "main.js": "/static/js/main.7db7d235.chunk.js", - "main.js.map": "/static/js/main.7db7d235.chunk.js.map", + "main.js": "/static/js/main.178c7d0d.chunk.js", + "main.js.map": "/static/js/main.178c7d0d.chunk.js.map", "runtime-main.js": "/static/js/runtime-main.e254c168.js", "runtime-main.js.map": "/static/js/runtime-main.e254c168.js.map", "static/js/2.7f3eafc3.chunk.js": "/static/js/2.7f3eafc3.chunk.js", @@ -15,6 +15,6 @@ "static/js/runtime-main.e254c168.js", "static/js/2.7f3eafc3.chunk.js", "static/css/main.de5ef912.chunk.css", - "static/js/main.7db7d235.chunk.js" + "static/js/main.178c7d0d.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index a553003e..78c00cc5 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Solana SPL Token Wallet
\ No newline at end of file +Solana SPL Token Wallet
\ No newline at end of file diff --git a/static/js/main.178c7d0d.chunk.js b/static/js/main.178c7d0d.chunk.js new file mode 100644 index 00000000..606e7575 --- /dev/null +++ b/static/js/main.178c7d0d.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpspl-token-wallet"]=this["webpackJsonpspl-token-wallet"]||[]).push([[0],{154:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return p})),n.d(t,"d",(function(){return m})),n.d(t,"c",(function(){return O})),n.d(t,"a",(function(){return x}));var r=n(6),a=n.n(r),c=n(15),o=n(17),i=n(22),s=255,u=224;function l(e,t,n,r){return d.apply(this,arguments)}function d(){return(d=Object(c.a)(a.a.mark((function e(t,n,r,c){var o,i,l,d,b;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=0,i=0,!(c.length>s)){e.next=15;break}case 3:if(!(c.length-i>s)){e.next=15;break}return l=c.slice(i,i+s),i+=s,console.log("send",(2|o).toString(16),l.length.toString(16),l),e.next=9,t.send(u,n,r,2|o,l);case 9:if(2===e.sent.length){e.next=12;break}throw new Error("solana_send: Received unexpected reply payload","UnexpectedReplyPayload");case 12:o|=1,e.next=3;break;case 15:return d=c.slice(i),console.log("send",o.toString(16),d.length.toString(16),d),e.next=19,t.send(u,n,r,o,d);case 19:return b=e.sent,e.abrupt("return",b.slice(0,b.length-2));case 21:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function b(e){return(2147483648|e)>>>0}function p(t,n){var r=t||0,a=n||0,c=e.alloc(17),o=0;return o=c.writeUInt8(4,o),o=c.writeUInt32BE(b(44),o),o=c.writeUInt32BE(b(501),o),o=c.writeUInt32BE(b(r),o),c.writeUInt32BE(b(a),o),c}function f(e,t){return j.apply(this,arguments)}function j(){return(j=Object(c.a)(a.a.mark((function e(t,n){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",l(t,5,0,n));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function m(e,t,n){return h.apply(this,arguments)}function h(){return(h=Object(c.a)(a.a.mark((function e(t,n,r){var c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=r.serializeMessage(),e.abrupt("return",O(t,n,c));case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function O(e,t,n){return v.apply(this,arguments)}function v(){return(v=Object(c.a)(a.a.mark((function t(n,r,c){var o,i;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(o=e.alloc(1)).writeUInt8(1),i=e.concat([o,r,c]),t.abrupt("return",l(n,6,1,i));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function x(e,t){return y.apply(this,arguments)}function y(){return(y=Object(c.a)(a.a.mark((function e(t,n){var r,c,s;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n||p(),e.next=3,f(t,r);case 3:return c=e.sent,s=i.encode(c),e.abrupt("return",new o.e(s));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,n(18).Buffer)},200:function(e,t,n){"use strict";n.d(t,"a",(function(){return b}));var r=n(6),a=n.n(r),c=n(15),o=n(19),i=n(20),s=n(390),u=n(154),l=n(22),d=n.n(l),b=function(){function e(t){var n=this;Object(o.a)(this,e),this.init=Object(c.a)(a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.a.create();case 2:return n.transport=e.sent,e.next=5,Object(u.a)(n.transport);case 5:return n.pubKey=e.sent,n.transport.on("disconnect",n.onDisconnect),n.listAddresses=function(){var e=Object(c.a)(a.a.mark((function e(t){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",[n.pubKey]);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.abrupt("return",n);case 9:case"end":return e.stop()}}),e)}))),this.signTransaction=function(){var e=Object(c.a)(a.a.mark((function e(t){var r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Object(u.b)(),e.next=3,Object(u.d)(n.transport,r,t);case 3:return c=e.sent,t.addSignature(n.publicKey,c),e.abrupt("return",t);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.createSignature=function(){var e=Object(c.a)(a.a.mark((function e(t){var r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Object(u.b)(),e.next=3,Object(u.c)(n.transport,r,t);case 3:return c=e.sent,e.abrupt("return",d.a.encode(c));case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.onDisconnect=t&&t.onDisconnect||function(){}}return Object(i.a)(e,[{key:"publicKey",get:function(){return this.pubKey}}]),e}()},209:function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"a",(function(){return h}));var r=n(1),a=n(9),c=n(0),o=n(91),i=n(423),s=n(420),u=n(421),l=n(107),d=n(221),b=n(422),p=n(51),f=n(26),j=n(63);function m(e){var t=e.open,n=e.onClose,j=Object(f.d)(),m=Object(c.useState)(!0),h=Object(a.a)(m,2),O=h[0],v=h[1],x="[".concat(Array.from(j.provider.account.secretKey),"]");return Object(r.jsxs)(p.a,{open:t,onClose:n,fullWidth:!0,children:[Object(r.jsx)(s.a,{children:"Export account"}),Object(r.jsxs)(u.a,{children:[Object(r.jsx)(l.a,{label:"Private key",fullWidth:!0,type:O&&"password",variant:"outlined",margin:"normal",value:x}),Object(r.jsx)(d.a,{control:Object(r.jsx)(b.a,{checked:!O,onChange:function(){return v(!O)}}),label:"Reveal"})]}),Object(r.jsx)(i.a,{children:Object(r.jsx)(o.a,{onClick:n,children:"Close"})})]})}function h(e){var t=e.open,n=e.onClose,f=Object(c.useState)(!0),m=Object(a.a)(f,2),h=m[0],O=m[1],v=Object(j.c)();return Object(r.jsxs)(p.a,{open:t,onClose:n,fullWidth:!0,children:[Object(r.jsx)(s.a,{children:"Export mnemonic"}),Object(r.jsxs)(u.a,{children:[Object(r.jsx)(l.a,{label:"Mnemonic",fullWidth:!0,type:h&&"password",variant:"outlined",margin:"normal",value:v.mnemonic}),Object(r.jsx)(d.a,{control:Object(r.jsx)(b.a,{checked:!h,onChange:function(){return O(!h)}}),label:"Reveal"})]}),Object(r.jsx)(i.a,{children:Object(r.jsx)(o.a,{onClick:n,children:"Close"})})]})}},216:function(e,t,n){"use strict";n.d(t,"b",(function(){return nn})),n.d(t,"a",(function(){return an}));var r=n(6),a=n.n(r),c=n(15),o=n(1),i=n(49),s=n(9),u=n(0),l=n.n(u),d=n(826),b=n(785),p=n(834),f=n(275),j=n(26),m=n(69),h=n(88),O=n(821),v=n(52),x=n(424),y=n(24),g=n(420),w=n(421),k=n(51),S=n(33),C=n(107),A=n(402),E=n.n(A),T=n(780),I=n(78),N=n(403),P=n.n(N),B=n(401),K=n.n(B),M=n(783),D=n(789),W=Object(T.a)((function(e){return{root:{display:"flex",marginTop:e.spacing(1),marginBottom:e.spacing(1),alignItems:"baseline"}}}));function R(e){var t=e.value,n=e.label,r=e.autoFocus,a=e.qrCode,c=e.helperText,i=Object(I.b)().enqueueSnackbar,s=Object(u.useRef)(),l=W();return Object(o.jsxs)("div",{className:l.root,children:[Object(o.jsx)(C.a,{inputRef:function(e){return s.current=e},multiline:!0,autoFocus:r,value:t,readOnly:!0,onFocus:function(e){return e.currentTarget.select()},className:l.textArea,fullWidth:!0,helperText:c,label:n,spellCheck:!1}),Object(o.jsx)(M.a,{onClick:function(){var e=s.current;e&&(e.select(),document.execCommand("copy"),i("Copied ".concat(n),{variant:"info",autoHideDuration:2500}))},children:Object(o.jsx)(E.a,{})}),a?Object(o.jsx)(L,{value:!0===a?t:a}):null]})}var F=Object(T.a)((function(e){return{qrcodeContainer:{display:"flex",flexDirection:"column",alignItems:"center",marginBottom:e.spacing(2)}}}));function L(e){var t=e.value,n=l.a.useState(!1),r=Object(s.a)(n,2),a=r[0],c=r[1],i=F();return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsx)(M.a,{onClick:function(){return c(!0)},children:Object(o.jsx)(P.a,{})}),Object(o.jsx)(D.a,{open:a,onClose:function(){return c(!1)},children:Object(o.jsx)(w.a,{className:i.qrcodeContainer,children:Object(o.jsx)(K.a,{value:t,size:256,includeMargin:!0})})})]})}var U=Object(T.a)((function(e){return{explorerLink:{marginBottom:e.spacing(2)},warning:{marginBottom:e.spacing(2)},container:{minWidth:600}}}));function q(e){var t=e.open,n=e.onClose,r=e.publicKey,a=e.balanceInfo,c=a.mint,i=a.tokenName,s=a.tokenSymbol,u=Object(y.j)(),l=U();return Object(o.jsxs)(k.a,{open:t,onClose:n,children:[Object(o.jsxs)(g.a,{children:[null!==i&&void 0!==i?i:Object(S.a)(c),s?" (".concat(s,")"):null]}),Object(o.jsxs)(w.a,{className:l.container,children:[Object(o.jsxs)(v.a,{className:l.warning,children:["Information about ",null!==i&&void 0!==i?i:Object(S.a)(c)]}),Object(o.jsx)(v.a,{variant:"body2",className:l.explorerLink,children:Object(o.jsx)(x.a,{href:"https://explorer.solana.com/account/".concat(r.toBase58())+u,target:"_blank",rel:"noopener",children:"View on Solana Explorer"})}),!!c&&Object(o.jsx)(R,{value:c.toBase58(),label:"Token Mint Address",autoFocus:!0,helperText:Object(o.jsxs)(o.Fragment,{children:["This is ",Object(o.jsx)("strong",{children:"not"})," your deposit address"]})}),!!i&&Object(o.jsx)(R,{value:i,label:"Token Name"}),!!s&&Object(o.jsx)(R,{value:s,label:"Token Symbol"})]})]})}var _=n(212),z=n.n(_),X=n(213),G=n.n(X),V=n(91),H=n(411),J=n.n(H),Y=n(410),Q=n.n(Y),Z=n(412),$=n.n(Z),ee=n(829),te=n(830),ne=n(210),re=n.n(ne),ae=n(408),ce=n.n(ae),oe=n(409),ie=n.n(oe),se=n(847),ue=n(405),le=n.n(ue),de=n(406),be=n.n(de),pe=n(407),fe=n.n(pe),je=n(214),me=n.n(je),he=n(34),Oe=n(828),ve=n(423),xe=n(17),ye=n(79),ge=n(50),we=n(843),ke=n(833),Se=n(58),Ce=n(831),Ae=!!localStorage.getItem("showTokenInfoDialog"),Ee=n(19),Te=n(35),Ie=n(36),Ne=n(417),Pe=function(e){Object(Te.a)(n,e);var t=Object(Ie.a)(n);function n(e,r){var a;return Object(Ee.a)(this,n),(a=t.call(this,e)).name="SwapApiError",a.status=r,a}return n}(Object(Ne.a)(Error));function Be(e,t,n){return Ke.apply(this,arguments)}function Ke(){return(Ke=Object(c.a)(a.a.mark((function e(t,n,r){var c,o,i,s,u,l,d=arguments;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=d.length>3&&void 0!==d[3]?d[3]:{},o=c.ignoreUserErrors,i=void 0!==o&&o,u={headers:s={},method:t},"GET"===t?u.cache="no-cache":r&&(s["Content-Type"]="application/json",u.body=JSON.stringify(r)),e.next=6,fetch("https://swap.sollet.io/api/".concat(n),u);case 6:return l=e.sent,e.next=9,Me(l,i);case 9:return e.abrupt("return",e.sent);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Me(e,t){return De.apply(this,arguments)}function De(){return(De=Object(c.a)(a.a.mark((function e(t,n){var r;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.json();case 2:if((r=e.sent).success){e.next=7;break}if(!(n&&t.status>=400&&t.status<500)){e.next=6;break}return e.abrupt("return",null);case 6:throw new Pe(r.error,t.status);case 7:return e.abrupt("return",r.result);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function We(e,t){return Object(ge.c)(Object(c.a)(a.a.mark((function t(){return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return",null);case 2:return t.next=4,Be("GET",e,void 0,{ignoreUserErrors:!0});case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)}))),["swapApiGet",e],t)}function Re(e){var t,n,r=e.mint,a=e.url,c=e.tokenName,i=e.size,l=void 0===i?20:i,d=Object(y.h)().endpoint,b=Object(u.useState)(!1),p=Object(s.a)(b,2),f=p[0],j=p[1];a||(a=null===r?"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png":null===ye.a||void 0===ye.a||null===(t=ye.a[d])||void 0===t||null===(n=t.find((function(e){return e.mintAddress===(null===r||void 0===r?void 0:r.toBase58())})))||void 0===n?void 0:n.icon);return f||!a?null:Object(o.jsx)("img",{src:a,title:c,alt:c,style:{width:l,height:l,backgroundColor:"white",borderRadius:l/2},onError:function(){return j(!0)}})}var Fe=new Intl.NumberFormat(void 0,{minimumFractionDigits:6,maximumFractionDigits:6}),Le=Object(T.a)((function(e){return{tabs:{marginBottom:e.spacing(1),borderBottom:"1px solid ".concat(e.palette.background.paper)}}}));function Ue(e){var t=e.open,n=e.onClose,r=Object(j.d)(),i=Object(ge.c)(r.tokenAccountCost,r.tokenAccountCost),b=Object(s.a)(i,1)[0],p=Le(),f=Object(ye.d)(),m=Object(Se.b)(),O=Object(s.a)(m,2),v=O[0],S=O[1],A=Object(y.h)().endpoint,E=ye.a[A],T=Object(j.h)(),I=Object(s.a)(T,1)[0],N=Object(u.useState)(E?"popular":"manual"),P=Object(s.a)(N,2),B=P[0],K=P[1],M=Object(u.useState)(""),D=Object(s.a)(M,2),W=D[0],R=D[1],F=Object(u.useState)(""),L=Object(s.a)(F,2),U=L[0],q=L[1],_=Object(u.useState)(""),z=Object(s.a)(_,2),X=z[0],G=z[1],H=Object(u.useState)(""),J=Object(s.a)(H,2),Y=J[0],Q=J[1];function Z(e){"manual"===B?e={mintAddress:W,tokenName:U,tokenSymbol:X}:"erc20"===B&&(e={erc20Address:Y}),v(function(e){return $.apply(this,arguments)}(e),{onSuccess:function(){Object(j.b)(r),n()}})}function $(){return($=Object(c.a)(a.a.mark((function e(t){var n,c,o,i,s,u,l;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.mintAddress,c=t.tokenName,o=t.tokenSymbol,!(i=t.erc20Address)){e.next=9;break}return e.next=4,Be("POST","coins/eth/".concat(i));case 4:s=e.sent,n=s.splMint,c=s.name,o=s.ticker,"sol"!==s.blockchain&&(c="Wrapped "+c);case 9:return u=new xe.e(n),f(u,c,o),e.next=13,r.createAssociatedTokenAccount(u);case 13:return l=e.sent,e.abrupt("return",l[1]);case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}Object(u.useEffect)((function(){E||K("manual")}),[E]);var ee=!0;return"erc20"===B&&(ee=42===Y.length&&Y.startsWith("0x")),Object(o.jsxs)(k.a,{open:t,onClose:n,children:[Object(o.jsx)(g.a,{children:"Add Token"}),Object(o.jsxs)(w.a,{children:[b?Object(o.jsxs)(Oe.a,{children:["Add a token to your wallet. This will cost"," ",Fe.format(b/xe.c)," SOL."]}):Object(o.jsx)(h.a,{}),!!E&&Object(o.jsxs)(we.a,{value:B,textColor:"primary",indicatorColor:"primary",className:p.tabs,onChange:function(e,t){return K(t)},children:[Object(o.jsx)(ke.a,{label:"Popular Tokens",value:"popular"}),Object(o.jsx)(ke.a,{label:"ERC20 Token",value:"erc20"}),Object(o.jsx)(ke.a,{label:"Manual Input",value:"manual"})]}),"manual"!==B&&E?"popular"===B?Object(o.jsx)(d.a,{disablePadding:!0,children:E.filter((function(e){return!e.deprecated})).map((function(e){return Object(o.jsx)(qe,Object(he.a)(Object(he.a)({},e),{},{existingAccount:(I||[]).find((function(t){return t.parsed.mint.toBase58()===e.mintAddress})),onSubmit:Z,disalbed:S}),e.mintAddress)}))}):"erc20"===B?Object(o.jsxs)(o.Fragment,{children:[Object(o.jsx)(C.a,{label:"ERC20 Contract Address",fullWidth:!0,variant:"outlined",margin:"normal",value:Y,onChange:function(e){return Q(e.target.value.trim())},autoFocus:!0,disabled:S}),Y&&ee?Object(o.jsx)(x.a,{href:"https://etherscan.io/token/".concat(Y),target:"_blank",rel:"noopener",children:"View on Etherscan"}):null]}):null:Object(o.jsxs)(l.a.Fragment,{children:[Object(o.jsx)(C.a,{label:"Token Mint Address",fullWidth:!0,variant:"outlined",margin:"normal",value:W,onChange:function(e){return R(e.target.value)},autoFocus:!0,disabled:S}),Object(o.jsx)(C.a,{label:"Token Name",fullWidth:!0,variant:"outlined",margin:"normal",value:U,onChange:function(e){return q(e.target.value)},disabled:S}),Object(o.jsx)(C.a,{label:"Token Symbol",fullWidth:!0,variant:"outlined",margin:"normal",value:X,onChange:function(e){return G(e.target.value)},disabled:S})]})]}),Object(o.jsxs)(ve.a,{children:[Object(o.jsx)(V.a,{onClick:n,children:"Cancel"}),"popular"!==B&&Object(o.jsx)(V.a,{type:"submit",color:"primary",disabled:S||!ee,onClick:function(){return Z({tokenName:U,tokenSymbol:X,mintAddress:W})},children:"Add"})]})]})}function qe(e){var t=e.tokenName,n=e.icon,r=e.tokenSymbol,a=e.mintAddress,c=e.onSubmit,i=e.disabled,d=e.existingAccount,f=Object(u.useState)(!1),j=Object(s.a)(f,2),m=j[0],h=j[1],v=Object(y.j)(),g=!!d;return Object(o.jsxs)(l.a.Fragment,{children:[Object(o.jsxs)("div",{style:{display:"flex"},children:[Object(o.jsxs)(b.a,{button:!0,onClick:function(){return h((function(e){return!e}))},children:[Object(o.jsx)(Ce.a,{children:Object(o.jsx)(Re,{url:n,tokenName:t,size:20})}),Object(o.jsx)(p.a,{primary:Object(o.jsxs)(x.a,{target:"_blank",rel:"noopener",href:"https://explorer.solana.com/account/".concat(a)+v,children:[null!==t&&void 0!==t?t:Object(S.a)(a),r?" (".concat(r,")"):null]})}),m?Object(o.jsx)(z.a,{}):Object(o.jsx)(G.a,{})]}),Object(o.jsx)(V.a,{type:"submit",color:"primary",disabled:i||g,onClick:function(){return c({tokenName:t,tokenSymbol:r,mintAddress:a})},children:g?"Added":"Add"})]},t),Object(o.jsx)(O.a,{in:m,timeout:"auto",unmountOnExit:!0,children:Object(o.jsx)(R,{value:a,label:"".concat(r," Mint Address")})})]})}var _e=n(209),ze=n(147),Xe=n(836),Ge=n(404),Ve=n.n(Ge),He=n(219),Je=n(220),Ye=new Ve.a(window.ethereum),Qe=2e5;function Ze(){var e=Object(u.useState)(null),t=Object(s.a)(e,2),n=t[0],r=t[1];return Object(u.useEffect)((function(){if(window.ethereum){var e=function(e){return r(e.length>0?e[0]:null)};return window.ethereum.request({method:"eth_accounts"}).then(e),window.ethereum.on("accountsChanged",e),function(){return window.ethereum.removeListener("accountsChanged",e)}}}),[]),n}function $e(e,t){return et.apply(this,arguments)}function et(){return(et=Object(c.a)(a.a.mark((function e(t,n){var r,c,o,i,u;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n){e.next=7;break}return e.t0=parseInt,e.next=4,Ye.eth.getBalance(t);case 4:return e.t1=e.sent,e.t2=(0,e.t0)(e.t1),e.abrupt("return",e.t2/1e18);case 7:return r=new Ye.eth.Contract(He,n),e.next=10,Promise.all([r.methods.balanceOf(t).call(),r.methods.decimals().call()]);case 10:return c=e.sent,o=Object(s.a)(c,2),i=o[0],u=o[1],e.abrupt("return",parseInt(i,10)/Math.pow(10,parseInt(u,10)));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function tt(){return(tt=Object(c.a)(a.a.mark((function e(t){var n,r,c,o,i,s,u,l,d;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.erc20Address,r=t.swapAddress,c=t.ethAccount,n){e.next=3;break}return e.abrupt("return",nt({swapAddress:r}));case 3:return o=new Ye.eth.Contract(He,n),e.t0=parseInt,e.next=7,o.methods.decimals().call();case 7:return e.t1=e.sent,i=(0,e.t0)(e.t1,10),s=st("100000000",i),e.next=12,o.methods.approve(r,s).estimateGas({from:c});case 12:return u=e.sent,u*=1.5,l=Qe,e.next=17,Ye.eth.getGasPrice();case 17:return e.t2=e.sent,d=1e-18*e.t2,e.abrupt("return",[u*d,l*d]);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function nt(){return rt.apply(this,arguments)}function rt(){return(rt=Object(c.a)(a.a.mark((function e(){var t,n;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=Qe,e.next=3,Ye.eth.getGasPrice();case 3:return e.t0=e.sent,n=1e-18*e.t0,e.abrupt("return",t*n);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function at(e){return ct.apply(this,arguments)}function ct(){return(ct=Object(c.a)(a.a.mark((function e(t){var n,r,c,o,i,s,u,l,d,b,p,f,j;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.ethAccount,r=t.erc20Address,c=t.swapAddress,o=t.destination,i=t.amount,s=t.onStatusChange,r){e.next=3;break}return e.abrupt("return",ot({ethAccount:n,swapAddress:c,destination:o,amount:i,onStatusChange:s}));case 3:return u=new Ye.eth.Contract(He,r),l=new Ye.eth.Contract(Je,c),e.t0=parseInt,e.next=8,u.methods.decimals().call();case 8:return e.t1=e.sent,d=(0,e.t0)(e.t1,10),b=st(i,d),p=u.methods.approve(c,b).send({from:n}),e.next=14,dt(p);case 14:return s({step:1}),f=l.methods.swapErc20(r,o,b).send({from:n,gasLimit:Qe}),e.next=18,dt(f);case 18:return j=e.sent,s({step:2,txid:j,confirms:0}),e.next=22,Promise.all([p,f,bt(f,s)]);case 22:s({step:3});case 23:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ot(e){return it.apply(this,arguments)}function it(){return(it=Object(c.a)(a.a.mark((function e(t){var n,r,c,o,i,s,u,l,d;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.ethAccount,r=t.swapAddress,c=t.destination,o=t.amount,i=t.onStatusChange,s=new Ye.eth.Contract(Je,r),u=st(o,18),l=s.methods.swapEth(c).send({from:n,value:u}),e.next=6,dt(l);case 6:return d=e.sent,i({step:2,txid:d,confirms:0}),e.next=10,Promise.all([l,bt(l,i)]);case 10:i({step:3});case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function st(e,t){if(!/^\d*\.?\d*$/.test(e))throw new Error("Invalid number");e.includes(".")||(e+=".");var n=e.split("."),r=Object(s.a)(n,2),a=r[0],c=r[1];return c.length>t?c=c.slice(0,t):c+="0".repeat(t-c.length),(a+c).replace(/^0+/,"")||"0"}var ut=new Set;function lt(){return(lt=Object(c.a)(a.a.mark((function e(t,n,r){var c,o,i,s,u,l;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=n.txData,o=c.params,i=c.signature,s=new Ye.eth.Contract(Je,o[1]),"withdrawErc20"!==o[0]){e.next=7;break}u=s.methods.withdrawErc20(o[2],o[3],o[4],o[5],i),l=o[5],e.next=13;break;case 7:if("withdrawEth"!==o[0]){e.next=12;break}u=s.methods.withdrawEth(o[2],o[3],o[4],i),l=o[4],e.next=13;break;case 12:return e.abrupt("return");case 13:if(!ut.has(l)){e.next=15;break}return e.abrupt("return");case 15:return e.prev=15,e.next=18,u.estimateGas();case 18:e.next=23;break;case 20:return e.prev=20,e.t0=e.catch(15),e.abrupt("return");case 23:return ut.add(l),e.next=26,r(u.send({from:t,gasLimit:Qe}),{progressMessage:"Completing ".concat(n.coin.ticker," transfer...")});case 26:ut.delete(l);case 27:case"end":return e.stop()}}),e,null,[[15,20]])})))).apply(this,arguments)}function dt(e){return new Promise((function(t,n){e.once("transactionHash",t).catch(n)}))}function bt(e,t){return new Promise((function(n,r){var a=!1;e.on("confirmation",(function(e,c){a||(t({confirms:e+1}),c.status?e>=11&&(n(),a=!0):(r("Transaction failed"),a=!0))}))}))}function pt(){var e=Object(Se.a)();if(!window.ethereum)return Object(o.jsx)(V.a,{color:"primary",variant:"outlined",component:"a",href:"https://metamask.io/",target:"_blank",rel:"noopener",children:"Connect to MetaMask"});return Object(o.jsx)(V.a,{color:"primary",variant:"outlined",onClick:function(){e(window.ethereum.request({method:"eth_requestAccounts"}),{progressMessage:"Connecting to MetaMask...",successMessage:"Connected to MetaMask"})},children:"Connect to MetaMask"})}var ft=n(849),jt=n(835),mt=n(846),ht=n(784),Ot=n(45),vt=n(55),xt=n(422),yt=n(20),gt=n(39),wt=function(){var e={};return gt.MARKETS.forEach((function(t){var n=t.name.split("/")[0];e[n]&&e.deprecated||(e[n]={publicKey:t.address,name:t.name.split("/").join("")})})),e}(),kt=new(function(){function e(){Object(Ee.a)(this,e),this.cache=void 0,this.cache={}}return Object(yt.a)(e,[{key:"getPrice",value:function(){var e=Object(c.a)(a.a.mark((function e(t,n){var r=this;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){if(t._rpcEndpoint===y.b)return void 0!==r.cache[n]?e(r.cache[n]):void fetch("https://serum-api.bonfida.com/orderbooks/".concat(n)).then((function(t){t.json().then((function(t){if(0===t.data.asks.length&&0===t.data.bids.length)e(void 0);else if(0===t.data.asks.length)e(t.data.bids[0].price);else if(0===t.data.bids.length)e(t.data.asks[0].price);else{var a=(t.data.asks[0].price+t.data.bids[0].price)/2;r.cache[n]=a,e(r.cache[n])}}))}));e(void 0)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),e}());function St(e){var t=e.ethFee,n=e.ethPrice,r=e.warning,a=void 0!==r&&r,c=e.prefix,i=void 0===c?"":c,s=e.bold,u=void 0!==s&&s,l=void 0!==n?n*t:null;return Object(o.jsxs)(Oe.a,{color:a?"secondary":"textPrimary",style:{marginBottom:"0px",fontWeight:u?"500":void 0},children:[i,t.toFixed(4)," ETH",l&&" (".concat(l.toFixed(2)," USD)")]})}function Ct(e){var t=e.ethFeeData,n=e.insufficientEthBalance,r=Object(s.a)(t,3),a=r[0],c=r[1],i=r[2],l=Object(u.useState)(void 0),d=Object(s.a)(l,2),b=d[0],p=d[1],f=Object(y.g)();if(Object(u.useEffect)((function(){if(void 0===b){var e=wt.ETH;kt.getPrice(f,e.name).then(p)}}),[b,f]),!c&&!i)return Object(o.jsx)(Oe.a,{color:"textPrimary",children:"Loading..."});if(i)return Object(o.jsx)(Oe.a,{color:"textPrimary",children:"Unable to estimate"});if(Array.isArray(a)){var j=Object(s.a)(a,2),m=j[0],h=j[1];return Object(o.jsxs)(Oe.a,{children:[Object(o.jsx)(St,{ethFee:m,ethPrice:b,prefix:"Approve: "}),Object(o.jsx)(St,{ethFee:h,ethPrice:b,prefix:"Swap: "}),Object(o.jsx)(St,{warning:n,ethFee:m+h,ethPrice:b,prefix:"Total: ",bold:!0})]})}return Object(o.jsx)(St,{warning:n,ethFee:a,ethPrice:b})}var At=new xe.e("BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW"),Et=new xe.e("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");function Tt(e){var t=e.open,n=e.onClose,r=e.publicKey,a=e.balanceInfo,c=Object(y.i)(),i=Object(u.useState)("spl"),l=Object(s.a)(i,2),d=l[0],b=l[1],p=Object(u.useRef)(),f=We(a.mint&&c?"coins/sol/".concat(a.mint.toBase58()):null),j=Object(s.a)(f,1)[0],m=Ze(),h=a.mint,O=a.tokenName,x=a.tokenSymbol;return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(k.a,{open:t,onClose:n,onSubmit:function(){return p.current()},fullWidth:!0,children:[Object(o.jsxs)(g.a,{children:["Send ",null!==O&&void 0!==O?O:Object(S.a)(h),x?" (".concat(x,")"):null,m&&Object(o.jsx)("div",{children:Object(o.jsxs)(v.a,{color:"textSecondary",style:{fontSize:"14px"},children:["Metamask connected: ",m]})})]}),j?Object(o.jsx)(we.a,{value:d,variant:"fullWidth",onChange:function(e,t){return b(t)},textColor:"primary",indicatorColor:"primary",children:(null===h||void 0===h?void 0:h.equals(At))?[Object(o.jsx)(ke.a,{label:"SPL WUSDC",value:"spl"},"spl"),Object(o.jsx)(ke.a,{label:"SPL USDC",value:"wusdcToSplUsdc"},"wusdcToSplUsdc"),Object(o.jsx)(ke.a,{label:"ERC20 USDC",value:"swap"},"swap")]:[Object(o.jsx)(ke.a,{label:"SPL ".concat(j.ticker),value:"spl"},"spl"),Object(o.jsx)(ke.a,{label:"".concat(j.erc20Contract?"ERC20":"Native"," ").concat(j.ticker),value:"swap"},"swap")]}):null,"spl"===d?Object(o.jsx)(It,{onClose:n,publicKey:r,balanceInfo:a,onSubmitRef:p}):"wusdcToSplUsdc"===d?Object(o.jsx)(Nt,{onClose:n,publicKey:r,balanceInfo:a,swapCoinInfo:j,onSubmitRef:p,wusdcToSplUsdc:!0},d):Object(o.jsx)(Nt,{onClose:n,publicKey:r,balanceInfo:a,swapCoinInfo:j,ethAccount:m,onSubmitRef:p},d)]}),m&&("eth"===(null===j||void 0===j?void 0:j.blockchain)||(null===j||void 0===j?void 0:j.erc20Contract))?Object(o.jsx)(Mt,{ethAccount:m,publicKey:r}):null]})}function It(e){var t=e.onClose,n=e.publicKey,r=e.balanceInfo,i=e.onSubmitRef,l=!r.mint||r.mint.equals(Ot.b)?"Enter Solana Address":"Enter SPL token or Solana address",d=Object(j.d)(),b=Object(Se.b)(),p=Object(s.a)(b,2),f=p[0],m=p[1],h=Object(u.useState)(l),O=Object(s.a)(h,2),v=O[0],x=O[1],y=Object(u.useState)(),g=Object(s.a)(y,2),k=g[0],S=g[1],C=Object(u.useState)(!1),A=Object(s.a)(C,2),E=A[0],T=A[1],I=Object(u.useState)(),N=Object(s.a)(I,2),P=N[0],B=N[1],K=Bt(r,v,k),M=K.fields,D=K.destinationAddress,W=K.transferAmountString,R=K.validAmount,F=r.decimals,L=r.mint,U=L&&L.toBase58();function q(){return _.apply(this,arguments)}function _(){return(_=Object(c.a)(a.a.mark((function e(){var t;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=Math.round(parseFloat(W)*Math.pow(10,F)))&&!(t<=0)){e.next=3;break}throw new Error("Invalid amount");case 3:return e.abrupt("return",d.transferToken(n,new xe.e(D),t,r.mint,null,E));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}Object(u.useEffect)((function(){Object(c.a)(a.a.mark((function e(){var t;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(D){e.next=5;break}return x(l),S(void 0),B(void 0),e.abrupt("return");case 5:return e.prev=5,e.next=8,d.connection.getAccountInfo(new xe.e(D));case 8:t=e.sent,B(!1),t.owner.equals(Ot.a)?Object(vt.e)(t.data).mint.toBase58()===U?(S(!0),x("Address is a valid SPL token address")):(S(!1),x("Destination address mint does not match")):(S(!0),x("Destination is a Solana address")),e.next=19;break;case 13:e.prev=13,e.t0=e.catch(5),console.log("Received error validating address ".concat(e.t0)),x(l),B(!0),S(void 0);case 19:case"end":return e.stop()}}),e,null,[[5,13]])})))()}),[D,d,U]),Object(u.useEffect)((function(){return function(){T(!1)}}),[T]);var z=P?!E||m||!R:m||!R;function X(){return(X=Object(c.a)(a.a.mark((function e(){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",f(q(),{onSuccess:t}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return i.current=function(){return X.apply(this,arguments)},Object(o.jsxs)(o.Fragment,{children:[Object(o.jsx)(w.a,{children:M}),Object(o.jsxs)(ve.a,{children:[P&&Object(o.jsxs)("div",{style:{"align-items":"center",display:"flex","text-align":"left"},children:[Object(o.jsx)("b",{children:"This address has no funds. Are you sure it's correct?"}),Object(o.jsx)(xt.a,{checked:E,onChange:function(e){return T(e.target.checked)},color:"primary"})]}),Object(o.jsx)(V.a,{onClick:t,children:"Cancel"}),Object(o.jsx)(V.a,{type:"submit",color:"primary",disabled:z,children:"Send"})]})]})}function Nt(e){var t=e.onClose,n=e.publicKey,r=e.balanceInfo,i=e.swapCoinInfo,l=e.ethAccount,d=e.wusdcToSplUsdc,b=void 0!==d&&d,p=e.onSubmitRef,f=Object(j.d)(),m=Object(Se.b)(),h=Object(s.a)(m,2),O=h[0],v=h[1],x=Object(u.useState)(null),y=Object(s.a)(x,2),g=y[0],k=y[1],S=Bt(r),C=S.fields,A=S.destinationAddress,E=S.transferAmountString,T=S.setDestinationAddress,I=S.validAmount,N=r.tokenName,P=r.decimals,B=r.mint,K=b?"sol":"sol"===i.blockchain?"eth":i.blockchain,M="eth"===K,D=Object(ge.c)((function(){return $e(l)}),"ethBalance",{refreshInterval:2e3}),W=Object(s.a)(D,1)[0],R=We("eth"===K&&"fees/eth/".concat(l)+(i.erc20Contract?"/"+i.erc20Contract:""),{refreshInterval:2e3}),F=Object(s.a)(R,1)[0],L="number"===typeof W&&"number"===typeof F&&W0&&O<=j;return{fields:Object(o.jsxs)(o.Fragment,{children:[Object(o.jsx)(C.a,{label:"Recipient Address",fullWidth:!0,variant:"outlined",margin:"normal",value:i,onChange:function(e){return l(e.target.value.trim())},helperText:t,id:n||void 0===n?void 0:"outlined-error-helper-text",error:!n&&void 0!==n}),Object(o.jsx)(C.a,{label:"Amount",fullWidth:!0,variant:"outlined",margin:"normal",type:"number",InputProps:{endAdornment:Object(o.jsxs)(Xe.a,{position:"end",children:[Object(o.jsx)(V.a,{onClick:function(){return f(Kt(j,m))},children:"MAX"}),h||null]}),inputProps:{step:Math.pow(10,-m)}},value:p,onChange:function(e){return f(e.target.value.trim())},helperText:Object(o.jsxs)("span",{onClick:function(){return f(Kt(j,m))},children:["Max: ",Kt(j,m)]})})]}),destinationAddress:i,transferAmountString:p,setDestinationAddress:l,validAmount:v}}function Kt(e,t){return(e/Math.pow(10,t)).toFixed(t)}function Mt(e){var t=e.ethAccount,n=e.publicKey,r=We("swaps_from/sol/".concat(n.toBase58()),{refreshInterval:1e4}),a=Object(s.a)(r,1)[0];return a?a.map((function(e){return Object(o.jsx)(Dt,{ethAccount:t,swap:e},e.deposit.txid)})):null}function Dt(e){var t=e.ethAccount,n=e.swap,r=Object(Se.a)(),a=n.withdrawal;return Object(u.useEffect)((function(){"sent"===a.status&&"eth"===a.blockchain&&a.txid&&!a.txid.startsWith("0x")&&a.txData&&function(e,t,n){lt.apply(this,arguments)}(t,a,r)}),[a.txid,a.status]),null}var Wt=n(121);function Rt(e){var t=e.open,n=e.onClose,r=e.publicKey,a=e.balanceInfo,c=e.swapInfo,i=Ze(),l=Object(y.j)(),d=a.mint,b=a.tokenName,p=a.tokenSymbol,f=a.owner,j=Object(u.useState)(0),m=Object(s.a)(j,2),h=m[0],O=m[1],C=null;if(c){var A="SPL ".concat(null!==p&&void 0!==p?p:c.coin.ticker),E=c.coin.ticker;d?E="".concat(c.coin.erc20Contract?"ERC20":"Native"," ").concat(E):A="SOL",C=Object(o.jsxs)(we.a,{value:h,variant:"fullWidth",onChange:function(e,t){return O(t)},textColor:"primary",indicatorColor:"primary",children:[Object(o.jsx)(ke.a,{label:A}),Object(o.jsx)(ke.a,{label:E})]})}return Object(o.jsxs)(k.a,{open:t,onClose:n,children:[Object(o.jsxs)(g.a,{children:["Deposit ",null!==b&&void 0!==b?b:d.toBase58(),p?" (".concat(p,")"):null,i&&Object(o.jsx)("div",{children:Object(o.jsxs)(v.a,{color:"textSecondary",style:{fontSize:"14px"},children:["Metamask connected: ",i]})})]}),C,Object(o.jsx)(w.a,{style:{paddingTop:16},children:0===h?Object(o.jsxs)(o.Fragment,{children:[r.equals(f)?Object(o.jsx)(Oe.a,{children:"This address can only be used to receive SOL. Do not send other tokens to this address."}):Object(o.jsxs)(Oe.a,{children:["This address can only be used to receive"," ",null!==p&&void 0!==p?p:Object(S.a)(d),". Do not send SOL to this address."]}),Object(o.jsx)(R,{value:r.toBase58(),label:"Deposit Address",autoFocus:!0,qrCode:!0}),Object(o.jsx)(Oe.a,{variant:"body2",children:Object(o.jsx)(x.a,{href:"https://explorer.solana.com/account/".concat(r.toBase58())+l,target:"_blank",rel:"noopener",children:"View on Solana Explorer"})})]}):Object(o.jsx)(Ft,{balanceInfo:a,swapInfo:c,ethAccount:i})}),Object(o.jsx)(ve.a,{children:Object(o.jsx)(V.a,{onClick:n,children:"Close"})})]})}function Ft(e){var t=e.balanceInfo,n=e.swapInfo,r=e.ethAccount,a=Object(ge.c)((function(){return $e(r)}),"ethBalance",{refreshInterval:2e3}),c=Object(s.a)(a,1)[0],i=Object(ge.c)(n.coin&&function(){return function(e){return tt.apply(this,arguments)}({erc20Address:n.coin.erc20Contract,swapAddress:n.address,ethAccount:r})},"depositEthFee",{refreshInterval:2e3});if(!n)return null;var u=Array.isArray(i[0])?i[0].reduce((function(e,t){return e+t})):i[0],l="number"===typeof c&&"number"===typeof u&&cP||t<=0)){e.next=3;break}throw new Error("Invalid amount");case 3:return e.next=5,at({ethAccount:r,erc20Address:E,swapAddress:k,destination:S,amount:d,onStatusChange:function(e){return g((function(t){return Object(he.a)(Object(he.a)({},t),e)}))}});case 5:case"end":return e.stop()}}),e)})))(),{onError:function(){return m(!1)}});case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}if(!j){var M=Object(o.jsx)(V.a,{color:"primary",style:{marginLeft:8},onClick:function(){return K.apply(this,arguments)},disabled:n,children:"Convert"});return n&&(M=Object(o.jsx)(se.a,{title:"Insufficient ETH for withdrawal transaction fee",placement:"top",children:Object(o.jsx)("span",{children:M})})),Object(o.jsxs)("div",{style:{display:"flex",alignItems:"baseline"},children:[Object(o.jsx)(C.a,{label:"Amount",fullWidth:!0,variant:"outlined",margin:"normal",type:"number",InputProps:{endAdornment:Object(o.jsx)(Xe.a,{position:"end",children:T}),inputProps:{step:"any"}},value:d,onChange:function(e){return b(e.target.value.trim())},helperText:B?Object(o.jsxs)("span",{onClick:function(){return b(P.toFixed(6))},children:["Max: ",P.toFixed(6)]}):null}),M]})}return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(ft.a,{activeStep:y.step,children:[Object(o.jsx)(jt.a,{children:Object(o.jsx)(mt.a,{children:"Approve Conversion"})}),Object(o.jsx)(jt.a,{children:Object(o.jsx)(mt.a,{children:"Send Funds"})}),Object(o.jsx)(jt.a,{children:Object(o.jsx)(mt.a,{children:"Wait for Confirmations"})})]}),2===y.step?Object(o.jsx)(o.Fragment,{children:Object(o.jsxs)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},children:[Object(o.jsx)("div",{style:{marginRight:16},children:Object(o.jsx)(ht.a,{})}),Object(o.jsxs)("div",{children:[y.confirms?Object(o.jsxs)(v.a,{children:[y.confirms," / 12 Confirmations"]}):Object(o.jsx)(v.a,{children:"Transaction Pending"}),Object(o.jsx)(v.a,{variant:"body2",children:Object(o.jsx)(x.a,{href:"https://etherscan.io/tx/".concat(y.txid),target:"_blank",rel:"noopener",children:"View on Etherscan"})})]})]})}):null]})}function Ut(e){var t=e.open,n=e.onClose,r=e.publicKey,a=e.balanceInfo,c=Object(j.d)(),i=Object(Se.b)(),u=Object(s.a)(i,2),l=u[0],d=u[1],b=a.mint,p=a.tokenName;return Object(o.jsxs)(k.a,{open:t,onClose:n,onSubmit:function(){l(c.closeTokenAccount(r),{onSuccess:function(){Object(j.b)(c),n()}})},children:[Object(o.jsxs)(g.a,{children:["Delete ",null!==p&&void 0!==p?p:b.toBase58()," Address"," ",Object(S.a)(r)]}),Object(o.jsx)(w.a,{children:Object(o.jsxs)(Oe.a,{children:["Are you sure you want to delete your ",null!==p&&void 0!==p?p:b.toBase58()," ","address ",r.toBase58(),"? This will permanently disable token transfers to this address and remove it from your wallet."]})}),Object(o.jsxs)(ve.a,{children:[Object(o.jsx)(V.a,{onClick:n,children:"Cancel"}),Object(o.jsx)(V.a,{type:"submit",color:"secondary",disabled:d,children:"Delete"})]})]})}function qt(e){var t=e.open,n=e.oldName,r=e.onClose,a=e.onEdit,c=Object(u.useState)(n),i=Object(s.a)(c,2),l=i[0],d=i[1];return Object(o.jsxs)(k.a,{open:t,onEnter:function(){return d(n)},onClose:r,onSubmit:function(){return a(l.trim())},fullWidth:!0,children:[Object(o.jsx)(g.a,{children:"Edit Account"}),Object(o.jsx)(w.a,{children:Object(o.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:Object(o.jsx)(C.a,{label:"Name",fullWidth:!0,variant:"outlined",margin:"normal",value:l,onChange:function(e){return d(e.target.value)}})})}),Object(o.jsxs)(ve.a,{children:[Object(o.jsx)(V.a,{onClick:r,children:"Close"}),Object(o.jsx)(V.a,{type:"submit",color:"primary",children:"Save"})]})]})}function _t(e){var t=e.open,n=e.onClose,r=Object(j.f)(),i=Object(s.a)(r,1)[0],l=Object(y.g)(),d=Object(j.d)(),b=Object(I.b)().enqueueSnackbar,p=Object(u.useState)(!1),f=Object(s.a)(p,2),h=f[0],O=f[1],v=Object(u.useState)(""),k=Object(s.a)(v,2),A=k[0],E=k[1],T=function(){var e=Object(c.a)(a.a.mark((function e(){var t,n,r,c,o,s,u,p,f,j,h=arguments;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=h.length>0&&void 0!==h[0]?h[0]:30,e.prev=1,0!==t){e.next=5;break}return b("Unable to complete merge. Please try again.",{variant:"error"}),e.abrupt("return");case 5:return e.next=7,Object(y.c)(l,i);case 7:n=e.sent.filter((function(e){return null!==e&&e.account.owner.equals(gt.TokenInstructions.TOKEN_PROGRAM_ID)})).map((function(e){var t=e.publicKey,n=e.account;return{publicKey:t,account:Object(vt.e)(n.data),owner:n.owner}})),r={},n.forEach((function(e){var t=e.account.mint.toString();r[t]?r[t].push(e):r[t]=[e]})),c=Object.keys(r),o=0;case 12:if(!(o0)){e.next=26;break}return u=s[0].account.mint,e.next=18,Object(m.e)(d.publicKey,u);case 18:if(p=e.sent,1===s.length&&p.equals(s[0].publicKey)){e.next=26;break}return f=Object(ye.b)(u,l._rpcEndpoint),j=f.symbol?f.symbol:u.toString(),console.log("Merging ".concat(j)),b("Merging ".concat(j),{variant:"info"}),e.next=26,zt(p,s,d,l,b);case 26:o+=1,e.next=12;break;case 29:return e.next=31,Object(S.c)(5e3);case 31:return e.next=33,Gt(d,i);case 33:N(),e.next=45;break;case 36:return e.prev=36,e.t0=e.catch(1),console.error("There was a problem merging accounts",e.t0),b("Could not confirm transaction. Please wait.",{variant:"info"}),e.next=42,Object(S.c)(1e4);case 42:return b("Retrying merge",{variant:"info"}),e.next=45,T(t-1);case 45:case"end":return e.stop()}}),e,null,[[1,36]])})));return function(){return e.apply(this,arguments)}}(),N=function(){E(""),n()},P="merge"!==A.toLowerCase();return Object(o.jsx)(D.a,{disableBackdropClick:h,open:t,onClose:n,children:h?Object(o.jsxs)(w.a,{children:[Object(o.jsx)(Oe.a,{style:{marginBottom:0,textAlign:"center"},children:"Merging Accounts"}),Object(o.jsx)("div",{style:{display:"flex",justifyContent:"center",padding:"24px"},children:Object(o.jsx)(ht.a,{})})]}):Object(o.jsxs)(o.Fragment,{children:[Object(o.jsx)(g.a,{children:"Are you sure you want to merge accounts?"}),Object(o.jsxs)(w.a,{children:[Object(o.jsxs)(Oe.a,{children:[Object(o.jsx)("b",{children:"WARNING"}),": This action may break apps that depend on your existing accounts."]}),Object(o.jsxs)(Oe.a,{children:["Merging sends all tokens to"," ",Object(o.jsx)(x.a,{href:"https://spl.solana.com/associated-token-account",target:"_blank",rel:"noopener",children:"associated token accounts"})," ",Object(o.jsx)(me.a,{style:{marginBottom:"-7px"}}),","," ","deduplicating and closing any accounts that share the same mint. If associated token accounts do not exist, then they will be created."]}),Object(o.jsx)(Oe.a,{children:"If merging fails during a period of high network load, you will not have lost your funds. Just recontinue the merge from where you left off. If you have a lot of accounts, merging might take a while."}),Object(o.jsx)(C.a,{label:'Please type "merge" to confirm',fullWidth:!0,variant:"outlined",margin:"normal",value:A,onChange:function(e){return E(e.target.value.trim())}})]}),Object(o.jsxs)(ve.a,{children:[Object(o.jsx)(V.a,{onClick:N,color:"primary",children:"Cancel"}),Object(o.jsx)(V.a,{disabled:P,onClick:function(){O(!0),T().then((function(){b("Account merge complete",{variant:"success"}),O(!1)})).catch((function(e){b("There was a problem merging your accounts: ".concat(e.toString()),{variant:"error"}),O(!1)}))},color:"secondary",autoFocus:!0,children:"Merge"})]})]})})}function zt(e,t,n,r,a){return Xt.apply(this,arguments)}function Xt(){return(Xt=Object(c.a)(a.a.mark((function e(t,n,r,o,i){var u,l,d;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==n.length){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,Object(c.a)(a.a.mark((function e(){var c,i,u,l;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(c=n.map((function(e){return e.publicKey})).filter((function(e){return e.equals(t)})).pop())){e.next=3;break}return e.abrupt("return",c);case 3:return e.next=5,o.getAccountInfo(t);case 5:if(null===e.sent){e.next=8;break}return e.abrupt("return",t);case 8:return e.next=10,Object(m.d)({connection:o,wallet:r,splTokenMintAddress:n[0].account.mint});case 10:return i=e.sent,u=Object(s.a)(i,1),l=u[0],e.abrupt("return",l);case 14:case"end":return e.stop()}}),e)})))();case 4:u=e.sent,l=0;case 6:if(!(l0)){e.next=14;break}return e.next=12,r.transferAndClose(d.publicKey,u,d.account.amount);case 12:e.next=16;break;case 14:return e.next=16,r.closeTokenAccount(d.publicKey,!0);case 16:l+=1,e.next=6;break;case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Gt(e,t){return Vt.apply(this,arguments)}function Vt(){return(Vt=Object(c.a)(a.a.mark((function e(t,n){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(j.b)(t);case 2:n.map((function(e){return Object(y.d)(t.connection,e,!0)}));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Ht=new Intl.NumberFormat(void 0,{minimumFractionDigits:4,maximumFractionDigits:4,useGrouping:!0}),Jt=0,Yt=1,Qt=2,Zt={},$t={},en=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"});function tn(e){return e.filter((function(e){return void 0!==Zt[e.toString()]})).length===e.length}function nn(){var e=Object(j.d)(),t=Object(j.f)(),n=Object(s.a)(t,2),r=n[0],a=n[1],c=Object(u.useState)(!1),b=Object(s.a)(c,2),p=b[0],m=b[1],O=Object(u.useState)(!1),x=Object(s.a)(O,2),g=x[0],w=x[1],k=Object(u.useState)(!1),S=Object(s.a)(k,2),C=S[0],A=S[1],E=Object(u.useState)(Jt),T=Object(s.a)(E,2),I=T[0],N=T[1],P=Object(j.g)(),B=P.accounts,K=P.setAccountName,D=Object(u.useState)(!1),W=Object(s.a)(D,2)[1],R=B.find((function(e){return e.isSelected})),F=a&&tn(r),L=r;F&&I!==Jt&&(L=Object(i.a)(r)).sort((function(e,t){var n=Zt[e.toString()],r=Zt[t.toString()];return e=void 0===n||null===n?-1:n,t=void 0===r||null===r?-1:r,I===Qt?et?1:0:te?1:0}));var U=r.filter((function(e){return Zt[e.toString()]})).map((function(e){return Zt[e.toString()]})).reduce((function(e,t){return e+t}),0),q=Object(u.useCallback)((function(e,t){Zt[e.toString()]!==t&&(Zt[e.toString()]=t,tn(r)&&W((function(e){return!e})))}),[r]),_=Object(u.useMemo)((function(){return L.map((function(e){return l.a.memo((function(t){return Object(o.jsx)(an,{publicKey:e,setUsdValue:q},e.toString())}))}))}),[L,q]);return Object(o.jsxs)(f.a,{children:[Object(o.jsx)(ee.a,{position:"static",color:"default",elevation:1,children:Object(o.jsxs)(te.a,{children:[Object(o.jsxs)(v.a,{variant:"h6",style:{flexGrow:1},component:"h2",children:[R&&R.name," Balances"," ",F&&Object(o.jsxs)(o.Fragment,{children:["(",en.format(U.toFixed(2)),")"]})]}),R&&"Main account"!==R.name&&"Hardware wallet"!==R.name&&Object(o.jsx)(se.a,{title:"Edit Account Name",arrow:!0,children:Object(o.jsx)(M.a,{onClick:function(){return w(!0)},children:Object(o.jsx)(le.a,{})})}),Object(o.jsx)(se.a,{title:"Merge Accounts",arrow:!0,children:Object(o.jsx)(M.a,{onClick:function(){return A(!0)},children:Object(o.jsx)(be.a,{})})}),Object(o.jsx)(se.a,{title:"Add Token",arrow:!0,children:Object(o.jsx)(M.a,{onClick:function(){return m(!0)},children:Object(o.jsx)(re.a,{})})}),Object(o.jsx)(se.a,{title:"Sort Accounts",arrow:!0,children:Object(o.jsx)(M.a,{onClick:function(){switch(I){case Jt:return void N(Yt);case Yt:return void N(Qt);case Qt:return void N(Jt);default:console.error("invalid sort type",I)}},children:Object(o.jsx)(fe.a,{})})}),Object(o.jsx)(se.a,{title:"Refresh",arrow:!0,children:Object(o.jsx)(M.a,{onClick:function(){Object(j.b)(e),r.map((function(t){return Object(y.d)(e.connection,t,!0)}))},style:{marginRight:-12},children:Object(o.jsx)(ce.a,{})})})]})}),Object(o.jsxs)(d.a,{disablePadding:!0,children:[_.map((function(e){return Object(o.jsx)(e,{})})),a?null:Object(o.jsx)(h.a,{})]}),Object(o.jsx)(Ue,{open:p,onClose:function(){return m(!1)}}),Object(o.jsx)(qt,{open:g,onClose:function(){return w(!1)},oldName:R?R.name:"",onEdit:function(e){K(R.selector,e),w(!1)}}),Object(o.jsx)(_t,{open:C,onClose:function(){return A(!1)}})]})}var rn=Object(T.a)((function(e){return{address:{textOverflow:"ellipsis",overflowX:"hidden"},itemDetails:{marginLeft:e.spacing(3),marginRight:e.spacing(3),marginBottom:e.spacing(2)},buttonContainer:{display:"flex",justifyContent:"space-evenly",marginTop:e.spacing(1),marginBottom:e.spacing(1)}}}));function an(e){var t=e.publicKey,n=e.expandable,r=e.setUsdValue,a=Object(j.d)(),c=Object(j.c)(t),i=rn(),l=Object(y.g)(),d=Object(u.useState)(!1),f=Object(s.a)(d,2),x=f[0],g=f[1],w=Object(u.useState)(!1),k=Object(s.a)(w,2)[1],C=Object(u.useState)(void 0),A=Object(s.a)(C,2),E=A[0],T=A[1];if(Object(u.useEffect)((function(){if(c)if(c.tokenSymbol){var e=c.tokenSymbol.toUpperCase();if("USDT"===e||"USDC"===e)T(1);else if(wt[e]){var t=wt[e];kt.getPrice(l,t.name).then((function(e){T(e)})).catch((function(e){console.error(e),T(null)}))}else T(null)}else T(null)}),[E,c,l]),n=void 0===n||n,!c)return Object(o.jsx)(h.a,{delay:0});var I=c.amount,N=c.decimals,P=c.mint,B=c.tokenName,K=c.tokenSymbol;a&&a.publicKey&&P&&(void 0!==$t[a.publicKey.toString()]&&void 0!==$t[a.publicKey.toString()][P.toString()]||Object(m.e)(a.publicKey,P).then((function(e){var n=Object.assign({},$t[a.publicKey.toString()]);n[P.toString()]=e,$t[a.publicKey.toString()]=n,e.equals(t)&&k((function(e){return!e}))})));var M=!!(a&&a.publicKey&&P&&$t[a.publicKey.toString()])&&$t[a.publicKey.toString()][P.toString()],D=Object(o.jsxs)("div",{style:{display:"flex",height:"20px",overflow:"hidden"},children:[M&&Object(o.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column",marginRight:"5px"},children:Object(o.jsx)(me.a,{style:{width:"20px"}})}),Object(o.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column"},children:t.toBase58()})]}),W=void 0===E?void 0:null===E?null:(I/Math.pow(10,N)*E).toFixed(2);return r&&void 0!==W&&r(t,null===W?null:parseFloat(W)),Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(b.a,{button:!0,onClick:function(){return n&&g((function(e){return!e}))},children:[Object(o.jsx)(Ce.a,{children:Object(o.jsx)(Re,{mint:P,tokenName:B,size:28})}),Object(o.jsxs)("div",{style:{display:"flex",flex:1},children:[Object(o.jsx)(p.a,{primary:Object(o.jsxs)(o.Fragment,{children:[Ht.format(I/Math.pow(10,N))," ",null!==B&&void 0!==B?B:Object(S.a)(P),K?" (".concat(K,")"):null]}),secondary:D,secondaryTypographyProps:{className:i.address}}),Object(o.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column"},children:E&&Object(o.jsx)(v.a,{color:"textSecondary",children:en.format(W)})})]}),n?x?Object(o.jsx)(z.a,{}):Object(o.jsx)(G.a,{}):Object(o.jsx)(o.Fragment,{})]}),Object(o.jsx)(O.a,{in:x,timeout:"auto",unmountOnExit:!0,children:Object(o.jsx)(cn,{publicKey:t,serumMarkets:wt,balanceInfo:c})})]})}function cn(e){var t,n=e.publicKey,r=e.serumMarkets,i=e.balanceInfo,l=Object(y.j)(),d=rn(),b=Object(u.useState)(!1),p=Object(s.a)(b,2),f=p[0],m=p[1],O=Object(u.useState)(!1),g=Object(s.a)(O,2),w=g[0],k=g[1],S=Object(u.useState)(!1),C=Object(s.a)(S,2),A=C[0],E=C[1],T=Object(u.useState)(!1),I=Object(s.a)(T,2),N=I[0],P=I[1],B=Object(u.useState)(!1),K=Object(s.a)(B,2),M=K[0],D=K[1],W=Object(j.d)(),R=Object(y.i)(),F=Object(ge.c)(Object(c.a)(a.a.mark((function e(){var t;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(R){e.next=2;break}return e.abrupt("return",null);case 2:return e.next=4,Be("POST","swap_to",{blockchain:"sol",coin:null===(t=i.mint)||void 0===t?void 0:t.toBase58(),address:n.toBase58()},{ignoreUserErrors:!0});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)}))),["swapInfo",R,null===(t=i.mint)||void 0===t?void 0:t.toBase58(),n.toBase58()]),L=Object(s.a)(F,1)[0];if(!i)return Object(o.jsx)(h.a,{delay:0});var U=i.mint,_=i.tokenName,z=i.tokenSymbol,X=i.owner,G=i.amount,H=null===U&&"SOL"===_&&"SOL"===z,Y=z&&r[z.toUpperCase()]?r[z.toUpperCase()].publicKey:void 0;return Object(o.jsxs)(o.Fragment,{children:[W.allowsExport&&Object(o.jsx)(_e.b,{onClose:function(){return P(!1)},open:N}),Object(o.jsxs)("div",{className:d.itemDetails,children:[Object(o.jsxs)("div",{className:d.buttonContainer,children:[!n.equals(X)&&Ae?Object(o.jsx)(V.a,{variant:"outlined",color:"default",startIcon:Object(o.jsx)(ie.a,{}),onClick:function(){return E(!0)},children:"Token Info"}):null,Object(o.jsx)(V.a,{variant:"outlined",color:"primary",startIcon:Object(o.jsx)(Q.a,{}),onClick:function(){return k(!0)},children:"Receive"}),Object(o.jsx)(V.a,{variant:"outlined",color:"primary",startIcon:Object(o.jsx)(J.a,{}),onClick:function(){return m(!0)},children:"Send"}),U&&0===G?Object(o.jsx)(V.a,{variant:"outlined",color:"secondary",size:"small",startIcon:Object(o.jsx)($.a,{}),onClick:function(){return D(!0)},children:"Delete"}):null]}),Object(o.jsxs)(v.a,{variant:"body2",className:d.address,children:["Deposit Address: ",n.toBase58()]}),Object(o.jsxs)(v.a,{variant:"body2",children:["Token Name: ",null!==_&&void 0!==_?_:"Unknown"]}),Object(o.jsxs)(v.a,{variant:"body2",children:["Token Symbol: ",null!==z&&void 0!==z?z:"Unknown"]}),U?Object(o.jsxs)(v.a,{variant:"body2",className:d.address,children:["Token Address: ",U.toBase58()]}):null,Object(o.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(o.jsxs)("div",{children:[Object(o.jsx)(v.a,{variant:"body2",children:Object(o.jsx)(x.a,{href:"https://explorer.solana.com/account/".concat(n.toBase58())+l,target:"_blank",rel:"noopener",children:"View on Solana"})}),Y&&Object(o.jsx)(v.a,{variant:"body2",children:Object(o.jsx)(x.a,{href:"https://dex.projectserum.com/#/market/".concat(Y),target:"_blank",rel:"noopener",children:"View on Serum"})}),L&&L.coin.erc20Contract&&Object(o.jsx)(v.a,{variant:"body2",children:Object(o.jsx)(x.a,{href:"https://etherscan.io/token/".concat(L.coin.erc20Contract)+l,target:"_blank",rel:"noopener",children:"View on Ethereum"})})]}),H&&W.allowsExport&&Object(o.jsx)("div",{children:Object(o.jsx)(v.a,{variant:"body2",children:Object(o.jsx)(x.a,{href:"#",onClick:function(e){return P(!0)},children:"Export"})})})]})]}),Object(o.jsx)(Tt,{open:f,onClose:function(){return m(!1)},balanceInfo:i,publicKey:n}),Object(o.jsx)(Rt,{open:w,onClose:function(){return k(!1)},balanceInfo:i,publicKey:n,swapInfo:L}),Object(o.jsx)(q,{open:A,onClose:function(){return E(!1)},balanceInfo:i,publicKey:n}),Object(o.jsx)(Ut,{open:M,onClose:function(){return D(!1)},balanceInfo:i,publicKey:n})]})}},219:function(e){e.exports=JSON.parse('[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]')},220:function(e){e.exports=JSON.parse('[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"signature","type":"bytes"}],"name":"NonceUsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"string","name":"recipient","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"string","name":"recipient","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapErc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"recipient","type":"string"}],"name":"swapEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawErc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawErc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"}]')},24:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return v})),n.d(t,"a",(function(){return x})),n.d(t,"g",(function(){return y})),n.d(t,"h",(function(){return g})),n.d(t,"i",(function(){return w})),n.d(t,"j",(function(){return k})),n.d(t,"f",(function(){return S})),n.d(t,"d",(function(){return C})),n.d(t,"e",(function(){return A})),n.d(t,"c",(function(){return E}));var r=n(147),a=n(6),c=n.n(a),o=n(15),i=n(1),s=n(9),u=n(0),l=n.n(u),d=n(17),b=n(121),p=n(2),f=n(10),j=n.n(f),m=n(33),h=n(50),O=l.a.createContext(null),v="https://solana-api.projectserum.com";function x(e){var t=e.children,n=Object(m.f)("connectionEndpoint",v),r=Object(s.a)(n,2),a=r[0],c=r[1],o=Object(u.useMemo)((function(){return new d.b(a,"recent")}),[a]);return Object(i.jsx)(O.Provider,{value:{endpoint:a,setEndpoint:c,connection:o},children:t})}function y(){var e=Object(u.useContext)(O);if(!e)throw new Error("Missing connection context");return e.connection}function g(){var e=Object(u.useContext)(O);if(!e)throw new Error("Missing connection context");return{endpoint:e.endpoint,setEndpoint:e.setEndpoint}}function w(){var e=Object(u.useContext)(O);if(!e)throw new Error("Missing connection context");return e.endpoint===v}function k(){var e=Object(u.useContext)(O);if(!e)throw new Error("Missing connection context");var t=e.endpoint;return t===Object(d.k)("devnet")?"?cluster=devnet":t===Object(d.k)("testnet")?"?cluster=testnet":""}function S(e){var t,n=y(),r=Object(b.a)(n,null===e||void 0===e?void 0:e.toBase58()),a=Object(h.c)(Object(o.a)(c.a.mark((function t(){return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e?n.getAccountInfo(e):null);case 1:case"end":return t.stop()}}),t)}))),r),i=Object(s.a)(a,2),l=i[0],d=i[1];return Object(u.useEffect)((function(){if(e){var t=null,a=n.onAccountChange(e,(function(e){t&&t.data.equals(e.data)&&t.lamports===e.lamports||(t=e,Object(h.b)(r,e))}));return function(){n.removeAccountChangeListener(a)}}}),[n,null!==(t=null===e||void 0===e?void 0:e.toBase58())&&void 0!==t?t:"",r]),[Object(m.g)(l,(function(e,t){return!!e&&!!t&&e.data.equals(t.data)&&e.lamports===t.lamports})),d]}function C(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=Object(b.a)(e,t.toBase58());Object(h.a)(r,n)}function A(e,t,n){var r=Object(b.a)(e,t.toBase58());Object(h.b)(r,n,{initializeOnly:!0})}function E(e,t){return T.apply(this,arguments)}function T(){return(T=Object(o.a)(c.a.mark((function t(n,a){var o,i,s,u,l,b,p,f,m,h,O,v;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=[a.map((function(e){return e.toBase58()})),{commitment:"recent"}],t.next=3,n._rpcRequest("getMultipleAccounts",o);case 3:if(i=t.sent,!(s=P(i)).error){t.next=7;break}throw new Error("failed to get info about accounts "+a.map((function(e){return e.toBase58()})).join(", ")+": "+s.error.message);case 7:j()("undefined"!==typeof s.result),u=[],l=Object(r.a)(s.result.value);try{for(l.s();!(b=l.n()).done;)p=b.value,f=null,s.result.value&&p&&(m=p.executable,h=p.owner,O=p.lamports,v=p.data,j()("base64"===v[1]),f={executable:m,owner:new d.e(h),lamports:O,data:e.from(v[0],"base64")}),u.push(f)}catch(c){l.e(c)}finally{l.f()}return t.abrupt("return",u.map((function(e,t){return null===e?null:{publicKey:a[t],account:e}})));case 12:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var I,N=Object(p.a)({executable:"boolean",owner:"string",lamports:"number",data:"any",rentEpoch:"number?"}),P=(I=p.a.array([p.a.union(["null",N])]),function(e){var t=p.a.literal("2.0");return p.a.union([Object(p.a)({jsonrpc:t,id:"string",error:"any"}),Object(p.a)({jsonrpc:t,id:"string",error:"null?",result:e})])}({context:Object(p.a)({slot:"number"}),value:I}))}).call(this,n(18).Buffer)},26:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return P})),n.d(t,"d",(function(){return B})),n.d(t,"f",(function(){return K})),n.d(t,"h",(function(){return M})),n.d(t,"b",(function(){return D})),n.d(t,"e",(function(){return W})),n.d(t,"c",(function(){return R})),n.d(t,"g",(function(){return F}));var r=n(1),a=n(49),c=n(34),o=n(9),i=n(6),s=n.n(i),u=n(15),l=n(19),d=n(20),b=n(0),p=n.n(b),f=n(22),j=n(17),m=n(42),h=n.n(m),O=n(24),v=n(69),x=n(45),y=n(55),g=n(33),w=n(79),k=n(50),S=n(63),C=n(389),A=n(89),E=n(78),T={walletIndex:0,importedPubkey:void 0,ledger:!1},I=function(){function e(t,n,r){var a=this;Object(l.a)(this,e),this.getTokenAccountInfo=Object(u.a)(s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(v.f)(a.connection,a.publicKey);case 2:return t=e.sent,e.abrupt("return",t.map((function(e){var t=e.publicKey,n=e.accountInfo;return Object(O.e)(a.connection,t,n),{publicKey:t,parsed:Object(y.e)(n.data)}})).sort((function(e,t){return e.parsed.mint.toBase58().localeCompare(t.parsed.mint.toBase58())})));case 4:case"end":return e.stop()}}),e)}))),this.createTokenAccount=function(){var e=Object(u.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(v.c)({connection:a.connection,payer:a,mintPublicKey:t,newAccount:new j.a});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.createAssociatedTokenAccount=function(){var e=Object(u.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(v.d)({connection:a.connection,wallet:a,splTokenMintAddress:t});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.tokenAccountCost=Object(u.a)(s.a.mark((function e(){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.connection.getMinimumBalanceForRentExemption(y.a.span));case 1:case"end":return e.stop()}}),e)}))),this.transferToken=function(){var e=Object(u.a)(s.a.mark((function e(t,n,r,c){var o,i,u=arguments;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=u.length>4&&void 0!==u[4]?u[4]:null,i=u.length>5&&void 0!==u[5]&&u[5],!t.equals(a.publicKey)){e.next=6;break}if(!o){e.next=5;break}throw new Error("Memo not implemented");case 5:return e.abrupt("return",a.transferSol(n,r));case 6:return e.next=8,Object(v.i)({connection:a.connection,owner:a,sourcePublicKey:t,destinationPublicKey:n,amount:r,memo:o,mint:c,overrideDestinationCheck:i});case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}}),e)})));return function(t,n,r,a){return e.apply(this,arguments)}}(),this.transferSol=function(){var e=Object(u.a)(s.a.mark((function e(t,n){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Object(v.g)(a.connection,a,t,n));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),this.closeTokenAccount=function(){var e=Object(u.a)(s.a.mark((function e(t){var n,r=arguments;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.length>1&&void 0!==r[1]&&r[1],e.next=3,Object(v.a)({connection:a.connection,owner:a,sourcePublicKey:t,skipPreflight:n});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.transferAndClose=function(){var e=Object(u.a)(s.a.mark((function e(t,n,r){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(v.h)({connection:a.connection,owner:a,sourcePublicKey:t,destinationPublicKey:n,amount:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}(),this.signTransaction=function(){var e=Object(u.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.provider.signTransaction(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.createSignature=function(){var e=Object(u.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.provider.createSignature(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.connection=t,this.type=n,this.provider=C.a.getProvider(n,r)}return Object(d.a)(e,[{key:"publicKey",get:function(){return this.provider.publicKey}},{key:"allowsExport",get:function(){return"local"===this.type}}]),e}();I.create=function(){var e=Object(u.a)(s.a.mark((function e(t,n,r){var a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=new I(t,n,r),e.next=3,a.provider.init();case 3:return e.abrupt("return",a);case 4:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}();var N=p.a.createContext(null);function P(t){var n=t.children;Object(g.e)(S.h,"change");var i=Object(S.c)(),l=i.mnemonic,d=i.seed,p=i.importsEncryptionKey,m=i.derivationPath,v=Object(E.b)().enqueueSnackbar,x=Object(O.g)(),y=Object(b.useState)(),w=Object(o.a)(y,2),k=w[0],C=w[1],P=Object(g.f)("walletPrivateKeyImports",{}),B=Object(o.a)(P,2),K=B[0],M=B[1],D=Object(g.f)("walletSelector",T),W=Object(o.a)(D,2),R=W[0],F=W[1],L=Object(b.useState)(R.ledger?R.importedPubkey:void 0),U=Object(o.a)(L,2),q=U[0],_=U[1],z=Object(g.f)("walletCount",1),X=Object(o.a)(z,2),G=X[0],V=X[1];Object(b.useEffect)((function(){Object(u.a)(s.a.mark((function t(){var n,r,a,c;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(d){t.next=2;break}return t.abrupt("return",null);case 2:if(!R.ledger){t.next=19;break}return t.prev=3,r=function(){F(T),_(void 0)},t.next=7,I.create(x,"ledger",{onDisconnect:r});case 7:n=t.sent,t.next=19;break;case 10:return t.prev=10,t.t0=t.catch(3),console.log("received error using ledger wallet: ".concat(t.t0)),a="Received error unlocking ledger",t.t0.statusCode&&(a+=": ".concat(t.t0.statusCode)),v(a,{variant:"error"}),F(T),_(void 0),t.abrupt("return");case 19:if(n){t.next=24;break}return c=void 0!==R.walletIndex?Object(A.c)(e.from(d,"hex"),R.walletIndex,m):new j.a(function(){var e=K[R.importedPubkey],t=e.nonce,n=e.ciphertext;return h.a.secretbox.open(f.decode(n),f.decode(t),p)}()),t.next=23,I.create(x,"local",{account:c});case 23:n=t.sent;case 24:C(n);case 25:case"end":return t.stop()}}),t,null,[[3,10]])})))()}),[x,d,R,K,p,F,v,m]);var H=function(){return JSON.stringify(Object(a.a)(Array(G).keys()).map((function(e){return localStorage.getItem("name".concat(e))})))},J=Object(b.useState)(H()),Y=Object(o.a)(J,2),Q=Y[0],Z=Y[1];var $=Object(b.useMemo)((function(){if(!d)return[];var t=e.from(d,"hex"),n=Object(a.a)(Array(G).keys()).map((function(e){var n=Object(A.c)(t,e,m).publicKey,r=localStorage.getItem("name".concat(e));return{selector:{walletIndex:e,importedPubkey:void 0,ledger:!1},isSelected:R.walletIndex===e,address:n,name:0===e?"Main account":r||"Account ".concat(e)}})),r=Object.keys(K).map((function(e){var t=K[e].name;return{selector:{walletIndex:void 0,importedPubkey:e,ledger:!1},address:new j.e(f.decode(e)),name:"".concat(t," (imported)"),isSelected:R.importedPubkey===e}}));return q&&n.push({selector:{walletIndex:void 0,importedPubkey:q,ledger:!0},address:new j.e(q),name:"Hardware wallet",isSelected:R.ledger}),n.concat(r)}),[d,G,R,K,Q,q]);return Object(r.jsx)(N.Provider,{value:{wallet:k,seed:d,mnemonic:l,importsEncryptionKey:p,walletSelector:R,setWalletSelector:F,privateKeyImports:K,setPrivateKeyImports:M,accounts:$,addAccount:function(e){var t=e.name,n=e.importedAccount;if(e.ledger)_(n);else if(void 0===n)t&&localStorage.setItem("name".concat(G),t),V(G+1);else{var r=h.a.randomBytes(h.a.secretbox.nonceLength),a=n.secretKey,o=h.a.secretbox(a,r,p),i=Object(c.a)({},K);i[n.publicKey.toString()]={name:t,ciphertext:f.encode(o),nonce:f.encode(r)},M(i)}},setAccountName:function(e,t){if(e.importedPubkey&&!e.ledger){var n=Object(c.a)({},K);n[e.importedPubkey.toString()].name=t,M(n)}else localStorage.setItem("name".concat(e.walletIndex),t),Z(H())},derivationPath:m},children:n})}function B(){return Object(b.useContext)(N).wallet}function K(){var e=B(),t=Object(k.c)(e.getTokenAccountInfo,e.getTokenAccountInfo),n=Object(o.a)(t,2),r=n[0],c=n[1],i=[e.publicKey].concat(Object(a.a)(r?r.map((function(e){return e.publicKey})):[]));return[i=Object(g.g)(i,(function(e,t){return e.length===t.length&&e.every((function(e,n){return e.equals(t[n])}))})),c]}function M(){var e=B();return Object(k.c)(e.getTokenAccountInfo,e.getTokenAccountInfo)}function D(e){Object(k.a)(e.getTokenAccountInfo)}function W(e){var t=M(),n=Object(o.a)(t,1)[0];return Object(b.useMemo)((function(){var t;return e?null===n||void 0===n||null===(t=n.find((function(t){var n,r;return null===(n=t.parsed)||void 0===n||null===(r=n.mint)||void 0===r?void 0:r.equals(e)})))||void 0===t?void 0:t.publicKey.toBase58():null}),[n,e])}function R(e){var t,n=Object(O.f)(e),r=Object(o.a)(n,2),a=r[0],c=r[1],i=(null===a||void 0===a?void 0:a.owner.equals(x.a))?Object(y.e)(a.data):{},s=i.mint,u=i.owner,l=i.amount,d=Object(O.f)(s),b=Object(o.a)(d,2),p=b[0],f=b[1],j=Object(w.c)(s),m=j.name,h=j.symbol;if(!c)return null;if(s&&s.equals(x.b))return{amount:l,decimals:9,mint:s,owner:u,tokenName:"Wrapped SOL",tokenSymbol:"SOL",valid:!0};if(s&&f)try{return{amount:l,decimals:Object(y.d)(p.data).decimals,mint:s,owner:u,tokenName:m,tokenSymbol:h,valid:!0}}catch(v){return{amount:l,decimals:0,mint:s,owner:u,tokenName:"Invalid",tokenSymbol:"INVALID",valid:!1}}return s?null:{amount:null!==(t=null===a||void 0===a?void 0:a.lamports)&&void 0!==t?t:0,decimals:9,mint:null,owner:e,tokenName:"SOL",tokenSymbol:"SOL",valid:!0}}function F(){var e=Object(b.useContext)(N),t=e.accounts,n=e.addAccount;return{accounts:t,setWalletSelector:e.setWalletSelector,addAccount:n,setAccountName:e.setAccountName}}}).call(this,n(18).Buffer)},33:function(e,t,n){"use strict";n.d(t,"c",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"d",(function(){return d})),n.d(t,"e",(function(){return b})),n.d(t,"g",(function(){return p})),n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return j}));var r=n(6),a=n.n(r),c=n(9),o=n(15),i=n(0);function s(e){return u.apply(this,arguments)}function u(){return(u=Object(o.a)(a.a.mark((function e(t){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e){return setTimeout(e,t)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function l(e,t){var n=Object(i.useState)((function(){var n=localStorage.getItem(e);return n?JSON.parse(n):t})),r=Object(c.a)(n,2),a=r[0],o=r[1],s=Object(i.useCallback)((function(t){a!==t&&(o(t),null===t?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t)))}),[a,e]);return[a,s]}function d(e,t){Object(i.useEffect)((function(){var n=setTimeout(e,t);return function(){return clearTimeout(n)}}))}function b(e,t){var n=Object(i.useState)(0),r=Object(c.a)(n,2)[1];Object(i.useEffect)((function(){var n=function(){return r((function(e){return e+1}))};return e.on(t,n),function(){return e.removeListener(t,n)}}),[e,t])}function p(e,t){var n=Object(i.useRef)(e);return n.current===e||t(n.current,e)||(n.current=e),n.current}function f(e){var t=e.toBase58();return t.slice(0,4)+"\u2026"+t.slice(t.length-4)}function j(e,t){return m.apply(this,arguments)}function m(){return(m=Object(o.a)(a.a.mark((function e(t,n){var r,c;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=new Date,e.next=3,t.confirmTransaction(n,"recent");case 3:if(!(c=e.sent).value.err){e.next=6;break}throw new Error("Error confirming transaction: "+JSON.stringify(c.value.err));case 6:return console.log("Transaction confirmed after %sms",(new Date).getTime()-r.getTime()),e.abrupt("return",c.value);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}},389:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(19),a=n(20),c=n(89),o=n(200),i=function(){function e(){Object(r.a)(this,e)}return Object(a.a)(e,null,[{key:"getProvider",value:function(e,t){return"local"===e?new c.b(t):"ledger"===e?new o.a(t):void 0}}]),e}()},414:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return A}));var r=n(49),a=n(1),c=n(9),o=n(0),i=n(63),s=n(89),u=n(24),l=n(786),d=n(88),b=n(216),p=n(176),f=n(177),j=n(52),m=n(107),h=n(425),O=n(782),v=n(221),x=n(178),y=n(91),g=n(788),w=n(276),k=n(58),S=n(424),C=n(192);function A(){var e=Object(o.useState)(!1),t=Object(c.a)(e,2),n=t[0],r=t[1];return Object(a.jsx)(l.a,{maxWidth:"sm",children:n?Object(a.jsx)(P,{goBack:function(){return r(!1)}}):Object(a.jsxs)(a.Fragment,{children:[Object(i.d)()?Object(a.jsx)(N,{}):Object(a.jsx)(E,{}),Object(a.jsx)("br",{}),Object(a.jsx)(S.a,{style:{cursor:"pointer"},onClick:function(){return r(!0)},children:"Restore existing wallet"})]})})}function E(){var e=Object(o.useState)(null),t=Object(c.a)(e,2),n=t[0],r=t[1];Object(o.useEffect)((function(){Object(i.b)().then(r)}),[]);var u=Object(o.useState)(!1),l=Object(c.a)(u,2),d=l[0],b=l[1],p=Object(k.a)();return d?Object(a.jsx)(I,{mnemonicAndSeed:n,goBack:function(){return b(!1)},onSubmit:function(e){var t=n.mnemonic,r=n.seed;p(Object(i.g)(t,r,e,s.a.bip44Change),{progressMessage:"Creating wallet...",successMessage:"Wallet created"})}}):Object(a.jsx)(T,{mnemonicAndSeed:n,goForward:function(){return b(!0)}})}function T(e){var t=e.mnemonicAndSeed,n=e.goForward,r=Object(o.useState)(!1),i=Object(c.a)(r,2),s=i[0],u=i[1];return Object(a.jsxs)(p.a,{children:[Object(a.jsxs)(f.a,{children:[Object(a.jsx)(j.a,{variant:"h5",gutterBottom:!0,children:"Create New Wallet"}),Object(a.jsx)(j.a,{paragraph:!0,children:"Create a new wallet to hold Solana and SPL tokens."}),Object(a.jsx)(j.a,{children:"Please write down the following twenty four words and keep them in a safe place:"}),t?Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,multiline:!0,margin:"normal",value:t.mnemonic,label:"Seed Words",onFocus:function(e){return e.currentTarget.select()}}):Object(a.jsx)(d.a,{}),Object(a.jsx)(j.a,{paragraph:!0,children:"Your private keys are only stored on your current computer or device. You will need these words to restore your wallet if your browser's storage is cleared or your device is damaged or lost."}),Object(a.jsxs)(j.a,{paragraph:!0,children:["By default, sollet will use ",Object(a.jsx)("code",{children:"m/44'/501'/0'/0'"})," as the derivation path for the main wallet. To use an alternative path, try restoring an existing wallet."]}),Object(a.jsx)(v.a,{control:Object(a.jsx)(h.a,{checked:s,disabled:!t,onChange:function(e){return u(e.target.checked)}}),label:"I have saved these words in a safe place."})]}),Object(a.jsx)(x.a,{style:{justifyContent:"flex-end"},children:Object(a.jsx)(y.a,{color:"primary",disabled:!s,onClick:n,children:"Continue"})})]})}function I(e){var t=e.goBack,n=e.onSubmit,r=Object(o.useState)(""),i=Object(c.a)(r,2),s=i[0],u=i[1],l=Object(o.useState)(""),d=Object(c.a)(l,2),b=d[0],h=d[1];return Object(a.jsxs)(p.a,{children:[Object(a.jsxs)(f.a,{children:[Object(a.jsx)(j.a,{variant:"h5",gutterBottom:!0,children:"Choose a Password (Optional)"}),Object(a.jsx)(j.a,{children:"Optionally pick a password to protect your wallet."}),Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,margin:"normal",label:"New Password",type:"password",autoComplete:"new-password",value:s,onChange:function(e){return u(e.target.value)}}),Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,margin:"normal",label:"Confirm Password",type:"password",autoComplete:"new-password",value:b,onChange:function(e){return h(e.target.value)}}),Object(a.jsx)(j.a,{children:"If you forget your password you will need to restore your wallet using your seed words."})]}),Object(a.jsxs)(x.a,{style:{justifyContent:"space-between"},children:[Object(a.jsx)(y.a,{onClick:t,children:"Back"}),Object(a.jsx)(y.a,{color:"primary",disabled:s!==b,onClick:function(){return n(s)},children:"Create Wallet"})]})]})}function N(){var e=Object(o.useState)(""),t=Object(c.a)(e,2),n=t[0],r=t[1],s=Object(o.useState)(!1),u=Object(c.a)(s,2),l=u[0],d=u[1],b=Object(k.a)();return Object(a.jsxs)(p.a,{children:[Object(a.jsxs)(f.a,{children:[Object(a.jsx)(j.a,{variant:"h5",gutterBottom:!0,children:"Unlock Wallet"}),Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,margin:"normal",label:"Password",type:"password",autoComplete:"current-password",value:n,onChange:function(e){return r(e.target.value)}}),Object(a.jsx)(v.a,{control:Object(a.jsx)(h.a,{checked:l,onChange:function(e){return d(e.target.checked)}}),label:"Keep wallet unlocked"})]}),Object(a.jsx)(x.a,{style:{justifyContent:"flex-end"},children:Object(a.jsx)(y.a,{color:"primary",onClick:function(){b(Object(i.e)(n,l),{progressMessage:"Unlocking wallet...",successMessage:"Wallet unlocked"})},children:"Unlock"})})]})}function P(e){var t=e.goBack,n=Object(o.useState)(""),r=Object(c.a)(n,2),s=r[0],u=r[1],l=Object(o.useState)(""),d=Object(c.a)(l,2),b=d[0],h=d[1],O=Object(o.useState)(""),v=Object(c.a)(O,2),g=v[0],w=v[1],k=Object(o.useState)(""),S=Object(c.a)(k,2),A=S[0],E=S[1],T=Object(o.useState)(!1),I=Object(c.a)(T,2),N=I[0],P=I[1],K=g===A&&Object(C.validateMnemonic)(s);return Object(a.jsx)(a.Fragment,{children:N?Object(a.jsx)(B,{goBack:function(){return P(!1)},mnemonic:s,password:g,seed:b}):Object(a.jsxs)(p.a,{children:[Object(a.jsxs)(f.a,{children:[Object(a.jsx)(j.a,{variant:"h5",gutterBottom:!0,children:"Restore Existing Wallet"}),Object(a.jsx)(j.a,{children:"Restore your wallet using your twelve or twenty-four seed words. Note that this will delete any existing wallet on this device."}),Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,multiline:!0,rows:3,margin:"normal",label:"Seed Words",value:s,onChange:function(e){return u(e.target.value)}}),Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,margin:"normal",label:"New Password (Optional)",type:"password",autoComplete:"new-password",value:g,onChange:function(e){return w(e.target.value)}}),Object(a.jsx)(m.a,{variant:"outlined",fullWidth:!0,margin:"normal",label:"Confirm Password",type:"password",autoComplete:"new-password",value:A,onChange:function(e){return E(e.target.value)}})]}),Object(a.jsxs)(x.a,{style:{justifyContent:"space-between"},children:[Object(a.jsx)(y.a,{onClick:t,children:"Cancel"}),Object(a.jsx)(y.a,{color:"primary",disabled:!K,onClick:function(){Object(i.f)(s).then((function(e){h(e),P(!0)}))},children:"Next"})]})]})})}function B(t){var n=t.goBack,l=t.mnemonic,d=t.seed,m=t.password,h=Object(k.a)(),v=Object(u.j)(),C=Object(o.useState)(K.Bip44Change),A=Object(c.a)(C,2),E=A[0],T=A[1],I=Object(r.a)(Array(10)).map((function(t,n){return Object(s.c)(e.from(d,"hex"),n,M(E))}));return Object(a.jsxs)(p.a,{children:[Object(a.jsxs)(f.a,{children:[Object(a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(a.jsx)(j.a,{variant:"h5",gutterBottom:!0,children:"Derivable Accounts"}),Object(a.jsx)(O.a,{variant:"outlined",children:Object(a.jsxs)(g.a,{value:E,onChange:function(e){return T(e.target.value)},children:[Object(a.jsx)(w.a,{value:K.Bip44Change,children:"m/44'/501'/0'/0'"}),Object(a.jsx)(w.a,{value:K.Bip44,children:"m/44'/501'/0'"}),Object(a.jsx)(w.a,{value:K.Deprecated,children:"m/501'/0'/0/0 (deprecated)"})]})})]}),I.map((function(e){return Object(a.jsx)(S.a,{href:"https://explorer.solana.com/account/".concat(e.publicKey.toBase58())+v,target:"_blank",rel:"noopener",children:Object(a.jsx)(b.a,{publicKey:e.publicKey,walletAccount:e,expandable:!1})})}))]}),Object(a.jsxs)(x.a,{style:{justifyContent:"space-between"},children:[Object(a.jsx)(y.a,{onClick:n,children:"Back"}),Object(a.jsx)(y.a,{color:"primary",onClick:function(){h(Object(i.g)(l,d,m,M(E)))},children:"Restore"})]})]})}var K={Deprecated:0,Bip44:1,Bip44Change:2};function M(e){switch(e){case K.Deprecated:return s.a.deprecated;case K.Bip44:return s.a.bip44;case K.Bip44Change:return s.a.bip44Change;default:throw new Error("invalid derivation path: ".concat(e))}}}).call(this,n(18).Buffer)},45:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return p})),n.d(t,"f",(function(){return O})),n.d(t,"e",(function(){return v})),n.d(t,"i",(function(){return x})),n.d(t,"h",(function(){return y})),n.d(t,"d",(function(){return g})),n.d(t,"g",(function(){return w})),n.d(t,"c",(function(){return T}));var r=n(19),a=n(20),c=n(122),o=n(68),i=n(35),s=n(36),u=n(49),l=n(4),d=n(17),b=new d.e("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),p=new d.e("So11111111111111111111111111111111111111112"),f=new d.e("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo"),j=l.union(l.u8("instruction"));j.addVariant(0,l.struct([l.u8("decimals"),l.blob(32,"mintAuthority"),l.u8("freezeAuthorityOption"),l.blob(32,"freezeAuthority")]),"initializeMint"),j.addVariant(1,l.struct([]),"initializeAccount"),j.addVariant(3,l.struct([l.nu64("amount")]),"transfer"),j.addVariant(7,l.struct([l.nu64("amount")]),"mintTo"),j.addVariant(8,l.struct([l.nu64("amount")]),"burn"),j.addVariant(9,l.struct([]),"closeAccount");var m=Math.max.apply(Math,Object(u.a)(Object.values(j.registry).map((function(e){return e.span}))));function h(t){var n=e.alloc(m),r=j.encode(t,n);return n.slice(0,r)}function O(e){var t=e.mint,n=e.decimals,r=e.mintAuthority,a=e.freezeAuthority,c=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:d.f,isSigner:!1,isWritable:!1}];return new d.j({keys:c,data:h({initializeMint:{decimals:n,mintAuthority:r.toBuffer(),freezeAuthorityOption:!!a,freezeAuthority:(a||new d.e).toBuffer()}}),programId:b})}function v(e){var t=[{pubkey:e.account,isSigner:!1,isWritable:!0},{pubkey:e.mint,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!1,isWritable:!1},{pubkey:d.f,isSigner:!1,isWritable:!1}];return new d.j({keys:t,data:h({initializeAccount:{}}),programId:b})}function x(e){var t=e.source,n=e.destination,r=e.amount,a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e.owner,isSigner:!0,isWritable:!1}];return new d.j({keys:a,data:h({transfer:{amount:r}}),programId:b})}function y(e){var t=e.mint,n=e.destination,r=e.amount,a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e.mintAuthority,isSigner:!0,isWritable:!1}];return new d.j({keys:a,data:h({mintTo:{amount:r}}),programId:b})}function g(e){var t=[{pubkey:e.source,isSigner:!1,isWritable:!0},{pubkey:e.destination,isSigner:!1,isWritable:!0},{pubkey:e.owner,isSigner:!0,isWritable:!1}];return new d.j({keys:t,data:h({closeAccount:{}}),programId:b})}function w(t){return new d.j({keys:[],data:e.from(t,"utf-8"),programId:f})}var k=function(e){Object(i.a)(n,e);var t=Object(s.a)(n);function n(e){return Object(r.a)(this,n),t.call(this,32,e)}return Object(a.a)(n,[{key:"decode",value:function(e,t){return new d.e(Object(c.a)(Object(o.a)(n.prototype),"decode",this).call(this,e,t))}},{key:"encode",value:function(e,t,r){return Object(c.a)(Object(o.a)(n.prototype),"encode",this).call(this,e.toBuffer(),t,r)}}]),n}(l.Blob);var S,C=new d.e("4MNPdKu9wFMvEeZBMt3Eipfs5ovVWTJb31pEXDJAAxX5"),A=l.struct([(S="account",new k(S))]);function E(t){var n=e.alloc(A.span),r=A.encode(t,n);return n.slice(0,r)}function T(e){var t=e.account,n=e.owner,r=[{pubkey:t,isSigner:!1,isWritable:!1}];return new d.j({keys:r,data:E({account:n}),programId:C})}}).call(this,n(18).Buffer)},459:function(e,t,n){},462:function(e,t){},463:function(e,t){},487:function(e,t){},489:function(e,t){},497:function(e,t){},498:function(e,t){},50:function(e,t,n){"use strict";n.d(t,"c",(function(){return x})),n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return g}));var r=n(9),a=n(6),c=n.n(a),o=n(15),i=n(49),s=n(19),u=n(20),l=n(10),d=n.n(l),b=n(0),p=n(121),f=new Date,j=new Map,m=new Map,h=new(function(){function e(){Object(s.a)(this,e),this.loops=new Map}return Object(u.a)(e,[{key:"addListener",value:function(e){this.loops.has(e.cacheKey)||this.loops.set(e.cacheKey,new v(e.cacheKey,e.fn)),this.loops.get(e.cacheKey).addListener(e)}},{key:"removeListener",value:function(e){var t=this.loops.get(e.cacheKey);t.removeListener(e),t.stopped&&this.loops.delete(e.cacheKey)}},{key:"refresh",value:function(e){this.loops.has(e)&&this.loops.get(e).refresh()}},{key:"refreshAll",value:function(){return Promise.all(Object(i.a)(this.loops.values()).map((function(e){return e.refresh()})))}}]),e}()),O=function e(t,n,r,a){Object(s.a)(this,e),this.cacheKey=void 0,this.fn=void 0,this.refreshInterval=void 0,this.callback=void 0,this.cacheKey=t,this.fn=n,this.refreshInterval=r,this.callback=a},v=function(){function e(t,n){var r=this;Object(s.a)(this,e),this.cacheKey=void 0,this.fn=void 0,this.timeoutId=void 0,this.listeners=void 0,this.errors=void 0,this.refresh=Object(o.a)(c.a.mark((function e(){var t,n,a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.timeoutId&&(clearTimeout(r.timeoutId),r.timeoutId=null),!r.stopped){e.next=3;break}return e.abrupt("return");case 3:return e.prev=3,e.next=6,r.fn();case 6:return t=e.sent,j.set(r.cacheKey,t),m.delete(r.cacheKey),r.errors=0,e.abrupt("return",t);case 13:e.prev=13,e.t0=e.catch(3),++r.errors,j.delete(r.cacheKey),m.set(r.cacheKey,e.t0),console.warn(e.t0);case 19:return e.prev=19,r.notifyListeners(),r.timeoutId||r.stopped||(n=r.refreshInterval,r.errors>0&&(n=Math.min(1e3*Math.pow(2,r.errors-1),6e4)),(a=+new Date-+f)<5e3&&(n+=5e3-a/2),"hidden"===document.visibilityState?n=6e4:document.hasFocus()||(n*=1.5),n*=.8+.4*Math.random(),r.timeoutId=setTimeout(r.refresh,n)),e.finish(19);case 23:case"end":return e.stop()}}),e,null,[[3,13,19,23]])}))),this.cacheKey=t,this.fn=n,this.timeoutId=null,this.listeners=new Set,this.errors=0}return Object(u.a)(e,[{key:"addListener",value:function(e){var t=this.refreshInterval;this.listeners.add(e),this.refreshInterval2&&void 0!==arguments[2]?arguments[2]:{},a=n.refreshInterval,c=void 0===a?6e4:a,o=Object(b.useReducer)((function(e){return e+1}),0),i=Object(r.a)(o,2),s=i[1];if(t=w(t),Object(b.useEffect)((function(){if(t){var n=new O(t,e,c,s);return h.addListener(n),function(){return h.removeListener(n)}}}),[t,c]),!t)return[null,!1,void 0];var u=j.has(t),l=m.has(t)?m.get(t):void 0,d=u?j.get(t):void 0;return[d,u,l]}function y(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e=w(e),t&&j.delete(e);var n=h.loops.get(e);n&&(n.refresh(),t&&n.notifyListeners())}function g(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.initializeOnly,a=void 0!==r&&r;if(e=w(e),!a||!j.has(e)){j.set(e,t);var c=h.loops.get(e);c&&c.notifyListeners()}}function w(e){return Array.isArray(e)?p.a.apply(void 0,Object(i.a)(e)):e}},51:function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var r=n(34),a=n(1),c=n(217),o=(n(0),n(789)),i=n(46),s=n(781);function u(e){var t=e.open,n=e.onClose,u=e.onSubmit,l=e.children,d=Object(c.a)(e,["open","onClose","onSubmit","children"]),b=Object(i.a)(),p=Object(s.a)(b.breakpoints.down("xs"));return Object(a.jsx)(o.a,Object(r.a)(Object(r.a)({open:t,PaperProps:{component:"form",onSubmit:function(e){e.preventDefault(),u&&u()}},onClose:n,fullScreen:p},d),{},{children:l}))}},538:function(e,t){},540:function(e,t){},55:function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return o})),n.d(t,"e",(function(){return i})),n.d(t,"d",(function(){return s})),n.d(t,"c",(function(){return u}));var r=n(4),a=n(17),c=r.struct([r.blob(32,"mint"),r.blob(32,"owner"),r.nu64("amount"),r.blob(93)]),o=r.struct([r.blob(44),r.u8("decimals"),r.blob(37)]);function i(e){var t=c.decode(e),n=t.mint,r=t.owner,o=t.amount;return{mint:new a.e(n),owner:new a.e(r),amount:o}}function s(e){return{decimals:o.decode(e).decimals}}function u(e){return[{memcmp:{offset:c.offsetOf("owner"),bytes:e.toBase58()}},{dataSize:c.span}]}},568:function(e,t){},570:function(e,t){},575:function(e,t){},577:function(e,t){},58:function(e,t,n){"use strict";n.d(t,"b",(function(){return p})),n.d(t,"a",(function(){return j}));var r=n(6),a=n.n(r),c=n(1),o=n(15),i=n(9),s=n(0),u=n(78),l=n(24),d=n(91),b=n(33);function p(){var e=Object(l.g)(),t=Object(u.b)(),n=t.enqueueSnackbar,r=t.closeSnackbar,d=Object(s.useState)(!1),p=Object(i.a)(d,2),j=p[0],m=p[1];function h(){return(h=Object(o.a)(a.a.mark((function t(o){var i,s,u,l,d,p=arguments;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=p.length>1&&void 0!==p[1]?p[1]:{},s=i.onSuccess,u=i.onError,l=n("Sending transaction...",{variant:"info",persist:!0}),m(!0),t.prev=3,t.next=6,o;case 6:return d=t.sent,r(l),l=n("Confirming transaction...",{variant:"info",persist:!0,action:Object(c.jsx)(f,{signature:d})}),t.next=11,Object(b.b)(e,d);case 11:r(l),m(!1),n("Transaction confirmed",{variant:"success",autoHideDuration:15e3,action:Object(c.jsx)(f,{signature:d})}),s&&s(d),t.next=24;break;case 17:t.prev=17,t.t0=t.catch(3),r(l),m(!1),console.warn(t.t0.message),n(t.t0.message,{variant:"error"}),u&&u(t.t0);case 24:case"end":return t.stop()}}),t,null,[[3,17]])})))).apply(this,arguments)}return[function(e){return h.apply(this,arguments)},j]}function f(e){var t=e.signature,n=Object(l.j)();return Object(c.jsx)(d.a,{color:"inherit",component:"a",target:"_blank",rel:"noopener",href:"https://explorer.solana.com/tx/".concat(t)+n,children:"View on Solana Explorer"})}function j(){var e=Object(u.b)(),t=e.enqueueSnackbar,n=e.closeSnackbar;return function(){var e=Object(o.a)(a.a.mark((function e(r){var c,o,i,s,u,l,d,b,p,f=arguments;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=f.length>1&&void 0!==f[1]?f[1]:{},o=c.progressMessage,i=void 0===o?"Submitting...":o,s=c.successMessage,u=void 0===s?"Success":s,l=c.onSuccess,d=c.onError,b=t(i,{variant:"info",persist:!0}),e.prev=2,e.next=5,r;case 5:p=e.sent,n(b),u&&t(u,{variant:"success"}),l&&l(p),e.next=17;break;case 11:e.prev=11,e.t0=e.catch(2),console.warn(e.t0),n(b),t(e.t0.message,{variant:"error"}),d&&d(e.t0);case 17:case"end":return e.stop()}}),e,null,[[2,11]])})));return function(t){return e.apply(this,arguments)}}()}},584:function(e,t){},586:function(e,t){},598:function(e,t){},601:function(e,t){},609:function(e,t){},63:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return p})),n.d(t,"f",(function(){return j})),n.d(t,"h",(function(){return O})),n.d(t,"c",(function(){return v})),n.d(t,"d",(function(){return x})),n.d(t,"g",(function(){return g})),n.d(t,"e",(function(){return k})),n.d(t,"a",(function(){return T}));var r=n(6),a=n.n(r),c=n(34),o=n(15),i=n(144),s=n(42),u=n(199),l=n(22),d=n.n(l),b=n(74);function p(){return f.apply(this,arguments)}function f(){return(f=Object(o.a)(a.a.mark((function t(){var r,c,o;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.resolve().then(n.t.bind(null,192,7));case 2:return r=t.sent,c=r.generateMnemonic(256),t.next=6,r.mnemonicToSeed(c);case 6:return o=t.sent,t.abrupt("return",{mnemonic:c,seed:e.from(o).toString("hex")});case 8:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function j(e){return m.apply(this,arguments)}function m(){return(m=Object(o.a)(a.a.mark((function t(r){var c,o;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.resolve().then(n.t.bind(null,192,7));case 2:if((c=t.sent).validateMnemonic(r)){t.next=5;break}throw new Error("Invalid seed words");case 5:return t.next=7,c.mnemonicToSeed(r);case 7:return o=t.sent,t.abrupt("return",e.from(o).toString("hex"));case 9:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var h=function(){var e=JSON.parse(sessionStorage.getItem("unlocked")||localStorage.getItem("unlocked")||"null");return null===e?{mnemonic:null,seed:null,importsEncryptionKey:null,derivationPath:null}:Object(c.a)({importsEncryptionKey:E(e.seed)},e)}(),O=new b.EventEmitter;function v(){return h}function x(){return!!localStorage.getItem("locked")}function y(e,t,n,r){h={mnemonic:e,seed:t,importsEncryptionKey:n,derivationPath:r},O.emit("change",h)}function g(e,t,n,r){return w.apply(this,arguments)}function w(){return(w=Object(o.a)(a.a.mark((function t(n,r,c,o){var i,u,l,b,p,f,j,m,h;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=JSON.stringify({mnemonic:n,seed:r,derivationPath:o}),!c){t.next=16;break}return u=Object(s.randomBytes)(16),l="pbkdf2",b=1e5,p="sha256",t.next=8,C(c,u,b,p);case 8:f=t.sent,j=Object(s.randomBytes)(s.secretbox.nonceLength),m=Object(s.secretbox)(e.from(i),j,f),localStorage.setItem("locked",JSON.stringify({encrypted:d.a.encode(m),nonce:d.a.encode(j),kdf:l,salt:d.a.encode(u),iterations:b,digest:p})),localStorage.removeItem("unlocked"),sessionStorage.removeItem("unlocked"),t.next=19;break;case 16:localStorage.setItem("unlocked",i),localStorage.removeItem("locked"),sessionStorage.removeItem("unlocked");case 19:h=E(r),y(n,r,h,o);case 21:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function k(e,t){return S.apply(this,arguments)}function S(){return(S=Object(o.a)(a.a.mark((function t(n,r){var c,o,i,u,l,b,p,f,j,m,h,O,v,x,g,w,k;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=JSON.parse(localStorage.getItem("locked")),o=c.encrypted,i=c.nonce,u=c.salt,l=c.iterations,b=c.digest,p=d.a.decode(o),f=d.a.decode(i),j=d.a.decode(u),t.next=6,C(n,j,l,b);case 6:if(m=t.sent,h=s.secretbox.open(p,f,m)){t.next=10;break}throw new Error("Incorrect password");case 10:return O=e.from(h).toString(),v=JSON.parse(O),x=v.mnemonic,g=v.seed,w=v.derivationPath,r&&sessionStorage.setItem("unlocked",O),k=E(g),y(x,g,k,w),t.abrupt("return",{mnemonic:x,seed:g,derivationPath:w});case 16:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function C(e,t,n,r){return A.apply(this,arguments)}function A(){return(A=Object(o.a)(a.a.mark((function e(t,n,r,c){return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){return Object(i.pbkdf2)(t,n,r,s.secretbox.keyLength,c,(function(t,n){return t?a(t):e(n)}))})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function E(t){return u.fromSeed(e.from(t,"hex")).derivePath("m/10016'/0").privateKey}function T(){localStorage.clear(),sessionStorage.removeItem("unlocked"),h={mnemonic:null,seed:null,importsEncryptionKey:null},O.emit("change",h),window.location.reload()}}).call(this,n(18).Buffer)},632:function(e,t){},640:function(e,t){},661:function(e,t){},662:function(e,t){},69:function(e,t,n){"use strict";(function(e){n.d(t,"f",(function(){return f})),n.d(t,"g",(function(){return O})),n.d(t,"b",(function(){return x})),n.d(t,"c",(function(){return g})),n.d(t,"d",(function(){return k})),n.d(t,"e",(function(){return E})),n.d(t,"i",(function(){return N})),n.d(t,"h",(function(){return B})),n.d(t,"a",(function(){return L}));var r=n(9),a=n(49),c=n(6),o=n.n(c),i=n(15),s=n(17),u=n(39),l=n(45),d=n(55),b=n(22),p=n.n(b);function f(e,t){return j.apply(this,arguments)}function j(){return(j=Object(i.a)(o.a.mark((function e(t,n){var r,a;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Object(d.c)(n),e.next=3,t._rpcRequest("getProgramAccounts",[l.a.toBase58(),{commitment:t.commitment,filters:r}]);case 3:if(!(a=e.sent).error){e.next=6;break}throw new Error("failed to get token accounts owned by "+n.toBase58()+": "+a.error.message);case 6:return e.abrupt("return",a.result.map((function(e){var t=e.pubkey,n=e.account,r=n.data,a=n.executable,c=n.owner,o=n.lamports;return{publicKey:new s.e(t),accountInfo:{data:p.a.decode(r),executable:a,owner:new s.e(c),lamports:o}}})).filter((function(e){var t=e.accountInfo;return r.every((function(e){if(e.dataSize)return t.data.length===e.dataSize;if(e.memcmp){var n=p.a.decode(e.memcmp.bytes);return t.data.slice(e.memcmp.offset,e.memcmp.offset+n.length).equals(n)}return!1}))})));case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function m(e,t,n,r){return h.apply(this,arguments)}function h(){return(h=Object(i.a)(o.a.mark((function e(t,n,r,c){var i,s,u,l,d=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=d.length>4&&void 0!==d[4]&&d[4],e.next=3,t.getRecentBlockhash("max");case 3:return n.recentBlockhash=e.sent.blockhash,(i=n).setSigners.apply(i,[r.publicKey].concat(Object(a.a)(c.map((function(e){return e.publicKey}))))),c.length>0&&(u=n).partialSign.apply(u,Object(a.a)(c)),e.next=8,r.signTransaction(n);case 8:return n=e.sent,l=n.serialize(),e.next=12,t.sendRawTransaction(l,{skipPreflight:s,preflightCommitment:"single"});case 12:return e.abrupt("return",e.sent);case 13:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function O(e,t,n,r){return v.apply(this,arguments)}function v(){return(v=Object(i.a)(o.a.mark((function e(t,n,r,a){var c;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=(new s.i).add(s.h.transfer({fromPubkey:n.publicKey,toPubkey:r,lamports:a})),e.next=3,m(t,c,n,[]);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function x(e){return y.apply(this,arguments)}function y(){return(y=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,u,b,p;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.owner,a=t.mint,c=t.amount,i=t.decimals,u=t.initialAccount,b=new s.i,e.t0=b,e.t1=s.h,e.t2=r.publicKey,e.t3=a.publicKey,e.next=8,n.getMinimumBalanceForRentExemption(d.b.span);case 8:if(e.t4=e.sent,e.t5=d.b.span,e.t6=l.a,e.t7={fromPubkey:e.t2,newAccountPubkey:e.t3,lamports:e.t4,space:e.t5,programId:e.t6},e.t8=e.t1.createAccount.call(e.t1,e.t7),e.t0.add.call(e.t0,e.t8),b.add(Object(l.f)({mint:a.publicKey,decimals:i,mintAuthority:r.publicKey})),p=[a],!(c>0)){e.next=32;break}return e.t9=b,e.t10=s.h,e.t11=r.publicKey,e.t12=u.publicKey,e.next=23,n.getMinimumBalanceForRentExemption(d.a.span);case 23:e.t13=e.sent,e.t14=d.a.span,e.t15=l.a,e.t16={fromPubkey:e.t11,newAccountPubkey:e.t12,lamports:e.t13,space:e.t14,programId:e.t15},e.t17=e.t10.createAccount.call(e.t10,e.t16),e.t9.add.call(e.t9,e.t17),p.push(u),b.add(Object(l.e)({account:u.publicKey,mint:a.publicKey,owner:r.publicKey})),b.add(Object(l.h)({mint:a.publicKey,destination:u.publicKey,amount:c,mintAuthority:r.publicKey}));case 32:return e.next=34,m(n,b,r,p);case 34:return e.abrupt("return",e.sent);case 35:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function g(e){return w.apply(this,arguments)}function w(){return(w=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,u;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.payer,a=t.mintPublicKey,c=t.newAccount,i=new s.i,e.t0=i,e.t1=s.h,e.t2=r.publicKey,e.t3=c.publicKey,e.next=8,n.getMinimumBalanceForRentExemption(d.a.span);case 8:return e.t4=e.sent,e.t5=d.a.span,e.t6=l.a,e.t7={fromPubkey:e.t2,newAccountPubkey:e.t3,lamports:e.t4,space:e.t5,programId:e.t6},e.t8=e.t1.createAccount.call(e.t1,e.t7),e.t0.add.call(e.t0,e.t8),i.add(Object(l.e)({account:c.publicKey,mint:a,owner:r.publicKey})),u=[c],e.next=18,m(n,i,r,u);case 18:return e.abrupt("return",e.sent);case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function k(e){return S.apply(this,arguments)}function S(){return(S=Object(i.a)(o.a.mark((function e(t){var n,a,c,i,u,l,d,b,p;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,a=t.wallet,c=t.splTokenMintAddress,e.next=3,C(a.publicKey,a.publicKey,c);case 3:return i=e.sent,u=Object(r.a)(i,2),l=u[0],d=u[1],(b=new s.i).add(l),b.feePayer=a.publicKey,e.next=12,m(n,b,a,[]);case 12:return p=e.sent,e.abrupt("return",[d,p]);case 14:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function C(e,t,n){return A.apply(this,arguments)}function A(){return(A=Object(i.a)(o.a.mark((function t(n,r,a){var c,i,l,d;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,E(r,a);case 2:return c=t.sent,i=new s.e("11111111111111111111111111111111"),l=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:u.TokenInstructions.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:s.f,isSigner:!1,isWritable:!1}],d=new s.j({keys:l,programId:I,data:e.from([])}),t.abrupt("return",[d,c]);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function E(e,t){return T.apply(this,arguments)}function T(){return(T=Object(i.a)(o.a.mark((function e(t,n){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.e.findProgramAddress([t.toBuffer(),u.TokenInstructions.TOKEN_PROGRAM_ID.toBuffer(),n.toBuffer()],I);case 2:return e.abrupt("return",e.sent[0]);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var I=new s.e("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");function N(e){return P.apply(this,arguments)}function P(){return(P=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,s,u,b,p,j;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.owner,a=t.sourcePublicKey,c=t.destinationPublicKey,i=t.amount,s=t.memo,u=t.mint,b=t.overrideDestinationCheck,e.next=3,n.getAccountInfo(c);case 3:if(!(p=e.sent)||!p.owner.equals(l.a)){e.next=8;break}return e.next=7,D({connection:n,owner:r,sourcePublicKey:a,destinationPublicKey:c,amount:i,memo:s});case 7:return e.abrupt("return",e.sent);case 8:if(p&&0!==p.lamports||b){e.next=10;break}throw new Error("Cannot send to address with zero SOL balances");case 10:return e.next=12,f(n,c);case 12:if(!(j=e.sent.map((function(e){var t=e.publicKey,n=e.accountInfo;return{publicKey:t,parsed:Object(d.e)(n.data)}})).filter((function(e){return e.parsed.mint.equals(u)})).sort((function(e,t){return t.parsed.amount-e.parsed.amount}))[0])){e.next=17;break}return e.next=16,D({connection:n,owner:r,sourcePublicKey:a,destinationPublicKey:j.publicKey,amount:i,memo:s});case 16:return e.abrupt("return",e.sent);case 17:return e.next=19,R({connection:n,owner:r,sourcePublicKey:a,destinationPublicKey:c,amount:i,memo:s,mint:u});case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function B(e){return K.apply(this,arguments)}function K(){return(K=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,s,u;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.owner,a=t.sourcePublicKey,c=t.destinationPublicKey,i=t.amount,(s=M({ownerPublicKey:r.publicKey,sourcePublicKey:a,destinationPublicKey:c,amount:i})).add(Object(l.d)({source:a,destination:r.publicKey,owner:r.publicKey})),u=[],e.next=6,m(n,s,r,u);case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e){var t=e.ownerPublicKey,n=e.sourcePublicKey,r=e.destinationPublicKey,a=e.amount,c=e.memo,o=(new s.i).add(Object(l.i)({source:n,destination:r,owner:t,amount:a}));return c&&o.add(Object(l.g)(c)),o}function D(e){return W.apply(this,arguments)}function W(){return(W=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,s,u,l;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.owner,a=t.sourcePublicKey,c=t.destinationPublicKey,i=t.amount,s=t.memo,u=M({ownerPublicKey:r.publicKey,sourcePublicKey:a,destinationPublicKey:c,amount:i,memo:s}),l=[],e.next=5,m(n,u,r,l);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function R(e){return F.apply(this,arguments)}function F(){return(F=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,u,b,p,f,j,h;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.owner,a=t.sourcePublicKey,c=t.destinationPublicKey,i=t.amount,u=t.memo,b=t.mint,p=new s.a,(f=new s.i).add(Object(l.c)({account:c,owner:s.h.programId})),e.t0=f,e.t1=s.h,e.t2=r.publicKey,e.t3=p.publicKey,e.next=10,n.getMinimumBalanceForRentExemption(d.a.span);case 10:return e.t4=e.sent,e.t5=d.a.span,e.t6=l.a,e.t7={fromPubkey:e.t2,newAccountPubkey:e.t3,lamports:e.t4,space:e.t5,programId:e.t6},e.t8=e.t1.createAccount.call(e.t1,e.t7),e.t0.add.call(e.t0,e.t8),f.add(Object(l.e)({account:p.publicKey,mint:b,owner:c})),j=M({ownerPublicKey:r.publicKey,sourcePublicKey:a,destinationPublicKey:p.publicKey,amount:i,memo:u}),f.add(j),h=[p],e.next=22,m(n,f,r,h);case 22:return e.abrupt("return",e.sent);case 23:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function L(e){return U.apply(this,arguments)}function U(){return(U=Object(i.a)(o.a.mark((function e(t){var n,r,a,c,i,u;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.connection,r=t.owner,a=t.sourcePublicKey,c=t.skipPreflight,i=(new s.i).add(Object(l.d)({source:a,destination:r.publicKey,owner:r.publicKey})),u=[],e.next=5,m(n,i,r,u,c);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,n(18).Buffer)},710:function(e,t){},719:function(e,t){},722:function(e,t){},777:function(e,t,n){"use strict";n.r(t);var r=n(1),a=n(0),c=n.n(a),o=n(37),i=n.n(o),s=(n(459),n(841)),u=n(781),l=n(839),d=n(840),b=n(415),p=n.n(b),f=n(120),j=n(9),m=n(830),h=n(829),O=n(52),v=n(780),x=n(24),y=n(91),g=n(416),w=n(276),k=n(17),S=n(26),C=n(831),A=n(272),E=n.n(A),T=n(210),I=n.n(T),N=n(399),P=n.n(N),B=n(397),K=n.n(B),M=n(398),D=n.n(M),W=n(832),R=n(845),F=n(783),L=n(206);function U(){return Object(r.jsxs)(L.a,{viewBox:"0 0 450 450",children:[Object(r.jsx)("path",{d:"m374.393945,136.203008c-2.518,2.519 -5.934,3.934 -9.496,3.934l-336.443,0c-11.891,0 -17.914,-14.315 -9.601,-22.817l55.186,-56.441c2.527,-2.584 5.988,-4.041 9.602,-4.041l337.697,0c11.964,0 17.955,14.465 9.496,22.925l-56.441,56.44z"}),Object(r.jsx)("path",{d:"m374.393945,392.628008c-2.518,2.518 -5.934,3.933 -9.496,3.933l-336.443,0c-11.891,0 -17.914,-14.315 -9.601,-22.817l55.186,-56.441c2.527,-2.584 5.988,-4.041 9.602,-4.041l337.697,0c11.964,0 17.955,14.465 9.496,22.925l-56.441,56.441z"}),Object(r.jsx)("path",{d:"m374.393945,188.933008c-2.518,-2.518 -5.934,-3.933 -9.496,-3.933l-336.443,0c-11.891,0 -17.914,14.315 -9.601,22.817l55.186,56.441c2.527,2.584 5.988,4.04 9.602,4.04l337.697,0c11.964,0 17.955,-14.464 9.496,-22.924l-56.441,-56.441z"})]})}var q=n(400),_=n.n(q),z=n(847),X=n(211),G=n.n(X),V=n(423),H=n(420),J=n(421),Y=n(107),Q=n(221),Z=n(827),$=n(422),ee=n(51);function te(e){var t=e.open,n=e.onAdd,c=e.onClose,o=Object(a.useState)(""),i=Object(j.a)(o,2),s=i[0],u=i[1],l=Object(a.useState)(!1),d=Object(j.a)(l,2),b=d[0],p=d[1],f=Object(a.useState)(""),m=Object(j.a)(f,2),h=m[0],O=m[1],v=b?function(e){try{return new k.a(JSON.parse(e))}catch(t){return}}(h):void 0,x=b?s&&void 0!==v:s;return Object(r.jsxs)(ee.a,{open:t,onEnter:function(){u(""),p(!1),O("")},onClose:c,onSubmit:function(){return n({name:s,importedAccount:v})},fullWidth:!0,children:[Object(r.jsx)(H.a,{children:"Add account"}),Object(r.jsx)(J.a,{style:{paddingTop:16},children:Object(r.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[Object(r.jsx)(Y.a,{label:"Name",fullWidth:!0,variant:"outlined",margin:"normal",value:s,onChange:function(e){return u(e.target.value.trim())}}),Object(r.jsx)(Z.a,{children:Object(r.jsx)(Q.a,{control:Object(r.jsx)($.a,{checked:b,onChange:function(){return p(!b)}}),label:"Import private key"})}),b&&Object(r.jsx)(Y.a,{label:"Paste your private key here",fullWidth:!0,type:"password",value:h,variant:"outlined",margin:"normal",onChange:function(e){return O(e.target.value.trim())}})]})}),Object(r.jsxs)(V.a,{children:[Object(r.jsx)(y.a,{onClick:c,children:"Close"}),Object(r.jsx)(y.a,{type:"submit",color:"primary",disabled:!x,children:"Add"})]})]})}var ne=n(63),re=n(828);function ae(e){var t=e.open,n=e.onClose,c=Object(a.useState)(""),o=Object(j.a)(c,2),i=o[0],s=o[1];return Object(r.jsx)(r.Fragment,{children:Object(r.jsxs)(ee.a,{open:t,onClose:n,onSubmit:function(){Object(ne.a)(),n()},fullWidth:!0,children:[Object(r.jsx)(H.a,{children:"Delete Mnemonic"}),Object(r.jsxs)(re.a,{style:{margin:20},children:[Object(r.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:["You will not be able to recover the current accounts without the seed phrase, and the account private key. This action will delete all current accounts from your browser.",Object(r.jsx)("br",{}),Object(r.jsx)("br",{}),Object(r.jsx)("strong",{children:"To prevent loss of funds, please ensure you have the seed phrase and the private key for all current accounts."})]}),Object(r.jsx)(Y.a,{label:'Please type "delete" to confirm',fullWidth:!0,variant:"outlined",margin:"normal",value:i,onChange:function(e){return s(e.target.value.trim())}})]}),Object(r.jsxs)(V.a,{children:[Object(r.jsx)(y.a,{onClick:n,children:"Close"}),Object(r.jsx)(y.a,{type:"submit",color:"secondary",disabled:"delete"!==i,children:"Delete"})]})]})})}var ce=n(6),oe=n.n(ce),ie=n(15),se=n(200),ue=n(784),le=n(78);function de(e){var t=e.open,n=e.onAdd,c=e.onClose,o=Object(a.useState)(),i=Object(j.a)(o,2),s=i[0],u=i[1],l=Object(le.b)().enqueueSnackbar;return Object(a.useEffect)((function(){Object(ie.a)(oe.a.mark((function e(){var n;return oe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=14;break}return e.prev=1,n=new se.a,e.next=5,n.init();case 5:u(n.publicKey),e.next=14;break;case 8:e.prev=8,e.t0=e.catch(1),console.log("received error when attempting to connect ledger: ".concat(e.t0)),26628===e.t0.statusCode&&l("Unlock ledger device",{variant:"error"}),u(void 0),c();case 14:case"end":return e.stop()}}),e,null,[[1,8]])})))()}),[t,c,l]),Object(r.jsxs)(ee.a,{open:t,onEnter:function(){},onClose:function(){u(void 0),c()},onSubmit:function(){u(void 0),n(s),c()},fullWidth:!0,children:[Object(r.jsx)(H.a,{children:"Add hardware wallet"}),Object(r.jsx)(J.a,{style:{paddingTop:16},children:Object(r.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:s?Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)("b",{children:"Hardware wallet detected:"}),Object(r.jsx)("div",{children:s.toString()})]}):Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)("b",{children:"Connect your ledger and open the Solana application"}),Object(r.jsx)(ue.a,{})]})})}),Object(r.jsxs)(V.a,{children:[Object(r.jsx)(y.a,{onClick:function(){u(void 0),c()},children:"Close"}),Object(r.jsx)(y.a,{type:"submit",color:"primary",disabled:!s,children:"Add"})]})]})}var be=n(209),pe=Object(v.a)((function(e){return{content:{flexGrow:1,paddingTop:e.spacing(3),paddingBottom:e.spacing(3),paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},title:{flexGrow:1},button:{marginLeft:e.spacing(1)},menuItemIcon:{minWidth:32}}}));function fe(e){var t=e.children,n=pe();return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(h.a,{position:"static",children:Object(r.jsxs)(m.a,{children:[Object(r.jsx)(O.a,{variant:"h6",className:n.title,component:"h1",children:"Solana SPL Token Wallet"}),Object(r.jsx)(me,{}),Object(r.jsx)(je,{})]})}),Object(r.jsx)("main",{className:n.content,children:t}),Object(r.jsx)(Oe,{})]})}function je(){var e,t,n=Object(x.h)(),c=n.endpoint,o=n.setEndpoint,i=Object(a.useState)(null),s=Object(j.a)(i,2),u=s[0],l=s[1],d=pe(),b=[x.b,Object(k.k)("devnet"),Object(k.k)("testnet"),"http://localhost:8899"],p=(e={},Object(f.a)(e,x.b,"Mainnet Beta"),Object(f.a)(e,Object(k.k)("devnet"),"Devnet"),Object(f.a)(e,Object(k.k)("testnet"),"Testnet"),e);return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(R.a,{xsDown:!0,children:Object(r.jsx)(y.a,{color:"inherit",onClick:function(e){return l(e.target)},className:d.button,children:null!==(t=p[c])&&void 0!==t?t:"Network"})}),Object(r.jsx)(R.a,{smUp:!0,children:Object(r.jsx)(z.a,{title:"Select Network",arrow:!0,children:Object(r.jsx)(F.a,{color:"inherit",onClick:function(e){return l(e.target)},children:Object(r.jsx)(U,{})})})}),Object(r.jsx)(g.a,{anchorEl:u,open:!!u,onClose:function(){return l(null)},anchorOrigin:{vertical:"bottom",horizontal:"right"},getContentAnchorEl:null,children:b.map((function(e){return Object(r.jsxs)(w.a,{onClick:function(){l(null),o(e)},selected:e===c,children:[Object(r.jsx)(C.a,{className:d.menuItemIcon,children:e===c?Object(r.jsx)(E.a,{fontSize:"small"}):null}),e]},e)}))})]})}function me(){var e=Object(S.g)(),t=e.accounts,n=e.setWalletSelector,c=e.addAccount,o=Object(a.useState)(null),i=Object(j.a)(o,2),s=i[0],u=i[1],l=Object(a.useState)(!1),d=Object(j.a)(l,2),b=d[0],p=d[1],f=Object(a.useState)(!1),m=Object(j.a)(f,2),h=m[0],v=m[1],x=Object(a.useState)(!1),k=Object(j.a)(x,2),A=k[0],T=k[1],N=Object(a.useState)(!1),B=Object(j.a)(N,2),M=B[0],L=B[1],U=pe();return 0===t.length?null:Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(de,{open:h,onClose:function(){return v(!1)},onAdd:function(e){c({name:"Hardware wallet",importedAccount:e.toString(),ledger:!0}),n({walletIndex:void 0,importedPubkey:e.toString(),ledger:!0})}}),Object(r.jsx)(te,{open:b,onClose:function(){return p(!1)},onAdd:function(e){var r=e.name,a=e.importedAccount;c({name:r,importedAccount:a}),n({walletIndex:a?void 0:t.length,importedPubkey:a?a.publicKey.toString():void 0,ledger:!1}),p(!1)}}),Object(r.jsx)(be.a,{open:M,onClose:function(){return L(!1)}}),Object(r.jsx)(ae,{open:A,onClose:function(){return T(!1)}}),Object(r.jsx)(R.a,{xsDown:!0,children:Object(r.jsx)(y.a,{color:"inherit",onClick:function(e){return u(e.target)},className:U.button,children:"Account"})}),Object(r.jsx)(R.a,{smUp:!0,children:Object(r.jsx)(z.a,{title:"Select Account",arrow:!0,children:Object(r.jsx)(F.a,{color:"inherit",onClick:function(e){return u(e.target)},children:Object(r.jsx)(K.a,{})})})}),Object(r.jsxs)(g.a,{anchorEl:s,open:!!s,onClose:function(){return u(null)},anchorOrigin:{vertical:"bottom",horizontal:"right"},getContentAnchorEl:null,children:[t.map((function(e){var t=e.isSelected,a=e.selector,c=e.address,o=e.name;e.label;return Object(r.jsxs)(w.a,{onClick:function(){u(null),n(a)},selected:t,component:"div",children:[Object(r.jsx)(C.a,{className:U.menuItemIcon,children:t?Object(r.jsx)(E.a,{fontSize:"small"}):null}),Object(r.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[Object(r.jsx)(O.a,{children:o}),Object(r.jsx)(O.a,{color:"textSecondary",children:c.toBase58()})]})]},c.toBase58())})),Object(r.jsx)(W.a,{}),Object(r.jsxs)(w.a,{onClick:function(){return v(!0)},children:[Object(r.jsx)(C.a,{className:U.menuItemIcon,children:Object(r.jsx)(D.a,{fontSize:"small"})}),"Import Hardware Wallet"]}),Object(r.jsxs)(w.a,{onClick:function(){u(null),p(!0)},children:[Object(r.jsx)(C.a,{className:U.menuItemIcon,children:Object(r.jsx)(I.a,{fontSize:"small"})}),"Add Account"]}),Object(r.jsxs)(w.a,{onClick:function(){u(null),L(!0)},children:[Object(r.jsx)(C.a,{className:U.menuItemIcon,children:Object(r.jsx)(G.a,{fontSize:"small"})}),"Export Mnemonic"]}),Object(r.jsxs)(w.a,{onClick:function(){u(null),T(!0)},children:[Object(r.jsx)(C.a,{className:U.menuItemIcon,children:Object(r.jsx)(P.a,{fontSize:"small"})}),"Delete Mnemonic"]})]})]})}var he=Object(v.a)((function(e){return{footer:{display:"flex",justifyContent:"flex-end",margin:e.spacing(2)}}}));function Oe(){var e=he();return Object(r.jsx)("footer",{className:e.footer,children:Object(r.jsx)(y.a,{variant:"outlined",color:"primary",component:"a",target:"_blank",rel:"noopener",href:"https://github.com/serum-foundation/spl-token-wallet",startIcon:Object(r.jsx)(_.a,{}),children:"View Source"})})}var ve=n(786),xe=n(216),ye=n(837),ge=n(79),we=n(58),ke=n(33),Se=n(69);function Ce(){var e=Object(S.d)(),t=Object(ge.d)(),n=Object(x.h)().endpoint,a=Object(S.c)(e.publicKey),c=Object(we.b)(),o=Object(j.a)(c,2),i=o[0],s=o[1],u=Object(we.a)();var l=0===(a||{}).amount,d=n===x.b;return Object(r.jsxs)("div",{style:{display:"flex"},children:[Object(r.jsx)(z.a,{title:d?"Receive some devnet SOL for free. Only enabled on the devnet":"Receive some devnet SOL for free",children:Object(r.jsx)("span",{children:Object(r.jsx)(y.a,{variant:"contained",color:"primary",onClick:function(){u(e.connection.requestAirdrop(e.publicKey,k.c),{onSuccess:function(){var t=Object(ie.a)(oe.a.mark((function t(){return oe.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Object(ke.c)(5e3);case 2:Object(x.d)(e.connection,e.publicKey);case 3:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),successMessage:"Success! Please wait up to 30 seconds for the SOL tokens to appear in your wallet."})},disabled:d,children:"Request Airdrop"})})}),Object(r.jsx)(z.a,{title:l?"Generate and receive balances in a new test token. Requires SOL balance":"Generate and receive balances in a new test token",children:Object(r.jsx)("span",{children:Object(r.jsx)(y.a,{variant:"contained",color:"primary",onClick:function(){var n=new k.a;t(n.publicKey,"Test Token ".concat(Object(ke.a)(n.publicKey)),"TEST".concat(n.publicKey.toBase58().slice(0,2))),i(Object(Se.b)({connection:e.connection,owner:e,mint:n,amount:1e3,decimals:2,initialAccount:new k.a}),{onSuccess:function(){return Object(S.b)(e)}})},disabled:s||l,style:{marginLeft:24},children:"Mint Test Token"})})})]})}function Ae(){var e=Object(x.i)();return Object(r.jsx)(ve.a,{fixed:!0,maxWidth:"md",children:Object(r.jsxs)(ye.a,{container:!0,spacing:3,children:[Object(r.jsx)(ye.a,{item:!0,xs:12,children:Object(r.jsx)(xe.b,{})}),e?null:Object(r.jsx)(ye.a,{item:!0,xs:12,children:Object(r.jsx)(Ce,{})})]})})}var Ee=n(88),Te=n(49),Ie=n(34),Ne=n(22),Pe=n.n(Ne),Be=n(39),Ke=n(45),Me=new k.e("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),De=new k.e("RVKd61ztZW9GUwhRbbLoYVRE5Xf1B2tVscKqwZqXgEr"),We={},Re=null,Fe=function(){var e=Object(ie.a)(oe.a.mark((function e(t,n,r){var a,c,o,i,s,u;return oe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(a=k.d.from(r))||void 0===a?void 0:a.instructions)&&(null===a||void 0===a?void 0:a.accountKeys)){e.next=3;break}return e.abrupt("return");case 3:c=n.publicKey,o=[],i=0;case 6:if(!(i1)){e.next=2;break}return e.abrupt("return");case 2:if(c=n.accounts,o=n.programIdIndex,i=r&&Be.MARKETS.find((function(e){return r.findIndex((function(t){return t.equals(e.address)}))>-1})),e.prev=4,l=(null===i||void 0===i?void 0:i.address)||tt(c,r,0),u=(null===i||void 0===i?void 0:i.programId)||tt([o],r,0),d=l.toBase58(),b=(new Date).getTime(),t===Re&&d in We&&b-We[d].ts<15e3){e.next=17;break}return Re=t,console.log("Loading market",d),e.next=14,Be.Market.load(t,l,{},u);case 14:e.t0=e.sent,e.t1=b,We[d]={market:e.t0,ts:e.t1};case 17:s=We[d].market,e.next=23;break;case 20:e.prev=20,e.t2=e.catch(4),console.log("Error loading market: "+e.t2.message);case 23:if(p=Object.keys(a)[0],f=a[p],"settleFunds"!==p){e.next=34;break}if(j=Qe(c,r)){e.next=31;break}return e.abrupt("return");case 31:f=Object(Ie.a)(Object(Ie.a)({},f),j);case 32:e.next=35;break;case 34:"newOrder"===p?(m=Je(c,r),f=Object(Ie.a)(Object(Ie.a)({},f),m)):"newOrderV3"===p&&(h=Ye(c,r),f=Object(Ie.a)(Object(Ie.a)({},f),h));case 35:return e.abrupt("return",{type:p,data:f,market:s,marketInfo:i});case 36:case"end":return e.stop()}}),e,null,[[4,20]])})));return function(t,n,r,a){return e.apply(this,arguments)}}(),Ge=function(e){if(e)return 1!==e.length?Object(Be.decodeTokenInstructionData)(e):1===e[0]?{initializeAccount:{}}:9===e[0]?{closeAccount:{}}:void 0},Ve=function(e,t,n){var r=t.programIdIndex,a=t.accounts,c=t.data;if(r&&a&&c){var o,i={programId:n[r],keys:a.map((function(e){return{pubkey:n[e]}})),data:Pe.a.decode(c)},s=k.g.decodeInstructionType(i);switch(s){case"Create":o=k.g.decodeCreateAccount(i);break;case"CreateWithSeed":o=k.g.decodeCreateWithSeed(i);break;case"Allocate":o=k.g.decodeAllocate(i);break;case"AllocateWithSeed":o=k.g.decodeAllocateWithSeed(i);break;case"Assign":o=k.g.decodeAssign(i);break;case"AssignWithSeed":o=k.g.decodeAssignWithSeed(i);break;case"Transfer":o=k.g.decodeTransfer(i);break;case"AdvanceNonceAccount":o=k.g.decodeNonceAdvance(i);break;case"WithdrawNonceAccount":o=k.g.decodeNonceWithdraw(i);break;case"InitializeNonceAccount":o=k.g.decodeNonceInitialize(i);break;case"AuthorizeNonceAccount":o=k.g.decodeNonceAuthorize(i);break;default:return}if(o&&(!o.fromPubkey||e.equals(o.fromPubkey)))return{type:"system"+s,data:o}}},He=function(e,t,n,r){if(n&&!(Object.keys(n).length>1)){var a=Object.keys(n)[0],c=n[a];if("initializeAccount"===a){var o=$e(e,t,r);c=Object(Ie.a)(Object(Ie.a)({},c),o)}else if("transfer"===a){var i=Ze(e,t,r);c=Object(Ie.a)(Object(Ie.a)({},c),i)}else if("closeAccount"===a){var s=et(e,t,r);c=Object(Ie.a)(Object(Ie.a)({},c),s)}return{type:a,data:c}}},Je=function(e,t){return{openOrdersPubkey:tt(e,t,Be.NEW_ORDER_OPEN_ORDERS_INDEX),ownerPubkey:tt(e,t,Be.NEW_ORDER_OWNER_INDEX)}},Ye=function(e,t){return{openOrdersPubkey:tt(e,t,Be.NEW_ORDER_V3_OPEN_ORDERS_INDEX),ownerPubkey:tt(e,t,Be.NEW_ORDER_V3_OWNER_INDEX)}},Qe=function(e,t){var n=tt(e,t,Be.SETTLE_FUNDS_BASE_WALLET_INDEX),r=tt(e,t,Be.SETTLE_FUNDS_QUOTE_WALLET_INDEX);if(n&&r)return{basePubkey:n,quotePubkey:r}},Ze=function(e,t,n){var r=tt(t,n,Be.TokenInstructions.TRANSFER_SOURCE_INDEX),a=tt(t,n,Be.TokenInstructions.TRANSFER_DESTINATION_INDEX),c=tt(t,n,Be.TokenInstructions.TRANSFER_OWNER_INDEX);if(c&&e.equals(c))return{sourcePubkey:r,destinationPubkey:a,ownerPubkey:c}},$e=function(e,t,n){var r=tt(t,n,Be.TokenInstructions.INITIALIZE_ACCOUNT_ACCOUNT_INDEX),a=tt(t,n,Be.TokenInstructions.INITIALIZE_ACCOUNT_MINT_INDEX),c=tt(t,n,Be.TokenInstructions.INITIALIZE_ACCOUNT_OWNER_INDEX);if(c&&e.equals(c))return{accountPubkey:r,mintPubkey:a,ownerPubkey:c}},et=function(e,t,n){var r=tt(t,n,Be.TokenInstructions.TRANSFER_SOURCE_INDEX),a=tt(t,n,Be.TokenInstructions.TRANSFER_DESTINATION_INDEX),c=tt(t,n,Be.TokenInstructions.TRANSFER_OWNER_INDEX);if(c&&e.equals(c))return{sourcePubkey:r,destinationPubkey:a,ownerPubkey:c}},tt=function(e,t,n){var r=e.length>n&&e[n];return(null===t||void 0===t?void 0:t.length)>r&&t[r]},nt=n(838),rt=n(842),at=n(176),ct=n(177),ot=n(178),it=n(10),st=n.n(it),ut=n(424);function lt(e){var t=e.label,n=e.value,a=e.link,c=void 0!==a&&a,o=e.onClick;return Object(r.jsxs)(O.a,{children:[t,":"," ",c?Object(r.jsx)(ut.a,{href:"#",onClick:o,children:n}):Object(r.jsx)("span",{style:{color:"#7B7B7B"},children:n})]})}function dt(e){var t,n,a,c=e.instruction,o=e.onOpenAddress,i=e.v3,s=void 0!==i&&i,u=Object(S.d)(),l=c.data,d=c.market,b=c.marketInfo,p=b&&(null===b||void 0===b?void 0:b.name)+((null===b||void 0===b?void 0:b.deprecated)?" (deprecated)":"")||(null===d||void 0===d||null===(t=d._decoded)||void 0===t||null===(n=t.ownAddress)||void 0===n?void 0:n.toBase58())||"Unknown",f=l.side,j=l.limitPrice,m=l.orderType,h=l.ownerPubkey,v=s?l.maxBaseQuantity:l.maxQuantity;return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:"Place an order"}),Object(r.jsx)(lt,{label:"Market",value:p,link:!0,onClick:function(){var e,t;return o(null===(e=(null===b||void 0===b?void 0:b.address)||(null===d||void 0===d||null===(t=d._decoded)||void 0===t?void 0:t.ownAddress))||void 0===e?void 0:e.toBase58())}}),Object(r.jsx)(lt,{label:"Side",value:f.charAt(0).toUpperCase()+f.slice(1)}),Object(r.jsx)(lt,{label:"Price",value:(null===d||void 0===d?void 0:d.priceLotsToNumber(j))||""+j}),Object(r.jsx)(lt,{label:"Quantity",value:(null===d||void 0===d?void 0:d.baseSizeLotsToNumber(v))||""+v}),Object(r.jsx)(lt,{label:"Type",value:m.charAt(0).toUpperCase()+m.slice(1)}),Object(r.jsx)(lt,{label:"Owner",link:h,value:h?(a=h,u.publicKey.equals(a)?"This wallet":(null===a||void 0===a?void 0:a.toBase58())||"Unknown"):h,onOpenAddress:function(){return h&&o(null===h||void 0===h?void 0:h.toBase58())}})]})}function bt(e){var t=e.instruction;return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:"Unknown instruction:"}),Object(r.jsx)(O.a,{style:{wordBreak:"break-all"},children:null===t||void 0===t?void 0:t.rawData})]})}var pt=n(413),ft=n.n(pt),jt={systemCreate:"Create account",systemTransfer:"Transfer SOL"},mt={toPubkey:{label:"To",address:!0},accountPubkey:{label:"Account",address:!0},basePubkey:{label:"Base",address:!0},seed:{label:"Seed",address:!1},noncePubkey:{label:"Nonce",address:!0},authorizedPubkey:{label:"Authorized",address:!0},newAuthorizedPubkey:{label:"New authorized",address:!0},newAccountPubkey:{label:"New account",address:!0},amount:{label:"Amount",address:!1},lamports:{label:"Lamports",address:!1}};function ht(e){var t=e.instruction,n=e.onOpenAddress,a=t.type,c=t.data;return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:jt[a]}),c&&Object.entries(c).map((function(e){var t=Object(j.a)(e,2),a=t[0],c=t[1],o=mt[a];if(!o)return null;var i=o.label,s=o.address;return Object(r.jsx)(lt,{label:i+"",value:s?null===c||void 0===c?void 0:c.toBase58():c,link:s,onClick:function(){return s&&n(null===c||void 0===c?void 0:c.toBase58())}},a)}))]})}var Ot={cancelOrder:"Cancel order",newOrder:"Place order",settleFunds:"Settle funds",matchOrders:"Match orders"},vt={side:{label:"Side",address:!1},orderId:{label:"Order Id",address:!1},limit:{label:"Limit",address:!1},basePubkey:{label:"Base wallet",address:!0},quotePubkey:{label:"Quote wallet",address:!0}};function xt(e){var t,n,a=e.instruction,c=e.onOpenAddress,o=Object(S.d)(),i=Object(S.f)(),s=Object(j.a)(i,1)[0],u=a.type,l=a.data,d=a.market,b=a.marketInfo,p=b&&(null===b||void 0===b?void 0:b.name)+((null===b||void 0===b?void 0:b.deprecated)?" (deprecated)":"")||(null===d||void 0===d||null===(t=d._decoded)||void 0===t||null===(n=t.ownAddress)||void 0===n?void 0:n.toBase58())||"Unknown",f=function(e){var t=s.some((function(t){return t.equals(e)}));return o.publicKey.equals(e)?"This wallet":(t?"(Owned) ":"")+(null===e||void 0===e?void 0:e.toBase58())};return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:Ot[u]}),Object(r.jsx)(lt,{label:"Market",value:p,link:!0,onClick:function(){var e,t;return c(null===(e=(null===b||void 0===b?void 0:b.address)||(null===d||void 0===d||null===(t=d._decoded)||void 0===t?void 0:t.ownAddress))||void 0===e?void 0:e.toBase58())}}),l&&Object.entries(l).map((function(e){var t=Object(j.a)(e,2),n=t[0],a=t[1],o=vt[n];if(!o)return null;var i=o.label,s=o.address;return Object(r.jsx)(lt,{label:i+"",value:s?f(a):a+"",link:s,onClick:function(){return s&&c(null===a||void 0===a?void 0:a.toBase58())}},n)}))]})}var yt={initializeMint:"Initialize mint",initializeAccount:"Initialize account",transfer:"Transfer",approve:"Approve",mintTo:"Mint to",closeAccount:"Close account"},gt={amount:{label:"Amount",address:!1},accountPubkey:{label:"Account",address:!0},mintPubkey:{label:"Mint",address:!0},sourcePubkey:{label:"Source",address:!0},destinationPubkey:{label:"Destination",address:!0},ownerPubkey:{label:"Owner",address:!0}};function wt(e){var t=e.instruction,n=e.onOpenAddress,a=Object(S.d)(),c=Object(S.f)(),o=Object(j.a)(c,1)[0],i=t.type,s=t.data,u=function(e){var t=Be.TOKEN_MINTS.find((function(t){return t.address.equals(e)})),n=o.some((function(t){return t.equals(e)})),r=a.publicKey.equals(e);return t?t.name:r?"This wallet":(n?"(Owned) ":"")+(null===e||void 0===e?void 0:e.toBase58())};return Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:yt[i]}),s&&Object.entries(s).map((function(e){var t=Object(j.a)(e,2),a=t[0],c=t[1],o=gt[a];if(!o)return null;var i=o.label,s=o.address;return Object(r.jsx)(lt,{label:i+"",value:s?u(c):c,link:s,onClick:function(){return s&&n(null===c||void 0===c?void 0:c.toBase58())}},a)}))]})}function kt(e){var t=e.opener,n=Object(S.d)(),c=Object(a.useMemo)((function(){return new URLSearchParams(window.location.hash.slice(1)).get("origin")}),[]),o=Object(a.useCallback)((function(e){t.postMessage(Object(Ie.a)({jsonrpc:"2.0"},e),c)}),[t,c]),i=Object(a.useState)(null),s=Object(j.a)(i,2),u=s[0],l=s[1],d=!!u,b=Object(a.useState)([]),p=Object(j.a)(b,2),f=p[0],m=p[1],h=Object(a.useState)(!1),v=Object(j.a)(h,2),x=v[0],y=v[1];if(Object(a.useEffect)((function(){if(d){var e=function(){o({method:"disconnected"})};return window.addEventListener("beforeunload",e),function(){e(),window.removeEventListener("beforeunload",e)}}}),[d,o]),Object(a.useEffect)((function(){u&&!u.equals(n.publicKey)&&l(null)}),[u,n]),Object(a.useEffect)((function(){function e(e){e.origin===c&&e.source===window.opener&&("signTransaction"!==e.data.method&&"signAllTransactions"!==e.data.method&&o({error:"Unsupported method",id:e.data.id}),m((function(t){return[].concat(Object(Te.a)(t),[e.data])})))}return window.addEventListener("message",e),function(){return window.removeEventListener("message",e)}}),[c,o]),!u||!u.equals(n.publicKey)){return Object(r.jsx)(At,{origin:c,onApprove:function(e){l(n.publicKey),o({method:"connected",params:{publicKey:n.publicKey.toBase58(),autoApprove:e}}),y(e),St()}})}if(f.length>0){var g=function(){var e=Object(ie.a)(oe.a.mark((function e(){return oe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:m((function(e){return e.slice(1)})),"signTransaction"===C.method?w(A[0]):k(A),1===f.length&&St();case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),w=function(){var e=Object(ie.a)(oe.a.mark((function e(t){return oe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=o,e.next=3,n.createSignature(t);case 3:e.t1=e.sent,e.t2=n.publicKey.toBase58(),e.t3={signature:e.t1,publicKey:e.t2},e.t4=C.id,e.t5={result:e.t3,id:e.t4},(0,e.t0)(e.t5);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),k=function(){var e=Object(ie.a)(oe.a.mark((function e(t){var r;return oe.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map((function(e){return n.createSignature(e)})));case 2:r=e.sent,o({result:{signatures:r,publicKey:n.publicKey.toBase58()},id:C.id});case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),C=f[0];st()("signTransaction"===C.method||"signAllTransactions"===C.method);var A="signTransaction"===C.method?[Pe.a.decode(C.params.message)]:C.params.messages.map((function(e){return Pe.a.decode(e)}));return Object(r.jsx)(Tt,{autoApprove:x,origin:c,messages:A,onApprove:g,onReject:function(){m((function(e){return e.slice(1)})),o({error:"Transaction cancelled",id:C.id}),1===f.length&&St()}},C.id)}return Object(r.jsx)(O.a,{children:"Please keep this window open in the background."})}function St(){window.open("","parent")}var Ct=Object(v.a)((function(e){return{connection:{marginTop:e.spacing(3),marginBottom:e.spacing(3),textAlign:"center"},transaction:{wordBreak:"break-all"},approveButton:{backgroundColor:"#43a047",color:"white"},actions:{justifyContent:"space-between"},snackbarRoot:{backgroundColor:e.palette.background.paper},warningMessage:{margin:e.spacing(1),color:e.palette.text.primary},warningIcon:{marginRight:e.spacing(1),fontSize:24},warningTitle:{color:e.palette.warning.light,fontWeight:600,fontSize:16,alignItems:"center",display:"flex"},warningContainer:{marginTop:e.spacing(1)},divider:{marginTop:e.spacing(2),marginBottom:e.spacing(2)}}}));function At(e){var t=e.origin,n=e.onApprove,c=Object(S.d)(),o=Ct(),i=Object(a.useState)(!1),s=Object(j.a)(i,2),u=s[0],l=s[1],d=Object(ke.f)("dismissedAutoApproveWarning",!1),b=Object(j.a)(d,2),p=b[0],f=b[1];return Object(r.jsxs)(at.a,{children:[Object(r.jsxs)(ct.a,{children:[Object(r.jsx)(O.a,{variant:"h6",component:"h1",gutterBottom:!0,children:"Allow this site to access your Solana account?"}),Object(r.jsxs)("div",{className:o.connection,children:[Object(r.jsx)(O.a,{children:t}),Object(r.jsx)(G.a,{fontSize:"large"}),Object(r.jsx)(O.a,{children:c.publicKey.toBase58()})]}),Object(r.jsx)(O.a,{children:"Only connect with sites you trust."}),Object(r.jsx)(W.a,{className:o.divider}),Object(r.jsx)(Q.a,{control:Object(r.jsx)($.a,{checked:u,onChange:function(){return l(!u)},color:"primary"}),label:"Automatically approve transactions from ".concat(t)}),!p&&u&&Object(r.jsx)(nt.a,{className:o.warningContainer,message:Object(r.jsxs)("div",{children:[Object(r.jsxs)("span",{className:o.warningTitle,children:[Object(r.jsx)(ft.a,{className:o.warningIcon}),"Use at your own risk."]}),Object(r.jsx)(O.a,{className:o.warningMessage,children:"This setting allows sending some transactions on your behalf without requesting your permission for the remainder of this session."})]}),action:[Object(r.jsx)(y.a,{onClick:function(){return f("1")},children:"I understand"})],classes:{root:o.snackbarRoot}})]}),Object(r.jsxs)(ot.a,{className:o.actions,children:[Object(r.jsx)(y.a,{onClick:window.close,children:"Cancel"}),Object(r.jsx)(y.a,{color:"primary",onClick:function(){return n(u)},disabled:!p&&u,children:"Connect"})]})]})}function Et(e,t,n){var r=!1,a={CREATED:0,OWNED:1,CLOSED_TO_OWNED_DESTINATION:2},c={};function o(t){return!!t&&(!!(null===e||void 0===e?void 0:e.some((function(e){return e.equals(t)})))||c[t.toBase58()]===a.OWNED)}return n.forEach((function(e){e.forEach((function(e){if(e)if("raydium"===e.type);else if(["cancelOrder","matchOrders","cancelOrderV3"].includes(e.type));else if("systemCreate"===e.type){var n=e.data.newAccountPubkey;n?c[n.toBase58()]=a.CREATED:r=!0}else if(["newOrder","newOrderV3"].includes(e.type)){var i=e.data,s=i.openOrdersPubkey,u=i.ownerPubkey;u&&t.equals(u)?c[s.toBase58()]=a.OWNED:r=!0}else if("initializeAccount"===e.type){var l=e.data,d=l.ownerPubkey,b=l.accountPubkey;t&&d&&t.equals(d)&&b&&c[b.toBase58()]===a.CREATED?c[b.toBase58()]=a.OWNED:r=!0}else if("settleFunds"===e.type){var p=e.data,f=p.basePubkey,j=p.quotePubkey;o(f)&&o(j)||(r=!0)}else if("closeAccount"===e.type){var m=e.data,h=m.sourcePubkey;o(m.destinationPubkey)?c[h.toBase58()]=a.CLOSED_TO_OWNED_DESTINATION:r=!0}else r=!0;else r=!0}))})),Object.values(c).some((function(e){return![a.CLOSED_TO_OWNED_DESTINATION,a.OWNED].includes(e)}))&&(r=!0),!r}function Tt(e){var t=e.origin,n=e.messages,c=e.onApprove,o=e.onReject,i=e.autoApprove,s=Ct(),u=Object(x.j)(),l=Object(x.g)(),d=Object(S.d)(),b=Object(S.f)(),p=Object(j.a)(b,1)[0],f=Object(a.useState)(!0),m=Object(j.a)(f,2),h=m[0],v=m[1],g=Object(a.useState)(null),w=Object(j.a)(g,2),k=w[0],C=w[1],A=Object(a.useRef)(),E=n.length>1;Object(a.useEffect)((function(){Promise.all(n.map((function(e){return Fe(l,d,e)}))).then((function(e){C(e),v(!1)}))}),[n,l,d]);var T=Object(a.useMemo)((function(){return{safe:p&&k&&Et(p,d.publicKey,k)}}),[p,k,d]);Object(a.useEffect)((function(){T.safe&&i?(console.log("Auto approving safe transaction"),c()):(window.focus(),A.current&&(A.current.scrollIntoView({behavior:"smooth"}),setTimeout((function(){return A.current.focus()}),50)))}),[T,i,A]);var I=function(e){e&&window.open("https://explorer.solana.com/address/"+e+u,"_blank")},N=function(e){switch(null===e||void 0===e?void 0:e.type){case"cancelOrder":case"cancelOrderV2":case"matchOrders":case"settleFunds":return Object(r.jsx)(xt,{instruction:e,onOpenAddress:I});case"closeAccount":case"initializeAccount":case"transfer":case"approve":case"mintTo":return Object(r.jsx)(wt,{instruction:e,onOpenAddress:I});case"systemCreate":case"systemTransfer":return Object(r.jsx)(ht,{instruction:e,onOpenAddress:I});case"newOrder":return Object(r.jsx)(dt,{instruction:e,onOpenAddress:I});case"newOrderV3":return Object(r.jsx)(dt,{instruction:e,onOpenAddress:I,v3:!0});default:return Object(r.jsx)(bt,{instruction:e})}};return Object(r.jsxs)(at.a,{children:[Object(r.jsx)(ct.a,{children:h?Object(r.jsxs)(r.Fragment,{children:[Object(r.jsxs)("div",{style:{display:"flex",alignItems:"flex-end",marginBottom:20},children:[Object(r.jsx)(ue.a,{style:{marginRight:20}}),Object(r.jsxs)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:["Parsing transaction",E>0?"s":"",":"]})]}),n.map((function(e,t){return Object(r.jsx)(O.a,{style:{wordBreak:"break-all"},children:Pe.a.encode(e)},t)}))]}):Object(r.jsxs)(r.Fragment,{children:[Object(r.jsx)(O.a,{variant:"h6",gutterBottom:!0,children:k?"".concat(t," wants to:"):"Unknown transaction data"}),k?k.map((function(e,t){return function(e,t){var n,a=e.map((function(e,t){return Object(r.jsxs)(rt.a,{style:{marginTop:20},children:[N(e),Object(r.jsx)(W.a,{style:{marginTop:20}})]},t)}));return E?Object(r.jsxs)(rt.a,{style:{marginTop:20},children:[(n=t,Object(r.jsxs)(r.Fragment,{children:[Object(r.jsxs)(O.a,{variant:"h6",gutterBottom:!0,children:["Transaction ",n.toString()]}),Object(r.jsx)(W.a,{style:{marginTop:20}})]})),a]},t):a}(e,t)})):Object(r.jsxs)(r.Fragment,{children:[Object(r.jsxs)(O.a,{variant:"subtitle1",style:{fontWeight:"bold"},gutterBottom:!0,children:["Unknown transaction",E>0?"s":"",":"]}),n.map((function(e){return Object(r.jsx)(O.a,{style:{wordBreak:"break-all"},children:Pe.a.encode(e)})}))]})]})}),Object(r.jsxs)(ot.a,{className:s.actions,children:[Object(r.jsx)(y.a,{onClick:o,children:"Cancel"}),Object(r.jsxs)(y.a,{ref:A,className:s.approveButton,variant:"contained",color:"primary",onClick:c,children:["Approve",E?" All":""]})]})]})}var It=n(414);function Nt(){var e=Object(u.a)("(prefers-color-scheme: dark)"),t=c.a.useMemo((function(){return Object(l.a)({palette:{type:e?"dark":"light",primary:p.a}})}),[e]);return window.self!==window.top?null:Object(r.jsx)(a.Suspense,{fallback:Object(r.jsx)(Ee.a,{}),children:Object(r.jsxs)(d.a,{theme:t,children:[Object(r.jsx)(s.a,{}),Object(r.jsx)(x.a,{children:Object(r.jsx)(le.a,{maxSnack:5,autoHideDuration:8e3,children:Object(r.jsx)(S.a,{children:Object(r.jsx)(fe,{children:Object(r.jsx)(a.Suspense,{fallback:Object(r.jsx)(Ee.a,{}),children:Object(r.jsx)(Pt,{})})})})})})]})})}function Pt(){return Object(S.d)()?window.opener?Object(r.jsx)(kt,{opener:window.opener}):Object(r.jsx)(Ae,{}):Object(r.jsx)(It.a,{})}Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));i.a.render(Object(r.jsx)(c.a.StrictMode,{children:Object(r.jsx)(Nt,{})}),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))},79:function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"c",(function(){return p})),n.d(t,"b",(function(){return f})),n.d(t,"d",(function(){return j}));var r,a=n(120),c=n(74),o=n.n(c),i=n(24),s=n(33),u=n(0),l=Object(a.a)({},i.b,[{mintAddress:"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt",tokenName:"Serum",tokenSymbol:"SRM",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x476c5E26a75bd202a9683ffD34359C0CC15be0fF/logo.png"},{mintAddress:"MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L",tokenName:"MegaSerum",tokenSymbol:"MSRM",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x476c5E26a75bd202a9683ffD34359C0CC15be0fF/logo.png"},{tokenSymbol:"BTC",mintAddress:"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E",tokenName:"Wrapped Bitcoin",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoin/info/logo.png"},{tokenSymbol:"ETH",mintAddress:"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk",tokenName:"Wrapped Ethereum",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"},{tokenSymbol:"FTT",mintAddress:"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3",tokenName:"Wrapped FTT",icon:"https://raw.githubusercontent.com/trustwallet/assets/f3ffd0b9ae2165336279ce2f8db1981a55ce30f8/blockchains/ethereum/assets/0x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9/logo.png"},{tokenSymbol:"YFI",mintAddress:"3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB",tokenName:"Wrapped YFI",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e/logo.png"},{tokenSymbol:"LINK",mintAddress:"CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG",tokenName:"Wrapped Chainlink",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x514910771AF9Ca656af840dff83E8264EcF986CA/logo.png"},{tokenSymbol:"XRP",mintAddress:"Ga2AXHpfAF6mv2ekZwcsJFqu7wB4NV331qNH7fW9Nst8",tokenName:"Wrapped XRP",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ripple/info/logo.png"},{tokenSymbol:"USDT",mintAddress:"BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4",tokenName:"Wrapped USDT",icon:"https://raw.githubusercontent.com/trustwallet/assets/f3ffd0b9ae2165336279ce2f8db1981a55ce30f8/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png"},{tokenSymbol:"USDC",mintAddress:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",tokenName:"USD Coin",icon:"https://raw.githubusercontent.com/trustwallet/assets/f3ffd0b9ae2165336279ce2f8db1981a55ce30f8/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"},{tokenSymbol:"WUSDC",mintAddress:"BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW",tokenName:"Wrapped USDC",icon:"https://raw.githubusercontent.com/trustwallet/assets/f3ffd0b9ae2165336279ce2f8db1981a55ce30f8/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",deprecated:!0},{tokenSymbol:"SUSHI",mintAddress:"AR1Mtgh7zAtxuxGd2XPovXPVjcSdY3i4rQYisNadjfKy",tokenName:"Wrapped SUSHI",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B3595068778DD592e39A122f4f5a5cF09C90fE2/logo.png"},{tokenSymbol:"ALEPH",mintAddress:"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K",tokenName:"Wrapped ALEPH",icon:"https://raw.githubusercontent.com/trustwallet/assets/6996a371cd02f516506a8f092eeb29888501447c/blockchains/nuls/assets/NULSd6HgyZkiqLnBzTaeSQfx1TNg2cqbzq51h/logo.png"},{tokenSymbol:"SXP",mintAddress:"SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX",tokenName:"Wrapped SXP",icon:"https://github.com/trustwallet/assets/raw/b0ab88654fe64848da80d982945e4db06e197d4f/blockchains/ethereum/assets/0x8CE9137d39326AD0cD6491fb5CC0CbA0e089b6A9/logo.png"},{tokenSymbol:"HGET",mintAddress:"BtZQfWqDGbk9Wf2rXEiWyQBdBY1etnUUn6zEphvVS7yN",tokenName:"Wrapped HGET"},{tokenSymbol:"CREAM",mintAddress:"5Fu5UUgbjpUvdBveb3a1JTNirL8rXtiYeSMWvKjtUNQv",tokenName:"Wrapped CREAM",icon:"https://raw.githubusercontent.com/trustwallet/assets/4c82c2a409f18a4dd96a504f967a55a8fe47026d/blockchains/smartchain/assets/0xd4CB328A82bDf5f03eB737f37Fa6B370aef3e888/logo.png"},{tokenSymbol:"UBXT",mintAddress:"873KLxCbz7s9Kc4ZzgYRtNmhfkQrhfyWGZJBmyCbC3ei",tokenName:"Wrapped UBXT"},{tokenSymbol:"HNT",mintAddress:"HqB7uswoVg4suaQiDP3wjxob1G5WdZ144zhdStwMCq7e",tokenName:"Wrapped HNT"},{tokenSymbol:"FRONT",mintAddress:"9S4t2NEAiJVMvPdRYKVrfJpBafPBLtvbvyS3DecojQHw",tokenName:"Wrapped FRONT",icon:"https://raw.githubusercontent.com/trustwallet/assets/6e375e4e5fb0ffe09ed001bae1ef8ca1d6c86034/blockchains/ethereum/assets/0xf8C3527CC04340b208C854E985240c02F7B7793f/logo.png"},{tokenSymbol:"AKRO",mintAddress:"6WNVCuxCGJzNjmMZoKyhZJwvJ5tYpsLyAtagzYASqBoF",tokenName:"Wrapped AKRO",icon:"https://raw.githubusercontent.com/trustwallet/assets/878dcab0fab90e6593bcb9b7d941be4915f287dc/blockchains/ethereum/assets/0xb2734a4Cec32C81FDE26B0024Ad3ceB8C9b34037/logo.png"},{tokenSymbol:"HXRO",mintAddress:"DJafV9qemGp7mLMEn5wrfqaFwxsbLgUsGVS16zKRk9kc",tokenName:"Wrapped HXRO"},{tokenSymbol:"UNI",mintAddress:"DEhAasscXF4kEGxFgJ3bq4PpVGp5wyUxMRvn6TzGVHaw",tokenName:"Wrapped UNI",icon:"https://raw.githubusercontent.com/trustwallet/assets/08d734b5e6ec95227dc50efef3a9cdfea4c398a1/blockchains/ethereum/assets/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/logo.png"},{tokenSymbol:"MATH",mintAddress:"GeDS162t9yGJuLEHPWXXGrb1zwkzinCgRwnT8vHYjKza",tokenName:"Wrapped MATH"},{tokenSymbol:"TOMO",mintAddress:"GXMvfY2jpQctDqZ9RoU3oWPhufKiCcFEfchvYumtX7jd",tokenName:"Wrapped TOMO",icon:"https://raw.githubusercontent.com/trustwallet/assets/08d734b5e6ec95227dc50efef3a9cdfea4c398a1/blockchains/tomochain/info/logo.png"},{tokenSymbol:"LUA",mintAddress:"EqWCKXfs3x47uVosDpTRgFniThL9Y8iCztJaapxbEaVX",tokenName:"Wrapped LUA",icon:"https://raw.githubusercontent.com/trustwallet/assets/2d2491130e6beda208ba4fc6df028a82a0106ab6/blockchains/ethereum/assets/0xB1f66997A5760428D3a87D68b90BfE0aE64121cC/logo.png"},{tokenSymbol:"FIDA",mintAddress:"EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp",tokenName:"Bonfida Token",icon:"https://raw.githubusercontent.com/dr497/awesome-serum-markets/master/icons/fida.svg"},{tokenSymbol:"LQID",mintAddress:"A6aY2ceogBz1VaXBxm1j2eJuNZMRqrWUAnKecrMH85zj",tokenName:"LQID",icon:"https://raw.githubusercontent.com/dr497/awesome-serum-markets/master/icons/lqid.svg"},{tokenSymbol:"SECO",mintAddress:"7CnFGR9mZWyAtWxPcVuTewpyC3A3MDW4nLsu5NY6PDbd",tokenName:"Serum Ecosystem Pool Token"},{tokenSymbol:"HOLY",mintAddress:"3GECTP7H4Tww3w8jEPJCJtXUtXxiZty31S9szs84CcwQ",tokenName:"Holy Trinity Pool"},{tokenSymbol:"KIN",mintAddress:"kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6",tokenName:"KIN",icon:"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/kin/info/logo.png"},{tokenSymbol:"MAPS",mintAddress:"MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb",tokenName:"Maps.me Token"},{tokenSymbol:"RAY",mintAddress:"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R",tokenName:"Raydium",icon:"https://raw.githubusercontent.com/raydium-io/media-assets/master/logo.svg"},{tokenSymbol:"RAY-USDT",mintAddress:"CzPDyvotTcxNqtPne32yUiEVQ6jk42HZi1Y3hUu7qf7f",tokenName:"Raydium USDT Liquidity Pool",icon:"https://raw.githubusercontent.com/raydium-io/media-assets/master/logo.svg"},{tokenSymbol:"RAY-USDC",mintAddress:"FgmBnsF5Qrnv8X9bomQfEtQTQjNNiBCWRKGpzPnE5BDg",tokenName:"Raydium USDC Liquidity Pool",icon:"https://raw.githubusercontent.com/raydium-io/media-assets/master/logo.svg"},{tokenSymbol:"RAY-SRM",mintAddress:"5QXBMXuCL7zfAk39jEVVEvcrz1AvBGgT9wAhLLHLyyUJ",tokenName:"Raydium Serum Liquidity Pool",icon:"https://raw.githubusercontent.com/raydium-io/media-assets/master/logo.svg"}]),d=JSON.parse(null!==(r=localStorage.getItem("tokenNames"))&&void 0!==r?r:"{}"),b=new o.a;function p(e){var t=Object(i.h)().endpoint;return Object(s.e)(b,"update"),f(e,t)}function f(e,t){var n,r,a,c;if(!e)return{name:null,symbol:null};var o=null===d||void 0===d||null===(n=d[t])||void 0===n?void 0:n[e.toBase58()],i=null===l||void 0===l||null===(r=l[t])||void 0===r?void 0:r.find((function(t){return t.mintAddress===e.toBase58()}));return!i||o&&!i.deprecated||(o={name:i.tokenName,symbol:i.tokenSymbol}),{name:null===(a=o)||void 0===a?void 0:a.name,symbol:null===(c=o)||void 0===c?void 0:c.symbol}}function j(){var e=Object(i.h)().endpoint;return Object(u.useCallback)((function(t,n,r){if(!n||!r)if(n)r=n;else{if(!r)return;n=r}d[e]||(d[e]={}),d[e][t.toBase58()]={name:n,symbol:r},localStorage.setItem("tokenNames",JSON.stringify(d)),b.emit("update")}),[e])}b.setMaxListeners(100)},88:function(e,t,n){"use strict";n.d(t,"a",(function(){return b}));var r=n(34),a=n(1),c=n(9),o=n(217),i=n(0),s=n(784),u=n(33),l=n(780),d=Object(l.a)((function(e){return{root:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",height:"100%",padding:e.spacing(2)}}}));function b(e){var t=e.height,n=void 0===t?null:t,l=e.delay,b=void 0===l?500:l,p=Object(o.a)(e,["height","delay"]),f=d(),j=Object(i.useState)(!1),m=Object(c.a)(j,2),h=m[0],O=m[1];Object(u.d)((function(){return O(!0)}),b);var v={};return n&&(v.height=n),h?Object(a.jsx)("div",Object(r.a)(Object(r.a)({className:f.root,style:v},p),{},{children:Object(a.jsx)(s.a,{})})):n?Object(a.jsx)("div",{style:v}):null}},89:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return h})),n.d(t,"c",(function(){return O})),n.d(t,"b",(function(){return x}));var r=n(49),a=n(6),c=n.n(a),o=n(15),i=n(19),s=n(20),u=n(63),l=n(199),d=n(42),b=n.n(d),p=n(17),f=n(22),j=n.n(f),m=n(270),h={deprecated:void 0,bip44:"bip44",bip44Change:"bip44Change"};function O(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=v(e,t,n,r);return new p.a(b.a.sign.keyPair.fromSeed(a).secretKey)}function v(e,t,n,r){switch(n){case h.deprecated:var a="m/501'/".concat(t,"'/0/").concat(r);return l.fromSeed(e).derivePath(a).privateKey;case h.bip44:var c="m/44'/501'/".concat(t,"'");return Object(m.derivePath)(c,e).key;case h.bip44Change:var o="m/44'/501'/".concat(t,"'/0'");return Object(m.derivePath)(o,e).key;default:throw new Error("invalid derivation path: ".concat(n))}}var x=function(){function t(n){var a=this;Object(i.a)(this,t),this.init=Object(o.a)(c.a.mark((function e(){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a);case 1:case"end":return e.stop()}}),e)}))),this.signTransaction=function(){var e=Object(o.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.partialSign(a.account),e.abrupt("return",t);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),this.createSignature=function(e){return j.a.encode(b.a.sign.detached(e,a.account.secretKey))};var s=Object(u.c)().seed;this.account=n.account,this.listAddresses=function(){var t=Object(o.a)(c.a.mark((function t(n){var a;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=e.from(s,"hex"),t.abrupt("return",Object(r.a)(Array(n).keys()).map((function(e){return{index:e,address:O(a,e).publicKey,name:localStorage.getItem("name".concat(e))}})));case 2:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}return Object(s.a)(t,[{key:"publicKey",get:function(){return this.account.publicKey}}]),t}()}).call(this,n(18).Buffer)}},[[777,1,2]]]); +//# sourceMappingURL=main.178c7d0d.chunk.js.map \ No newline at end of file diff --git a/static/js/main.178c7d0d.chunk.js.map b/static/js/main.178c7d0d.chunk.js.map new file mode 100644 index 00000000..431a90ae --- /dev/null +++ b/static/js/main.178c7d0d.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils/walletProvider/ledger-core.js","utils/walletProvider/ledger.js","components/ExportAccountDialog.js","components/CopyableDisplay.js","components/TokenInfoDialog.js","utils/config.js","utils/swap/api.js","components/TokenIcon.js","components/AddTokenDialog.js","utils/swap/eth.js","utils/markets.ts","components/EthFeeEstimate.tsx","components/SendDialog.js","components/DepositDialog.js","components/CloseTokenAccountButton.js","components/EditAccountNameDialog.js","components/MergeAccountsDialog.js","components/BalancesList.js","utils/connection.tsx","utils/wallet.js","utils/utils.ts","utils/walletProvider/factory.js","pages/LoginPage.js","utils/tokens/instructions.js","utils/fetch-loop.ts","components/DialogForm.js","utils/tokens/data.js","utils/notifications.js","utils/wallet-seed.js","utils/tokens/index.js","components/SolanaIcon.js","components/AddAccountDialog.js","components/DeleteMnemonicDialog.js","components/AddHarwareWalletDialog.js","components/NavigationFrame.js","components/DebugButtons.js","pages/WalletPage.js","utils/transactions.js","components/instructions/LabelValue.js","components/instructions/NewOrder.js","components/instructions/UnknownInstruction.js","components/instructions/SystemInstruction.js","components/instructions/DexInstruction.js","components/instructions/TokenInstruction.js","pages/PopupPage.js","App.js","serviceWorker.js","index.js","utils/tokens/names.js","components/LoadingIndicator.js","utils/walletProvider/localStorage.js"],"names":["bs58","require","MAX_PAYLOAD","LEDGER_CLA","solana_send","transport","instruction","p1","payload","a","p2","payload_offset","length","buf","slice","console","log","toString","send","Error","reply","_harden","n","solana_derivation_path","account","change","useAccount","useChange","derivation_path","Buffer","alloc","offset","writeUInt8","writeUInt32BE","solana_ledger_get_pubkey","solana_ledger_sign_transaction","transaction","msg_bytes","serializeMessage","solana_ledger_sign_bytes","num_paths","concat","getPublicKey","path","from_derivation_path","from_pubkey_bytes","from_pubkey_string","encode","PublicKey","LedgerWalletProvider","args","init","TransportWebUsb","create","pubKey","on","onDisconnect","listAddresses","walletCount","this","signTransaction","sig_bytes","addSignature","publicKey","createSignature","message","ExportAccountDialog","open","onClose","wallet","useWallet","useState","isHidden","setIsHidden","keyOutput","Array","from","provider","secretKey","fullWidth","label","type","variant","margin","value","control","checked","onChange","onClick","ExportMnemonicDialog","mnemKey","getUnlockedMnemonicAndSeed","mnemonic","useStyles","makeStyles","theme","root","display","marginTop","spacing","marginBottom","alignItems","CopyableDisplay","autoFocus","qrCode","helperText","enqueueSnackbar","useSnackbar","textareaRef","useRef","classes","className","TextField","inputRef","ref","current","multiline","readOnly","onFocus","e","currentTarget","select","textArea","spellCheck","IconButton","document","execCommand","autoHideDuration","useQrCodeStyles","qrcodeContainer","flexDirection","Qrcode","React","showQrcode","setShowQrcode","Dialog","DialogContent","size","includeMargin","explorerLink","warning","container","minWidth","TokenInfoDialog","balanceInfo","mint","tokenName","tokenSymbol","urlSuffix","useSolanaExplorerUrlSuffix","DialogForm","DialogTitle","abbreviateAddress","Typography","Link","href","toBase58","target","rel","showTokenInfoDialog","localStorage","getItem","SwapApiError","msg","status","name","swapApiRequest","method","body","ignoreUserErrors","params","headers","cache","JSON","stringify","fetch","resp","handleSwapApiResponse","json","success","error","result","useSwapApiGet","options","useAsyncData","undefined","TokenIcon","url","endpoint","useConnectionConfig","hasError","setHasError","TOKENS","find","token","mintAddress","icon","src","title","alt","style","width","height","backgroundColor","borderRadius","onError","feeFormat","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","tabs","borderBottom","palette","background","paper","AddTokenDialog","tokenAccountCost","updateTokenName","useUpdateTokenName","useSendTransaction","sendTransaction","sending","popularTokens","useWalletTokenAccounts","walletAccounts","tab","setTab","setMintAddress","setTokenName","setTokenSymbol","erc20Address","setErc20Address","onSubmit","addToken","onSuccess","refreshWalletPublicKeys","tokenInfo","splMint","ticker","blockchain","createAssociatedTokenAccount","useEffect","valid","startsWith","DialogContentText","format","LAMPORTS_PER_SOL","LoadingIndicator","Tabs","textColor","indicatorColor","Tab","List","disablePadding","filter","deprecated","map","TokenListItem","existingAccount","parsed","disalbed","trim","disabled","Fragment","DialogActions","Button","color","setOpen","alreadyExists","ListItem","button","ListItemIcon","ListItemText","primary","Collapse","in","timeout","unmountOnExit","web3","Web3","window","ethereum","SUGGESTED_GAS_LIMIT","useEthAccount","setAccount","accounts","request","then","removeListener","getErc20Balance","parseInt","eth","getBalance","erc20","Contract","ERC20_ABI","Promise","all","methods","balanceOf","call","decimals","swapAddress","ethAccount","estimateEthSwapFees","approveAmount","addDecimals","approve","estimateGas","approveEstimatedGas","swapEstimatedGas","getGasPrice","gasPrice","estimatedGas","swapErc20ToSpl","destination","amount","onStatusChange","swapEthToSpl","swap","SWAP_ABI","encodedAmount","approveTx","waitForTxid","step","swapTx","swapErc20","gasLimit","swapTxid","txid","confirms","waitForConfirms","swapEth","str","test","includes","split","intStr","fractionStr","repeat","replace","pendingNonces","Set","withdrawal","callAsync","txData","signature","withdrawErc20","nonce","withdrawEth","has","add","progressMessage","coin","delete","tx","resolve","reject","once","catch","resolved","receipt","ConnectToMetamaskButton","useCallAsync","component","successMessage","serumMarkets","m","MARKETS","forEach","market","address","join","priceStore","connection","marketName","_rpcEndpoint","MAINNET_URL","data","asks","bids","price","mid","FeeContentText","ethFee","ethPrice","prefix","bold","usdFeeEstimate","fontWeight","toFixed","EthFeeEstimate","ethFeeData","insufficientEthBalance","ethFeeEstimate","loaded","setEthPrice","useConnection","getPrice","isArray","approveFee","swapFee","WUSDC_MINT","USDC_MINT","SendDialog","isProdNetwork","useIsProdNetwork","onSubmitRef","swapCoinInfo","fontSize","equals","erc20Contract","SendSplDialog","SendSwapDialog","wusdcToSplUsdc","EthWithdrawalCompleter","defaultAddressHelperText","WRAPPED_SOL_MINT","addressHelperText","setAddressHelperText","passValidation","setPassValidation","overrideDestinationCheck","setOverrideDestinationCheck","shouldShowOverride","setShouldShowOverride","useForm","fields","destinationAddress","transferAmountString","validAmount","mintString","makeTransaction","Math","round","parseFloat","transferToken","getAccountInfo","destinationAccountInfo","owner","TOKEN_PROGRAM_ID","parseTokenAccountData","Switch","setSignature","setDestinationAddress","needMetamask","refreshInterval","ethBalance","splUsdcWalletAddress","useWalletAddressForMint","wusdcToUsdc","swapInfo","memo","SendSwapProgress","sendButton","Tooltip","placement","paddingTop","swaps","getSignatureStatus","confirmations","ethTxid","deposit","Stepper","activeStep","Step","StepLabel","align","justifyContent","marginRight","CircularProgress","passAddressValidation","overrideValidation","setTransferAmountString","balanceAmount","parsedAmount","id","InputProps","endAdornment","InputAdornment","position","balanceAmountToUserAmount","inputProps","pow","EthWithdrawalCompleterItem","DepositDialog","firstTab","secondTab","SolletSwapDepositAddress","estimateErc20SwapFees","reduce","acc","elem","MetamaskDeposit","setAmount","submitted","setSubmitted","setStatus","maxSize","Infinity","min","tuple","maxAmount","maxAmountLoaded","convertButton","marginLeft","CloseTokenAccountDialog","closeTokenAccount","EditAccountNameDialog","oldName","onEdit","setName","onEnter","MergeAccountsDialog","useWalletPublicKeys","publicKeys","isMerging","setIsMerging","mergeCheck","setMergeCheck","mergeAccounts","retryCount","getMultipleSolanaAccounts","tokenAccounts","TokenInstructions","groupedTokenAccounts","ta","key","push","mints","Object","keys","k","mintGroup","findAssociatedTokenAddress","assocTokAddr","getTokenName","symbol","mergeMint","sleep","refresh","close","toLowerCase","disableBackdropClick","textAlign","padding","err","mintAccountSet","assocTok","tokAddr","pop","splTokenMintAddress","associatedTokenAccount","tokenAccount","transferAndClose","refreshAccountInfo","balanceFormat","useGrouping","SortAccounts","usdValues","associatedTokensCache","numberFormat","currency","fairsIsLoaded","pk","BalancesList","showAddTokenDialog","setShowAddTokenDialog","showEditAccountNameDialog","setShowEditAccountNameDialog","showMergeAccounts","setShowMergeAccounts","sortAccounts","setSortAccounts","useWalletSelector","setAccountName","setForceUpdate","selectedAccount","isSelected","allTokensLoaded","sortedPublicKeys","sort","b","aVal","bVal","totalUsdValue","setUsdValuesCallback","useCallback","usdValue","forceUpdate","balanceListItemsMemo","useMemo","props","BalanceListItem","setUsdValue","Paper","AppBar","elevation","Toolbar","flexGrow","arrow","Memoized","selector","textOverflow","overflowX","itemDetails","buttonContainer","expandable","useBalanceInfo","setPrice","toUpperCase","delay","assign","isAssociatedToken","subtitle","overflow","flex","secondary","secondaryTypographyProps","BalanceListItemDetails","sendDialogOpen","setSendDialogOpen","depositDialogOpen","setDepositDialogOpen","tokenInfoDialogOpen","setTokenInfoDialogOpen","exportAccDialogOpen","setExportAccDialogOpen","closeTokenAccountDialogOpen","setCloseTokenAccountDialogOpen","exportNeedsDisplay","allowsExport","startIcon","ConnectionContext","createContext","ConnectionProvider","children","useLocalStorageState","setEndpoint","Connection","Provider","context","useContext","clusterApiUrl","useAccountInfo","cacheKey","accountInfo","previousInfo","onAccountChange","info","lamports","setCache","removeAccountChangeListener","useRefEqual","oldInfo","newInfo","clearCache","refreshCache","setInitialAccountInfo","initializeOnly","commitment","_rpcRequest","unsafeRes","res","GetMultipleAccountsAndContextRpcResult","assert","executable","idx","resultDescription","AccountInfoResult","struct","rentEpoch","array","union","jsonRpcVersion","literal","jsonrpc","jsonRpcResult","slot","DEFAULT_WALLET_SELECTOR","walletIndex","importedPubkey","ledger","Wallet","getTokenAccountInfo","getOwnedTokenAccounts","account1","account2","localeCompare","createTokenAccount","tokenAddress","createAndInitializeTokenAccount","payer","mintPublicKey","newAccount","Account","getMinimumBalanceForRentExemption","ACCOUNT_LAYOUT","span","source","transferSol","transferTokens","sourcePublicKey","destinationPublicKey","nativeTransfer","skipPreflight","WalletProviderFactory","getProvider","instance","WalletContext","WalletProvider","useListener","walletSeedChanged","seed","importsEncryptionKey","derivationPath","setWallet","privateKeyImports","setPrivateKeyImports","walletSelector","setWalletSelector","ledgerPubKey","setLedgerPubKey","setWalletCount","statusCode","getAccountFromSeed","ciphertext","nacl","secretbox","getWalletNames","walletNames","setWalletNames","seedBuffer","derivedAccounts","importedAccounts","pubkey","addAccount","importedAccount","setItem","randomBytes","nonceLength","plaintext","newPrivateKeyImports","newName","tokenAccountInfo","oldKeys","newKeys","every","i","accountInfoLoaded","mintInfo","mintInfoLoaded","useTokenName","parseMintData","ms","setTimeout","defaultState","storedState","parse","state","setState","setLocalStorageState","newState","removeItem","useEffectAfterTimeout","effect","handle","clearTimeout","emitter","eventName","listener","areEqual","prevRef","base58","confirmTransaction","startTime","Date","getTime","LocalStorageWalletProvider","LoginPage","restore","setRestore","maxWidth","RestoreWalletForm","goBack","hasLockedMnemonicAndSeed","LoginForm","CreateWalletForm","cursor","mnemonicAndSeed","setMnemonicAndSeed","generateMnemonicAndSeed","savedWords","setSavedWords","ChoosePasswordForm","password","storeMnemonicAndSeed","DERIVATION_PATH","bip44Change","SeedWordsForm","goForward","confirmed","setConfirmed","gutterBottom","paragraph","setPassword","passwordConfirm","setPasswordConfirm","autoComplete","stayLoggedIn","setStayLoggedIn","loadMnemonicAndSeed","setMnemonic","setSeed","next","setNext","isNextBtnEnabled","validateMnemonic","DerivedAccounts","rows","mnemonicToSeed","DerivationPathMenuItem","Bip44Change","dPathMenuItem","setDPathMenuItem","_","toDerivationPath","Bip44","Deprecated","walletAccount","bip44","MEMO_PROGRAM_ID","LAYOUT","BufferLayout","addVariant","instructionMaxSpan","max","values","registry","r","encodeTokenInstructionData","initializeMint","mintAuthority","freezeAuthority","isSigner","isWritable","SYSVAR_RENT_PUBKEY","TransactionInstruction","toBuffer","freezeAuthorityOption","programId","initializeAccount","transfer","mintTo","closeAccount","memoInstruction","PublicKeyLayout","property","OWNER_VALIDATION_PROGRAM_ID","OWNER_VALIDATION_LAYOUT","encodeOwnerValidationInstruction","assertOwner","pageLoadTime","globalCache","Map","errorCache","globalLoops","loops","set","FetchLoopInternal","fn","get","addListener","loop","stopped","FetchLoopListener","callback","timeoutId","listeners","errors","warn","notifyListeners","waitTime","timeSincePageLoad","visibilityState","hasFocus","random","previousRefreshInterval","asyncFn","useReducer","rerender","formatCacheKey","rest","useTheme","fullScreen","useMediaQuery","breakpoints","down","PaperProps","preventDefault","MINT_LAYOUT","decode","getOwnedAccountsFilters","memcmp","offsetOf","bytes","dataSize","closeSnackbar","setSending","signaturePromise","persist","action","ViewTransactionOnExplorerButton","promise","bip39","generateMnemonic","unlockedMnemonicAndSeed","stored","sessionStorage","deriveImportsEncryptionKey","EventEmitter","setUnlockedMnemonicAndSeed","emit","salt","kdf","iterations","digest","deriveEncryptionKey","encrypted","encodedEncrypted","encodedNonce","encodedSalt","decodedPlaintext","pbkdf2","keyLength","bip32","derivePath","privateKey","forgetWallet","clear","location","reload","filters","filterBytes","signAndSendTransaction","signers","getRecentBlockhash","recentBlockhash","blockhash","setSigners","s","partialSign","rawTransaction","serialize","sendRawTransaction","preflightCommitment","Transaction","SystemProgram","fromPubkey","toPubkey","createAndInitializeMint","initialAccount","newAccountPubkey","space","createAccount","createAssociatedTokenAccountIx","ix","feePayer","txSig","fundingAddress","walletAddress","associatedTokenAddress","systemProgramId","ASSOCIATED_TOKEN_PROGRAM_ID","tokenMintAddress","findProgramAddress","transferBetweenSplTokenAccounts","destinationSplTokenAccount","createAndTransferToAccount","createTransferBetweenSplTokenAccountsInstruction","ownerPublicKey","transferBetweenAccountsTxn","SolanaIcon","SvgIcon","viewBox","d","AddAccountDialog","onAdd","isImport","setIsImport","importedPrivateKey","setPrivateKey","decodeAccount","isAddEnabled","FormGroup","FormControlLabel","DeleteMnemonicDialog","deleteCheck","setDeleteCheck","AddHardwareWalletDialog","setPubKey","content","paddingBottom","paddingLeft","paddingRight","menuItemIcon","NavigationFrame","WalletSelector","NetworkSelector","Footer","anchorEl","setAnchorEl","networks","networkLabels","Hidden","xsDown","smUp","Menu","anchorOrigin","vertical","horizontal","getContentAnchorEl","network","MenuItem","selected","addAccountOpen","setAddAccountOpen","addHardwareWalletDialogOpen","setAddHardwareWalletDialogOpen","deleteMnemonicOpen","setDeleteMnemonicOpen","exportMnemonicOpen","setExportMnemonicOpen","Divider","useFooterStyles","footer","DebugButtons","noSol","requestAirdropDisabled","requestAirdrop","WalletPage","Container","fixed","Grid","item","xs","RAYDIUM_STAKE_PROGRAM_ID","RAYDIUM_LP_PROGRAM_ID","marketCache","marketCacheConnection","decodeMessage","transactionMessage","Message","instructions","accountKeys","transactionInstruction","toInstruction","rawData","index","programIdIndex","decoded","getAccountByIndex","handleSystemInstruction","decodedInstruction","decodeTokenInstruction","handleTokenInstruction","some","decodeInstruction","handleDexInstruction","decodeStakeInstruction","handleRayStakeInstruction","decodeLpInstruction","handleRayLpInstruction","marketInfo","findIndex","accountKey","marketAddress","programIdAddress","strAddress","now","ts","Market","load","settleFundsData","getSettleFundsData","newOrderData","getNewOrderData","getNewOrderV3Data","bufferData","decodeTokenInstructionData","systemInstruction","accountIndex","SystemInstruction","decodeInstructionType","decodeCreateAccount","decodeCreateWithSeed","decodeAllocate","decodeAllocateWithSeed","decodeAssign","decodeAssignWithSeed","decodeTransfer","decodeNonceAdvance","decodeNonceWithdraw","decodeNonceInitialize","decodeNonceAuthorize","initializeAccountData","getInitializeAccountData","transferData","getTransferData","closeAccountData","getCloseAccountData","openOrdersPubkey","NEW_ORDER_OPEN_ORDERS_INDEX","ownerPubkey","NEW_ORDER_OWNER_INDEX","NEW_ORDER_V3_OPEN_ORDERS_INDEX","NEW_ORDER_V3_OWNER_INDEX","basePubkey","SETTLE_FUNDS_BASE_WALLET_INDEX","quotePubkey","SETTLE_FUNDS_QUOTE_WALLET_INDEX","sourcePubkey","TRANSFER_SOURCE_INDEX","destinationPubkey","TRANSFER_DESTINATION_INDEX","TRANSFER_OWNER_INDEX","accountPubkey","INITIALIZE_ACCOUNT_ACCOUNT_INDEX","mintPubkey","INITIALIZE_ACCOUNT_MINT_INDEX","INITIALIZE_ACCOUNT_OWNER_INDEX","LabelValue","link","Neworder","onOpenAddress","v3","marketLabel","_decoded","ownAddress","side","limitPrice","orderType","maxQuantity","maxBaseQuantity","charAt","priceLotsToNumber","baseSizeLotsToNumber","UnknownInstruction","wordBreak","TYPE_LABELS","systemCreate","systemTransfer","DATA_LABELS","noncePubkey","authorizedPubkey","newAuthorizedPubkey","entries","dataLabel","cancelOrder","newOrder","settleFunds","matchOrders","orderId","limit","DexInstruction","getAddressValue","isOwned","ownedKey","TokenInstruction","tokenMint","TOKEN_MINTS","isOwner","PopupPage","opener","origin","URLSearchParams","hash","postMessage","connectedAccount","setConnectedAccount","hasConnectedAccount","requests","setRequests","autoApprove","setAutoApprove","unloadHandler","addEventListener","removeEventListener","messageHandler","ApproveConnectionForm","onApprove","focusParent","sendSignature","messages","sendAllSignatures","signatures","ApproveSignatureForm","onReject","approveButton","actions","snackbarRoot","warningMessage","text","warningIcon","warningTitle","light","warningContainer","divider","dismissed","setDismissed","Card","CardContent","SnackbarContent","CardActions","isSafeInstruction","txInstructions","unsafe","states","CREATED","OWNED","CLOSED_TO_OWNED_DESTINATION","accountStates","ownedAccountPubkey","explorerUrlSuffix","parsing","setParsing","setTxInstructions","buttonRef","isMultiTx","validator","safe","focus","scrollIntoView","behavior","getContent","txIdx","ixs","Box","txListItem","App","prefersDarkMode","createMuiTheme","blue","self","top","fallback","ThemeProvider","CssBaseline","maxSnack","PageContents","Boolean","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","registration","unregister","customTokenNamesByNetwork","nameUpdated","setMaxListeners","visible","setVisible","dPath","derivedSeed","deriveSeed","sign","keyPair","fromSeed","path44","path44Change","detached"],"mappings":"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","file":"static/js/main.178c7d0d.chunk.js","sourcesContent":["import { PublicKey } from '@solana/web3.js';\nconst bs58 = require('bs58');\n\nconst INS_GET_PUBKEY = 0x05;\nconst INS_SIGN_MESSAGE = 0x06;\n\nconst P1_NON_CONFIRM = 0x00;\nconst P1_CONFIRM = 0x01;\n\nconst P2_EXTEND = 0x01;\nconst P2_MORE = 0x02;\n\nconst MAX_PAYLOAD = 255;\n\nconst LEDGER_CLA = 0xe0;\n\n/*\n * Helper for chunked send of large payloads\n */\nasync function solana_send(transport, instruction, p1, payload) {\n var p2 = 0;\n var payload_offset = 0;\n\n if (payload.length > MAX_PAYLOAD) {\n while (payload.length - payload_offset > MAX_PAYLOAD) {\n const buf = payload.slice(payload_offset, payload_offset + MAX_PAYLOAD);\n payload_offset += MAX_PAYLOAD;\n console.log(\n 'send',\n (p2 | P2_MORE).toString(16),\n buf.length.toString(16),\n buf,\n );\n const reply = await transport.send(\n LEDGER_CLA,\n instruction,\n p1,\n p2 | P2_MORE,\n buf,\n );\n if (reply.length !== 2) {\n throw new Error(\n 'solana_send: Received unexpected reply payload',\n 'UnexpectedReplyPayload',\n );\n }\n p2 |= P2_EXTEND;\n }\n }\n\n const buf = payload.slice(payload_offset);\n console.log('send', p2.toString(16), buf.length.toString(16), buf);\n const reply = await transport.send(LEDGER_CLA, instruction, p1, p2, buf);\n\n return reply.slice(0, reply.length - 2);\n}\n\nconst BIP32_HARDENED_BIT = (1 << 31) >>> 0;\nfunction _harden(n) {\n return (n | BIP32_HARDENED_BIT) >>> 0;\n}\n\nexport function solana_derivation_path(account, change) {\n const length = 4;\n let useAccount = account ? account : 0;\n let useChange = change ? change : 0;\n\n var derivation_path = Buffer.alloc(1 + length * 4);\n // eslint-disable-next-line\n var offset = 0;\n offset = derivation_path.writeUInt8(length, offset);\n offset = derivation_path.writeUInt32BE(_harden(44), offset); // Using BIP44\n offset = derivation_path.writeUInt32BE(_harden(501), offset); // Solana's BIP44 path\n offset = derivation_path.writeUInt32BE(_harden(useAccount), offset);\n derivation_path.writeUInt32BE(_harden(useChange), offset);\n\n return derivation_path;\n}\n\nasync function solana_ledger_get_pubkey(transport, derivation_path) {\n return solana_send(\n transport,\n INS_GET_PUBKEY,\n P1_NON_CONFIRM,\n derivation_path,\n );\n}\n\nexport async function solana_ledger_sign_transaction(\n transport,\n derivation_path,\n transaction,\n) {\n const msg_bytes = transaction.serializeMessage();\n return solana_ledger_sign_bytes(transport, derivation_path, msg_bytes);\n}\n\nexport async function solana_ledger_sign_bytes(\n transport,\n derivation_path,\n msg_bytes,\n) {\n var num_paths = Buffer.alloc(1);\n num_paths.writeUInt8(1);\n\n const payload = Buffer.concat([num_paths, derivation_path, msg_bytes]);\n\n return solana_send(transport, INS_SIGN_MESSAGE, P1_CONFIRM, payload);\n}\n\nexport async function getPublicKey(transport, path) {\n let from_derivation_path;\n if (path) {\n from_derivation_path = path;\n } else {\n from_derivation_path = solana_derivation_path();\n }\n const from_pubkey_bytes = await solana_ledger_get_pubkey(\n transport,\n from_derivation_path,\n );\n const from_pubkey_string = bs58.encode(from_pubkey_bytes);\n\n return new PublicKey(from_pubkey_string);\n}\n","import TransportWebUsb from '@ledgerhq/hw-transport-webusb';\nimport {\n getPublicKey,\n solana_derivation_path,\n solana_ledger_sign_bytes,\n solana_ledger_sign_transaction,\n} from './ledger-core';\nimport bs58 from 'bs58';\n\nexport class LedgerWalletProvider {\n constructor(args) {\n this.onDisconnect = (args && args.onDisconnect) || (() => {});\n }\n\n init = async () => {\n this.transport = await TransportWebUsb.create();\n this.pubKey = await getPublicKey(this.transport);\n this.transport.on('disconnect', this.onDisconnect);\n this.listAddresses = async (walletCount) => {\n // TODO: read accounts from ledger\n return [this.pubKey];\n };\n return this;\n };\n\n get publicKey() {\n return this.pubKey;\n }\n\n signTransaction = async (transaction) => {\n const from_derivation_path = solana_derivation_path();\n const sig_bytes = await solana_ledger_sign_transaction(\n this.transport,\n from_derivation_path,\n transaction,\n );\n transaction.addSignature(this.publicKey, sig_bytes);\n return transaction;\n };\n\n createSignature = async (message) => {\n const from_derivation_path = solana_derivation_path();\n const sig_bytes = await solana_ledger_sign_bytes(\n this.transport,\n from_derivation_path,\n message,\n );\n return bs58.encode(sig_bytes);\n };\n}\n","import React, { useState } from 'react';\nimport Button from '@material-ui/core/Button';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport TextField from '@material-ui/core/TextField';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport DialogForm from './DialogForm';\nimport { useWallet } from '../utils/wallet';\nimport { getUnlockedMnemonicAndSeed } from '../utils/wallet-seed';\n\nexport default function ExportAccountDialog({ open, onClose }) {\n const wallet = useWallet();\n const [isHidden, setIsHidden] = useState(true);\n const keyOutput = `[${Array.from(wallet.provider.account.secretKey)}]`;\n return (\n \n Export account\n \n \n setIsHidden(!isHidden)}\n />\n }\n label=\"Reveal\"\n />\n \n \n \n \n \n );\n}\n\nexport function ExportMnemonicDialog({ open, onClose }) {\n const [isHidden, setIsHidden] = useState(true);\n const mnemKey = getUnlockedMnemonicAndSeed();\n return (\n \n Export mnemonic\n \n \n setIsHidden(!isHidden)}\n />\n }\n label=\"Reveal\"\n />\n \n \n \n \n \n );\n}\n","import React, { useRef } from 'react';\nimport { TextField } from '@material-ui/core';\nimport CopyIcon from 'mdi-material-ui/ContentCopy';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useSnackbar } from 'notistack';\nimport QrcodeIcon from 'mdi-material-ui/Qrcode';\nimport QRCode from 'qrcode.react';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport IconButton from '@material-ui/core/IconButton';\nimport Dialog from '@material-ui/core/Dialog';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n alignItems: 'baseline',\n },\n}));\n\nexport default function CopyableDisplay({\n value,\n label,\n autoFocus,\n qrCode,\n helperText,\n}) {\n const { enqueueSnackbar } = useSnackbar();\n const textareaRef = useRef();\n const classes = useStyles();\n const copyLink = () => {\n let textArea = textareaRef.current;\n if (textArea) {\n textArea.select();\n document.execCommand('copy');\n enqueueSnackbar(`Copied ${label}`, {\n variant: 'info',\n autoHideDuration: 2500,\n });\n }\n };\n\n return (\n
\n (textareaRef.current = ref)}\n multiline\n autoFocus={autoFocus}\n value={value}\n readOnly\n onFocus={(e) => e.currentTarget.select()}\n className={classes.textArea}\n fullWidth\n helperText={helperText}\n label={label}\n spellCheck={false}\n />\n \n \n \n {qrCode ? : null}\n
\n );\n}\n\nconst useQrCodeStyles = makeStyles((theme) => ({\n qrcodeContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginBottom: theme.spacing(2),\n },\n}));\n\nfunction Qrcode({ value }) {\n const [showQrcode, setShowQrcode] = React.useState(false);\n const classes = useQrCodeStyles();\n\n return (\n <>\n setShowQrcode(true)}>\n \n \n setShowQrcode(false)}>\n \n \n \n \n \n );\n}\n","import { Typography } from '@material-ui/core';\nimport Link from '@material-ui/core/Link';\nimport React from 'react';\nimport { useSolanaExplorerUrlSuffix } from '../utils/connection';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogForm from './DialogForm';\nimport { abbreviateAddress } from '../utils/utils';\nimport CopyableDisplay from './CopyableDisplay';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n explorerLink: {\n marginBottom: theme.spacing(2),\n },\n warning: {\n marginBottom: theme.spacing(2),\n },\n container: {\n minWidth: 600,\n },\n}));\n\nexport default function TokenInfoDialog({\n open,\n onClose,\n publicKey,\n balanceInfo,\n}) {\n let { mint, tokenName, tokenSymbol } = balanceInfo;\n const urlSuffix = useSolanaExplorerUrlSuffix();\n const classes = useStyles();\n\n return (\n \n \n {tokenName ?? abbreviateAddress(mint)}\n {tokenSymbol ? ` (${tokenSymbol})` : null}\n \n \n \n Information about {tokenName ?? abbreviateAddress(mint)}\n \n \n \n View on Solana Explorer\n \n \n {!!mint && (\n \n This is not your deposit address\n \n }\n />\n )}\n {!!tokenName && (\n \n )}\n {!!tokenSymbol && (\n \n )}\n \n \n );\n}\n","export const showTokenInfoDialog = !!localStorage.getItem(\n 'showTokenInfoDialog',\n);\n\nexport const showSwapAddress = true;\n","import { useAsyncData } from '../fetch-loop';\n\nexport class SwapApiError extends Error {\n constructor(msg, status) {\n super(msg);\n this.name = 'SwapApiError';\n this.status = status;\n }\n}\n\nexport async function swapApiRequest(\n method,\n path,\n body,\n { ignoreUserErrors = false } = {},\n) {\n let headers = {};\n let params = { headers, method };\n if (method === 'GET') {\n params.cache = 'no-cache';\n } else if (body) {\n headers['Content-Type'] = 'application/json';\n params.body = JSON.stringify(body);\n }\n let resp = await fetch(`https://swap.sollet.io/api/${path}`, params);\n return await handleSwapApiResponse(resp, ignoreUserErrors);\n}\n\nasync function handleSwapApiResponse(resp, ignoreUserErrors) {\n let json = await resp.json();\n if (!json.success) {\n if (ignoreUserErrors && resp.status >= 400 && resp.status < 500) {\n return null;\n }\n throw new SwapApiError(json.error, resp.status);\n }\n return json.result;\n}\n\nexport function useSwapApiGet(path, options) {\n return useAsyncData(\n async () => {\n if (!path) {\n return null;\n }\n return await swapApiRequest('GET', path, undefined, {\n ignoreUserErrors: true,\n });\n },\n ['swapApiGet', path],\n options,\n );\n}\n","import { useConnectionConfig } from '../utils/connection';\nimport { TOKENS } from '../utils/tokens/names';\nimport React, { useState } from 'react';\n\nexport default function TokenIcon({ mint, url, tokenName, size = 20 }) {\n const { endpoint } = useConnectionConfig();\n\n const [hasError, setHasError] = useState(false);\n\n if (!url) {\n if (mint === null) {\n url =\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png';\n } else {\n url = TOKENS?.[endpoint]?.find(\n (token) => token.mintAddress === mint?.toBase58(),\n )?.icon;\n }\n }\n\n if (hasError || !url) {\n return null;\n }\n\n return (\n setHasError(true)}\n />\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport TextField from '@material-ui/core/TextField';\nimport {\n refreshWalletPublicKeys,\n useWallet,\n useWalletTokenAccounts,\n} from '../utils/wallet';\nimport { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js';\nimport { TOKENS, useUpdateTokenName } from '../utils/tokens/names';\nimport { useAsyncData } from '../utils/fetch-loop';\nimport LoadingIndicator from './LoadingIndicator';\nimport { makeStyles, Tab, Tabs } from '@material-ui/core';\nimport { useSendTransaction } from '../utils/notifications';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport { abbreviateAddress } from '../utils/utils';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport Collapse from '@material-ui/core/Collapse';\nimport {\n useConnectionConfig,\n useSolanaExplorerUrlSuffix,\n} from '../utils/connection';\nimport Link from '@material-ui/core/Link';\nimport CopyableDisplay from './CopyableDisplay';\nimport DialogForm from './DialogForm';\nimport { showSwapAddress } from '../utils/config';\nimport { swapApiRequest } from '../utils/swap/api';\nimport TokenIcon from './TokenIcon';\n\nconst feeFormat = new Intl.NumberFormat(undefined, {\n minimumFractionDigits: 6,\n maximumFractionDigits: 6,\n});\n\nconst useStyles = makeStyles((theme) => ({\n tabs: {\n marginBottom: theme.spacing(1),\n borderBottom: `1px solid ${theme.palette.background.paper}`,\n },\n}));\n\nexport default function AddTokenDialog({ open, onClose }) {\n let wallet = useWallet();\n let [tokenAccountCost] = useAsyncData(\n wallet.tokenAccountCost,\n wallet.tokenAccountCost,\n );\n let classes = useStyles();\n let updateTokenName = useUpdateTokenName();\n const [sendTransaction, sending] = useSendTransaction();\n const { endpoint } = useConnectionConfig();\n const popularTokens = TOKENS[endpoint];\n const [walletAccounts] = useWalletTokenAccounts();\n\n const [tab, setTab] = useState(!!popularTokens ? 'popular' : 'manual');\n const [mintAddress, setMintAddress] = useState('');\n const [tokenName, setTokenName] = useState('');\n const [tokenSymbol, setTokenSymbol] = useState('');\n const [erc20Address, setErc20Address] = useState('');\n\n useEffect(() => {\n if (!popularTokens) {\n setTab('manual');\n }\n }, [popularTokens]);\n\n function onSubmit(params) {\n if (tab === 'manual') {\n params = { mintAddress, tokenName, tokenSymbol };\n } else if (tab === 'erc20') {\n params = { erc20Address };\n }\n sendTransaction(addToken(params), {\n onSuccess: () => {\n refreshWalletPublicKeys(wallet);\n onClose();\n },\n });\n }\n\n async function addToken({\n mintAddress,\n tokenName,\n tokenSymbol,\n erc20Address,\n }) {\n if (erc20Address) {\n let tokenInfo = await swapApiRequest('POST', `coins/eth/${erc20Address}`);\n mintAddress = tokenInfo.splMint;\n tokenName = tokenInfo.name;\n tokenSymbol = tokenInfo.ticker;\n if (tokenInfo.blockchain !== 'sol') {\n tokenName = 'Wrapped ' + tokenName;\n }\n }\n\n let mint = new PublicKey(mintAddress);\n updateTokenName(mint, tokenName, tokenSymbol);\n const resp = await wallet.createAssociatedTokenAccount(mint);\n return resp[1];\n }\n\n let valid = true;\n if (tab === 'erc20') {\n valid = erc20Address.length === 42 && erc20Address.startsWith('0x');\n }\n\n return (\n \n Add Token\n \n {tokenAccountCost ? (\n \n Add a token to your wallet. This will cost{' '}\n {feeFormat.format(tokenAccountCost / LAMPORTS_PER_SOL)} SOL.\n \n ) : (\n \n )}\n {!!popularTokens && (\n setTab(value)}\n >\n \n {showSwapAddress ? : null}\n \n \n )}\n {tab === 'manual' || !popularTokens ? (\n \n setMintAddress(e.target.value)}\n autoFocus\n disabled={sending}\n />\n setTokenName(e.target.value)}\n disabled={sending}\n />\n setTokenSymbol(e.target.value)}\n disabled={sending}\n />\n \n ) : tab === 'popular' ? (\n \n {popularTokens\n .filter((token) => !token.deprecated)\n .map((token) => (\n \n account.parsed.mint.toBase58() === token.mintAddress,\n )}\n onSubmit={onSubmit}\n disalbed={sending}\n />\n ))}\n \n ) : tab === 'erc20' ? (\n <>\n setErc20Address(e.target.value.trim())}\n autoFocus\n disabled={sending}\n />\n {erc20Address && valid ? (\n \n View on Etherscan\n \n ) : null}\n \n ) : null}\n \n \n \n {tab !== 'popular' && (\n onSubmit({ tokenName, tokenSymbol, mintAddress })}\n >\n Add\n \n )}\n \n \n );\n}\n\nfunction TokenListItem({\n tokenName,\n icon,\n tokenSymbol,\n mintAddress,\n onSubmit,\n disabled,\n existingAccount,\n}) {\n const [open, setOpen] = useState(false);\n const urlSuffix = useSolanaExplorerUrlSuffix();\n const alreadyExists = !!existingAccount;\n return (\n \n
\n setOpen((open) => !open)}>\n \n \n \n \n {tokenName ?? abbreviateAddress(mintAddress)}\n {tokenSymbol ? ` (${tokenSymbol})` : null}\n \n }\n />\n {open ? : }\n \n onSubmit({ tokenName, tokenSymbol, mintAddress })}\n >\n {alreadyExists ? 'Added' : 'Add'}\n \n
\n \n \n \n
\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport Web3 from 'web3';\nimport ERC20_ABI from './erc20-abi.json';\nimport SWAP_ABI from './swap-abi.json';\nimport Button from '@material-ui/core/Button';\nimport { useCallAsync } from '../notifications';\n\nconst web3 = new Web3(window.ethereum);\n// Change to use estimated gas limit\nconst SUGGESTED_GAS_LIMIT = 200000;\n\nexport function useEthAccount() {\n const [account, setAccount] = useState(null);\n\n useEffect(() => {\n if (!window.ethereum) {\n return;\n }\n const onChange = (accounts) =>\n setAccount(accounts.length > 0 ? accounts[0] : null);\n window.ethereum.request({ method: 'eth_accounts' }).then(onChange);\n window.ethereum.on('accountsChanged', onChange);\n return () => window.ethereum.removeListener('accountsChanged', onChange);\n }, []);\n\n return account;\n}\n\nexport async function getErc20Balance(account, erc20Address) {\n if (!erc20Address) {\n return parseInt(await web3.eth.getBalance(account)) / 1e18;\n }\n\n const erc20 = new web3.eth.Contract(ERC20_ABI, erc20Address);\n const [value, decimals] = await Promise.all([\n erc20.methods.balanceOf(account).call(),\n erc20.methods.decimals().call(),\n ]);\n return parseInt(value, 10) / 10 ** parseInt(decimals, 10);\n}\n\nexport async function estimateErc20SwapFees({\n erc20Address,\n swapAddress,\n ethAccount,\n}) {\n if (!erc20Address) {\n return estimateEthSwapFees({ swapAddress });\n }\n\n const erc20 = new web3.eth.Contract(ERC20_ABI, erc20Address);\n const decimals = parseInt(await erc20.methods.decimals().call(), 10);\n\n const approveAmount = addDecimals('100000000', decimals);\n\n let approveEstimatedGas = await erc20.methods\n .approve(swapAddress, approveAmount)\n .estimateGas({ from: ethAccount });\n // Account for Metamask over-estimation\n approveEstimatedGas *= 1.5;\n\n // Use estimated gas limit for now\n const swapEstimatedGas = SUGGESTED_GAS_LIMIT;\n\n const gasPrice = (await web3.eth.getGasPrice()) * 1e-18;\n\n return [approveEstimatedGas * gasPrice, swapEstimatedGas * gasPrice];\n}\n\nexport async function estimateEthSwapFees() {\n const estimatedGas = SUGGESTED_GAS_LIMIT;\n\n const gasPrice = (await web3.eth.getGasPrice()) * 1e-18;\n\n return estimatedGas * gasPrice;\n}\n\nexport async function swapErc20ToSpl({\n ethAccount,\n erc20Address,\n swapAddress,\n destination,\n amount, // string\n onStatusChange,\n}) {\n if (!erc20Address) {\n return swapEthToSpl({\n ethAccount,\n swapAddress,\n destination,\n amount,\n onStatusChange,\n });\n }\n\n const erc20 = new web3.eth.Contract(ERC20_ABI, erc20Address);\n const swap = new web3.eth.Contract(SWAP_ABI, swapAddress);\n const decimals = parseInt(await erc20.methods.decimals().call(), 10);\n\n const encodedAmount = addDecimals(amount, decimals);\n\n const approveTx = erc20.methods\n .approve(swapAddress, encodedAmount)\n .send({ from: ethAccount });\n await waitForTxid(approveTx);\n\n onStatusChange({ step: 1 });\n\n const swapTx = swap.methods\n .swapErc20(erc20Address, destination, encodedAmount)\n .send({ from: ethAccount, gasLimit: SUGGESTED_GAS_LIMIT });\n const swapTxid = await waitForTxid(swapTx);\n\n onStatusChange({ step: 2, txid: swapTxid, confirms: 0 });\n\n await Promise.all([\n approveTx,\n swapTx,\n waitForConfirms(swapTx, onStatusChange),\n ]);\n\n onStatusChange({ step: 3 });\n}\n\nexport async function swapEthToSpl({\n ethAccount,\n swapAddress,\n destination,\n amount,\n onStatusChange,\n}) {\n const swap = new web3.eth.Contract(SWAP_ABI, swapAddress);\n\n const encodedAmount = addDecimals(amount, 18);\n const swapTx = swap.methods\n .swapEth(destination)\n .send({ from: ethAccount, value: encodedAmount });\n const swapTxid = await waitForTxid(swapTx);\n\n onStatusChange({ step: 2, txid: swapTxid, confirms: 0 });\n\n await Promise.all([swapTx, waitForConfirms(swapTx, onStatusChange)]);\n\n onStatusChange({ step: 3 });\n}\n\nfunction addDecimals(str, decimals) {\n if (!/^\\d*\\.?\\d*$/.test(str)) {\n throw new Error('Invalid number');\n }\n if (!str.includes('.')) {\n str += '.';\n }\n let [intStr, fractionStr] = str.split('.');\n if (fractionStr.length > decimals) {\n fractionStr = fractionStr.slice(0, decimals);\n } else {\n fractionStr += '0'.repeat(decimals - fractionStr.length);\n }\n return (intStr + fractionStr).replace(/^0+/, '') || '0';\n}\n\nconst pendingNonces = new Set();\n\nexport async function withdrawEth(from, withdrawal, callAsync) {\n const { params, signature } = withdrawal.txData;\n const swap = new web3.eth.Contract(SWAP_ABI, params[1]);\n let method, nonce;\n if (params[0] === 'withdrawErc20') {\n method = swap.methods.withdrawErc20(\n params[2],\n params[3],\n params[4],\n params[5],\n signature,\n );\n nonce = params[5];\n } else if (params[0] === 'withdrawEth') {\n method = swap.methods.withdrawEth(\n params[2],\n params[3],\n params[4],\n signature,\n );\n nonce = params[4];\n } else {\n return;\n }\n if (pendingNonces.has(nonce)) {\n return;\n }\n try {\n await method.estimateGas();\n } catch (e) {\n return;\n }\n pendingNonces.add(nonce);\n await callAsync(method.send({ from, gasLimit: SUGGESTED_GAS_LIMIT }), {\n progressMessage: `Completing ${withdrawal.coin.ticker} transfer...`,\n });\n pendingNonces.delete(nonce);\n}\n\nfunction waitForTxid(tx) {\n return new Promise((resolve, reject) => {\n tx.once('transactionHash', resolve).catch(reject);\n });\n}\n\nfunction waitForConfirms(tx, onStatusChange) {\n return new Promise((resolve, reject) => {\n let resolved = false;\n tx.on('confirmation', (confirms, receipt) => {\n if (!resolved) {\n onStatusChange({ confirms: confirms + 1 });\n if (!receipt.status) {\n reject('Transaction failed');\n resolved = true;\n } else if (confirms >= 11) {\n resolve();\n resolved = true;\n }\n }\n });\n });\n}\n\nexport function ConnectToMetamaskButton() {\n const callAsync = useCallAsync();\n\n if (!window.ethereum) {\n return (\n \n Connect to MetaMask\n \n );\n }\n\n function connect() {\n callAsync(\n window.ethereum.request({\n method: 'eth_requestAccounts',\n }),\n {\n progressMessage: 'Connecting to MetaMask...',\n successMessage: 'Connected to MetaMask',\n },\n );\n }\n\n return (\n \n );\n}\n","import { MARKETS } from '@project-serum/serum';\nimport { PublicKey } from '@solana/web3.js';\nimport { MAINNET_URL } from './connection';\n\ninterface Markets {\n [coin: string]: {\n publicKey: PublicKey;\n name: string;\n deprecated?: boolean;\n }\n}\n\nexport const serumMarkets = (() => {\n const m: Markets = {};\n MARKETS.forEach((market) => {\n const coin = market.name.split('/')[0];\n if (m[coin]) {\n // Only override a market if it's not deprecated\t.\n if (!m.deprecated) {\n m[coin] = {\n publicKey: market.address,\n name: market.name.split('/').join(''),\n };\n }\n } else {\n m[coin] = {\n publicKey: market.address,\n name: market.name.split('/').join(''),\n };\n }\n });\n return m;\n})();\n\n// Create a cached API wrapper to avoid rate limits.\nclass PriceStore {\n cache: {}\n\n constructor() {\n this.cache = {};\n }\n\n async getPrice(connection, marketName): Promise {\n return new Promise((resolve, reject) => {\n if (connection._rpcEndpoint !== MAINNET_URL) {\n resolve(undefined);\n return;\n }\n if (this.cache[marketName] === undefined) {\n fetch(`https://serum-api.bonfida.com/orderbooks/${marketName}`).then(\n (resp) => {\n resp.json().then((resp) => {\n if (resp.data.asks.length === 0 && resp.data.bids.length === 0) {\n resolve(undefined);\n } else if (resp.data.asks.length === 0) {\n resolve(resp.data.bids[0].price);\n } else if (resp.data.bids.length === 0) {\n resolve(resp.data.asks[0].price);\n } else {\n const mid =\n (resp.data.asks[0].price + resp.data.bids[0].price) / 2.0;\n this.cache[marketName] = mid;\n resolve(this.cache[marketName]);\n }\n });\n },\n );\n } else {\n return resolve(this.cache[marketName]);\n }\n });\n }\n}\n\nexport const priceStore = new PriceStore();\n","import { DialogContentText } from \"@material-ui/core\";\nimport { useEffect, useState } from \"react\";\nimport { useConnection } from \"../utils/connection\";\nimport { priceStore, serumMarkets } from \"../utils/markets\";\n\nfunction FeeContentText({ ethFee, ethPrice, warning = false, prefix = \"\", bold = false }) {\n let usdFeeEstimate = ethPrice !== undefined ? ethPrice * ethFee : null;\n\n return (\n \n {prefix}\n {ethFee.toFixed(4)}\n {' ETH'}\n {usdFeeEstimate && ` (${usdFeeEstimate.toFixed(2)} USD)`}\n \n );\n}\n\nexport function EthFeeEstimate({ ethFeeData, insufficientEthBalance }) {\n let [ethFeeEstimate, loaded, error] = ethFeeData;\n const [ethPrice, setEthPrice] = useState(undefined);\n const connection = useConnection();\n useEffect(() => {\n if (ethPrice === undefined) {\n let m = serumMarkets['ETH'];\n priceStore.getPrice(connection, m.name).then(setEthPrice);\n }\n }, [ethPrice, connection]);\n\n if (!loaded && !error) {\n return (\n Loading...\n );\n } else if (error) {\n return (\n \n Unable to estimate\n \n );\n }\n\n if (Array.isArray(ethFeeEstimate)) {\n const [approveFee, swapFee] = ethFeeEstimate;\n return (\n \n \n \n \n \n );\n }\n\n return (\n \n );\n}","import React, { useEffect, useRef, useState } from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport TextField from '@material-ui/core/TextField';\nimport DialogForm from './DialogForm';\nimport { useWallet, useWalletAddressForMint } from '../utils/wallet';\nimport { PublicKey } from '@solana/web3.js';\nimport { abbreviateAddress } from '../utils/utils';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport { useCallAsync, useSendTransaction } from '../utils/notifications';\nimport { swapApiRequest, useSwapApiGet } from '../utils/swap/api';\nimport { showSwapAddress } from '../utils/config';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport {\n ConnectToMetamaskButton,\n getErc20Balance,\n useEthAccount,\n withdrawEth,\n} from '../utils/swap/eth';\nimport { useConnection, useIsProdNetwork } from '../utils/connection';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport Link from '@material-ui/core/Link';\nimport Typography from '@material-ui/core/Typography';\nimport { useAsyncData } from '../utils/fetch-loop';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport {\n TOKEN_PROGRAM_ID,\n WRAPPED_SOL_MINT,\n} from '../utils/tokens/instructions';\nimport { parseTokenAccountData } from '../utils/tokens/data';\nimport { Switch, Tooltip } from '@material-ui/core';\nimport { EthFeeEstimate } from './EthFeeEstimate';\n\nconst WUSDC_MINT = new PublicKey(\n 'BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW',\n);\nconst USDC_MINT = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');\n\nexport default function SendDialog({ open, onClose, publicKey, balanceInfo }) {\n const isProdNetwork = useIsProdNetwork();\n const [tab, setTab] = useState('spl');\n const onSubmitRef = useRef();\n\n const [swapCoinInfo] = useSwapApiGet(\n showSwapAddress && balanceInfo.mint && isProdNetwork\n ? `coins/sol/${balanceInfo.mint.toBase58()}`\n : null,\n );\n const ethAccount = useEthAccount();\n\n const { mint, tokenName, tokenSymbol } = balanceInfo;\n\n return (\n <>\n onSubmitRef.current()}\n fullWidth\n >\n \n Send {tokenName ?? abbreviateAddress(mint)}\n {tokenSymbol ? ` (${tokenSymbol})` : null}\n {ethAccount && (\n
\n \n Metamask connected: {ethAccount}\n \n
\n )}\n
\n {swapCoinInfo ? (\n setTab(value)}\n textColor=\"primary\"\n indicatorColor=\"primary\"\n >\n {mint?.equals(WUSDC_MINT)\n ? [\n ,\n ,\n ,\n ]\n : [\n ,\n ,\n ]}\n \n ) : null}\n {tab === 'spl' ? (\n \n ) : tab === 'wusdcToSplUsdc' ? (\n \n ) : (\n \n )}\n \n {ethAccount &&\n (swapCoinInfo?.blockchain === 'eth' || swapCoinInfo?.erc20Contract) ? (\n \n ) : null}\n \n );\n}\n\nfunction SendSplDialog({ onClose, publicKey, balanceInfo, onSubmitRef }) {\n const defaultAddressHelperText =\n !balanceInfo.mint || balanceInfo.mint.equals(WRAPPED_SOL_MINT)\n ? 'Enter Solana Address'\n : 'Enter SPL token or Solana address';\n const wallet = useWallet();\n const [sendTransaction, sending] = useSendTransaction();\n const [addressHelperText, setAddressHelperText] = useState(\n defaultAddressHelperText,\n );\n const [passValidation, setPassValidation] = useState();\n const [overrideDestinationCheck, setOverrideDestinationCheck] = useState(\n false,\n );\n const [shouldShowOverride, setShouldShowOverride] = useState();\n const {\n fields,\n destinationAddress,\n transferAmountString,\n validAmount,\n } = useForm(balanceInfo, addressHelperText, passValidation);\n const { decimals, mint } = balanceInfo;\n const mintString = mint && mint.toBase58();\n\n useEffect(() => {\n (async () => {\n if (!destinationAddress) {\n setAddressHelperText(defaultAddressHelperText);\n setPassValidation(undefined);\n setShouldShowOverride(undefined);\n return;\n }\n try {\n const destinationAccountInfo = await wallet.connection.getAccountInfo(\n new PublicKey(destinationAddress),\n );\n setShouldShowOverride(false);\n\n if (destinationAccountInfo.owner.equals(TOKEN_PROGRAM_ID)) {\n const accountInfo = parseTokenAccountData(\n destinationAccountInfo.data,\n );\n if (accountInfo.mint.toBase58() === mintString) {\n setPassValidation(true);\n setAddressHelperText('Address is a valid SPL token address');\n } else {\n setPassValidation(false);\n setAddressHelperText('Destination address mint does not match');\n }\n } else {\n setPassValidation(true);\n setAddressHelperText('Destination is a Solana address');\n }\n } catch (e) {\n console.log(`Received error validating address ${e}`);\n setAddressHelperText(defaultAddressHelperText);\n setShouldShowOverride(true);\n setPassValidation(undefined);\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [destinationAddress, wallet, mintString]);\n\n useEffect(() => {\n return () => {\n setOverrideDestinationCheck(false);\n };\n }, [setOverrideDestinationCheck]);\n\n async function makeTransaction() {\n let amount = Math.round(parseFloat(transferAmountString) * 10 ** decimals);\n if (!amount || amount <= 0) {\n throw new Error('Invalid amount');\n }\n return wallet.transferToken(\n publicKey,\n new PublicKey(destinationAddress),\n amount,\n balanceInfo.mint,\n null,\n overrideDestinationCheck,\n );\n }\n\n const disabled = shouldShowOverride\n ? !overrideDestinationCheck || sending || !validAmount\n : sending || !validAmount;\n\n async function onSubmit() {\n return sendTransaction(makeTransaction(), { onSuccess: onClose });\n }\n onSubmitRef.current = onSubmit;\n return (\n <>\n {fields}\n \n {shouldShowOverride && (\n \n This address has no funds. Are you sure it's correct?\n setOverrideDestinationCheck(e.target.checked)}\n color=\"primary\"\n />\n \n )}\n \n \n \n \n );\n}\n\nfunction SendSwapDialog({\n onClose,\n publicKey,\n balanceInfo,\n swapCoinInfo,\n ethAccount,\n wusdcToSplUsdc = false,\n onSubmitRef,\n}) {\n const wallet = useWallet();\n const [sendTransaction, sending] = useSendTransaction();\n const [signature, setSignature] = useState(null);\n const {\n fields,\n destinationAddress,\n transferAmountString,\n setDestinationAddress,\n validAmount,\n } = useForm(balanceInfo);\n\n const { tokenName, decimals, mint } = balanceInfo;\n const blockchain = wusdcToSplUsdc\n ? 'sol'\n : swapCoinInfo.blockchain === 'sol'\n ? 'eth'\n : swapCoinInfo.blockchain;\n const needMetamask = blockchain === 'eth';\n\n const [ethBalance] = useAsyncData(\n () => getErc20Balance(ethAccount),\n 'ethBalance',\n {\n refreshInterval: 2000,\n },\n );\n const ethFeeData = useSwapApiGet(\n blockchain === 'eth' &&\n `fees/eth/${ethAccount}` +\n (swapCoinInfo.erc20Contract ? '/' + swapCoinInfo.erc20Contract : ''),\n { refreshInterval: 2000 },\n );\n const [ethFeeEstimate] = ethFeeData;\n const insufficientEthBalance =\n typeof ethBalance === 'number' &&\n typeof ethFeeEstimate === 'number' &&\n ethBalance < ethFeeEstimate;\n\n useEffect(() => {\n if (blockchain === 'eth' && ethAccount) {\n setDestinationAddress(ethAccount);\n }\n }, [blockchain, ethAccount, setDestinationAddress]);\n\n let splUsdcWalletAddress = useWalletAddressForMint(\n wusdcToSplUsdc ? USDC_MINT : null,\n );\n useEffect(() => {\n if (wusdcToSplUsdc && splUsdcWalletAddress) {\n setDestinationAddress(splUsdcWalletAddress);\n }\n }, [setDestinationAddress, wusdcToSplUsdc, splUsdcWalletAddress]);\n\n async function makeTransaction() {\n let amount = Math.round(parseFloat(transferAmountString) * 10 ** decimals);\n if (!amount || amount <= 0) {\n throw new Error('Invalid amount');\n }\n const params = {\n blockchain,\n address: destinationAddress,\n size: amount / 10 ** decimals,\n };\n if (blockchain === 'sol') {\n params.coin = swapCoinInfo.splMint;\n } else if (blockchain === 'eth') {\n params.coin = swapCoinInfo.erc20Contract;\n }\n if (mint?.equals(WUSDC_MINT)) {\n params.wusdcToUsdc = true;\n }\n const swapInfo = await swapApiRequest('POST', 'swap_to', params);\n if (swapInfo.blockchain !== 'sol') {\n throw new Error('Unexpected blockchain');\n }\n return wallet.transferToken(\n publicKey,\n new PublicKey(swapInfo.address),\n amount,\n balanceInfo.mint,\n swapInfo.memo,\n );\n }\n\n async function onSubmit() {\n return sendTransaction(makeTransaction(), { onSuccess: setSignature });\n }\n onSubmitRef.current = onSubmit;\n\n if (signature) {\n return (\n \n );\n }\n\n let sendButton = (\n \n Send\n \n );\n\n if (insufficientEthBalance) {\n sendButton = (\n \n {sendButton}\n \n );\n }\n\n return (\n <>\n \n \n SPL {tokenName} can be converted to{' '}\n {blockchain === 'eth' && swapCoinInfo.erc20Contract\n ? 'ERC20'\n : blockchain === 'sol' && swapCoinInfo.splMint\n ? 'SPL'\n : 'native'}{' '}\n {swapCoinInfo.ticker}\n {needMetamask ? ' via MetaMask' : null}.\n \n {blockchain === 'eth' && (\n \n Estimated withdrawal transaction fee:\n \n \n )}\n {needMetamask && !ethAccount ? : fields}\n \n \n \n {sendButton}\n \n \n );\n}\n\nfunction SendSwapProgress({ publicKey, signature, onClose, blockchain }) {\n const connection = useConnection();\n const [swaps] = useSwapApiGet(`swaps_from/sol/${publicKey.toBase58()}`, {\n refreshInterval: 1000,\n });\n const [confirms] = useAsyncData(\n async () => {\n const { value } = await connection.getSignatureStatus(signature);\n return value?.confirmations;\n },\n [connection.getSignatureStatus, signature],\n { refreshInterval: 2000 },\n );\n\n let step = 1;\n let ethTxid = null;\n for (let swap of swaps || []) {\n const { deposit, withdrawal } = swap;\n if (deposit.txid === signature) {\n if (withdrawal.txid?.startsWith('0x')) {\n step = 3;\n ethTxid = withdrawal.txid;\n } else if (withdrawal.txid && blockchain !== 'eth') {\n step = 3;\n } else {\n step = 2;\n }\n }\n }\n\n return (\n <>\n \n \n \n Send Request\n \n \n Wait for Confirmations\n \n \n Withdraw Funds\n \n \n {ethTxid ? (\n \n \n View on Etherscan\n \n \n ) : step < 3 ? (\n \n
\n \n
\n {confirms ? (\n {confirms} / 35 Confirmations\n ) : (\n Transaction Pending\n )}\n \n ) : null}\n {!ethTxid && blockchain === 'eth' ? (\n \n Please keep this window open. You will need to approve the request\n on MetaMask to complete the transaction.\n \n ) : null}\n
\n \n \n \n \n );\n}\n\nfunction useForm(\n balanceInfo,\n addressHelperText,\n passAddressValidation,\n overrideValidation,\n) {\n const [destinationAddress, setDestinationAddress] = useState('');\n const [transferAmountString, setTransferAmountString] = useState('');\n const { amount: balanceAmount, decimals, tokenSymbol } = balanceInfo;\n\n const parsedAmount = parseFloat(transferAmountString) * 10 ** decimals;\n const validAmount = parsedAmount > 0 && parsedAmount <= balanceAmount;\n\n const fields = (\n <>\n setDestinationAddress(e.target.value.trim())}\n helperText={addressHelperText}\n id={\n !passAddressValidation && passAddressValidation !== undefined\n ? 'outlined-error-helper-text'\n : undefined\n }\n error={!passAddressValidation && passAddressValidation !== undefined}\n />\n \n \n setTransferAmountString(\n balanceAmountToUserAmount(balanceAmount, decimals),\n )\n }\n >\n MAX\n \n {tokenSymbol ? tokenSymbol : null}\n \n ),\n inputProps: {\n step: Math.pow(10, -decimals),\n },\n }}\n value={transferAmountString}\n onChange={(e) => setTransferAmountString(e.target.value.trim())}\n helperText={\n \n setTransferAmountString(\n balanceAmountToUserAmount(balanceAmount, decimals),\n )\n }\n >\n Max: {balanceAmountToUserAmount(balanceAmount, decimals)}\n \n }\n />\n \n );\n\n return {\n fields,\n destinationAddress,\n transferAmountString,\n setDestinationAddress,\n validAmount,\n };\n}\n\nfunction balanceAmountToUserAmount(balanceAmount, decimals) {\n return (balanceAmount / Math.pow(10, decimals)).toFixed(decimals);\n}\n\nfunction EthWithdrawalCompleter({ ethAccount, publicKey }) {\n const [swaps] = useSwapApiGet(`swaps_from/sol/${publicKey.toBase58()}`, {\n refreshInterval: 10000,\n });\n if (!swaps) {\n return null;\n }\n return swaps.map((swap) => (\n \n ));\n}\n\nfunction EthWithdrawalCompleterItem({ ethAccount, swap }) {\n const callAsync = useCallAsync();\n const { withdrawal } = swap;\n useEffect(() => {\n if (\n withdrawal.status === 'sent' &&\n withdrawal.blockchain === 'eth' &&\n withdrawal.txid &&\n !withdrawal.txid.startsWith('0x') &&\n withdrawal.txData\n ) {\n withdrawEth(ethAccount, withdrawal, callAsync);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [withdrawal.txid, withdrawal.status]);\n return null;\n}\n","import React, { useState } from 'react';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogForm from './DialogForm';\nimport { abbreviateAddress } from '../utils/utils';\nimport CopyableDisplay from './CopyableDisplay';\nimport { useSolanaExplorerUrlSuffix } from '../utils/connection';\nimport Typography from '@material-ui/core/Typography';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport { useAsyncData } from '../utils/fetch-loop';\nimport tuple from 'immutable-tuple';\nimport { useCallAsync } from '../utils/notifications';\nimport {\n ConnectToMetamaskButton,\n getErc20Balance,\n swapErc20ToSpl,\n useEthAccount,\n estimateErc20SwapFees,\n} from '../utils/swap/eth';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport TextField from '@material-ui/core/TextField';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Link from '@material-ui/core/Link';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { DialogContentText, Tooltip } from '@material-ui/core';\nimport { EthFeeEstimate } from './EthFeeEstimate';\n\nexport default function DepositDialog({\n open,\n onClose,\n publicKey,\n balanceInfo,\n swapInfo,\n}) {\n const ethAccount = useEthAccount();\n const urlSuffix = useSolanaExplorerUrlSuffix();\n const { mint, tokenName, tokenSymbol, owner } = balanceInfo;\n const [tab, setTab] = useState(0);\n\n let tabs = null;\n if (swapInfo) {\n let firstTab = `SPL ${tokenSymbol ?? swapInfo.coin.ticker}`;\n let secondTab = swapInfo.coin.ticker;\n if (!mint) {\n firstTab = 'SOL';\n } else {\n secondTab = `${\n swapInfo.coin.erc20Contract ? 'ERC20' : 'Native'\n } ${secondTab}`;\n }\n tabs = (\n setTab(value)}\n textColor=\"primary\"\n indicatorColor=\"primary\"\n >\n \n \n \n );\n }\n\n return (\n \n \n Deposit {tokenName ?? mint.toBase58()}\n {tokenSymbol ? ` (${tokenSymbol})` : null}\n {ethAccount && (\n
\n \n Metamask connected: {ethAccount}\n \n
\n )}\n
\n {tabs}\n \n {tab === 0 ? (\n <>\n {publicKey.equals(owner) ? (\n \n This address can only be used to receive SOL. Do not send other\n tokens to this address.\n \n ) : (\n \n This address can only be used to receive{' '}\n {tokenSymbol ?? abbreviateAddress(mint)}. Do not send SOL to\n this address.\n \n )}\n \n \n \n View on Solana Explorer\n \n \n \n ) : (\n \n )}\n \n \n \n \n
\n );\n}\n\nfunction SolletSwapDepositAddress({ balanceInfo, swapInfo, ethAccount }) {\n const [ethBalance] = useAsyncData(\n () => getErc20Balance(ethAccount),\n 'ethBalance',\n {\n refreshInterval: 2000,\n },\n );\n\n const ethFeeData = useAsyncData(\n swapInfo.coin &&\n (() =>\n estimateErc20SwapFees({\n erc20Address: swapInfo.coin.erc20Contract,\n swapAddress: swapInfo.address,\n ethAccount,\n })),\n 'depositEthFee',\n {\n refreshInterval: 2000,\n },\n );\n\n if (!swapInfo) {\n return null;\n }\n\n const ethFeeEstimate = Array.isArray(ethFeeData[0])\n ? ethFeeData[0].reduce((acc, elem) => acc + elem)\n : ethFeeData[0];\n const insufficientEthBalance =\n typeof ethBalance === 'number' &&\n typeof ethFeeEstimate === 'number' &&\n ethBalance < ethFeeEstimate;\n\n const { blockchain, address, memo, coin } = swapInfo;\n const { mint, tokenName } = balanceInfo;\n\n if (blockchain === 'btc' && memo === null) {\n return (\n <>\n \n Native BTC can be converted to SPL {tokenName} by sending it to the\n following address:\n \n \n \n );\n }\n\n if (blockchain === 'eth') {\n return (\n <>\n \n {coin.erc20Contract ? 'ERC20' : 'Native'} {coin.ticker} can be\n converted to {mint ? 'SPL' : 'native'} {tokenName} via MetaMask. To\n convert, you must already have SOL in your wallet.\n \n \n Estimated withdrawal transaction fee:\n \n \n \n \n );\n }\n\n return null;\n}\n\nfunction MetamaskDeposit({ swapInfo, insufficientEthBalance }) {\n const ethAccount = useEthAccount();\n const [amount, setAmount] = useState('');\n const [submitted, setSubmitted] = useState(false);\n const [status, setStatus] = useState(null);\n const callAsync = useCallAsync();\n\n const {\n address: swapAddress,\n memo: destination,\n coin: { erc20Contract: erc20Address, ticker },\n } = swapInfo;\n\n const [maxAmount, maxAmountLoaded] = useAsyncData(async () => {\n if (ethAccount) {\n return Math.min(\n await getErc20Balance(ethAccount, erc20Address),\n swapInfo.maxSize ?? Infinity,\n );\n }\n return 0;\n }, tuple(getErc20Balance, ethAccount, erc20Address));\n\n if (!ethAccount) {\n return ;\n }\n\n async function submit() {\n setSubmitted(true);\n setStatus({ step: 0 });\n await callAsync(\n (async () => {\n let parsedAmount = parseFloat(amount);\n\n if (!parsedAmount || parsedAmount > maxAmount || parsedAmount <= 0) {\n throw new Error('Invalid amount');\n }\n await swapErc20ToSpl({\n ethAccount,\n erc20Address,\n swapAddress,\n destination,\n amount,\n onStatusChange: (e) => setStatus((status) => ({ ...status, ...e })),\n });\n })(),\n { onError: () => setSubmitted(false) },\n );\n }\n\n if (!submitted) {\n let convertButton = (\n \n Convert\n \n );\n\n if (insufficientEthBalance) {\n convertButton = (\n \n {convertButton}\n \n );\n }\n\n return (\n
\n {ticker}\n ),\n inputProps: {\n step: 'any',\n },\n }}\n value={amount}\n onChange={(e) => setAmount(e.target.value.trim())}\n helperText={\n maxAmountLoaded ? (\n setAmount(maxAmount.toFixed(6))}>\n Max: {maxAmount.toFixed(6)}\n \n ) : null\n }\n />\n {convertButton}\n
\n );\n }\n\n return (\n <>\n \n \n Approve Conversion\n \n \n Send Funds\n \n \n Wait for Confirmations\n \n \n {status.step === 2 ? (\n <>\n \n
\n \n
\n
\n {status.confirms ? (\n {status.confirms} / 12 Confirmations\n ) : (\n Transaction Pending\n )}\n \n \n View on Etherscan\n \n \n
\n \n \n ) : null}\n \n );\n}\n","import DialogForm from './DialogForm';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { DialogContentText } from '@material-ui/core';\nimport { abbreviateAddress } from '../utils/utils';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport React from 'react';\nimport { useSendTransaction } from '../utils/notifications';\nimport { refreshWalletPublicKeys, useWallet } from '../utils/wallet';\n\nexport default function CloseTokenAccountDialog({\n open,\n onClose,\n publicKey,\n balanceInfo,\n}) {\n const wallet = useWallet();\n const [sendTransaction, sending] = useSendTransaction();\n const { mint, tokenName } = balanceInfo;\n\n function onSubmit() {\n sendTransaction(wallet.closeTokenAccount(publicKey), {\n onSuccess: () => {\n refreshWalletPublicKeys(wallet);\n onClose();\n },\n });\n }\n\n return (\n \n \n Delete {tokenName ?? mint.toBase58()} Address{' '}\n {abbreviateAddress(publicKey)}\n \n \n \n Are you sure you want to delete your {tokenName ?? mint.toBase58()}{' '}\n address {publicKey.toBase58()}? This will permanently disable token\n transfers to this address and remove it from your wallet.\n \n \n \n \n \n \n \n );\n}\n","import React, { useState } from 'react';\nimport DialogForm from './DialogForm';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport DialogActions from '@material-ui/core/DialogActions';\n\nexport default function EditAccountNameDialog({\n open,\n oldName,\n onClose,\n onEdit,\n}) {\n const [name, setName] = useState(oldName);\n return (\n setName(oldName)}\n onClose={onClose}\n onSubmit={() => onEdit(name.trim())}\n fullWidth\n >\n Edit Account\n \n \n setName(e.target.value)}\n />\n \n \n \n \n \n \n \n );\n}\n","import { useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Link from '@material-ui/core/Link';\nimport TextField from '@material-ui/core/TextField';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport FingerprintIcon from '@material-ui/icons/Fingerprint';\nimport { TokenInstructions } from '@project-serum/serum';\nimport { useWalletPublicKeys } from '../utils/wallet';\nimport {\n useConnection,\n refreshAccountInfo,\n getMultipleSolanaAccounts,\n} from '../utils/connection';\nimport { parseTokenAccountData } from '../utils/tokens/data';\nimport { refreshWalletPublicKeys, useWallet } from '../utils/wallet';\nimport {\n createAssociatedTokenAccount,\n findAssociatedTokenAddress,\n} from '../utils/tokens';\nimport { sleep } from '../utils/utils';\nimport { getTokenName } from '../utils/tokens/names';\n\nexport default function MergeAccountsDialog({ open, onClose }) {\n const [publicKeys] = useWalletPublicKeys();\n const connection = useConnection();\n const wallet = useWallet();\n const { enqueueSnackbar } = useSnackbar();\n const [isMerging, setIsMerging] = useState(false);\n const [mergeCheck, setMergeCheck] = useState('');\n\n // Merging accounts is a destructive operation that, for each mint,\n //\n // * Creates an associated token account, if not already created\n // * Moves all funds into the associated token account\n // * Closes every account, excluding the associated token account.\n //\n // Although it's ok if this operation fails--since the user can just\n // retry again--it's not a good experience; hence the retry logic.\n // The retry count of 30 is arbitrary and probably overly conservative.\n const mergeAccounts = async (retryCount = 30) => {\n try {\n if (retryCount === 0) {\n enqueueSnackbar(`Unable to complete merge. Please try again.`, {\n variant: 'error',\n });\n return;\n }\n // Fetch all token accounts owned by the wallet. An account is null\n // if we previously sent the close transaction, but did not receive\n // a response due to RPC node instability.\n const tokenAccounts = (\n await getMultipleSolanaAccounts(connection, publicKeys)\n )\n .filter(\n (acc) =>\n acc !== null &&\n acc.account.owner.equals(TokenInstructions.TOKEN_PROGRAM_ID),\n )\n .map(({ publicKey, account }) => {\n return {\n publicKey,\n account: parseTokenAccountData(account.data),\n owner: account.owner,\n };\n });\n\n // Group the token accounts by mint.\n const groupedTokenAccounts = {};\n tokenAccounts.forEach((ta) => {\n const key = ta.account.mint.toString();\n if (groupedTokenAccounts[key]) {\n groupedTokenAccounts[key].push(ta);\n } else {\n groupedTokenAccounts[key] = [ta];\n }\n });\n\n // For each mint, merge them into one, associated token account.\n const mints = Object.keys(groupedTokenAccounts);\n for (let k = 0; k < mints.length; k += 1) {\n const mintGroup = groupedTokenAccounts[mints[k]];\n if (mintGroup.length > 0) {\n const mint = mintGroup[0].account.mint;\n const assocTokAddr = await findAssociatedTokenAddress(\n wallet.publicKey,\n mint,\n );\n // Don't merge if the only account is the associated token address.\n if (\n !(\n mintGroup.length === 1 &&\n assocTokAddr.equals(mintGroup[0].publicKey)\n )\n ) {\n const name = getTokenName(mint, connection._rpcEndpoint);\n const symbol = name.symbol ? name.symbol : mint.toString();\n console.log(`Merging ${symbol}`);\n enqueueSnackbar(`Merging ${symbol}`, {\n variant: 'info',\n });\n await mergeMint(\n assocTokAddr,\n mintGroup,\n wallet,\n connection,\n enqueueSnackbar,\n );\n }\n }\n }\n\n // Wait to give the RPC nodes some time to catch up.\n await sleep(5000);\n\n // Refresh the UI to remove any duplicates.\n await refresh(wallet, publicKeys);\n\n // Exit dialogue.\n close();\n } catch (err) {\n console.error('There was a problem merging accounts', err);\n enqueueSnackbar('Could not confirm transaction. Please wait.', {\n variant: 'info',\n });\n\n // Sleep to give the RPC nodes some time to catch up.\n await sleep(10000);\n\n enqueueSnackbar('Retrying merge', { variant: 'info' });\n await mergeAccounts(retryCount - 1);\n }\n };\n const close = () => {\n setMergeCheck('');\n onClose();\n };\n const disabled = mergeCheck.toLowerCase() !== 'merge';\n\n return (\n \n {isMerging ? (\n \n \n Merging Accounts\n \n \n \n \n \n ) : (\n <>\n Are you sure you want to merge accounts?\n \n \n WARNING: This action may break apps that depend on your\n existing accounts.\n \n \n Merging sends all tokens to{' '}\n \n associated token accounts\n {' '}\n ,{' '}\n deduplicating and closing any accounts that share the same mint.\n If associated token accounts do not exist, then they will be\n created.\n \n \n If merging fails during a period of high network load, you will\n not have lost your funds. Just recontinue the merge from where you\n left off. If you have a lot of accounts, merging might take a\n while.\n \n setMergeCheck(e.target.value.trim())}\n />\n \n \n \n {\n setIsMerging(true);\n mergeAccounts()\n .then(() => {\n enqueueSnackbar('Account merge complete', {\n variant: 'success',\n });\n setIsMerging(false);\n })\n .catch((err) => {\n enqueueSnackbar(\n `There was a problem merging your accounts: ${err.toString()}`,\n { variant: 'error' },\n );\n setIsMerging(false);\n });\n }}\n color=\"secondary\"\n autoFocus\n >\n Merge\n \n \n \n )}\n \n );\n}\n\n// Merges the given array of token accounts into one associated token account.\nasync function mergeMint(\n assocTokAddr,\n mintAccountSet,\n wallet,\n connection,\n enqueueSnackbar,\n) {\n if (mintAccountSet.length === 0) {\n return;\n }\n // Get the associated token account.\n let associatedTokenAccount = await (async () => {\n let assocTok = mintAccountSet\n .map((assocTok) => assocTok.publicKey)\n .filter((tokAddr) => tokAddr.equals(assocTokAddr))\n .pop();\n\n // Do we already have the token account?\n if (assocTok) {\n return assocTok;\n }\n\n // Check if the associated token account has been created.\n // This is required due to a sometimes unstable network, where\n // the account is created, but the client doesn't receive a\n // response confirmation.\n const accInfo = await connection.getAccountInfo(assocTokAddr);\n if (accInfo !== null) {\n return assocTokAddr;\n }\n\n // If it doesn't exist, then make it.\n const [address] = await createAssociatedTokenAccount({\n connection,\n wallet,\n splTokenMintAddress: mintAccountSet[0].account.mint,\n });\n\n return address;\n })();\n\n // Send all funds to the associated token account for each account.\n // Once the funds are transferred, close the duplicated account.\n for (let k = 0; k < mintAccountSet.length; k += 1) {\n const tokenAccount = mintAccountSet[k];\n if (tokenAccount.publicKey.equals(associatedTokenAccount) === false) {\n if (tokenAccount.account.amount > 0) {\n await wallet.transferAndClose(\n tokenAccount.publicKey,\n associatedTokenAccount,\n tokenAccount.account.amount,\n );\n } else {\n await wallet.closeTokenAccount(tokenAccount.publicKey, true);\n }\n }\n }\n}\n\nasync function refresh(wallet, publicKeys) {\n await refreshWalletPublicKeys(wallet);\n publicKeys.map((publicKey) =>\n refreshAccountInfo(wallet.connection, publicKey, true),\n );\n}\n","import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Paper from '@material-ui/core/Paper';\nimport {\n refreshWalletPublicKeys,\n useBalanceInfo,\n useWallet,\n useWalletPublicKeys,\n useWalletSelector,\n} from '../utils/wallet';\nimport { findAssociatedTokenAddress } from '../utils/tokens';\nimport LoadingIndicator from './LoadingIndicator';\nimport Collapse from '@material-ui/core/Collapse';\nimport { Typography } from '@material-ui/core';\nimport TokenInfoDialog from './TokenInfoDialog';\nimport Link from '@material-ui/core/Link';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { abbreviateAddress } from '../utils/utils';\nimport Button from '@material-ui/core/Button';\nimport SendIcon from '@material-ui/icons/Send';\nimport ReceiveIcon from '@material-ui/icons/WorkOutline';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport AddIcon from '@material-ui/icons/Add';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport IconButton from '@material-ui/core/IconButton';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport EditIcon from '@material-ui/icons/Edit';\nimport MergeType from '@material-ui/icons/MergeType';\nimport SortIcon from '@material-ui/icons/Sort';\nimport FingerprintIcon from '@material-ui/icons/Fingerprint';\nimport AddTokenDialog from './AddTokenDialog';\nimport ExportAccountDialog from './ExportAccountDialog';\nimport SendDialog from './SendDialog';\nimport DepositDialog from './DepositDialog';\nimport {\n useIsProdNetwork,\n refreshAccountInfo,\n useSolanaExplorerUrlSuffix,\n} from '../utils/connection';\nimport { serumMarkets, priceStore } from '../utils/markets';\nimport { swapApiRequest } from '../utils/swap/api';\nimport { showSwapAddress } from '../utils/config';\nimport { useAsyncData } from '../utils/fetch-loop';\nimport { showTokenInfoDialog } from '../utils/config';\nimport { useConnection } from '../utils/connection';\nimport CloseTokenAccountDialog from './CloseTokenAccountButton';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport TokenIcon from './TokenIcon';\nimport EditAccountNameDialog from './EditAccountNameDialog';\nimport MergeAccountsDialog from './MergeAccountsDialog';\n\nconst balanceFormat = new Intl.NumberFormat(undefined, {\n minimumFractionDigits: 4,\n maximumFractionDigits: 4,\n useGrouping: true,\n});\n\nconst SortAccounts = {\n None: 0,\n Ascending: 1,\n Descending: 2,\n};\n\n// Aggregated $USD values of all child BalanceListItems child components.\n//\n// Values:\n// * undefined => loading.\n// * null => no market exists.\n// * float => done.\n//\n// For a given set of publicKeys, we know all the USD values have been loaded when\n// all of their values in this object are not `undefined`.\nconst usdValues = {};\n\n// Calculating associated token addresses is an asynchronous operation, so we cache\n// the values so that we can quickly render components using them. This prevents\n// flickering for the associated token fingerprint icon.\nconst associatedTokensCache = {};\n\nconst numberFormat = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n});\n\nfunction fairsIsLoaded(publicKeys) {\n return (\n publicKeys.filter((pk) => usdValues[pk.toString()] !== undefined).length ===\n publicKeys.length\n );\n}\n\nexport default function BalancesList() {\n const wallet = useWallet();\n const [publicKeys, loaded] = useWalletPublicKeys();\n const [showAddTokenDialog, setShowAddTokenDialog] = useState(false);\n const [showEditAccountNameDialog, setShowEditAccountNameDialog] = useState(\n false,\n );\n const [showMergeAccounts, setShowMergeAccounts] = useState(false);\n const [sortAccounts, setSortAccounts] = useState(SortAccounts.None);\n const { accounts, setAccountName } = useWalletSelector();\n // Dummy var to force rerenders on demand.\n const [, setForceUpdate] = useState(false);\n const selectedAccount = accounts.find((a) => a.isSelected);\n const allTokensLoaded = loaded && fairsIsLoaded(publicKeys);\n let sortedPublicKeys = publicKeys;\n if (allTokensLoaded && sortAccounts !== SortAccounts.None) {\n sortedPublicKeys = [...publicKeys];\n sortedPublicKeys.sort((a, b) => {\n const aVal = usdValues[a.toString()];\n const bVal = usdValues[b.toString()];\n\n a = aVal === undefined || aVal === null ? -1 : aVal;\n b = bVal === undefined || bVal === null ? -1 : bVal;\n if (sortAccounts === SortAccounts.Descending) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n } else {\n if (b < a) {\n return -1;\n } else if (b > a) {\n return 1;\n } else {\n return 0;\n }\n }\n });\n }\n const totalUsdValue = publicKeys\n .filter((pk) => usdValues[pk.toString()])\n .map((pk) => usdValues[pk.toString()])\n .reduce((a, b) => a + b, 0.0);\n\n // Memoized callback and component for the `BalanceListItems`.\n //\n // The `BalancesList` fetches data, e.g., fairs for tokens using React hooks\n // in each of the child `BalanceListItem` components. However, we want the\n // parent component, to aggregate all of this data together, for example,\n // to show the cumulative USD amount in the wallet.\n //\n // To achieve this, we need to pass a callback from the parent to the chlid,\n // so that the parent can collect the results of all the async network requests.\n // However, this can cause a render loop, since invoking the callback can cause\n // the parent to rerender, which causese the child to rerender, which causes\n // the callback to be invoked.\n //\n // To solve this, we memoize all the `BalanceListItem` children components.\n const setUsdValuesCallback = useCallback(\n (publicKey, usdValue) => {\n if (usdValues[publicKey.toString()] !== usdValue) {\n usdValues[publicKey.toString()] = usdValue;\n if (fairsIsLoaded(publicKeys)) {\n setForceUpdate((forceUpdate) => !forceUpdate);\n }\n }\n },\n [publicKeys],\n );\n const balanceListItemsMemo = useMemo(() => {\n return sortedPublicKeys.map((pk) => {\n return React.memo((props) => {\n return (\n \n );\n });\n });\n }, [sortedPublicKeys, setUsdValuesCallback]);\n\n return (\n \n \n \n \n {selectedAccount && selectedAccount.name} Balances{' '}\n {allTokensLoaded && (\n <>({numberFormat.format(totalUsdValue.toFixed(2))})\n )}\n \n {selectedAccount &&\n selectedAccount.name !== 'Main account' &&\n selectedAccount.name !== 'Hardware wallet' && (\n \n setShowEditAccountNameDialog(true)}>\n \n \n \n )}\n \n setShowMergeAccounts(true)}>\n \n \n \n \n setShowAddTokenDialog(true)}>\n \n \n \n \n {\n switch (sortAccounts) {\n case SortAccounts.None:\n setSortAccounts(SortAccounts.Ascending);\n return;\n case SortAccounts.Ascending:\n setSortAccounts(SortAccounts.Descending);\n return;\n case SortAccounts.Descending:\n setSortAccounts(SortAccounts.None);\n return;\n default:\n console.error('invalid sort type', sortAccounts);\n }\n }}\n >\n \n \n \n \n {\n refreshWalletPublicKeys(wallet);\n publicKeys.map((publicKey) =>\n refreshAccountInfo(wallet.connection, publicKey, true),\n );\n }}\n style={{ marginRight: -12 }}\n >\n \n \n \n \n \n \n {balanceListItemsMemo.map((Memoized) => (\n \n ))}\n {loaded ? null : }\n \n setShowAddTokenDialog(false)}\n />\n setShowEditAccountNameDialog(false)}\n oldName={selectedAccount ? selectedAccount.name : ''}\n onEdit={(name) => {\n setAccountName(selectedAccount.selector, name);\n setShowEditAccountNameDialog(false);\n }}\n />\n setShowMergeAccounts(false)}\n />\n \n );\n}\n\nconst useStyles = makeStyles((theme) => ({\n address: {\n textOverflow: 'ellipsis',\n overflowX: 'hidden',\n },\n itemDetails: {\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n marginBottom: theme.spacing(2),\n },\n buttonContainer: {\n display: 'flex',\n justifyContent: 'space-evenly',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n}));\n\nexport function BalanceListItem({ publicKey, expandable, setUsdValue }) {\n const wallet = useWallet();\n const balanceInfo = useBalanceInfo(publicKey);\n const classes = useStyles();\n const connection = useConnection();\n const [open, setOpen] = useState(false);\n const [, setForceUpdate] = useState(false);\n // Valid states:\n // * undefined => loading.\n // * null => not found.\n // * else => price is loaded.\n const [price, setPrice] = useState(undefined);\n useEffect(() => {\n if (balanceInfo) {\n if (balanceInfo.tokenSymbol) {\n const coin = balanceInfo.tokenSymbol.toUpperCase();\n // Don't fetch USD stable coins. Mark to 1 USD.\n if (coin === 'USDT' || coin === 'USDC') {\n setPrice(1);\n }\n // A Serum market exists. Fetch the price.\n else if (serumMarkets[coin]) {\n let m = serumMarkets[coin];\n priceStore\n .getPrice(connection, m.name)\n .then((price) => {\n setPrice(price);\n })\n .catch((err) => {\n console.error(err);\n setPrice(null);\n });\n }\n // No Serum market exists.\n else {\n setPrice(null);\n }\n }\n // No token symbol so don't fetch market data.\n else {\n setPrice(null);\n }\n }\n }, [price, balanceInfo, connection]);\n\n expandable = expandable === undefined ? true : expandable;\n\n if (!balanceInfo) {\n return ;\n }\n\n let { amount, decimals, mint, tokenName, tokenSymbol } = balanceInfo;\n\n // Fetch and cache the associated token address.\n if (wallet && wallet.publicKey && mint) {\n if (\n associatedTokensCache[wallet.publicKey.toString()] === undefined ||\n associatedTokensCache[wallet.publicKey.toString()][mint.toString()] ===\n undefined\n ) {\n findAssociatedTokenAddress(wallet.publicKey, mint).then((assocTok) => {\n let walletAccounts = Object.assign(\n {},\n associatedTokensCache[wallet.publicKey.toString()],\n );\n walletAccounts[mint.toString()] = assocTok;\n associatedTokensCache[wallet.publicKey.toString()] = walletAccounts;\n if (assocTok.equals(publicKey)) {\n // Force a rerender now that we've cached the value.\n setForceUpdate((forceUpdate) => !forceUpdate);\n }\n });\n }\n }\n\n const isAssociatedToken =\n wallet &&\n wallet.publicKey &&\n mint &&\n associatedTokensCache[wallet.publicKey.toString()]\n ? associatedTokensCache[wallet.publicKey.toString()][mint.toString()]\n : false;\n\n const subtitle = (\n
\n {isAssociatedToken && (\n \n \n
\n )}\n \n {publicKey.toBase58()}\n \n \n );\n\n const usdValue =\n price === undefined // Not yet loaded.\n ? undefined\n : price === null // Loaded and empty.\n ? null\n : ((amount / Math.pow(10, decimals)) * price).toFixed(2); // Loaded.\n if (setUsdValue && usdValue !== undefined) {\n setUsdValue(publicKey, usdValue === null ? null : parseFloat(usdValue));\n }\n\n return (\n <>\n expandable && setOpen((open) => !open)}>\n \n \n \n
\n \n {balanceFormat.format(amount / Math.pow(10, decimals))}{' '}\n {tokenName ?? abbreviateAddress(mint)}\n {tokenSymbol ? ` (${tokenSymbol})` : null}\n \n }\n secondary={subtitle}\n secondaryTypographyProps={{ className: classes.address }}\n />\n \n {price && (\n \n {numberFormat.format(usdValue)}\n \n )}\n
\n \n {expandable ? open ? : : <>}\n
\n \n \n \n \n );\n}\n\nfunction BalanceListItemDetails({ publicKey, serumMarkets, balanceInfo }) {\n const urlSuffix = useSolanaExplorerUrlSuffix();\n const classes = useStyles();\n const [sendDialogOpen, setSendDialogOpen] = useState(false);\n const [depositDialogOpen, setDepositDialogOpen] = useState(false);\n const [tokenInfoDialogOpen, setTokenInfoDialogOpen] = useState(false);\n const [exportAccDialogOpen, setExportAccDialogOpen] = useState(false);\n const [\n closeTokenAccountDialogOpen,\n setCloseTokenAccountDialogOpen,\n ] = useState(false);\n const wallet = useWallet();\n const isProdNetwork = useIsProdNetwork();\n const [swapInfo] = useAsyncData(async () => {\n if (!showSwapAddress || !isProdNetwork) {\n return null;\n }\n return await swapApiRequest(\n 'POST',\n 'swap_to',\n {\n blockchain: 'sol',\n coin: balanceInfo.mint?.toBase58(),\n address: publicKey.toBase58(),\n },\n { ignoreUserErrors: true },\n );\n }, [\n 'swapInfo',\n isProdNetwork,\n balanceInfo.mint?.toBase58(),\n publicKey.toBase58(),\n ]);\n\n if (!balanceInfo) {\n return ;\n }\n\n let { mint, tokenName, tokenSymbol, owner, amount } = balanceInfo;\n\n // Only show the export UI for the native SOL coin.\n const exportNeedsDisplay =\n mint === null && tokenName === 'SOL' && tokenSymbol === 'SOL';\n\n const market = tokenSymbol\n ? serumMarkets[tokenSymbol.toUpperCase()]\n ? serumMarkets[tokenSymbol.toUpperCase()].publicKey\n : undefined\n : undefined;\n\n return (\n <>\n {wallet.allowsExport && (\n setExportAccDialogOpen(false)}\n open={exportAccDialogOpen}\n />\n )}\n
\n
\n {!publicKey.equals(owner) && showTokenInfoDialog ? (\n }\n onClick={() => setTokenInfoDialogOpen(true)}\n >\n Token Info\n \n ) : null}\n }\n onClick={() => setDepositDialogOpen(true)}\n >\n Receive\n \n }\n onClick={() => setSendDialogOpen(true)}\n >\n Send\n \n {mint && amount === 0 ? (\n }\n onClick={() => setCloseTokenAccountDialogOpen(true)}\n >\n Delete\n \n ) : null}\n
\n \n Deposit Address: {publicKey.toBase58()}\n \n \n Token Name: {tokenName ?? 'Unknown'}\n \n \n Token Symbol: {tokenSymbol ?? 'Unknown'}\n \n {mint ? (\n \n Token Address: {mint.toBase58()}\n \n ) : null}\n
\n
\n \n \n View on Solana\n \n \n {market && (\n \n \n View on Serum\n \n \n )}\n {swapInfo && swapInfo.coin.erc20Contract && (\n \n \n View on Ethereum\n \n \n )}\n
\n {exportNeedsDisplay && wallet.allowsExport && (\n
\n \n setExportAccDialogOpen(true)}>\n Export\n \n \n
\n )}\n
\n
\n setSendDialogOpen(false)}\n balanceInfo={balanceInfo}\n publicKey={publicKey}\n />\n setDepositDialogOpen(false)}\n balanceInfo={balanceInfo}\n publicKey={publicKey}\n swapInfo={swapInfo}\n />\n setTokenInfoDialogOpen(false)}\n balanceInfo={balanceInfo}\n publicKey={publicKey}\n />\n setCloseTokenAccountDialogOpen(false)}\n balanceInfo={balanceInfo}\n publicKey={publicKey}\n />\n \n );\n}\n","import React, { useContext, useEffect, useMemo } from 'react';\nimport {\n AccountInfo,\n clusterApiUrl,\n Connection,\n PublicKey,\n} from '@solana/web3.js';\nimport tuple from 'immutable-tuple';\nimport { struct } from 'superstruct';\nimport assert from 'assert';\nimport { useLocalStorageState, useRefEqual } from './utils';\nimport { refreshCache, setCache, useAsyncData } from './fetch-loop';\n\nconst ConnectionContext = React.createContext<{\n endpoint: string;\n setEndpoint: (string) => void;\n connection: Connection;\n} | null>(null);\n\nexport const MAINNET_URL = 'https://solana-api.projectserum.com';\nexport function ConnectionProvider({ children }) {\n const [endpoint, setEndpoint] = useLocalStorageState(\n 'connectionEndpoint',\n MAINNET_URL,\n );\n\n const connection = useMemo(() => new Connection(endpoint, 'recent'), [\n endpoint,\n ]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function useConnection(): Connection {\n let context = useContext(ConnectionContext);\n if (!context) {\n throw new Error('Missing connection context');\n }\n return context.connection;\n}\n\nexport function useConnectionConfig() {\n let context = useContext(ConnectionContext);\n if (!context) {\n throw new Error('Missing connection context');\n }\n return { endpoint: context.endpoint, setEndpoint: context.setEndpoint };\n}\n\nexport function useIsProdNetwork() {\n let context = useContext(ConnectionContext);\n if (!context) {\n throw new Error('Missing connection context');\n }\n return context.endpoint === MAINNET_URL;\n}\n\nexport function useSolanaExplorerUrlSuffix() {\n const context = useContext(ConnectionContext);\n if (!context) {\n throw new Error('Missing connection context');\n }\n const endpoint = context.endpoint;\n if (endpoint === clusterApiUrl('devnet')) {\n return '?cluster=devnet';\n } else if (endpoint === clusterApiUrl('testnet')) {\n return '?cluster=testnet';\n }\n return '';\n}\n\nexport function useAccountInfo(publicKey?: PublicKey) {\n const connection = useConnection();\n const cacheKey = tuple(connection, publicKey?.toBase58());\n const [accountInfo, loaded] = useAsyncData(\n async () => (publicKey ? connection.getAccountInfo(publicKey) : null),\n cacheKey,\n );\n useEffect(() => {\n if (!publicKey) {\n return;\n }\n let previousInfo: AccountInfo | null = null;\n const id = connection.onAccountChange(publicKey, (info) => {\n if (\n !previousInfo ||\n !previousInfo.data.equals(info.data) ||\n previousInfo.lamports !== info.lamports\n ) {\n previousInfo = info;\n setCache(cacheKey, info);\n }\n });\n return () => {\n connection.removeAccountChangeListener(id);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [connection, publicKey?.toBase58() ?? '', cacheKey]);\n return [\n useRefEqual(\n accountInfo,\n (oldInfo, newInfo) =>\n !!oldInfo &&\n !!newInfo &&\n oldInfo.data.equals(newInfo.data) &&\n oldInfo.lamports === newInfo.lamports,\n ),\n loaded,\n ];\n}\n\nexport function refreshAccountInfo(connection, publicKey, clearCache = false) {\n const cacheKey = tuple(connection, publicKey.toBase58());\n refreshCache(cacheKey, clearCache);\n}\n\nexport function setInitialAccountInfo(connection, publicKey, accountInfo) {\n const cacheKey = tuple(connection, publicKey.toBase58());\n setCache(cacheKey, accountInfo, { initializeOnly: true });\n}\n\nexport async function getMultipleSolanaAccounts(\n connection: Connection,\n publicKeys: PublicKey[],\n): Promise<\n Array }>\n> {\n const args = [publicKeys.map((k) => k.toBase58()), { commitment: 'recent' }];\n // @ts-ignore\n const unsafeRes = await connection._rpcRequest('getMultipleAccounts', args);\n const res = GetMultipleAccountsAndContextRpcResult(unsafeRes);\n if (res.error) {\n throw new Error(\n 'failed to get info about accounts ' +\n publicKeys.map((k) => k.toBase58()).join(', ') +\n ': ' +\n res.error.message,\n );\n }\n assert(typeof res.result !== 'undefined');\n const accounts: Array = [];\n for (const account of res.result.value) {\n let value: {\n executable: any;\n owner: PublicKey;\n lamports: any;\n data: Buffer;\n } | null = null;\n if (res.result.value && account) {\n const { executable, owner, lamports, data } = account;\n assert(data[1] === 'base64');\n value = {\n executable,\n owner: new PublicKey(owner),\n lamports,\n data: Buffer.from(data[0], 'base64'),\n };\n }\n accounts.push(value);\n }\n return accounts.map((account, idx) => {\n return account === null\n ? null\n : {\n publicKey: publicKeys[idx],\n account,\n };\n });\n}\n\nfunction jsonRpcResult(resultDescription: any) {\n const jsonRpcVersion = struct.literal('2.0');\n return struct.union([\n struct({\n jsonrpc: jsonRpcVersion,\n id: 'string',\n error: 'any',\n }),\n struct({\n jsonrpc: jsonRpcVersion,\n id: 'string',\n error: 'null?',\n result: resultDescription,\n }),\n ]);\n}\n\nfunction jsonRpcResultAndContext(resultDescription: any) {\n return jsonRpcResult({\n context: struct({\n slot: 'number',\n }),\n value: resultDescription,\n });\n}\n\nconst AccountInfoResult = struct({\n executable: 'boolean',\n owner: 'string',\n lamports: 'number',\n data: 'any',\n rentEpoch: 'number?',\n});\n\nexport const GetMultipleAccountsAndContextRpcResult = jsonRpcResultAndContext(\n struct.array([struct.union(['null', AccountInfoResult])]),\n);\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\nimport * as bs58 from 'bs58';\nimport { Account, PublicKey } from '@solana/web3.js';\nimport nacl from 'tweetnacl';\nimport {\n setInitialAccountInfo,\n useAccountInfo,\n useConnection,\n} from './connection';\nimport {\n closeTokenAccount,\n createAndInitializeTokenAccount,\n createAssociatedTokenAccount,\n getOwnedTokenAccounts,\n nativeTransfer,\n transferTokens,\n transferAndClose,\n} from './tokens';\nimport { TOKEN_PROGRAM_ID, WRAPPED_SOL_MINT } from './tokens/instructions';\nimport {\n ACCOUNT_LAYOUT,\n parseMintData,\n parseTokenAccountData,\n} from './tokens/data';\nimport { useListener, useLocalStorageState, useRefEqual } from './utils';\nimport { useTokenName } from './tokens/names';\nimport { refreshCache, useAsyncData } from './fetch-loop';\nimport { getUnlockedMnemonicAndSeed, walletSeedChanged } from './wallet-seed';\nimport { WalletProviderFactory } from './walletProvider/factory';\nimport { getAccountFromSeed } from './walletProvider/localStorage';\nimport { useSnackbar } from 'notistack';\n\nconst DEFAULT_WALLET_SELECTOR = {\n walletIndex: 0,\n importedPubkey: undefined,\n ledger: false,\n};\n\nexport class Wallet {\n constructor(connection, type, args) {\n this.connection = connection;\n this.type = type;\n this.provider = WalletProviderFactory.getProvider(type, args);\n }\n\n static create = async (connection, type, args) => {\n const instance = new Wallet(connection, type, args);\n await instance.provider.init();\n return instance;\n };\n\n get publicKey() {\n return this.provider.publicKey;\n }\n\n get allowsExport() {\n return this.type === 'local';\n }\n\n getTokenAccountInfo = async () => {\n let accounts = await getOwnedTokenAccounts(this.connection, this.publicKey);\n return accounts\n .map(({ publicKey, accountInfo }) => {\n setInitialAccountInfo(this.connection, publicKey, accountInfo);\n return { publicKey, parsed: parseTokenAccountData(accountInfo.data) };\n })\n .sort((account1, account2) =>\n account1.parsed.mint\n .toBase58()\n .localeCompare(account2.parsed.mint.toBase58()),\n );\n };\n\n createTokenAccount = async (tokenAddress) => {\n return await createAndInitializeTokenAccount({\n connection: this.connection,\n payer: this,\n mintPublicKey: tokenAddress,\n newAccount: new Account(),\n });\n };\n\n createAssociatedTokenAccount = async (splTokenMintAddress) => {\n return await createAssociatedTokenAccount({\n connection: this.connection,\n wallet: this,\n splTokenMintAddress,\n });\n };\n\n tokenAccountCost = async () => {\n return this.connection.getMinimumBalanceForRentExemption(\n ACCOUNT_LAYOUT.span,\n );\n };\n\n transferToken = async (\n source,\n destination,\n amount,\n mint,\n memo = null,\n overrideDestinationCheck = false,\n ) => {\n if (source.equals(this.publicKey)) {\n if (memo) {\n throw new Error('Memo not implemented');\n }\n return this.transferSol(destination, amount);\n }\n return await transferTokens({\n connection: this.connection,\n owner: this,\n sourcePublicKey: source,\n destinationPublicKey: destination,\n amount,\n memo,\n mint,\n overrideDestinationCheck,\n });\n };\n\n transferSol = async (destination, amount) => {\n return nativeTransfer(this.connection, this, destination, amount);\n };\n\n closeTokenAccount = async (publicKey, skipPreflight = false) => {\n return await closeTokenAccount({\n connection: this.connection,\n owner: this,\n sourcePublicKey: publicKey,\n skipPreflight,\n });\n };\n\n transferAndClose = async (source, destination, amount) => {\n return await transferAndClose({\n connection: this.connection,\n owner: this,\n sourcePublicKey: source,\n destinationPublicKey: destination,\n amount,\n });\n };\n\n signTransaction = async (transaction) => {\n return this.provider.signTransaction(transaction);\n };\n\n createSignature = async (message) => {\n return this.provider.createSignature(message);\n };\n}\n\nconst WalletContext = React.createContext(null);\n\nexport function WalletProvider({ children }) {\n useListener(walletSeedChanged, 'change');\n const {\n mnemonic,\n seed,\n importsEncryptionKey,\n derivationPath,\n } = getUnlockedMnemonicAndSeed();\n const { enqueueSnackbar } = useSnackbar();\n const connection = useConnection();\n const [wallet, setWallet] = useState();\n\n // `privateKeyImports` are accounts imported *in addition* to HD wallets\n const [privateKeyImports, setPrivateKeyImports] = useLocalStorageState(\n 'walletPrivateKeyImports',\n {},\n );\n // `walletSelector` identifies which wallet to use.\n const [walletSelector, setWalletSelector] = useLocalStorageState(\n 'walletSelector',\n DEFAULT_WALLET_SELECTOR,\n );\n const [ledgerPubKey, setLedgerPubKey] = useState(\n walletSelector.ledger ? walletSelector.importedPubkey : undefined,\n );\n\n // `walletCount` is the number of HD wallets.\n const [walletCount, setWalletCount] = useLocalStorageState('walletCount', 1);\n\n useEffect(() => {\n (async () => {\n if (!seed) {\n return null;\n }\n let wallet;\n if (walletSelector.ledger) {\n try {\n const onDisconnect = () => {\n setWalletSelector(DEFAULT_WALLET_SELECTOR);\n setLedgerPubKey(undefined);\n };\n wallet = await Wallet.create(connection, 'ledger', { onDisconnect });\n } catch (e) {\n console.log(`received error using ledger wallet: ${e}`);\n let message = 'Received error unlocking ledger';\n if (e.statusCode) {\n message += `: ${e.statusCode}`;\n }\n enqueueSnackbar(message, { variant: 'error' });\n setWalletSelector(DEFAULT_WALLET_SELECTOR);\n setLedgerPubKey(undefined);\n return;\n }\n }\n if (!wallet) {\n const account =\n walletSelector.walletIndex !== undefined\n ? getAccountFromSeed(\n Buffer.from(seed, 'hex'),\n walletSelector.walletIndex,\n derivationPath,\n )\n : new Account(\n (() => {\n const { nonce, ciphertext } = privateKeyImports[\n walletSelector.importedPubkey\n ];\n return nacl.secretbox.open(\n bs58.decode(ciphertext),\n bs58.decode(nonce),\n importsEncryptionKey,\n );\n })(),\n );\n wallet = await Wallet.create(connection, 'local', { account });\n }\n setWallet(wallet);\n })();\n }, [\n connection,\n seed,\n walletSelector,\n privateKeyImports,\n importsEncryptionKey,\n setWalletSelector,\n enqueueSnackbar,\n derivationPath,\n ]);\n\n function addAccount({ name, importedAccount, ledger }) {\n if (ledger) {\n setLedgerPubKey(importedAccount);\n } else if (importedAccount === undefined) {\n name && localStorage.setItem(`name${walletCount}`, name);\n setWalletCount(walletCount + 1);\n } else {\n const nonce = nacl.randomBytes(nacl.secretbox.nonceLength);\n const plaintext = importedAccount.secretKey;\n const ciphertext = nacl.secretbox(plaintext, nonce, importsEncryptionKey);\n // `useLocalStorageState` requires a new object.\n let newPrivateKeyImports = { ...privateKeyImports };\n newPrivateKeyImports[importedAccount.publicKey.toString()] = {\n name,\n ciphertext: bs58.encode(ciphertext),\n nonce: bs58.encode(nonce),\n };\n setPrivateKeyImports(newPrivateKeyImports);\n }\n }\n\n const getWalletNames = () => {\n return JSON.stringify(\n [...Array(walletCount).keys()].map((idx) =>\n localStorage.getItem(`name${idx}`),\n ),\n );\n };\n const [walletNames, setWalletNames] = useState(getWalletNames());\n function setAccountName(selector, newName) {\n if (selector.importedPubkey && !selector.ledger) {\n let newPrivateKeyImports = { ...privateKeyImports };\n newPrivateKeyImports[selector.importedPubkey.toString()].name = newName;\n setPrivateKeyImports(newPrivateKeyImports);\n } else {\n localStorage.setItem(`name${selector.walletIndex}`, newName);\n setWalletNames(getWalletNames());\n }\n }\n\n const accounts = useMemo(() => {\n if (!seed) {\n return [];\n }\n\n const seedBuffer = Buffer.from(seed, 'hex');\n const derivedAccounts = [...Array(walletCount).keys()].map((idx) => {\n let address = getAccountFromSeed(seedBuffer, idx, derivationPath)\n .publicKey;\n let name = localStorage.getItem(`name${idx}`);\n return {\n selector: {\n walletIndex: idx,\n importedPubkey: undefined,\n ledger: false,\n },\n isSelected: walletSelector.walletIndex === idx,\n address,\n name: idx === 0 ? 'Main account' : name || `Account ${idx}`,\n };\n });\n\n const importedAccounts = Object.keys(privateKeyImports).map((pubkey) => {\n const { name } = privateKeyImports[pubkey];\n return {\n selector: {\n walletIndex: undefined,\n importedPubkey: pubkey,\n ledger: false,\n },\n address: new PublicKey(bs58.decode(pubkey)),\n name: `${name} (imported)`, // TODO: do this in the Component with styling.\n isSelected: walletSelector.importedPubkey === pubkey,\n };\n });\n\n if (ledgerPubKey) {\n derivedAccounts.push({\n selector: {\n walletIndex: undefined,\n importedPubkey: ledgerPubKey,\n ledger: true,\n },\n address: new PublicKey(ledgerPubKey), // todo: get the ledger address\n name: 'Hardware wallet',\n isSelected: walletSelector.ledger,\n });\n }\n\n return derivedAccounts.concat(importedAccounts);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n seed,\n walletCount,\n walletSelector,\n privateKeyImports,\n walletNames,\n ledgerPubKey,\n ]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function useWallet() {\n return useContext(WalletContext).wallet;\n}\n\nexport function useWalletPublicKeys() {\n let wallet = useWallet();\n let [tokenAccountInfo, loaded] = useAsyncData(\n wallet.getTokenAccountInfo,\n wallet.getTokenAccountInfo,\n );\n let publicKeys = [\n wallet.publicKey,\n ...(tokenAccountInfo\n ? tokenAccountInfo.map(({ publicKey }) => publicKey)\n : []),\n ];\n // Prevent users from re-rendering unless the list of public keys actually changes\n publicKeys = useRefEqual(\n publicKeys,\n (oldKeys, newKeys) =>\n oldKeys.length === newKeys.length &&\n oldKeys.every((key, i) => key.equals(newKeys[i])),\n );\n return [publicKeys, loaded];\n}\n\nexport function useWalletTokenAccounts() {\n let wallet = useWallet();\n return useAsyncData(wallet.getTokenAccountInfo, wallet.getTokenAccountInfo);\n}\n\nexport function refreshWalletPublicKeys(wallet) {\n refreshCache(wallet.getTokenAccountInfo);\n}\n\nexport function useWalletAddressForMint(mint) {\n const [walletAccounts] = useWalletTokenAccounts();\n return useMemo(\n () =>\n mint\n ? walletAccounts\n ?.find((account) => account.parsed?.mint?.equals(mint))\n ?.publicKey.toBase58()\n : null,\n [walletAccounts, mint],\n );\n}\n\nexport function useBalanceInfo(publicKey) {\n let [accountInfo, accountInfoLoaded] = useAccountInfo(publicKey);\n let { mint, owner, amount } = accountInfo?.owner.equals(TOKEN_PROGRAM_ID)\n ? parseTokenAccountData(accountInfo.data)\n : {};\n let [mintInfo, mintInfoLoaded] = useAccountInfo(mint);\n let { name, symbol } = useTokenName(mint);\n\n if (!accountInfoLoaded) {\n return null;\n }\n\n if (mint && mint.equals(WRAPPED_SOL_MINT)) {\n return {\n amount,\n decimals: 9,\n mint,\n owner,\n tokenName: 'Wrapped SOL',\n tokenSymbol: 'SOL',\n valid: true,\n };\n }\n\n if (mint && mintInfoLoaded) {\n try {\n let { decimals } = parseMintData(mintInfo.data);\n return {\n amount,\n decimals,\n mint,\n owner,\n tokenName: name,\n tokenSymbol: symbol,\n valid: true,\n };\n } catch (e) {\n return {\n amount,\n decimals: 0,\n mint,\n owner,\n tokenName: 'Invalid',\n tokenSymbol: 'INVALID',\n valid: false,\n };\n }\n }\n\n if (!mint) {\n return {\n amount: accountInfo?.lamports ?? 0,\n decimals: 9,\n mint: null,\n owner: publicKey,\n tokenName: 'SOL',\n tokenSymbol: 'SOL',\n valid: true,\n };\n }\n\n return null;\n}\n\nexport function useWalletSelector() {\n const {\n accounts,\n addAccount,\n setWalletSelector,\n setAccountName,\n } = useContext(WalletContext);\n\n return { accounts, setWalletSelector, addAccount, setAccountName };\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { Connection, PublicKey } from '@solana/web3.js';\n\nexport async function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function useLocalStorageState(\n key: string,\n defaultState: T,\n): [T, (T) => void] {\n const [state, setState] = useState(() => {\n let storedState = localStorage.getItem(key);\n if (storedState) {\n return JSON.parse(storedState);\n }\n return defaultState;\n });\n\n const setLocalStorageState = useCallback(\n (newState) => {\n let changed = state !== newState;\n if (!changed) {\n return;\n }\n setState(newState);\n if (newState === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(newState));\n }\n },\n [state, key],\n );\n\n return [state, setLocalStorageState];\n}\n\nexport function useEffectAfterTimeout(effect: () => void, timeout: number) {\n useEffect(() => {\n let handle = setTimeout(effect, timeout);\n return () => clearTimeout(handle);\n });\n}\n\nexport function useListener(emitter, eventName: string) {\n let [, forceUpdate] = useState(0);\n useEffect(() => {\n let listener = () => forceUpdate((i) => i + 1);\n emitter.on(eventName, listener);\n return () => emitter.removeListener(eventName, listener);\n }, [emitter, eventName]);\n}\n\nexport function useRefEqual(\n value: T,\n areEqual: (oldValue: T, newValue: T) => boolean,\n): T {\n const prevRef = useRef(value);\n if (prevRef.current !== value && !areEqual(prevRef.current, value)) {\n prevRef.current = value;\n }\n return prevRef.current;\n}\n\nexport function abbreviateAddress(address: PublicKey) {\n let base58 = address.toBase58();\n return base58.slice(0, 4) + '…' + base58.slice(base58.length - 4);\n}\n\nexport async function confirmTransaction(\n connection: Connection,\n signature: string,\n) {\n let startTime = new Date();\n let result = await connection.confirmTransaction(signature, 'recent');\n if (result.value.err) {\n throw new Error(\n 'Error confirming transaction: ' + JSON.stringify(result.value.err),\n );\n }\n console.log(\n 'Transaction confirmed after %sms',\n new Date().getTime() - startTime.getTime(),\n );\n return result.value;\n}\n","import { LocalStorageWalletProvider } from './localStorage';\nimport { LedgerWalletProvider } from './ledger';\n\nexport class WalletProviderFactory {\n static getProvider(type, args) {\n if (type === 'local') {\n return new LocalStorageWalletProvider(args);\n }\n\n if (type === 'ledger') {\n return new LedgerWalletProvider(args);\n }\n }\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n generateMnemonicAndSeed,\n hasLockedMnemonicAndSeed,\n loadMnemonicAndSeed,\n mnemonicToSeed,\n storeMnemonicAndSeed,\n} from '../utils/wallet-seed';\nimport {\n getAccountFromSeed,\n DERIVATION_PATH,\n} from '../utils/walletProvider/localStorage.js';\nimport { useSolanaExplorerUrlSuffix } from '../utils/connection';\nimport Container from '@material-ui/core/Container';\nimport LoadingIndicator from '../components/LoadingIndicator';\nimport { BalanceListItem } from '../components/BalancesList.js';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport { Typography } from '@material-ui/core';\nimport TextField from '@material-ui/core/TextField';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport CardActions from '@material-ui/core/CardActions';\nimport Button from '@material-ui/core/Button';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { useCallAsync } from '../utils/notifications';\nimport Link from '@material-ui/core/Link';\nimport { validateMnemonic } from 'bip39';\n\nexport default function LoginPage() {\n const [restore, setRestore] = useState(false);\n return (\n \n {restore ? (\n setRestore(false)} />\n ) : (\n <>\n {hasLockedMnemonicAndSeed() ? : }\n
\n setRestore(true)}>\n Restore existing wallet\n \n \n )}\n
\n );\n}\n\nfunction CreateWalletForm() {\n const [mnemonicAndSeed, setMnemonicAndSeed] = useState(null);\n useEffect(() => {\n generateMnemonicAndSeed().then(setMnemonicAndSeed);\n }, []);\n const [savedWords, setSavedWords] = useState(false);\n const callAsync = useCallAsync();\n\n function submit(password) {\n const { mnemonic, seed } = mnemonicAndSeed;\n callAsync(\n storeMnemonicAndSeed(\n mnemonic,\n seed,\n password,\n DERIVATION_PATH.bip44Change,\n ),\n {\n progressMessage: 'Creating wallet...',\n successMessage: 'Wallet created',\n },\n );\n }\n\n if (!savedWords) {\n return (\n setSavedWords(true)}\n />\n );\n }\n\n return (\n setSavedWords(false)}\n onSubmit={submit}\n />\n );\n}\n\nfunction SeedWordsForm({ mnemonicAndSeed, goForward }) {\n const [confirmed, setConfirmed] = useState(false);\n\n return (\n \n \n \n Create New Wallet\n \n \n Create a new wallet to hold Solana and SPL tokens.\n \n \n Please write down the following twenty four words and keep them in a\n safe place:\n \n {mnemonicAndSeed ? (\n e.currentTarget.select()}\n />\n ) : (\n \n )}\n \n Your private keys are only stored on your current computer or device.\n You will need these words to restore your wallet if your browser's\n storage is cleared or your device is damaged or lost.\n \n \n By default, sollet will use m/44'/501'/0'/0' as the\n derivation path for the main wallet. To use an alternative path, try\n restoring an existing wallet.\n \n setConfirmed(e.target.checked)}\n />\n }\n label=\"I have saved these words in a safe place.\"\n />\n \n \n \n \n \n );\n}\n\nfunction ChoosePasswordForm({ goBack, onSubmit }) {\n const [password, setPassword] = useState('');\n const [passwordConfirm, setPasswordConfirm] = useState('');\n\n return (\n \n \n \n Choose a Password (Optional)\n \n \n Optionally pick a password to protect your wallet.\n \n setPassword(e.target.value)}\n />\n setPasswordConfirm(e.target.value)}\n />\n \n If you forget your password you will need to restore your wallet using\n your seed words.\n \n \n \n \n onSubmit(password)}\n >\n Create Wallet\n \n \n \n );\n}\n\nfunction LoginForm() {\n const [password, setPassword] = useState('');\n const [stayLoggedIn, setStayLoggedIn] = useState(false);\n const callAsync = useCallAsync();\n\n function submit() {\n callAsync(loadMnemonicAndSeed(password, stayLoggedIn), {\n progressMessage: 'Unlocking wallet...',\n successMessage: 'Wallet unlocked',\n });\n }\n\n return (\n \n \n \n Unlock Wallet\n \n setPassword(e.target.value)}\n />\n setStayLoggedIn(e.target.checked)}\n />\n }\n label=\"Keep wallet unlocked\"\n />\n \n \n \n \n \n );\n}\n\nfunction RestoreWalletForm({ goBack }) {\n const [mnemonic, setMnemonic] = useState('');\n const [seed, setSeed] = useState('');\n const [password, setPassword] = useState('');\n const [passwordConfirm, setPasswordConfirm] = useState('');\n const [next, setNext] = useState(false);\n const isNextBtnEnabled =\n password === passwordConfirm && validateMnemonic(mnemonic);\n\n return (\n <>\n {next ? (\n setNext(false)}\n mnemonic={mnemonic}\n password={password}\n seed={seed}\n />\n ) : (\n \n \n \n Restore Existing Wallet\n \n \n Restore your wallet using your twelve or twenty-four seed words.\n Note that this will delete any existing wallet on this device.\n \n setMnemonic(e.target.value)}\n />\n setPassword(e.target.value)}\n />\n setPasswordConfirm(e.target.value)}\n />\n \n \n \n {\n mnemonicToSeed(mnemonic).then((seed) => {\n setSeed(seed);\n setNext(true);\n });\n }}\n >\n Next\n \n \n \n )}\n \n );\n}\n\nfunction DerivedAccounts({ goBack, mnemonic, seed, password }) {\n const callAsync = useCallAsync();\n const urlSuffix = useSolanaExplorerUrlSuffix();\n const [dPathMenuItem, setDPathMenuItem] = useState(\n DerivationPathMenuItem.Bip44Change,\n );\n\n const accounts = [...Array(10)].map((_, idx) => {\n return getAccountFromSeed(\n Buffer.from(seed, 'hex'),\n idx,\n toDerivationPath(dPathMenuItem),\n );\n });\n\n function submit() {\n callAsync(\n storeMnemonicAndSeed(\n mnemonic,\n seed,\n password,\n toDerivationPath(dPathMenuItem),\n ),\n );\n }\n\n return (\n \n \n \n \n Derivable Accounts\n \n \n setDPathMenuItem(e.target.value)}\n >\n \n {`m/44'/501'/0'/0'`}\n \n \n {`m/44'/501'/0'`}\n \n \n {`m/501'/0'/0/0 (deprecated)`}\n \n \n \n \n {accounts.map((acc) => {\n return (\n \n \n \n );\n })}\n \n \n \n \n \n \n );\n}\n\n// Material UI's Select doesn't render properly when using an `undefined` value,\n// so we define this type and the subsequent `toDerivationPath` translator as a\n// workaround.\n//\n// DERIVATION_PATH.deprecated is always undefined.\nconst DerivationPathMenuItem = {\n Deprecated: 0,\n Bip44: 1,\n Bip44Change: 2,\n};\n\nfunction toDerivationPath(dPathMenuItem) {\n switch (dPathMenuItem) {\n case DerivationPathMenuItem.Deprecated:\n return DERIVATION_PATH.deprecated;\n case DerivationPathMenuItem.Bip44:\n return DERIVATION_PATH.bip44;\n case DerivationPathMenuItem.Bip44Change:\n return DERIVATION_PATH.bip44Change;\n default:\n throw new Error(`invalid derivation path: ${dPathMenuItem}`);\n }\n}\n","import * as BufferLayout from 'buffer-layout';\nimport {\n PublicKey,\n SYSVAR_RENT_PUBKEY,\n TransactionInstruction,\n} from '@solana/web3.js';\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n);\n\nexport const WRAPPED_SOL_MINT = new PublicKey(\n 'So11111111111111111111111111111111111111112',\n);\n\nexport const MEMO_PROGRAM_ID = new PublicKey(\n 'Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo',\n);\n\nconst LAYOUT = BufferLayout.union(BufferLayout.u8('instruction'));\nLAYOUT.addVariant(\n 0,\n BufferLayout.struct([\n BufferLayout.u8('decimals'),\n BufferLayout.blob(32, 'mintAuthority'),\n BufferLayout.u8('freezeAuthorityOption'),\n BufferLayout.blob(32, 'freezeAuthority'),\n ]),\n 'initializeMint',\n);\nLAYOUT.addVariant(1, BufferLayout.struct([]), 'initializeAccount');\nLAYOUT.addVariant(\n 3,\n BufferLayout.struct([BufferLayout.nu64('amount')]),\n 'transfer',\n);\nLAYOUT.addVariant(\n 7,\n BufferLayout.struct([BufferLayout.nu64('amount')]),\n 'mintTo',\n);\nLAYOUT.addVariant(\n 8,\n BufferLayout.struct([BufferLayout.nu64('amount')]),\n 'burn',\n);\nLAYOUT.addVariant(9, BufferLayout.struct([]), 'closeAccount');\n\nconst instructionMaxSpan = Math.max(\n ...Object.values(LAYOUT.registry).map((r) => r.span),\n);\n\nfunction encodeTokenInstructionData(instruction) {\n let b = Buffer.alloc(instructionMaxSpan);\n let span = LAYOUT.encode(instruction, b);\n return b.slice(0, span);\n}\n\nexport function initializeMint({\n mint,\n decimals,\n mintAuthority,\n freezeAuthority,\n}) {\n let keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n initializeMint: {\n decimals,\n mintAuthority: mintAuthority.toBuffer(),\n freezeAuthorityOption: !!freezeAuthority,\n freezeAuthority: (freezeAuthority || new PublicKey()).toBuffer(),\n },\n }),\n programId: TOKEN_PROGRAM_ID,\n });\n}\n\nexport function initializeAccount({ account, mint, owner }) {\n let keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n initializeAccount: {},\n }),\n programId: TOKEN_PROGRAM_ID,\n });\n}\n\nexport function transfer({ source, destination, amount, owner }) {\n let keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n transfer: { amount },\n }),\n programId: TOKEN_PROGRAM_ID,\n });\n}\n\nexport function mintTo({ mint, destination, amount, mintAuthority }) {\n let keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: mintAuthority, isSigner: true, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n mintTo: {\n amount,\n },\n }),\n programId: TOKEN_PROGRAM_ID,\n });\n}\n\nexport function closeAccount({ source, destination, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n closeAccount: {},\n }),\n programId: TOKEN_PROGRAM_ID,\n });\n}\n\nexport function memoInstruction(memo) {\n return new TransactionInstruction({\n keys: [],\n data: Buffer.from(memo, 'utf-8'),\n programId: MEMO_PROGRAM_ID,\n });\n}\n\nclass PublicKeyLayout extends BufferLayout.Blob {\n constructor(property) {\n super(32, property);\n }\n\n decode(b, offset) {\n return new PublicKey(super.decode(b, offset));\n }\n\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\n\nfunction publicKeyLayout(property) {\n return new PublicKeyLayout(property);\n}\n\n\nexport const OWNER_VALIDATION_PROGRAM_ID = new PublicKey(\n '4MNPdKu9wFMvEeZBMt3Eipfs5ovVWTJb31pEXDJAAxX5',\n);\n\nexport const OWNER_VALIDATION_LAYOUT = BufferLayout.struct([\n publicKeyLayout('account'),\n]);\n\nexport function encodeOwnerValidationInstruction(instruction) {\n const b = Buffer.alloc(OWNER_VALIDATION_LAYOUT.span);\n const span = OWNER_VALIDATION_LAYOUT.encode(instruction, b);\n return b.slice(0, span);\n}\n\nexport function assertOwner({ account, owner }) {\n const keys = [{ pubkey: account, isSigner: false, isWritable: false }];\n return new TransactionInstruction({\n keys,\n data: encodeOwnerValidationInstruction({ account: owner }),\n programId: OWNER_VALIDATION_PROGRAM_ID,\n });\n}\n","import assert from 'assert';\nimport { useEffect, useReducer } from 'react';\nimport tuple from 'immutable-tuple';\n\nconst pageLoadTime = new Date();\n\nconst globalCache: Map = new Map();\nconst errorCache: Map = new Map();\n\nclass FetchLoops {\n loops = new Map();\n\n addListener(listener) {\n if (!this.loops.has(listener.cacheKey)) {\n this.loops.set(\n listener.cacheKey,\n new FetchLoopInternal(listener.cacheKey, listener.fn),\n );\n }\n this.loops.get(listener.cacheKey).addListener(listener);\n }\n\n removeListener(listener) {\n let loop = this.loops.get(listener.cacheKey);\n loop.removeListener(listener);\n if (loop.stopped) {\n this.loops.delete(listener.cacheKey);\n }\n }\n\n refresh(cacheKey) {\n if (this.loops.has(cacheKey)) {\n this.loops.get(cacheKey).refresh();\n }\n }\n\n refreshAll() {\n return Promise.all([...this.loops.values()].map((loop) => loop.refresh()));\n }\n}\nconst globalLoops = new FetchLoops();\n\nclass FetchLoopListener {\n cacheKey: any;\n fn: () => Promise;\n refreshInterval: number;\n callback: () => void;\n\n constructor(\n cacheKey: any,\n fn: () => Promise,\n refreshInterval: number,\n callback: () => void,\n ) {\n this.cacheKey = cacheKey;\n this.fn = fn;\n this.refreshInterval = refreshInterval;\n this.callback = callback;\n }\n}\n\nclass FetchLoopInternal {\n cacheKey: any;\n fn: () => Promise;\n timeoutId: null | any;\n listeners: Set>;\n errors: number;\n\n constructor(cacheKey: any, fn: () => Promise) {\n this.cacheKey = cacheKey;\n this.fn = fn;\n this.timeoutId = null;\n this.listeners = new Set();\n this.errors = 0;\n }\n\n get refreshInterval(): number {\n return Math.min(\n ...[...this.listeners].map((listener) => listener.refreshInterval),\n );\n }\n\n get stopped(): boolean {\n return this.listeners.size === 0;\n }\n\n addListener(listener: FetchLoopListener): void {\n const previousRefreshInterval = this.refreshInterval;\n this.listeners.add(listener);\n if (this.refreshInterval < previousRefreshInterval) {\n this.refresh();\n }\n }\n\n removeListener(listener: FetchLoopListener): void {\n assert(this.listeners.delete(listener));\n if (this.stopped) {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n }\n\n notifyListeners(): void {\n this.listeners.forEach((listener) => listener.callback());\n }\n\n refresh = async () => {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.stopped) {\n return;\n }\n\n try {\n const data = await this.fn();\n globalCache.set(this.cacheKey, data);\n errorCache.delete(this.cacheKey);\n this.errors = 0;\n return data;\n } catch (error) {\n ++this.errors;\n globalCache.delete(this.cacheKey);\n errorCache.set(this.cacheKey, error);\n console.warn(error);\n } finally {\n this.notifyListeners();\n if (!this.timeoutId && !this.stopped) {\n let waitTime = this.refreshInterval;\n\n // Back off on errors.\n if (this.errors > 0) {\n waitTime = Math.min(1000 * 2 ** (this.errors - 1), 60000);\n }\n\n // Don't do any refreshing for the first five seconds, to make way for other things to load.\n const timeSincePageLoad = +new Date() - +pageLoadTime;\n if (timeSincePageLoad < 5000) {\n waitTime += 5000 - timeSincePageLoad / 2;\n }\n\n // Refresh background pages slowly.\n if (document.visibilityState === 'hidden') {\n waitTime = 60000;\n } else if (!document.hasFocus()) {\n waitTime *= 1.5;\n }\n\n // Add jitter so we don't send all requests at the same time.\n waitTime *= 0.8 + 0.4 * Math.random();\n\n this.timeoutId = setTimeout(this.refresh, waitTime);\n }\n }\n };\n}\n\n// returns [data, loaded, error]\n// loaded is false when error is present for backwards compatibility\nexport function useAsyncData(\n asyncFn: () => Promise,\n cacheKey: any,\n { refreshInterval = 60000 } = {},\n): [null | undefined | T, boolean, any] {\n const [, rerender] = useReducer((i) => i + 1, 0);\n cacheKey = formatCacheKey(cacheKey);\n\n useEffect(() => {\n if (!cacheKey) {\n return;\n }\n const listener = new FetchLoopListener(\n cacheKey,\n asyncFn,\n refreshInterval,\n rerender,\n );\n globalLoops.addListener(listener);\n return () => globalLoops.removeListener(listener);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cacheKey, refreshInterval]);\n\n if (!cacheKey) {\n return [null, false, undefined];\n }\n\n const loaded = globalCache.has(cacheKey);\n const error = errorCache.has(cacheKey) ? errorCache.get(cacheKey) : undefined;\n const data = loaded ? globalCache.get(cacheKey) : undefined;\n return [data, loaded, error];\n}\n\nexport function refreshCache(cacheKey, clearCache = false) {\n cacheKey = formatCacheKey(cacheKey);\n if (clearCache) {\n globalCache.delete(cacheKey);\n }\n const loop = globalLoops.loops.get(cacheKey);\n if (loop) {\n loop.refresh();\n if (clearCache) {\n loop.notifyListeners();\n }\n }\n}\n\nexport function setCache(cacheKey, value, { initializeOnly = false } = {}) {\n cacheKey = formatCacheKey(cacheKey);\n if (initializeOnly && globalCache.has(cacheKey)) {\n return;\n }\n globalCache.set(cacheKey, value);\n const loop = globalLoops.loops.get(cacheKey);\n if (loop) {\n loop.notifyListeners();\n }\n}\n\nfunction formatCacheKey(cacheKey) {\n if (Array.isArray(cacheKey)) {\n return tuple(...cacheKey);\n }\n return cacheKey;\n}\n","import React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport { useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nexport default function DialogForm({\n open,\n onClose,\n onSubmit,\n children,\n ...rest\n}) {\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('xs'));\n\n return (\n {\n e.preventDefault();\n if (onSubmit) {\n onSubmit();\n }\n },\n }}\n onClose={onClose}\n fullScreen={fullScreen}\n {...rest}\n >\n {children}\n \n );\n}\n","import * as BufferLayout from 'buffer-layout';\nimport { PublicKey } from '@solana/web3.js';\n\nexport const ACCOUNT_LAYOUT = BufferLayout.struct([\n BufferLayout.blob(32, 'mint'),\n BufferLayout.blob(32, 'owner'),\n BufferLayout.nu64('amount'),\n BufferLayout.blob(93),\n]);\n\nexport const MINT_LAYOUT = BufferLayout.struct([\n BufferLayout.blob(44),\n BufferLayout.u8('decimals'),\n BufferLayout.blob(37),\n]);\n\nexport function parseTokenAccountData(data) {\n let { mint, owner, amount } = ACCOUNT_LAYOUT.decode(data);\n return {\n mint: new PublicKey(mint),\n owner: new PublicKey(owner),\n amount,\n };\n}\n\nexport function parseMintData(data) {\n let { decimals } = MINT_LAYOUT.decode(data);\n return { decimals };\n}\n\nexport function getOwnedAccountsFilters(publicKey) {\n return [\n {\n memcmp: {\n offset: ACCOUNT_LAYOUT.offsetOf('owner'),\n bytes: publicKey.toBase58(),\n },\n },\n {\n dataSize: ACCOUNT_LAYOUT.span,\n },\n ];\n}\n","import React, { useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { useConnection, useSolanaExplorerUrlSuffix } from './connection';\nimport Button from '@material-ui/core/Button';\nimport { confirmTransaction } from './utils';\n\nexport function useSendTransaction() {\n const connection = useConnection();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [sending, setSending] = useState(false);\n\n async function sendTransaction(\n signaturePromise,\n { onSuccess, onError } = {},\n ) {\n let id = enqueueSnackbar('Sending transaction...', {\n variant: 'info',\n persist: true,\n });\n setSending(true);\n try {\n let signature = await signaturePromise;\n closeSnackbar(id);\n id = enqueueSnackbar('Confirming transaction...', {\n variant: 'info',\n persist: true,\n action: ,\n });\n await confirmTransaction(connection, signature);\n closeSnackbar(id);\n setSending(false);\n enqueueSnackbar('Transaction confirmed', {\n variant: 'success',\n autoHideDuration: 15000,\n action: ,\n });\n if (onSuccess) {\n onSuccess(signature);\n }\n } catch (e) {\n closeSnackbar(id);\n setSending(false);\n console.warn(e.message);\n enqueueSnackbar(e.message, { variant: 'error' });\n if (onError) {\n onError(e);\n }\n }\n }\n\n return [sendTransaction, sending];\n}\n\nfunction ViewTransactionOnExplorerButton({ signature }) {\n const urlSuffix = useSolanaExplorerUrlSuffix();\n return (\n \n View on Solana Explorer\n \n );\n}\n\nexport function useCallAsync() {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n return async function callAsync(\n promise,\n {\n progressMessage = 'Submitting...',\n successMessage = 'Success',\n onSuccess,\n onError,\n } = {},\n ) {\n let id = enqueueSnackbar(progressMessage, {\n variant: 'info',\n persist: true,\n });\n try {\n let result = await promise;\n closeSnackbar(id);\n if (successMessage) {\n enqueueSnackbar(successMessage, { variant: 'success' });\n }\n if (onSuccess) {\n onSuccess(result);\n }\n } catch (e) {\n console.warn(e);\n closeSnackbar(id);\n enqueueSnackbar(e.message, { variant: 'error' });\n if (onError) {\n onError(e);\n }\n }\n };\n}\n","import { pbkdf2 } from 'crypto';\nimport { randomBytes, secretbox } from 'tweetnacl';\nimport * as bip32 from 'bip32';\nimport bs58 from 'bs58';\nimport { EventEmitter } from 'events';\n\nexport async function generateMnemonicAndSeed() {\n const bip39 = await import('bip39');\n const mnemonic = bip39.generateMnemonic(256);\n const seed = await bip39.mnemonicToSeed(mnemonic);\n return { mnemonic, seed: Buffer.from(seed).toString('hex') };\n}\n\nexport async function mnemonicToSeed(mnemonic) {\n const bip39 = await import('bip39');\n if (!bip39.validateMnemonic(mnemonic)) {\n throw new Error('Invalid seed words');\n }\n const seed = await bip39.mnemonicToSeed(mnemonic);\n return Buffer.from(seed).toString('hex');\n}\n\nlet unlockedMnemonicAndSeed = (() => {\n const stored = JSON.parse(\n sessionStorage.getItem('unlocked') ||\n localStorage.getItem('unlocked') ||\n 'null',\n );\n if (stored === null) {\n return {\n mnemonic: null,\n seed: null,\n importsEncryptionKey: null,\n derivationPath: null,\n };\n }\n return {\n importsEncryptionKey: deriveImportsEncryptionKey(stored.seed),\n ...stored,\n };\n})();\nexport const walletSeedChanged = new EventEmitter();\n\nexport function getUnlockedMnemonicAndSeed() {\n return unlockedMnemonicAndSeed;\n}\n\nexport function hasLockedMnemonicAndSeed() {\n return !!localStorage.getItem('locked');\n}\n\nfunction setUnlockedMnemonicAndSeed(\n mnemonic,\n seed,\n importsEncryptionKey,\n derivationPath,\n) {\n unlockedMnemonicAndSeed = {\n mnemonic,\n seed,\n importsEncryptionKey,\n derivationPath,\n };\n walletSeedChanged.emit('change', unlockedMnemonicAndSeed);\n}\n\nexport async function storeMnemonicAndSeed(\n mnemonic,\n seed,\n password,\n derivationPath,\n) {\n const plaintext = JSON.stringify({ mnemonic, seed, derivationPath });\n if (password) {\n const salt = randomBytes(16);\n const kdf = 'pbkdf2';\n const iterations = 100000;\n const digest = 'sha256';\n const key = await deriveEncryptionKey(password, salt, iterations, digest);\n const nonce = randomBytes(secretbox.nonceLength);\n const encrypted = secretbox(Buffer.from(plaintext), nonce, key);\n localStorage.setItem(\n 'locked',\n JSON.stringify({\n encrypted: bs58.encode(encrypted),\n nonce: bs58.encode(nonce),\n kdf,\n salt: bs58.encode(salt),\n iterations,\n digest,\n }),\n );\n localStorage.removeItem('unlocked');\n sessionStorage.removeItem('unlocked');\n } else {\n localStorage.setItem('unlocked', plaintext);\n localStorage.removeItem('locked');\n sessionStorage.removeItem('unlocked');\n }\n const importsEncryptionKey = deriveImportsEncryptionKey(seed);\n setUnlockedMnemonicAndSeed(\n mnemonic,\n seed,\n importsEncryptionKey,\n derivationPath,\n );\n}\n\nexport async function loadMnemonicAndSeed(password, stayLoggedIn) {\n const {\n encrypted: encodedEncrypted,\n nonce: encodedNonce,\n salt: encodedSalt,\n iterations,\n digest,\n } = JSON.parse(localStorage.getItem('locked'));\n const encrypted = bs58.decode(encodedEncrypted);\n const nonce = bs58.decode(encodedNonce);\n const salt = bs58.decode(encodedSalt);\n const key = await deriveEncryptionKey(password, salt, iterations, digest);\n const plaintext = secretbox.open(encrypted, nonce, key);\n if (!plaintext) {\n throw new Error('Incorrect password');\n }\n const decodedPlaintext = Buffer.from(plaintext).toString();\n const { mnemonic, seed, derivationPath } = JSON.parse(decodedPlaintext);\n if (stayLoggedIn) {\n sessionStorage.setItem('unlocked', decodedPlaintext);\n }\n const importsEncryptionKey = deriveImportsEncryptionKey(seed);\n setUnlockedMnemonicAndSeed(\n mnemonic,\n seed,\n importsEncryptionKey,\n derivationPath,\n );\n return { mnemonic, seed, derivationPath };\n}\n\nasync function deriveEncryptionKey(password, salt, iterations, digest) {\n return new Promise((resolve, reject) =>\n pbkdf2(\n password,\n salt,\n iterations,\n secretbox.keyLength,\n digest,\n (err, key) => (err ? reject(err) : resolve(key)),\n ),\n );\n}\n\nexport function lockWallet() {\n setUnlockedMnemonicAndSeed(null, null, null, null);\n}\n\n// Returns the 32 byte key used to encrypt imported private keys.\nfunction deriveImportsEncryptionKey(seed) {\n // SLIP16 derivation path.\n return bip32.fromSeed(Buffer.from(seed, 'hex')).derivePath(\"m/10016'/0\")\n .privateKey;\n}\n\nexport function forgetWallet() {\n localStorage.clear();\n sessionStorage.removeItem('unlocked');\n unlockedMnemonicAndSeed = {\n mnemonic: null,\n seed: null,\n importsEncryptionKey: null,\n };\n walletSeedChanged.emit('change', unlockedMnemonicAndSeed);\n window.location.reload();\n}\n","import {\n PublicKey,\n SystemProgram,\n Transaction,\n Account,\n TransactionInstruction,\n SYSVAR_RENT_PUBKEY,\n} from '@solana/web3.js';\nimport { TokenInstructions } from '@project-serum/serum';\nimport {\n assertOwner,\n closeAccount,\n initializeAccount,\n initializeMint,\n memoInstruction,\n mintTo,\n TOKEN_PROGRAM_ID,\n transfer,\n} from './instructions';\nimport {\n ACCOUNT_LAYOUT,\n getOwnedAccountsFilters,\n MINT_LAYOUT,\n parseTokenAccountData,\n} from './data';\nimport bs58 from 'bs58';\n\nexport async function getOwnedTokenAccounts(connection, publicKey) {\n let filters = getOwnedAccountsFilters(publicKey);\n let resp = await connection._rpcRequest('getProgramAccounts', [\n TOKEN_PROGRAM_ID.toBase58(),\n {\n commitment: connection.commitment,\n filters,\n },\n ]);\n if (resp.error) {\n throw new Error(\n 'failed to get token accounts owned by ' +\n publicKey.toBase58() +\n ': ' +\n resp.error.message,\n );\n }\n return resp.result\n .map(({ pubkey, account: { data, executable, owner, lamports } }) => ({\n publicKey: new PublicKey(pubkey),\n accountInfo: {\n data: bs58.decode(data),\n executable,\n owner: new PublicKey(owner),\n lamports,\n },\n }))\n .filter(({ accountInfo }) => {\n // TODO: remove this check once mainnet is updated\n return filters.every((filter) => {\n if (filter.dataSize) {\n return accountInfo.data.length === filter.dataSize;\n } else if (filter.memcmp) {\n let filterBytes = bs58.decode(filter.memcmp.bytes);\n return accountInfo.data\n .slice(\n filter.memcmp.offset,\n filter.memcmp.offset + filterBytes.length,\n )\n .equals(filterBytes);\n }\n return false;\n });\n });\n}\n\nexport async function signAndSendTransaction(\n connection,\n transaction,\n wallet,\n signers,\n skipPreflight = false,\n) {\n transaction.recentBlockhash = (\n await connection.getRecentBlockhash('max')\n ).blockhash;\n transaction.setSigners(\n // fee payed by the wallet owner\n wallet.publicKey,\n ...signers.map((s) => s.publicKey),\n );\n\n if (signers.length > 0) {\n transaction.partialSign(...signers);\n }\n\n transaction = await wallet.signTransaction(transaction);\n const rawTransaction = transaction.serialize();\n return await connection.sendRawTransaction(rawTransaction, {\n skipPreflight,\n preflightCommitment: 'single',\n });\n}\n\nexport async function nativeTransfer(connection, wallet, destination, amount) {\n const tx = new Transaction().add(\n SystemProgram.transfer({\n fromPubkey: wallet.publicKey,\n toPubkey: destination,\n lamports: amount,\n }),\n );\n return await signAndSendTransaction(connection, tx, wallet, []);\n}\n\nexport async function createAndInitializeMint({\n connection,\n owner, // Wallet for paying fees and allowed to mint new tokens\n mint, // Account to hold token information\n amount, // Number of tokens to issue\n decimals,\n initialAccount, // Account to hold newly issued tokens, if amount > 0\n}) {\n let transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: mint.publicKey,\n lamports: await connection.getMinimumBalanceForRentExemption(\n MINT_LAYOUT.span,\n ),\n space: MINT_LAYOUT.span,\n programId: TOKEN_PROGRAM_ID,\n }),\n );\n transaction.add(\n initializeMint({\n mint: mint.publicKey,\n decimals,\n mintAuthority: owner.publicKey,\n }),\n );\n let signers = [mint];\n if (amount > 0) {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: initialAccount.publicKey,\n lamports: await connection.getMinimumBalanceForRentExemption(\n ACCOUNT_LAYOUT.span,\n ),\n space: ACCOUNT_LAYOUT.span,\n programId: TOKEN_PROGRAM_ID,\n }),\n );\n signers.push(initialAccount);\n transaction.add(\n initializeAccount({\n account: initialAccount.publicKey,\n mint: mint.publicKey,\n owner: owner.publicKey,\n }),\n );\n transaction.add(\n mintTo({\n mint: mint.publicKey,\n destination: initialAccount.publicKey,\n amount,\n mintAuthority: owner.publicKey,\n }),\n );\n }\n\n return await signAndSendTransaction(connection, transaction, owner, signers);\n}\n\nexport async function createAndInitializeTokenAccount({\n connection,\n payer,\n mintPublicKey,\n newAccount,\n}) {\n let transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: newAccount.publicKey,\n lamports: await connection.getMinimumBalanceForRentExemption(\n ACCOUNT_LAYOUT.span,\n ),\n space: ACCOUNT_LAYOUT.span,\n programId: TOKEN_PROGRAM_ID,\n }),\n );\n transaction.add(\n initializeAccount({\n account: newAccount.publicKey,\n mint: mintPublicKey,\n owner: payer.publicKey,\n }),\n );\n\n let signers = [newAccount];\n return await signAndSendTransaction(connection, transaction, payer, signers);\n}\n\nexport async function createAssociatedTokenAccount({\n connection,\n wallet,\n splTokenMintAddress,\n}) {\n const [ix, address] = await createAssociatedTokenAccountIx(\n wallet.publicKey,\n wallet.publicKey,\n splTokenMintAddress,\n );\n const tx = new Transaction();\n tx.add(ix);\n tx.feePayer = wallet.publicKey;\n const txSig = await signAndSendTransaction(connection, tx, wallet, []);\n\n return [address, txSig];\n}\nasync function createAssociatedTokenAccountIx(\n fundingAddress,\n walletAddress,\n splTokenMintAddress,\n) {\n const associatedTokenAddress = await findAssociatedTokenAddress(\n walletAddress,\n splTokenMintAddress,\n );\n const systemProgramId = new PublicKey('11111111111111111111111111111111');\n const keys = [\n {\n pubkey: fundingAddress,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: associatedTokenAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: walletAddress,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: splTokenMintAddress,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: systemProgramId,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: TokenInstructions.TOKEN_PROGRAM_ID,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n ];\n const ix = new TransactionInstruction({\n keys,\n programId: ASSOCIATED_TOKEN_PROGRAM_ID,\n data: Buffer.from([]),\n });\n return [ix, associatedTokenAddress];\n}\n\nexport async function findAssociatedTokenAddress(\n walletAddress,\n tokenMintAddress,\n) {\n return (\n await PublicKey.findProgramAddress(\n [\n walletAddress.toBuffer(),\n TokenInstructions.TOKEN_PROGRAM_ID.toBuffer(),\n tokenMintAddress.toBuffer(),\n ],\n ASSOCIATED_TOKEN_PROGRAM_ID,\n )\n )[0];\n}\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n);\n\nexport async function transferTokens({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n mint,\n overrideDestinationCheck,\n}) {\n const destinationAccountInfo = await connection.getAccountInfo(\n destinationPublicKey,\n );\n if (\n !!destinationAccountInfo &&\n destinationAccountInfo.owner.equals(TOKEN_PROGRAM_ID)\n ) {\n return await transferBetweenSplTokenAccounts({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n });\n }\n\n if (\n (!destinationAccountInfo || destinationAccountInfo.lamports === 0) &&\n !overrideDestinationCheck\n ) {\n throw new Error('Cannot send to address with zero SOL balances');\n }\n const destinationSplTokenAccount = (\n await getOwnedTokenAccounts(connection, destinationPublicKey)\n )\n .map(({ publicKey, accountInfo }) => {\n return { publicKey, parsed: parseTokenAccountData(accountInfo.data) };\n })\n .filter(({ parsed }) => parsed.mint.equals(mint))\n .sort((a, b) => {\n return b.parsed.amount - a.parsed.amount;\n })[0];\n if (destinationSplTokenAccount) {\n return await transferBetweenSplTokenAccounts({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey: destinationSplTokenAccount.publicKey,\n amount,\n memo,\n });\n }\n return await createAndTransferToAccount({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n mint,\n });\n}\n\n// SPL tokens only.\nexport async function transferAndClose({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n}) {\n const tx = createTransferBetweenSplTokenAccountsInstruction({\n ownerPublicKey: owner.publicKey,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n });\n tx.add(\n closeAccount({\n source: sourcePublicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }),\n );\n let signers = [];\n return await signAndSendTransaction(connection, tx, owner, signers);\n}\n\nfunction createTransferBetweenSplTokenAccountsInstruction({\n ownerPublicKey,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n}) {\n let transaction = new Transaction().add(\n transfer({\n source: sourcePublicKey,\n destination: destinationPublicKey,\n owner: ownerPublicKey,\n amount,\n }),\n );\n if (memo) {\n transaction.add(memoInstruction(memo));\n }\n return transaction;\n}\n\nasync function transferBetweenSplTokenAccounts({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n}) {\n const transaction = createTransferBetweenSplTokenAccountsInstruction({\n ownerPublicKey: owner.publicKey,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n });\n let signers = [];\n return await signAndSendTransaction(connection, transaction, owner, signers);\n}\n\nasync function createAndTransferToAccount({\n connection,\n owner,\n sourcePublicKey,\n destinationPublicKey,\n amount,\n memo,\n mint,\n}) {\n const newAccount = new Account();\n let transaction = new Transaction();\n transaction.add(\n assertOwner({\n account: destinationPublicKey,\n owner: SystemProgram.programId,\n }),\n );\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: newAccount.publicKey,\n lamports: await connection.getMinimumBalanceForRentExemption(\n ACCOUNT_LAYOUT.span,\n ),\n space: ACCOUNT_LAYOUT.span,\n programId: TOKEN_PROGRAM_ID,\n }),\n );\n transaction.add(\n initializeAccount({\n account: newAccount.publicKey,\n mint,\n owner: destinationPublicKey,\n }),\n );\n const transferBetweenAccountsTxn = createTransferBetweenSplTokenAccountsInstruction(\n {\n ownerPublicKey: owner.publicKey,\n sourcePublicKey,\n destinationPublicKey: newAccount.publicKey,\n amount,\n memo,\n },\n );\n transaction.add(transferBetweenAccountsTxn);\n let signers = [newAccount];\n return await signAndSendTransaction(connection, transaction, owner, signers);\n}\n\nexport async function closeTokenAccount({\n connection,\n owner,\n sourcePublicKey,\n skipPreflight,\n}) {\n let transaction = new Transaction().add(\n closeAccount({\n source: sourcePublicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }),\n );\n let signers = [];\n return await signAndSendTransaction(\n connection,\n transaction,\n owner,\n signers,\n skipPreflight,\n );\n}\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\n\nexport default function SolanaIcon() {\n return (\n \n \n \n \n \n );\n}\n","import React, { useState } from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport TextField from '@material-ui/core/TextField';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport Switch from '@material-ui/core/Switch';\nimport { Account } from '@solana/web3.js';\nimport DialogForm from './DialogForm';\n\nexport default function AddAccountDialog({ open, onAdd, onClose }) {\n const [name, setName] = useState('');\n const [isImport, setIsImport] = useState(false);\n const [importedPrivateKey, setPrivateKey] = useState('');\n\n const importedAccount = isImport\n ? decodeAccount(importedPrivateKey)\n : undefined;\n const isAddEnabled = isImport ? name && importedAccount !== undefined : name;\n\n return (\n {\n setName('');\n setIsImport(false);\n setPrivateKey('');\n }}\n onClose={onClose}\n onSubmit={() => onAdd({ name, importedAccount })}\n fullWidth\n >\n Add account\n \n \n setName(e.target.value.trim())}\n />\n \n setIsImport(!isImport)}\n />\n }\n label=\"Import private key\"\n />\n \n {isImport && (\n setPrivateKey(e.target.value.trim())}\n />\n )}\n \n \n \n \n \n \n \n );\n}\n\n/**\n * Returns an account object when given the private key\n *\n * @param {string} privateKey - the private key in array format\n */\nfunction decodeAccount(privateKey) {\n try {\n const a = new Account(JSON.parse(privateKey));\n return a;\n } catch (_) {\n return undefined;\n }\n}\n","import React, { useState } from 'react';\nimport DialogForm from './DialogForm';\nimport { forgetWallet } from '../utils/wallet-seed';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { DialogContentText } from '@material-ui/core';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\n\nexport default function DeleteMnemonicDialog({ open, onClose }) {\n const [deleteCheck, setDeleteCheck] = useState('');\n return (\n <>\n {\n forgetWallet();\n onClose();\n }}\n fullWidth\n >\n Delete Mnemonic\n \n \n You will not be able to recover the current accounts without the\n seed phrase, and the account private key. This action will delete\n all current accounts from your browser.\n
\n
\n \n To prevent loss of funds, please ensure you have the seed phrase\n and the private key for all current accounts.\n \n \n setDeleteCheck(e.target.value.trim())}\n />\n
\n \n \n \n Delete\n \n \n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogForm from './DialogForm';\nimport { LedgerWalletProvider } from '../utils/walletProvider/ledger';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useSnackbar } from 'notistack';\n\nexport default function AddHardwareWalletDialog({ open, onAdd, onClose }) {\n const [pubKey, setPubKey] = useState();\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n (async () => {\n if (open) {\n try {\n const provider = new LedgerWalletProvider();\n await provider.init();\n setPubKey(provider.publicKey);\n } catch (err) {\n console.log(\n `received error when attempting to connect ledger: ${err}`,\n );\n if (err.statusCode === 0x6804) {\n enqueueSnackbar('Unlock ledger device', { variant: 'error' });\n }\n setPubKey(undefined);\n onClose();\n }\n }\n })();\n }, [open, onClose, enqueueSnackbar]);\n\n return (\n {}}\n onClose={() => {\n setPubKey(undefined);\n onClose();\n }}\n onSubmit={() => {\n setPubKey(undefined);\n onAdd(pubKey);\n onClose();\n }}\n fullWidth\n >\n Add hardware wallet\n \n \n {pubKey ? (\n <>\n Hardware wallet detected:\n
{pubKey.toString()}
\n \n ) : (\n <>\n Connect your ledger and open the Solana application\n \n \n )}\n \n
\n \n {\n setPubKey(undefined);\n onClose();\n }}\n >\n Close\n \n \n \n \n );\n}\n","import React, { useState } from 'react';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport AppBar from '@material-ui/core/AppBar';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useConnectionConfig, MAINNET_URL } from '../utils/connection';\nimport Button from '@material-ui/core/Button';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { clusterApiUrl } from '@solana/web3.js';\nimport { useWalletSelector } from '../utils/wallet';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport CheckIcon from '@material-ui/icons/Check';\nimport AddIcon from '@material-ui/icons/Add';\nimport ExitToApp from '@material-ui/icons/ExitToApp';\nimport AccountIcon from '@material-ui/icons/AccountCircle';\nimport UsbIcon from '@material-ui/icons/Usb';\nimport Divider from '@material-ui/core/Divider';\nimport Hidden from '@material-ui/core/Hidden';\nimport IconButton from '@material-ui/core/IconButton';\nimport SolanaIcon from './SolanaIcon';\nimport CodeIcon from '@material-ui/icons/Code';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport ImportExportIcon from '@material-ui/icons/ImportExport';\nimport AddAccountDialog from './AddAccountDialog';\nimport DeleteMnemonicDialog from './DeleteMnemonicDialog';\nimport AddHardwareWalletDialog from './AddHarwareWalletDialog';\nimport { ExportMnemonicDialog } from './ExportAccountDialog.js';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n flexGrow: 1,\n paddingTop: theme.spacing(3),\n paddingBottom: theme.spacing(3),\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n title: {\n flexGrow: 1,\n },\n button: {\n marginLeft: theme.spacing(1),\n },\n menuItemIcon: {\n minWidth: 32,\n },\n}));\n\nexport default function NavigationFrame({ children }) {\n const classes = useStyles();\n return (\n <>\n \n \n \n Solana SPL Token Wallet\n \n \n \n \n \n
{children}
\n