From 815c6423043b97bd2414eb43df4d3229eb71625a Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 23 Oct 2021 14:08:49 +0200 Subject: [PATCH] Liquidity being read from different pools --- .../Icons/Programs/liquidity-programs.png | Bin 0 -> 11314 bytes .../Governance/Plugins/Pools/Superalgos.json | 2 +- .../User-Profiles/Luis-Fernando-Molina.json | 900 +++++++++++++----- .../App-Schema/financial-programs.json | 16 - .../Schemas/App-Schema/liquidity-program.json | 3 +- .../App-Schema/liquidity-programs.json | 50 + .../App-Schema/token-power-switch.json | 16 + .../Function-Libraries/DistributionProcess.js | 15 +- .../UI/Function-Libraries/LiquidityProgram.js | 15 +- .../Spaces/User-Profile-Space/UserProfile.js | 29 +- .../Governance/UI/Utilities/Validations.js | 28 +- 11 files changed, 788 insertions(+), 286 deletions(-) create mode 100644 Projects/Governance/Icons/Programs/liquidity-programs.png create mode 100644 Projects/Governance/Schemas/App-Schema/liquidity-programs.json diff --git a/Projects/Governance/Icons/Programs/liquidity-programs.png b/Projects/Governance/Icons/Programs/liquidity-programs.png new file mode 100644 index 0000000000000000000000000000000000000000..c4998af5ec30b0ff141c4c2a9c3614a4358c1c96 GIT binary patch literal 11314 zcmbVyc|4Tg`}dhKn54pELSB&+GU6@q7Mw=AXImbMAAUYdhCD*Y!TJHdcG3C6pup0Mh&S z?LGiaLA_HaAucKYlkzZy3) z0Cbx7@3ycF?HKPq?CbP9S#w%s)iu}Z6;A}qyXc2X&%Do&_P0JP_FnPYc?BmgU86F( z=)SkAZVT--p-yOLRoMwhXPVh^=zl;bo-E$HE7vCy#30^2SH2nAv z;-^Cj__b@ky?E@>qPZ3T8?TQv?J(8shR&4QogYt)xW1oo!eRj3EDqVt4c(N|-)f1Y zkIc_pRxTBRY81!`JO`~?-VXO_OMOT)w<>tPMIC^KgZ*mO>CWHX`G>dO4HC7&15i*l zUG0Vbe0K5z*DXl&=8MxVRsb;cEJ+=F@%+`OZ+y(!I5hW#C4!R6N2fILYpixv9D%*>6_K_Y+Iolg!ReEMjn$Ec_-~MYbM~~X#}?%3o~J%d4us5~ zd34A|&wyIKU@$hArurw3V4w%dwd5#6{%m3gNQrga>g#(RchiSnl^ge2rLQDkh(phE z=U)s^iih8RNOn5#QUp|x<7wZxnm2ZjXqT>s0}V^3Wm8zPU0w=U?VxH43}BR0^m*aupT_=zrwUnJmsa9Aw)a z!DFz1K4AUR%=lUu9=5Rbk*6a~=c<@3V*arV$ZPMw)U9;)D0;*>{O~=NXtyL_l=s;1 zmDg2vDLZ7Y1c1}nj^3U>*R{{^-`ScQ&)?#J4Re5WyAC<`!bER66M%|;2S^Xw=3B*h zaXoUL%K*a}j_;h=rdXy%1|YM39JM*qL^*YRqv({laCE|eS`=Dv+cULNW?3T!WX23e zGg8yTjvR!nl35;T%!+KZFm3=nzntg=sdZG*40FfQpFh3g5ePuX;I#p3cEBwisEqgd z=*;}N%6+$#4$@RNiUN9Y=ug7i*&&U3=}1Uws|UJiPR)2lmcc`F8Mr*_fJ`yA-Eo(7&WTz-(vQM|3;44WKew89f&}>0U-u*CpBh>0Q(Tt384;0wJCbmah;d7mbe?fo zpn7l|@cT70@>#mC>CwGKr)AihU9_xJ7Axy65rgv^5=% z%<^V>&QATwL6F|mWK?S#bJ}l~&05UswQ6Z zow8y&>BHhB|JhOTngx9(rKK}YrsBGgfm`{9L%Neck#Ka8HpCwMzWBB zXeo=b&l{O-(?#X2ZNGbsydiB96{Oi;tZ5!qHc%tWf7xfe-7XKz|+7 zrp=R!7aT{6RCVg5z9#Pg;8s$#|3d+>)3NI(&=G-( zbtBcoek4*6mL6_8J+&WzRo6qLEFykIbR)27BOG>NajdnoE(VZQRdxCr(zeX0 z$+Ln>Cv}$raCMU_e)P1@_ZScnIyZM9oB|_T*Jkjm6Jr9kd)uegjSl3EFW_J0TvJ|n zMBzBy_GyPE(%$~gC!rQx=!<<^SHgTD1HhJOMhDwR<-1^O{WqeV5pQaPJ+$@JrcJn? zth1&(;s9V^Wig}Y9E41+iNPGd%%)LN-BIXyDqV}IYS-)11V5?kjvUUNBTdz!iP(z0 zmgN&^*xzDmTgWe?XoeA&w?-Utrjimbs2OR=&o_S0j`}d!**c`tgn@2%K%cLJ3VcY8 z`^pQ?J;l7bn36T@akI7DG{rW=MG>7)TQ?@K;6+uHP$szYuz$*=R#L|l|N%|06 zHe8e=0&HR`nd43M-ult>+j=R|17OFNybYJi87(xEOYa)4s%UnCXM3|tBZ`apPil{^2Lc=H^Zc|RBX=d-oFjq|(18B#jxTM1Z@f@4U*&v)< z9&wXYqYe01L@S^si#dItXalp%b1>KxSE_|XZM);qPZ?>vFMDTi$THv-yA^Glp%hFx zQJKTUP2E!zIRLyV9N8BMNln$hM<~^s$(IK1G1q=yr0D7MbVAu`&WdpL+H;bsHdov? z#Ca*N-pmn=O@y03yvc8$cg2$^uc{t#T|nW|vH4Vq#yHWHv1H7d8??2lGm4jzd(Z#i z5<`b*CWUECT>zwtp}GTqpUmTZoT&K{HZ>FZ>+B*IF&QY*9a1#6vT_zMt`mcH!eHaq zkA5Ode>{VC5o|%2R`ImtDAMjR^lJ_==_ucNqBH-^n4~Bm_veuNDeTw1j)(U!k-at1 z(jkktF6(j=E+V66e$f0qePgsO$4I7NgGphJBJ_wT=FS1nzT&kmLxs!LTJ%2eDSyyi zJ=aq(tr!$dBc5rc?axM&sW%b0qN12rqG-yVbP|9&^9H;F8z|*GR zCqPl%os~1*;ShU*np1_I8q!bntD(HfM_rPZHGCc*C7TNt<~Q9oFF#s6)t{eY+=Pbh z-MqP(Uy9o^ldxq`t=pEFFv=8+8pjU_lFpi@3eeUM&WFT-=gIyAW!810e%`rSd5l}? z_oSlYE}}Q<)E}GQi)XNaF>Pn-xO{ryGL;ZncV>?*ZaA!x9-p}+`4jjiE-o7@JwG}z8U`dLj?N8!n%PFHT;zLhk zfDPw@x)IJ>t-UexIlcP)W?n**pge43RJ}a#8&_72H6Wa-l?;_SdX#)zueUAZS1O{T zqV{_gbQ(RHbd2lf;;qjUzw>&2M% zJ^tMD*H<60Vv2v%+y0>Zl0gHo+BTf(ri^tXuHQVndb*V-PdZApg--2whdNW=hJ$or`B zu2*i=UJNa)Rpfbic3TJ`iqygp?;54(83|Oh<|HMAP8RS(G?SNoHGOq^Ug$B#lQ`;{ z?y%WW$KyF>4-Utp<$27^*FyPwtR8I(nekNuXIB2+?Zk|IeuD3D4&RpM#T=RpDm(FQ zoc2(GUwn8fp)r|ypJ;q2F_=%j_{_Z&J;-C#K` zdTm3b;MCOEsKUo1zlMBz4(UJ3=g+l29S}t&tC(LuQE_lN`grzJUjC!u^1Rq-`uvb0 z)$SdO*C9_6szTX@lcI`M^6aak2puF^4%xbsJihFKVR#%9fL{(AcvKmbpgnePthPPL z;h8Vjm&R5{(f^HjQGfg~M-q@pQRs2Y=hJJKZ$XmHoOPu!F?sdZKWYn1m&l*8=h#Kj zIbCP=yR;d|ezrZyPdG7gco|e%Z$l+h8~6D|h4G4zle)(WxKDqRj#U|J3ccv6B>IX# zP@%Ue8l2`x8mGvkR>yncDN~CtP2^v|MP99GyaTFC9x5O&UorO!#W;0TI8Sbta^D9! z|FaiLK7I-jdTLSebk1^|%!W5BzPh!f>vn$+d86-R56zLTpnx3La540Ivx|8qoAydS zpNau;)F?_nMF;=+Peq%u!Kmwp>=Lgpw1PLibO0u__&1~VoHZlXWV-fKF zWShhijhrH#x1^T~GnIb-^yX?Ihf^ouVH?s`R1r&iW#OS7$3Mh1X)k>8mlP#X{o1U^?+d0%>KiB}?eLJl!i?N|pV%9+;T2T9|e)-*WwZg zltW{XBxuJfKl&3^9ll&z$+)}YPF6$x>cc`^d3)&V@b^lKVu4K*jFAOHC&w)0k+zu# zLp{X(x-kCcOkWimO@j3QdSOf}OGl}}13l*m$3kcs)io#J1O1g8GBZE2FE8-!$~eEZ z4yJ`gu3BVxoRLEw%q0BZL)8BJcuK$B5*RW;T*vP2})!7t&;@_JbhnyM9- z`QsoivVD9pRUXw{FO*OnNWE>V9(*}oGG1B|lxINr=(157M~&59>XWmXcHKz2Ezghr z)pC(C%#r36&&*CDSZvhB|EGMph{$Op_NCwpm)FiRvg%jZ!0k_bDSx z$4^gauMG$qefCOXrqsZ{9Z1=9f}17t)r7!|_75{nEOI5Z7O9~F+)_Yho~3HOx76%o z&HEKd+sXZ9QCAVE$x^>w$Pc(aK+Ae*p{~dOQMc{Mw4&<9jK)fzoMm`$KYd2cj+3H- z%d4arIGk)*&7M&>!EyaUtF)m5o8Of%BgIum1QtnSj|FwFV?YO@gSU>Hr}z&KyFpF1L$f)YobvF65i8)*grp7U;HD&bI=FREzYeZf0P5Jz*1uWb@|$=EKLz1XQgA<;K$Awe18#{6|8x_3O95}S&= zlf_6dD`oL;Nc_(Knmz}k9)}id72G3tej_CqxD^^#e~1|%ArOM9M0We zl%B<+U+_GtB(-E|ZR7|?Wwr@01-=@KGfdf(56 zlmtigxM=a|G8Jmykc9OIjjud@Y|a~ZpKYdh zr$q|%z}alH_?J(!Z(-92B~W2IMuJ3+_?3(66WgR$6tZx&=3V+XCQe=oU zMA=EJ=}dGPeA0)441))PrYHZ?)7zUe6}8bf9tJ^a=&V5CxL{qR?JxZL)-myl z@$@&>se%Nt)iB1M=UzOk)ecWBmfm9HXSX0L_b4-roi1X(c`x!J`=8h`i>JLC7we8g zVlPza%XV3kg1t+L^)QT!+*<<*(2?3!ql@2MSCjk2zqVgYf-Md?LAo&S0V3nzy7I;r z*R!6-axkzvlMF)tHON)<+X}g7h>&$kLCW0=twZuux+#wCC7^vX$ejdl-Rgw2Z3{$P z*w$7m^uzmSr$X>)wG!x&bs{!(0JiEEh6fG$_mdLMZwi+}Ca^UIZD5}{$y0gqz!$a| zf8IK6u|9u~h|Bb3GlrqNeNs(zs|1jj1?^(w5Oke2b^}@36i^-R7FA1Q=zz={*236+ z7Gq|mT!eLijn*<352&_t?$7)AEi&J7hB0x!pPa$bkn8

