augmented-tbc-design/static/js/main.cd9f3e84.chunk.js

2 lines
16 KiB
JavaScript

(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{223:function(e,t,a){e.exports=a(419)},412:function(e,t,a){},419:function(e,t,a){"use strict";a.r(t);var n=a(1),r=a.n(n),i=a(13),o=a.n(i),c=a(459),l=a(458),s=a(63),m=a.n(s),u=a(117),p=a(17),d=a(420),f=a(465),g=a(457),h=a(454),x=a(461),b=a(456),v=a(455),E=a(463),y=Object(d.a)(function(e){return Object(f.a)({title:{},subtitle:{color:e.palette.text.secondary,margin:e.spacing(3,0,0)},lightBulb:{verticalAlign:"middle",marginRight:e.spacing(1)},link:{color:e.palette.primary.main},logoContainer:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:e.spacing(4)},logo:{width:"25px",marginRight:"4px"},logoText:{display:"inline",fontSize:"1.1rem",fontWeight:500}})});function j(){var e=y();return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{className:e.logoContainer},r.a.createElement("img",{src:"./favicon.ico",className:e.logo,alt:"logo"}),r.a.createElement(h.a,{className:e.logoText},"Commons Stack")),r.a.createElement(h.a,{className:e.title,variant:"h4"},"Augmented Token Bonding Curve Design"),r.a.createElement(h.a,{className:e.subtitle},"Experiment and test augmented token bonding curves"))}var O=a(191),k=a(7),C=a(464),N=a(460),w=a(174),S=a.n(w),B=Object(k.a)({root:{height:8},thumb:{height:24,width:24,backgroundColor:"#fff",border:"2px solid currentColor",marginTop:-8,marginLeft:-12,"&:focus,&:hover,&$active":{boxShadow:"inherit"}},active:{},valueLabel:{left:"calc(-50% + 4px)"},track:{height:8,borderRadius:4},rail:{height:8,borderRadius:4},markLabel:{top:30}})(C.a),F=Object(d.a)(function(e){return Object(f.a)({root:{margin:e.spacing(6,0,3)},lightBulb:{verticalAlign:"middle",marginRight:e.spacing(1)},leftContainer:{color:e.palette.text.secondary},centerContainer:{},listBoxContainer:{"& > div:not(:last-child)":{paddingBottom:"12px",marginBottom:"12px",borderBottom:"1px solid #313d47"}},listBox:{"& > div":{display:"flex",alignItems:"center","& p":{marginBottom:0}},"& > div:not(:last-child)":{paddingRight:"12px"}},slider:{color:e.palette.primary.main}})});function A(e){var t=e.inputRef,a=e.onChange,n=e.prefix,i=e.suffix,o=Object(O.a)(e,["inputRef","onChange","prefix","suffix"]);return r.a.createElement(S.a,Object.assign({},o,{getInputRef:t,onValueChange:function(e){a({target:{value:e.value}})},thousandSeparator:!0,prefix:n,suffix:i}))}function I(e){e.curveParams;var t=e.setCurveParams,a=Object(n.useState)(1e6),i=Object(p.a)(a,2),o=i[0],c=i[1],l=Object(n.useState)(.35),s=Object(p.a)(l,2),m=s[0],u=s[1],d=Object(n.useState)(.1),f=Object(p.a)(d,2),g=f[0],x=f[1],b=Object(n.useState)(3),E=Object(p.a)(b,2),y=E[0],j=E[1],O=Object(n.useState)(.05),k=Object(p.a)(O,2),C=k[0],w=k[1];function S(){t({d0:o,theta:m,p0:g,returnF:y,wFee:C})}var I=[{label:"Initial raise",value:o,setter:c,min:1e5,max:1e7,step:1e5,unit:"$M",prefix:"$",suffix:"M",format:function(e){return"$".concat(+(1e-6*e).toFixed(1),"M")},toText:function(e){return String(+(1e-6*e).toFixed(1))},toNum:function(e){return Math.floor(1e6*parseFloat(e))}},{label:"Allocation to project",value:m,setter:u,min:0,max:.9,step:.01,unit:"%",suffix:"%",format:function(e){return"".concat(Math.round(100*e),"%")},toText:function(e){return String(+(100*e).toFixed(0))},toNum:function(e){return.01*parseFloat(e)}},{label:"Initial token price",value:g,setter:x,min:.01,max:1,step:.01,unit:"$",prefix:"$",toText:function(e){return String(+e.toFixed(2))},toNum:function(e){return parseFloat(e)},format:function(e){return"$".concat(e)}},{label:"Return factor",value:y,setter:j,min:1,max:10,step:.1,unit:"x",suffix:"x",toText:function(e){return String(+e.toFixed(1))},toNum:function(e){return parseFloat(e)},format:function(e){return"".concat(e,"x")}},{label:"Withdrawl fee",value:C,setter:w,min:0,max:.1,step:.001,unit:"%",suffix:"%",format:function(e){return"".concat(+(100*e).toFixed(1),"%")},toText:function(e){return String(+(100*e).toFixed(1))},toNum:function(e){return.01*parseFloat(e)}}],M=F();return r.a.createElement("div",{className:M.listBoxContainer},I.map(function(e){var t=e.label,a=e.value,n=e.setter,i=e.min,o=e.max,c=e.step,l=e.prefix,s=e.suffix,m=e.format,u=e.toText,p=e.toNum;function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;isNaN(e)&&(e=0),e>o?e=o:e<i&&(e=i),n(e)}return r.a.createElement(v.a,{key:t,container:!0,spacing:0,className:M.listBox},r.a.createElement(v.a,{item:!0,xs:6,className:M.leftContainer},r.a.createElement(h.a,{id:t,gutterBottom:!0},t)),r.a.createElement(v.a,{item:!0,xs:2,className:M.centerContainer},r.a.createElement(N.a,{onChange:function(e){d(p?p(e.target.value):parseFloat(e.target.value)),S()},InputProps:{inputComponent:A,disableUnderline:!0,inputProps:{prefix:l,suffix:s}},value:u?u(a):a})),r.a.createElement(v.a,{item:!0,xs:4},r.a.createElement(B,{className:M.slider,valueLabelDisplay:"auto","aria-label":t,defaultValue:a,onChange:function(e,t){return d(Number(t))},onChangeCommitted:S,value:a,min:i,max:o,step:c,valueLabelFormat:function(e){return m(e).replace("$","")}})))}))}var M=a(48),T=a(16);function P(e){for(var t=e.from,a=void 0===t?0:t,n=e.to,r=e.steps,i=[],o=a;o<=n;o+=(n-a)/r)i.push(o);return i}function R(e,t){for(var a=[],n=(e[e.length-1]-e[0])/t,r=e[0];r<e[e.length-1];r+=n)a.push(r);return a.length<t+1&&a.push(e[e.length-1]),a}function L(e){return e[e.length-1]}function D(e){return e.reduce(function(e,t){return e+Math.abs(t)},0)/e.length}function H(e){return new Promise(function(t){return setTimeout(t,e)})}var $=a(192);var K=function(e){for(var t=e.returnF,a=e.theta,n=e.d0,i=e.p0,o=t/(1-a),c=(1-a/100)*n,l=n/i,s=function(e){return l*Math.pow(e/c,1/o)},m=4*c,u=(m-0)/100,d=Math.max(m,s(m)),f=d>5e8?[1e9,"B"]:d>5e5?[1e6,"M"]:d>500?[1e3,"K"]:[1,""],g=Object(p.a)(f,2),h=g[0],x=g[1],b="Supply (tokens) / Reserve (DAI)",v=[],E=0;E<=m;E+=u){var y;v.push((y={},Object(M.a)(y,"x",E),Object(M.a)(y,b,s(E)),y))}var j=Object($.a)(),O=function(e){return(+(e/h).toPrecision(2)).toLocaleString()};return r.a.createElement(T.f,{debounce:1},r.a.createElement(T.b,{width:0,height:400,data:v,margin:{top:10,right:30,left:0,bottom:0}},r.a.createElement(T.c,{strokeDasharray:"3 3"}),r.a.createElement(T.h,{interval:"preserveStartEnd",ticks:R(v.map(function(e){return e.x}),4),dataKey:"x",tickFormatter:O,unit:x,tick:{fill:j.palette.text.secondary},stroke:j.palette.text.secondary}),r.a.createElement(T.i,{interval:"preserveStartEnd",ticks:R(v.map(function(e){return e[b]}),3),tickFormatter:O,unit:x,tick:{fill:j.palette.text.secondary},domain:[0,s(m)],stroke:j.palette.text.secondary}),r.a.createElement(T.g,{formatter:function(e){return O(Number(e))}}),r.a.createElement(T.a,{isAnimationActive:!1,type:"monotone",dataKey:b,stroke:j.palette.primary.main,fill:j.palette.primary.main}),r.a.createElement(T.e,{x:c,stroke:"#90a4ae",strokeDasharray:"9 0",label:r.a.createElement(function(e){var t=e.textAnchor,a=e.viewBox;return r.a.createElement("text",{x:a.x+10,y:30,fill:j.palette.text.secondary,textAnchor:t},"Initial value")},null)}),r.a.createElement(T.d,{formatter:function(e){return r.a.createElement("span",{style:{color:j.palette.text.secondary}},e)}})))},z=Object(d.a)(function(e){return Object(f.a)({root:{margin:e.spacing(6,0,3)},lightBulb:{verticalAlign:"middle",marginRight:e.spacing(1)},leftContainer:{color:e.palette.text.secondary},centerContainer:{},listBoxContainer:{"& > div:not(:last-child)":{marginBottom:"12px",borderBottom:"1px solid #313d47"}},listBox:{paddingBottom:"12px","& > div":{display:"flex",alignItems:"center","& p":{marginBottom:0}},"& > div:not(:last-child)":{paddingRight:"12px"}}})});function W(e){var t=e.resultFields,a=z();return r.a.createElement("div",{className:a.listBoxContainer},t.map(function(e){var t=e.label,n=e.value;return r.a.createElement(v.a,{key:t,container:!0,spacing:0,className:a.listBox},r.a.createElement(v.a,{item:!0,xs:8,className:a.leftContainer},r.a.createElement(h.a,{id:t,gutterBottom:!0},t)),r.a.createElement(v.a,{item:!0,xs:4,className:a.centerContainer},r.a.createElement(h.a,{gutterBottom:!0},n)))}))}var J=a(90);var V=function(e){for(var t=e.priceTimeseries,a=e.withdrawFeeTimeseries,n=(e.p0,[]),i=0;i<t.length;i++){var o;n.push((o={},Object(M.a)(o,"x",i),Object(M.a)(o,"Price (DAI / token)",t[i]||0),Object(M.a)(o,"Collected withdraw fee (DAI)",a[i]||0),o))}var c=Object($.a)();return r.a.createElement(T.f,{debounce:1},r.a.createElement(T.b,{width:0,height:400,data:n,margin:{top:10,right:30,left:0,bottom:0}},r.a.createElement(T.c,{strokeDasharray:"3 3"}),r.a.createElement(T.h,{dataKey:"x",tick:{fill:c.palette.text.secondary},stroke:c.palette.text.secondary,ticks:[].concat(Object(J.a)(P({to:t.length,steps:4}).map(Math.floor)),[t.length-1])}),r.a.createElement(T.i,{yAxisId:"left",domain:[Math.min.apply(Math,Object(J.a)(t)),Math.max.apply(Math,Object(J.a)(t))],tickFormatter:function(e){return(+e.toPrecision(3)).toLocaleString()},tick:{fill:c.palette.text.secondary},stroke:c.palette.text.secondary}),r.a.createElement(T.i,{yAxisId:"right",orientation:"right",tick:{fill:c.palette.text.secondary},stroke:c.palette.text.secondary}),r.a.createElement(T.g,{formatter:function(e){return Number(e)}}),r.a.createElement(T.a,{isAnimationActive:!1,yAxisId:"left",type:"monotone",dataKey:"Price (DAI / token)",stroke:c.palette.primary.main,fill:c.palette.primary.main}),r.a.createElement(T.a,{isAnimationActive:!1,yAxisId:"right",type:"monotone",dataKey:"Collected withdraw fee (DAI)",stroke:c.palette.secondary.main,fill:c.palette.secondary.main}),r.a.createElement(T.d,{formatter:function(e){return r.a.createElement("span",{style:{color:c.palette.text.secondary}},e)}})))},q=a(462),U=a(184),G=a.n(U),Q=Object(d.a)(function(e){return{container:{display:"flex",marginLeft:"6px",fontSize:"0.9rem",cursor:"pointer",transition:"opacity ease 150ms",opacity:.2,"&:hover":{opacity:.85}},typography:{padding:e.spacing(2)},paper:{backgroundColor:"#384b59"}}});function X(e){var t=e.text,a=Q(),n=r.a.useState(null),i=Object(p.a)(n,2),o=i[0],c=i[1];var l=Boolean(o),s=l?"simple-popover":void 0;return r.a.createElement("div",{className:a.container},r.a.createElement(G.a,{onClick:function(e){c(e.currentTarget)}}),r.a.createElement(q.a,{PaperProps:{className:a.paper},id:s,open:l,anchorEl:o,onClose:function(){c(null)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},r.a.createElement(h.a,{className:a.typography},t)))}var Y=a(185),Z=(a(412),Object(d.a)(function(e){return Object(f.a)({mainContainer:{"& > div:not(:last-child)":{paddingBottom:e.spacing(3)},"& > div":{"& > div":{paddingTop:"0 !important"}},paddingBottom:e.spacing(9)},paper:{width:"100%",height:"100%",minHeight:310,backgroundColor:"#293640"},box:{padding:e.spacing(3,3),minHeight:310},boxButton:{padding:e.spacing(3,3)},boxHeader:{padding:e.spacing(3,3),height:e.spacing(10),display:"flex",alignItems:"center",borderBottom:"1px solid #313d47"},boxChart:{width:"100%",height:"100%",minHeight:310,maxHeight:350,padding:e.spacing(3,3),paddingRight:"5px",paddingLeft:"5px"},header:{backgroundColor:"#0b1216",color:"#f8f8f8",textAlign:"center",padding:e.spacing(3,0,16),marginBottom:-e.spacing(10)},button:{background:"linear-gradient(290deg, #2ad179, #4ab47c)",color:"white"}})}));var _=a(189),ee=a.n(_),te=a(190),ae=Object(te.a)({palette:{type:"dark",primary:{main:"#2ecd79"},secondary:{main:"#116be0"},error:{main:ee.a.A400},background:{default:"#fff",paper:"#293640"},text:{primary:"#fff",secondary:"#9aa3ad"}},typography:{h6:{fontWeight:400}}});console.log(ae);var ne=ae;o.a.render(r.a.createElement(l.a,{theme:ne},r.a.createElement(c.a,null),r.a.createElement(function(){var e=Object(n.useState)({d0:1e6,theta:.35,p0:.1,returnF:3,wFee:.05}),t=Object(p.a)(e,2),a=t[0],i=t[1],o=a.d0,c=a.theta,l=a.p0,s=a.returnF,d=a.wFee,f=Object(n.useMemo)(function(){return Object(Y.throttle)(i,1e3)},[]),y=s/(1-c),O=(1-c/100)*o,k=o/l,C=Math.pow(k,y)/O,N=Object(n.useState)([0]),w=Object(p.a)(N,2),S=w[0],B=w[1],F=Object(n.useState)([0]),A=Object(p.a)(F,2),M=A[0],T=A[1],P=Object(n.useState)(O),R=Object(p.a)(P,2),$=R[0],z=R[1],J=Object(n.useState)(0),q=Object(p.a)(J,2),U=q[0],G=q[1],Q=Object(n.useState)(0),_=Object(p.a)(Q,2),ee=_[0],te=_[1],ae=Object(n.useState)(1e4),ne=Object(p.a)(ae,1)[0],re=Object(n.useState)(!1),ie=Object(p.a)(re,2),oe=ie[0],ce=ie[1],le=Object(n.useState)(!1),se=Object(p.a)(le,2),me=se[0],ue=se[1];function pe(){return(pe=Object(u.a)(m.a.mark(function e(){return m.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return ce(!1),G(0),B([0]),T([0]),te(0),e.next=3,H(0);case 3:ce(!0);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}Object(n.useEffect)(function(){var e=!0;function t(){return(t=Object(u.a)(m.a.mark(function t(){var a,n,r,i,o,c,l,s,u,p,f,g,h,x,b,v,E,j,N,w,S,F,A,I,M,P;return m.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:for(a=[O],n=[k],r=[O/k],i=[0],o=[],c=100,l=1,s=[],u=0;u<c;u++)p=1-2*Math.random(),f=Math.sin(u/c*.05),g=Math.sin(Math.PI/1*(u/c)),h=1e5*p+1e5*f+2e4*g,s.push(h);x=D(s),b=s.map(function(e){return ne*e/x}),ue(!0),v=0;case 13:if(!(v<c)){t.next=41;break}if(E=b[v],j=L(a),N=L(n),w=L(r),S=j+E,F=Math.pow(C*(j+E),1/y)-N,A=N+F,a.push(S),n.push(A),r.push(S/A),E<0?(i.push(L(i)-E*d),G(function(e){return e+1})):i.push(L(i)),I=L(r),M=w,P=Math.abs(I-M)/M/2,o.push(P),oe&&e){t.next=31;break}return t.abrupt("break",41);case 31:if(v%l!==0){t.next=38;break}return B(r),T(i),te(D(o)),z(S),t.next=38,H(5);case 38:v++,t.next=13;break;case 41:ue(!1);case 42:case"end":return t.stop()}},t)}))).apply(this,arguments)}return oe&&function(){t.apply(this,arguments)}(),function(){e=!1}},[oe]);var de=[{label:"Average slippage (avg tx size ".concat(ne," DAI)"),value:+(100*ee).toFixed(3)+"%"},{label:"Capital collected from withdraw fees (".concat(U," txs)"),value:(+L(M).toPrecision(3)).toLocaleString()+" DAI"},{label:"Total reserve",value:(+$.toPrecision(3)).toLocaleString()+" DAI"}],fe=Z();return r.a.createElement(r.a.Fragment,null,r.a.createElement("header",{className:fe.header},r.a.createElement(g.a,{fixed:!0},r.a.createElement(j,null))),r.a.createElement(g.a,{fixed:!0,className:fe.mainContainer},r.a.createElement(v.a,{container:!0,spacing:3},r.a.createElement(v.a,{item:!0,xs:12,sm:12,md:6,lg:4},r.a.createElement(b.a,{className:fe.paper},r.a.createElement(x.a,{className:fe.boxHeader},r.a.createElement(h.a,{variant:"h6"},"Curve Design"),r.a.createElement(X,{text:r.a.createElement("span",null,"Description of the different parameters ",r.a.createElement("br",null),"Initial raise: Lorem ipsum ",r.a.createElement("br",null),"Allocation to project: Lorem ipsum ",r.a.createElement("br",null),"Initial token price: Lorem ipsum ",r.a.createElement("br",null),"Return factor: Lorem ipsum ",r.a.createElement("br",null),"Withdrawl fee: Lorem ipsum")})),r.a.createElement(x.a,{className:fe.box},r.a.createElement(I,{setCurveParams:f})))),r.a.createElement(v.a,{item:!0,xs:12,sm:12,md:6,lg:8},r.a.createElement(b.a,{className:fe.paper},r.a.createElement(x.a,{className:fe.boxHeader},r.a.createElement(h.a,{variant:"h6"},"Preview"),r.a.createElement(X,{text:r.a.createElement("span",null,"Preview of the token bonding curve")})),r.a.createElement(x.a,{className:fe.boxChart},r.a.createElement(K,{returnF:s,theta:c,d0:o,p0:l}))))),r.a.createElement(v.a,{container:!0,spacing:3},r.a.createElement(v.a,{item:!0,xs:12,md:12},r.a.createElement(b.a,null,r.a.createElement(x.a,{className:fe.boxHeader},r.a.createElement(v.a,{container:!0,direction:"row",justify:"center",alignItems:"center"},r.a.createElement(E.a,{variant:"contained",className:fe.button,onClick:function(){return pe.apply(this,arguments)},disabled:me},"Run simulation")))))),oe&&r.a.createElement(v.a,{container:!0,spacing:3},r.a.createElement(v.a,{item:!0,xs:12,sm:12,md:6,lg:8},r.a.createElement(b.a,{className:fe.paper},r.a.createElement(x.a,{className:fe.boxHeader},r.a.createElement(h.a,{variant:"h6"},"Simulation"),r.a.createElement(X,{text:r.a.createElement("span",null,"Some context about this simulation")})),r.a.createElement(x.a,{className:fe.boxChart},r.a.createElement(V,{priceTimeseries:S,withdrawFeeTimeseries:M,p0:l})))),r.a.createElement(v.a,{item:!0,xs:12,sm:12,md:6,lg:4},r.a.createElement(b.a,{className:fe.paper},r.a.createElement(x.a,{className:fe.boxHeader},r.a.createElement(h.a,{variant:"h6"},"Results"),r.a.createElement(X,{text:r.a.createElement("span",null,"Explanation of what do this results mean")})),r.a.createElement(x.a,{className:fe.box},r.a.createElement(W,{resultFields:de})))))))},null)),document.querySelector("#root"))}},[[223,1,2]]]);
//# sourceMappingURL=main.cd9f3e84.chunk.js.map