R>?vGNd|riyCG}ccIR`N{=|&~T#2J^KyhWSR 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 VE;E?hbHdjBmR7sp>~y*EzX0Qf?JxiU literal 0 HcmV?d00001 diff --git a/Projects/Governance/Plugins/Pools/Superalgos.json b/Projects/Governance/Plugins/Pools/Superalgos.json index 8b6432ce9..05e5ef9da 100644 --- a/Projects/Governance/Plugins/Pools/Superalgos.json +++ b/Projects/Governance/Plugins/Pools/Superalgos.json @@ -1064,7 +1064,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index 9913b4a51..e82f447cf 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -127,8 +127,8 @@ "id": "f4d39b02-4324-438d-9f74-2bea2b7272ef", "savedPayload": { "position": { - "x": 37976.33557568774, - "y": 18557.294901687517 + "x": 37950, + "y": 18540.192378864667 }, "targetPosition": { "x": 37800, @@ -516,8 +516,8 @@ "id": "b6e3c87d-a11b-4b2a-b6a6-edc96375f5da", "savedPayload": { "position": { - "x": 38085.31695488855, - "y": 18707.294901687517 + "x": 38059.80762113533, + "y": 18650 }, "targetPosition": { "x": 37800, @@ -565,12 +565,12 @@ "id": "2571cea1-2b6d-40f5-9331-8786bf57c184", "savedPayload": { "position": { - "x": 38901.29354317829, - "y": 18645.29319603238 + "x": 38799.585369022054, + "y": 18312.54666533391 }, "targetPosition": { - "x": 38678.35009553507, - "y": 18846.03237794004 + "x": 38649.585369022054, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -653,23 +653,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Referrals Program", - "Pool Class" + "Pool Class", + "Governance", + "9f94d0e0-ddf7-4e04-8a3c-9485c09e079d" ], [ "Referrals Rewards", - "Pool" + "Pool", + "Governance", + "2e9dff69-e407-4ccb-9a42-e4a476e28d7c" ] ] } @@ -708,23 +718,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Referrals Program", - "Pool Class" + "Pool Class", + "Governance", + "9f94d0e0-ddf7-4e04-8a3c-9485c09e079d" ], [ "Referrals Bonus", - "Pool" + "Pool", + "Governance", + "af1984a3-465b-48ed-9944-c101a8ed376c" ] ] } @@ -762,19 +782,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Referrals Program", - "Pool Class" + "Pool Class", + "Governance", + "9f94d0e0-ddf7-4e04-8a3c-9485c09e079d" ] ] } @@ -820,23 +848,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Support Program", - "Pool Class" + "Pool Class", + "Governance", + "174e7d3b-fe3c-4fb1-825c-4ea488d82171" ], [ "Support Rewards", - "Pool" + "Pool", + "Governance", + "c41497c5-7440-4ebd-aabb-fbc3d022136b" ] ] } @@ -875,23 +913,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Support Program", - "Pool Class" + "Pool Class", + "Governance", + "174e7d3b-fe3c-4fb1-825c-4ea488d82171" ], [ "Support Bonus", - "Pool" + "Pool", + "Governance", + "6625953a-6026-4686-9091-2796fd08b9a7" ] ] } @@ -929,19 +977,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Support Program", - "Pool Class" + "Pool Class", + "Governance", + "174e7d3b-fe3c-4fb1-825c-4ea488d82171" ] ] } @@ -987,23 +1043,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Mentorship Program", - "Pool Class" + "Pool Class", + "Governance", + "8b3714a0-3bf2-491e-8ffc-9c4286446382" ], [ "Mentorship Rewards", - "Pool" + "Pool", + "Governance", + "53ddcc36-f693-4193-8284-999a88f1c944" ] ] } @@ -1042,23 +1108,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Mentorship Program", - "Pool Class" + "Pool Class", + "Governance", + "8b3714a0-3bf2-491e-8ffc-9c4286446382" ], [ "Mentorship Bonus", - "Pool" + "Pool", + "Governance", + "ff1e4a84-3363-4348-ad15-31a34898fa82" ] ] } @@ -1096,19 +1172,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ], [ "Mentorship Program", - "Pool Class" + "Pool Class", + "Governance", + "8b3714a0-3bf2-491e-8ffc-9c4286446382" ] ] } @@ -1147,15 +1231,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Community Building Programs", - "Pool Class" + "Pool Class", + "Governance", + "ef1d7fc5-c776-4af7-8ae6-86a3445dca4b" ] ] } @@ -1207,23 +1297,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Onboarding Programs", - "Pool Class" + "Pool Class", + "Governance", + "e6e1e943-9d14-40ea-9adf-b110a9309e3a" ], [ "Airdrop Program", - "Pool Class" + "Pool Class", + "Governance", + "5332a29f-2139-4dd9-aa77-f87fcbf513df" ], [ "Airdrop Rewards", - "Pool" + "Pool", + "Governance", + "0e10c82f-94b3-4f39-b673-15eaf0551df4" ] ] } @@ -1261,19 +1361,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Onboarding Programs", - "Pool Class" + "Pool Class", + "Governance", + "e6e1e943-9d14-40ea-9adf-b110a9309e3a" ], [ "Airdrop Program", - "Pool Class" + "Pool Class", + "Governance", + "5332a29f-2139-4dd9-aa77-f87fcbf513df" ] ] } @@ -1319,23 +1427,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Onboarding Programs", - "Pool Class" + "Pool Class", + "Governance", + "e6e1e943-9d14-40ea-9adf-b110a9309e3a" ], [ "Github Prgoram", - "Pool Class" + "Pool Class", + "Governance", + "e4daed5d-1c83-4f64-a504-3aef7d73e688" ], [ "Github Rewards", - "Pool" + "Pool", + "Governance", + "8829c80f-028b-4315-85a1-82ad502f0687" ] ] } @@ -1373,19 +1491,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Onboarding Programs", - "Pool Class" + "Pool Class", + "Governance", + "e6e1e943-9d14-40ea-9adf-b110a9309e3a" ], [ "Github Prgoram", - "Pool Class" + "Pool Class", + "Governance", + "e4daed5d-1c83-4f64-a504-3aef7d73e688" ] ] } @@ -1424,15 +1550,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Onboarding Programs", - "Pool Class" + "Pool Class", + "Governance", + "e6e1e943-9d14-40ea-9adf-b110a9309e3a" ] ] } @@ -1484,23 +1616,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Voting", - "Pool Class" + "Pool Class", + "Governance", + "1f9590c2-e166-482c-8400-ba64e39f0934" ], [ "Voting Program", - "Pool Class" + "Pool Class", + "Governance", + "80d4f08f-bb7f-48a2-9cef-be12befcac2e" ], [ "Voting Bonus", - "Pool" + "Pool", + "Governance", + "9eb846a4-effb-4380-9487-1a82011b0488" ] ] } @@ -1538,19 +1680,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Voting", - "Pool Class" + "Pool Class", + "Governance", + "1f9590c2-e166-482c-8400-ba64e39f0934" ], [ "Voting Program", - "Pool Class" + "Pool Class", + "Governance", + "80d4f08f-bb7f-48a2-9cef-be12befcac2e" ] ] } @@ -1589,15 +1739,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Voting", - "Pool Class" + "Pool Class", + "Governance", + "1f9590c2-e166-482c-8400-ba64e39f0934" ] ] } @@ -1649,23 +1805,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Providing Liquidity to SA Markets", - "Pool Class" + "Pool Class", + "Governance", + "00bbb418-2315-4845-aa39-8362489a360b" ], [ "Liquidity Program", - "Pool Class" + "Pool Class", + "Governance", + "477faa7a-da4f-4949-9439-a2475ed683de" ], [ "Liquidity Rewards BTCB", - "Pool" + "Pool", + "Governance", + "a7651e92-ab96-49fc-af9c-f936682dd7a4" ] ] } @@ -1704,23 +1870,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Providing Liquidity to SA Markets", - "Pool Class" + "Pool Class", + "Governance", + "00bbb418-2315-4845-aa39-8362489a360b" ], [ "Liquidity Program", - "Pool Class" + "Pool Class", + "Governance", + "477faa7a-da4f-4949-9439-a2475ed683de" ], [ "Liquidity Rewards BNB", - "Pool" + "Pool", + "Governance", + "e7c21a28-fea6-48cc-a97c-cc43470bb2fc" ] ] } @@ -1759,23 +1935,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Providing Liquidity to SA Markets", - "Pool Class" + "Pool Class", + "Governance", + "00bbb418-2315-4845-aa39-8362489a360b" ], [ "Liquidity Program", - "Pool Class" + "Pool Class", + "Governance", + "477faa7a-da4f-4949-9439-a2475ed683de" ], [ "Liquidity Rewards BUSD", - "Pool" + "Pool", + "Governance", + "962d9bc1-4e54-463c-86ae-43aec1db0f0f" ] ] } @@ -1813,19 +1999,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Providing Liquidity to SA Markets", - "Pool Class" + "Pool Class", + "Governance", + "00bbb418-2315-4845-aa39-8362489a360b" ], [ "Liquidity Program", - "Pool Class" + "Pool Class", + "Governance", + "477faa7a-da4f-4949-9439-a2475ed683de" ] ] } @@ -1864,15 +2058,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Providing Liquidity to SA Markets", - "Pool Class" + "Pool Class", + "Governance", + "00bbb418-2315-4845-aa39-8362489a360b" ] ] } @@ -1924,23 +2124,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Staking & Delegating SA Tokens", - "Pool Class" + "Pool Class", + "Governance", + "64cda2cd-270e-4046-ac3f-5cf9188113c2" ], [ "Staking Program", - "Pool Class" + "Pool Class", + "Governance", + "68e3f570-4156-4be6-8881-c526a06f85d0" ], [ "Staking Rewards", - "Pool" + "Pool", + "Governance", + "d2cf4c65-b4bd-4fa8-b0da-f73a38b8419a" ] ] } @@ -1978,19 +2188,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Staking & Delegating SA Tokens", - "Pool Class" + "Pool Class", + "Governance", + "64cda2cd-270e-4046-ac3f-5cf9188113c2" ], [ "Staking Program", - "Pool Class" + "Pool Class", + "Governance", + "68e3f570-4156-4be6-8881-c526a06f85d0" ] ] } @@ -2036,23 +2254,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Staking & Delegating SA Tokens", - "Pool Class" + "Pool Class", + "Governance", + "64cda2cd-270e-4046-ac3f-5cf9188113c2" ], [ "Delegation Program", - "Pool Class" + "Pool Class", + "Governance", + "f09429a2-3f6c-4210-bb73-0c8efd254c82" ], [ "Delegation Bonus", - "Pool" + "Pool", + "Governance", + "24e62dd3-4d7b-4eba-b401-493c155d85d0" ] ] } @@ -2090,19 +2318,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Staking & Delegating SA Tokens", - "Pool Class" + "Pool Class", + "Governance", + "64cda2cd-270e-4046-ac3f-5cf9188113c2" ], [ "Delegation Program", - "Pool Class" + "Pool Class", + "Governance", + "f09429a2-3f6c-4210-bb73-0c8efd254c82" ] ] } @@ -2141,15 +2377,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ], [ "Incentives for Staking & Delegating SA Tokens", - "Pool Class" + "Pool Class", + "Governance", + "64cda2cd-270e-4046-ac3f-5cf9188113c2" ] ] } @@ -2188,11 +2430,15 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Governance Programs", - "Pool Class" + "Pool Class", + "Governance", + "4fbb05ee-d7a0-43a7-9983-9fae7a7e4848" ] ] } @@ -2238,15 +2484,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Positions, Assets & Features", - "Pool Class" + "Pool Class", + "Governance", + "b27df32a-70f3-470b-b8bb-471c156b0c30" ], [ "Positions", - "Pool" + "Pool", + "Governance", + "a289d3a4-bd49-467b-b8d9-d0ba1152a131" ] ] } @@ -2285,15 +2537,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Positions, Assets & Features", - "Pool Class" + "Pool Class", + "Governance", + "b27df32a-70f3-470b-b8bb-471c156b0c30" ], [ "Assets", - "Pool" + "Pool", + "Governance", + "16a7dd84-e3e8-4118-a17d-ac227e55ff92" ] ] } @@ -2332,15 +2590,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Positions, Assets & Features", - "Pool Class" + "Pool Class", + "Governance", + "b27df32a-70f3-470b-b8bb-471c156b0c30" ], [ "Features", - "Pool" + "Pool", + "Governance", + "4b7384bc-93ba-454f-9de8-1add9c4d84ce" ] ] } @@ -2378,11 +2642,15 @@ "referenceParentCombinedNodePath": [ [ "Superalgos", - "Pools" + "Pools", + "Governance", + "6f0aed87-db13-4818-bfe6-68abc463ebec" ], [ "Positions, Assets & Features", - "Pool Class" + "Pool Class", + "Governance", + "b27df32a-70f3-470b-b8bb-471c156b0c30" ] ] } @@ -2395,12 +2663,12 @@ "id": "800e3388-1ea6-40ee-ace5-1811a3373e39", "savedPayload": { "position": { - "x": 39257.11133064376, - "y": 18876.363969007194 + "x": 39209.39299015739, + "y": 18422.354286469243 }, "targetPosition": { - "x": 38963.66705042362, - "y": 18938.73747625252 + "x": 38949.585369022054, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -11049,12 +11317,12 @@ "id": "aa848510-1260-46ed-a855-6c0fb9dca9eb", "savedPayload": { "position": { - "x": 39164.406232331276, - "y": 19161.68092389574 + "x": 39209.39299015739, + "y": 18722.354286469243 }, "targetPosition": { - "x": 38963.66705042362, - "y": 18938.73747625252 + "x": 38949.585369022054, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -11090,12 +11358,12 @@ "id": "1d398124-3f36-40a1-8b3b-6c77ad489b92", "savedPayload": { "position": { - "x": 38963.66705042362, - "y": 18938.73747625252 + "x": 38949.585369022054, + "y": 18572.354286469243 }, "targetPosition": { - "x": 38678.35009553507, - "y": 18846.03237794004 + "x": 38649.585369022054, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -11116,12 +11384,12 @@ "id": "2b8d3ce7-515c-44ad-8d80-3c2be6d7736f", "savedPayload": { "position": { - "x": 38678.35009553507, - "y": 18846.03237794004 + "x": 38649.585369022054, + "y": 18572.354286469243 }, "targetPosition": { - "x": 38384.90581531492, - "y": 18908.405885185366 + "x": 38389.77774788672, + "y": 18722.354286469243 }, "floatingObject": { "isPinned": false, @@ -11144,12 +11412,12 @@ "id": "e9c0e495-7985-4381-bf75-865d87289038", "savedPayload": { "position": { - "x": 38670.22277020347, - "y": 19001.11098349785 + "x": 38689.77774788672, + "y": 18722.354286469243 }, "targetPosition": { - "x": 38384.90581531492, - "y": 18908.405885185366 + "x": 38389.77774788672, + "y": 18722.354286469243 }, "floatingObject": { "isPinned": false, @@ -11167,12 +11435,12 @@ "id": "d5ed432e-78bf-432e-be3b-8649932f7a65", "savedPayload": { "position": { - "x": 38384.90581531492, - "y": 18908.405885185366 + "x": 38389.77774788672, + "y": 18722.354286469243 }, "targetPosition": { - "x": 38085.31695488855, - "y": 18892.705098312483 + "x": 38100, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -11205,12 +11473,12 @@ "id": "b09bc246-6593-4061-ac8a-b52670694e8e", "savedPayload": { "position": { - "x": 38622.235080160724, - "y": 19148.801907129473 + "x": 38689.77774788672, + "y": 18877.645713530757 }, "targetPosition": { - "x": 38336.918125272176, - "y": 19056.09680881699 + "x": 38389.77774788672, + "y": 18877.645713530757 }, "floatingObject": { "isPinned": false, @@ -11233,12 +11501,12 @@ "id": "5011109c-3f87-471a-b786-5fd371f53853", "savedPayload": { "position": { - "x": 38537.657307179834, - "y": 19279.04025646021 + "x": 38649.585369022054, + "y": 19027.645713530757 }, "targetPosition": { - "x": 38336.918125272176, - "y": 19056.09680881699 + "x": 38389.77774788672, + "y": 18877.645713530757 }, "floatingObject": { "isPinned": false, @@ -11256,12 +11524,12 @@ "id": "796dd30f-c90d-4b8d-a63d-89867347407b", "savedPayload": { "position": { - "x": 38336.918125272176, - "y": 19056.09680881699 + "x": 38389.77774788672, + "y": 18877.645713530757 }, "targetPosition": { - "x": 38085.31695488855, - "y": 18892.705098312483 + "x": 38100, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -11279,8 +11547,8 @@ "id": "bb390957-b8a2-4a8a-9fbf-963ea20f6eaf", "savedPayload": { "position": { - "x": 38085.31695488855, - "y": 18892.705098312483 + "x": 38100, + "y": 18800 }, "targetPosition": { "x": 37800, @@ -11289,7 +11557,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -11316,12 +11584,12 @@ "id": "23c23b71-1431-4cca-a80e-bb5c7242be9f", "savedPayload": { "position": { - "x": 38442.62315256192, - "y": 19420.297332942388 + "x": 38579.422863406, + "y": 19250 }, "targetPosition": { - "x": 38209.47936412483, - "y": 19231.501215627435 + "x": 38319.615242270665, + "y": 19100 }, "floatingObject": { "isPinned": false, @@ -11339,67 +11607,12 @@ "id": "90659303-924d-4404-9b1d-ea3180add4ef", "savedPayload": { "position": { - "x": 38209.47936412483, - "y": 19231.501215627435 + "x": 38319.615242270665, + "y": 19100 }, "targetPosition": { - "x": 37976.33557568774, - "y": 19042.705098312483 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 3, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "liquidityProgram": { - "type": "Liquidity Program", - "name": "New Liquidity Program", - "config": "{}", - "project": "Governance", - "tokensAwarded": { - "type": "Tokens Awarded", - "name": "New Tokens Awarded", - "project": "Governance", - "id": "c2eabbab-aa7a-4971-8664-cb306b5cc5fd", - "savedPayload": { - "position": { - "x": 38191.356345414926, - "y": 19602.8533542108 - }, - "targetPosition": { - "x": 38083.845960551334, - "y": 19322.779226261642 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "6f6d522c-ad61-426a-8fbc-7eb19b0c4a3e", - "savedPayload": { - "position": { - "x": 38083.845960551334, - "y": 19322.779226261642 - }, - "targetPosition": { - "x": 37976.33557568774, - "y": 19042.705098312483 + "x": 38059.80762113533, + "y": 18950 }, "floatingObject": { "isPinned": false, @@ -11417,8 +11630,203 @@ "id": "ed112539-01ea-4937-85cf-69612ee6115d", "savedPayload": { "position": { - "x": 37976.33557568774, - "y": 19042.705098312483 + "x": 38059.80762113533, + "y": 18950 + }, + "targetPosition": { + "x": 37800, + "y": 18800 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "liquidityPrograms": { + "type": "Liquidity Programs", + "name": "New Liquidity Programs", + "config": "{}", + "project": "Governance", + "liquidityProgram": [ + { + "type": "Liquidity Program", + "name": "BTCB", + "config": "{\n \"asset\": \"BTCB\"\n}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "5fd55dc1-69c8-473e-9d3d-b39b58818b07", + "savedPayload": { + "position": { + "x": 38426.01200417474, + "y": 19425.064478540568 + }, + "targetPosition": { + "x": 38188.00600208737, + "y": 19242.43604983795 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "a081e0a9-ee60-4a56-b5a6-aadb7bd8b052", + "savedPayload": { + "position": { + "x": 38188.00600208737, + "y": 19242.43604983795 + }, + "targetPosition": { + "x": 37950, + "y": 19059.807621135333 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Liquidity Program", + "name": "BNB", + "config": "{\n \"asset\": \"BNB\"\n}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "eab98bcc-39ee-411d-95e2-b5c6c33067cc", + "savedPayload": { + "position": { + "x": 38250, + "y": 19579.422863406 + }, + "targetPosition": { + "x": 38100, + "y": 19319.615242270665 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "68d6085b-3226-4842-b100-80a8c647e7ec", + "savedPayload": { + "position": { + "x": 38100, + "y": 19319.615242270665 + }, + "targetPosition": { + "x": 37950, + "y": 19059.807621135333 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Liquidity Program", + "name": "BUSD", + "config": "{\n \"asset\": \"BUSD\"\n}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "b66c668c-8411-4401-8aa7-10d8b2c4c233", + "savedPayload": { + "position": { + "x": 38028.315715332035, + "y": 19654.674537959618 + }, + "targetPosition": { + "x": 37989.15785766602, + "y": 19357.241079547475 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "8c213687-2520-41ff-8b89-f5abaf6f2f2e", + "savedPayload": { + "position": { + "x": 37989.15785766602, + "y": 19357.241079547475 + }, + "targetPosition": { + "x": 37950, + "y": 19059.807621135333 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "ba3bc469-3c94-444d-a5d0-8ed851aa3778", + "savedPayload": { + "position": { + "x": 37950, + "y": 19059.807621135333 }, "targetPosition": { "x": 37800, diff --git a/Projects/Governance/Schemas/App-Schema/financial-programs.json b/Projects/Governance/Schemas/App-Schema/financial-programs.json index 2e79f7905..79ceb6ecb 100644 --- a/Projects/Governance/Schemas/App-Schema/financial-programs.json +++ b/Projects/Governance/Schemas/App-Schema/financial-programs.json @@ -18,16 +18,6 @@ "relatedUiObject": "Staking Program", "relatedUiObjectProject": "Governance" }, - { - "action": "Add UI Object", - "actionProject": "Visual-Scripting", - "actionFunction": "payload.executeAction", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "stakingProgram", - "label": "Add Liquidity Program", - "relatedUiObject": "Liquidity Program", - "relatedUiObjectProject": "Governance" - }, { "action": "Add UI Object", "actionProject": "Visual-Scripting", @@ -68,12 +58,6 @@ "childType": "Staking Program", "autoAdd": false }, - { - "name": "liquidityProgram", - "type": "node", - "childType": "Liquidity Program", - "autoAdd": false - }, { "name": "delegationProgram", "type": "node", diff --git a/Projects/Governance/Schemas/App-Schema/liquidity-program.json b/Projects/Governance/Schemas/App-Schema/liquidity-program.json index 5486e6bd9..164c8cb38 100644 --- a/Projects/Governance/Schemas/App-Schema/liquidity-program.json +++ b/Projects/Governance/Schemas/App-Schema/liquidity-program.json @@ -33,8 +33,7 @@ "config": true }, "initialValues": { - "config": "{}" - }, + "config": "{\n\"asset\": \"BTCB\"\n}" }, "attachingRules": { "compatibleTypes": "->Financial Programs->" }, diff --git a/Projects/Governance/Schemas/App-Schema/liquidity-programs.json b/Projects/Governance/Schemas/App-Schema/liquidity-programs.json new file mode 100644 index 000000000..f35c417b5 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/liquidity-programs.json @@ -0,0 +1,50 @@ +{ + "type": "Liquidity Programs", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Liquidity Program", + "relatedUiObject": "Liquidity Program", + "relatedUiObjectProject": "Governance" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Token Power Switch->" + }, + "propertyNameAtParent": "liquidityPrograms", + "childrenNodesProperties": [ + { + "name": "liquidityProgram", + "type": "array", + "childType": "Liquidity Program", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/token-power-switch.json b/Projects/Governance/Schemas/App-Schema/token-power-switch.json index 40fb5e6c3..0d8a32bfc 100644 --- a/Projects/Governance/Schemas/App-Schema/token-power-switch.json +++ b/Projects/Governance/Schemas/App-Schema/token-power-switch.json @@ -56,6 +56,16 @@ "relatedUiObject": "Financial Programs", "relatedUiObjectProject": "Governance" }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "liquidityPrograms", + "label": "Add Liquidity Programs", + "relatedUiObject": "Liquidity Programs", + "relatedUiObjectProject": "Governance" + }, { "action": "Delete UI Object", "actionProject": "Visual-Scripting", @@ -109,6 +119,12 @@ "type": "node", "childType": "Financial Programs", "autoAdd": false + }, + { + "name": "liquidityPrograms", + "type": "node", + "childType": "Liquidity Programs", + "autoAdd": false } ] } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js index ca1d9a1d1..189d46c3c 100644 --- a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -110,11 +110,22 @@ function newGovernanceFunctionLibraryDistributionProcess() { userProfiles ) /* - Run the Liquidity Program + Run the Liquidity Program: One per SA Token Market */ UI.projects.governance.functionLibraries.liquidityProgram.calculate( pools, - userProfiles + userProfiles, + 'BTCB' + ) + UI.projects.governance.functionLibraries.liquidityProgram.calculate( + pools, + userProfiles, + 'BNB' + ) + UI.projects.governance.functionLibraries.liquidityProgram.calculate( + pools, + userProfiles, + 'BUSD' ) /* Run the Claims Program diff --git a/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js b/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js index 62de5ac9c..172b1b9b1 100644 --- a/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js +++ b/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js @@ -7,7 +7,8 @@ function newGovernanceFunctionLibraryLiquidityProgram() { function calculate( pools, - userProfiles + userProfiles, + asset ) { let programPoolTokenReward /* @@ -20,7 +21,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { /* Scan Pools Until finding the Pool for this program*/ for (let i = 0; i < pools.length; i++) { let poolsNode = pools[i] - programPoolTokenReward = UI.projects.governance.utilities.pools.findPool(poolsNode, "Liquidity-Rewards") + programPoolTokenReward = UI.projects.governance.utilities.pools.findPool(poolsNode, "Liquidity-Rewards-" + asset) if (programPoolTokenReward !== undefined) { break } } if (programPoolTokenReward === undefined || programPoolTokenReward === 0) { return } @@ -29,7 +30,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { let userProfile = userProfiles[i] if (userProfile.tokenPowerSwitch === undefined) { continue } - let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Liquidity Program") + let program = UI.projects.governance.utilities.validations.onlyOneProgramBasedOnConfigProperty(userProfile, "Liquidity Program", 'asset', asset) if (program === undefined) { continue } if (program.payload === undefined) { continue } @@ -39,7 +40,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { let userProfile = userProfiles[i] if (userProfile.tokenPowerSwitch === undefined) { continue } - let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Liquidity Program") + let program = UI.projects.governance.utilities.validations.onlyOneProgramBasedOnConfigProperty(userProfile, "Liquidity Program", 'asset', asset) if (program === undefined) { continue } if (program.payload === undefined) { continue } @@ -49,7 +50,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { let userProfile = userProfiles[i] if (userProfile.tokenPowerSwitch === undefined) { continue } - let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Liquidity Program") + let program = UI.projects.governance.utilities.validations.onlyOneProgramBasedOnConfigProperty(userProfile, "Liquidity Program", 'asset', asset) if (program === undefined) { continue } if (program.payload === undefined) { continue } if (program.payload.liquidityProgram.isActive === false) { continue } @@ -60,7 +61,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { let userProfile = userProfiles[i] if (userProfile.tokenPowerSwitch === undefined) { continue } - let program = UI.projects.governance.utilities.validations.onlyOneProgram(userProfile, "Liquidity Program") + let program = UI.projects.governance.utilities.validations.onlyOneProgramBasedOnConfigProperty(userProfile, "Liquidity Program", 'asset', asset) if (program === undefined) { continue } if (program.payload === undefined) { continue } if (program.payload.liquidityProgram.isActive === false) { continue } @@ -123,7 +124,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { Here we will convert Liquidity Tokens into Liquidity Power. As per system rules Liquidity Powar = userProfile.payload.liquidityTokens */ - let programPower = userProfile.payload.liquidityTokens + let programPower = userProfile.payload.liquidityTokens[asset] programNode.payload.liquidityProgram.ownPower = programPower accumulatedProgramPower = accumulatedProgramPower + programPower diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index 8565a54ef..98f938403 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -15,7 +15,7 @@ function newGovernanceUserProfileSpace() { } let waitingForResponses = 0 - const BSC_SCAN_RATE_LIMIT_DELAY = 12000 + const BSC_SCAN_RATE_LIMIT_DELAY = 6000 * 4 let reputationByAddress = new Map() return thisObject @@ -423,11 +423,22 @@ function newGovernanceUserProfileSpace() { userProfile.payload.blockchainTokens === undefined ) { waitingForResponses++ - userProfile.payload.liquidityTokens = 0 // We need to set this value here so that the next call to BSCSCAN is not done more than once. - setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 2, userProfile, blockchainAccount) + userProfile.payload.liquidityTokens = { + BTCB: 0, + BNB: 0, + BUSD: 0 + } + + setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 4 * 1, userProfile, blockchainAccount, 'BTCB', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BTCB_CONTRACT_ADDRESS) + setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 4 * 2, userProfile, blockchainAccount, 'BNB', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BNB_CONTRACT_ADDRESS) + setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 4 * 3, userProfile, blockchainAccount, 'BUSD', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BUSD_CONTRACT_ADDRESS) + + /* + Now we get the SA Tokens Balance. + */ waitingForResponses++ userProfile.payload.blockchainTokens = 0 // We need to set this value here so that the next call to BSCSCAN is not done more than once. - setTimeout(getBlockchainTokens, BSC_SCAN_RATE_LIMIT_DELAY, userProfile, blockchainAccount) + setTimeout(getBlockchainTokens, BSC_SCAN_RATE_LIMIT_DELAY / 4 * 4, userProfile, blockchainAccount) } } } @@ -448,7 +459,7 @@ function newGovernanceUserProfileSpace() { ) userProfile.payload.blockchainTokens = Number(data.result) / 1000000000000000000 userProfile.payload.reputation = Math.min(reputationByAddress.get(blockchainAccount.toLowerCase()) | 0, userProfile.payload.blockchainTokens) - console.log('Reputation of ' + userProfile.name + ' is ', userProfile.payload.reputation) + console.log('[INFO] Reputation of ' + userProfile.name + ' is ', userProfile.payload.reputation) } waitingForResponses-- }).catch(function (err) { @@ -463,9 +474,9 @@ function newGovernanceUserProfileSpace() { }); } - function getBPancakeTokens(userProfile, blockchainAccount) { + function getBPancakeTokens(userProfile, blockchainAccount, asset, marketContract) { console.log('[INFO] Loading Pancake Balance for User Profile: ', userProfile.name, 'blockchainAccount: ', blockchainAccount) - const url = "https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=" + UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BTCB_CONTRACT_ADDRESS + "&address=" + blockchainAccount + "&tag=latest&apikey=YourApiKeyToken" + const url = "https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=" + marketContract + "&address=" + blockchainAccount + "&tag=latest&apikey=YourApiKeyToken" fetch(url).then(function (response) { return response.json(); @@ -477,8 +488,8 @@ function newGovernanceUserProfileSpace() { userProfile.payload.uiObject.setInfoMessage('Pancake Balance Succesfully Loaded.', UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR ) - userProfile.payload.liquidityTokens = Number(data.result) / 1000000000000000000 - console.log('Liquidity of ' + userProfile.name + ' is ', userProfile.payload.liquidityTokens) + userProfile.payload.liquidityTokens[asset] = Number(data.result) / 1000000000000000000 + console.log('[INFO] Liquidity of ' + userProfile.name + ' for asset ' + asset + ' is ', userProfile.payload.liquidityTokens[asset]) } waitingForResponses-- }).catch(function (err) { diff --git a/Projects/Governance/UI/Utilities/Validations.js b/Projects/Governance/UI/Utilities/Validations.js index 05e6cd299..515e6ca79 100644 --- a/Projects/Governance/UI/Utilities/Validations.js +++ b/Projects/Governance/UI/Utilities/Validations.js @@ -1,6 +1,7 @@ -function newGovernanceUtilitiesValidations () { +function newGovernanceUtilitiesValidations() { let thisObject = { - onlyOneProgram: onlyOneProgram + onlyOneProgram: onlyOneProgram, + onlyOneProgramBasedOnConfigProperty: onlyOneProgramBasedOnConfigProperty } return thisObject @@ -15,7 +16,7 @@ function newGovernanceUtilitiesValidations () { userProfile.payload.uiObject.setErrorMessage( 'Only one ' + programNodeType + ' is allowed.', UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR - ) + ) return } if (programs.length === 1) { @@ -23,4 +24,25 @@ function newGovernanceUtilitiesValidations () { } } } + + function onlyOneProgramBasedOnConfigProperty(userProfile, programNodeType, configProperetyName, configProperetyValue) { + /* + Find all the nodes representing the current program. + */ + let programs = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile, programNodeType) + if (programs !== undefined) { + for (let i = 0; i < programs.length; i++) { + let program = programs[i] + let propertyValue = UI.projects.visualScripting.utilities.nodeConfig.loadConfigProperty(program.payload, configProperetyName) + if (propertyValue === configProperetyValue) { + return program + } + } + + userProfile.payload.uiObject.setErrorMessage( + 'Only one ' + programNodeType + ' is allowed. No program had a configProperty called ' + configProperetyName + ' with a value of ' + configProperetyValue, + UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR + ) + } + } } \ No newline at end of file