diff --git a/Client/httpInterface.js b/Client/httpInterface.js index ed08eb406..de123c106 100644 --- a/Client/httpInterface.js +++ b/Client/httpInterface.js @@ -132,6 +132,25 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE respondWithContent(JSON.stringify(serverResponse), httpResponse) return } + case 'signData': { + + let serverResponse = await WEB3_SERVER.signData( + params.privateKey, + params.data + ) + + respondWithContent(JSON.stringify(serverResponse), httpResponse) + return + } + case 'recoverAddress': { + + let serverResponse = await WEB3_SERVER.recoverAddress( + params.signature + ) + + respondWithContent(JSON.stringify(serverResponse), httpResponse) + return + } default: { respondWithContent(JSON.stringify({ error: 'Method ' + params.method + ' is invalid.' }), httpResponse) } diff --git a/Client/web3Server.js b/Client/web3Server.js index 0e838d04c..cf8979128 100644 --- a/Client/web3Server.js +++ b/Client/web3Server.js @@ -6,6 +6,8 @@ exports.newWeb3Server = function newWeb3Server() { getNetworkClientStatus: getNetworkClientStatus, createWalletAccount: createWalletAccount, getWalletBalances: getWalletBalances, + signData: signData, + recoverAddress: recoverAddress, initialize: initialize, finalize: finalize, run: run @@ -56,7 +58,7 @@ exports.newWeb3Server = function newWeb3Server() { return status } } catch (err) { - return { error: 'Could not connect to ' + key + '. ' + err.message + '.' } + return { error: 'Could not connect to ' + key + '. ' + err.stack + '.' } } } @@ -73,7 +75,7 @@ exports.newWeb3Server = function newWeb3Server() { } } catch (err) { - return { error: 'Could not create the account. ' + err.message } + return { error: 'Could not create the account. ' + err.stack } } } @@ -116,22 +118,22 @@ exports.newWeb3Server = function newWeb3Server() { for (let j = 0; j < walletAccount.tokenBalances.length; j++) { let tokenBalance = walletAccount.tokenBalances[j] - if (tokenBalance.referenceParent === undefined) { continue } - if (tokenBalance.referenceParent.parentNode === undefined) { continue } - if (tokenBalance.referenceParent.smartContracts === undefined) { continue } + if (tokenBalance.referenceParent === undefined) { continue } + if (tokenBalance.referenceParent.parentNode === undefined) { continue } + if (tokenBalance.referenceParent.smartContracts === undefined) { continue } if (tokenBalance.referenceParent.config.codeName === undefined) { tokenBalance.error = 'Reference Parent without config.codeName defined.' continue - } + } if (tokenBalance.referenceParent.smartContracts.config.address === undefined) { tokenBalance.error = 'Reference Parent Smart Contract without config.address defined.' continue - } + } let tokenContractAddress = tokenBalance.referenceParent.smartContracts.config.address - // The minimum ABI to get ERC20 Token balance + // The minimum ABI to get ERC20 Token balance let minABI = [ // balanceOf { @@ -152,8 +154,8 @@ exports.newWeb3Server = function newWeb3Server() { ]; let contract = new web3.eth.Contract(minABI, tokenContractAddress); - - try { + + try { tokenBalance.value = await contract.methods.balanceOf(walletAccount.config.address).call() } catch (err) { if (err.message.indexOf('Provided address') >= 0) { @@ -170,7 +172,7 @@ exports.newWeb3Server = function newWeb3Server() { return responseData } } catch (err) { - return { error: 'Could not connect to ' + key + '. ' + err.message + '.' } + return { error: 'Could not connect to ' + key + '. ' + err.stack + '.' } } } @@ -202,4 +204,39 @@ exports.newWeb3Server = function newWeb3Server() { } } } + + async function signData(privateKey, data) { + try { + + let web3 = new Web3() + let signature = web3.eth.accounts.sign(data, privateKey) + + return { + signature: signature, + result: 'Ok' + } + + } catch (err) { + return { error: 'Could not sign the data. ' + err.stack } + } + } + + async function recoverAddress(signature) { + try { + + console.log("STRING:", signature) + let signatureObject = JSON.parse(signature) + console.log("OBJECT:", signatureObject) + let web3 = new Web3() + let address = web3.eth.accounts.recover(signatureObject) + + return { + address: address, + result: 'Ok' + } + + } catch (err) { + return { error: 'Could not recover address. ' + err.stack } + } + } } \ No newline at end of file diff --git a/Projects/Ethereum/UI/Function-Libraries/Accounts.js b/Projects/Ethereum/UI/Function-Libraries/Accounts.js index cd1e36151..f57475578 100644 --- a/Projects/Ethereum/UI/Function-Libraries/Accounts.js +++ b/Projects/Ethereum/UI/Function-Libraries/Accounts.js @@ -11,7 +11,7 @@ function newEthereumFunctionLibraryAccounts() { let params = { method: 'createWalletAccount', - entropy: walletAccountNode.id + entropy: walletAccountNode.id + (new Date()).valueOf() } let url = 'WEB3' // we don't need to ask this to any specific superalgos node. diff --git a/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-005-automating-actions-using-utilities.json b/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-005-automating-actions-using-utilities.json index 0234ae4f4..827da3839 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-005-automating-actions-using-utilities.json +++ b/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-005-automating-actions-using-utilities.json @@ -52,7 +52,7 @@ }, { "style": "Javascript", - "text": "UI.projects.foundations.utilities.nodeConfig.savePropertyAtNodeConfig(node.payload,'showPanels', true)" + "text": "UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload,'showPanels', true)" }, { "style": "Text", diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js index 4c5bf3321..9edb76d67 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js @@ -30,6 +30,10 @@ function newUiObject() { hasInfo: undefined, valueAtAngle: true, valueAngleOffset: 0, + percentageAtAngle: true, + percentageAngleOffset: 0, + statusAtAngle: true, + statusAngleOffset: 0, run: run, stop: stop, heartBeat: heartBeat, @@ -1887,13 +1891,13 @@ function newUiObject() { label = label.substring(0, MAX_LABEL_LENGTH) + '...' } - if (thisObject.valueAtAngle === true && thisObject.payload.angle !== undefined) { + if (thisObject.percentageAtAngle === true && thisObject.payload.angle !== undefined) { labelPoint = { x: position.x - getTextWidth(label) / 2, y: position.y } - labelPoint.x = labelPoint.x + radius * 7 / 3 * Math.cos(toRadians(thisObject.payload.angle + thisObject.valueAngleOffset)) - labelPoint.y = labelPoint.y + radius * 7 / 3 * Math.sin(toRadians(thisObject.payload.angle + thisObject.valueAngleOffset)) + lineSeparator * 1 + labelPoint.x = labelPoint.x + radius * 7 / 3 * Math.cos(toRadians(thisObject.payload.angle + thisObject.percentageAngleOffset)) + labelPoint.y = labelPoint.y + radius * 7 / 3 * Math.sin(toRadians(thisObject.payload.angle + thisObject.percentageAngleOffset)) + lineSeparator * 1 } else { if (thisObject.isOnFocus === true) { labelPoint = { @@ -1948,15 +1952,25 @@ function newUiObject() { label = label.substring(0, MAX_LABEL_LENGTH) + '...' } - if (thisObject.isOnFocus === true) { + if (thisObject.statusAtAngle === true && thisObject.payload.angle !== undefined) { labelPoint = { x: position.x - getTextWidth(label) / 2, - y: position.y + radius * 2 / 3 + lineSeparator * 4 + 30 + y: position.y } + labelPoint.x = labelPoint.x + radius * 7 / 3 * Math.cos(toRadians(thisObject.payload.angle + thisObject.statusAngleOffset)) + labelPoint.y = labelPoint.y + radius * 7 / 3 * Math.sin(toRadians(thisObject.payload.angle + thisObject.statusAngleOffset)) + lineSeparator * 2 } else { - labelPoint = { - x: position.x - getTextWidth(label) / 2, - y: position.y + thisObject.payload.floatingObject.currentImageSize / 2 + lineSeparator * 4 + + if (thisObject.isOnFocus === true) { + labelPoint = { + x: position.x - getTextWidth(label) / 2, + y: position.y + radius * 2 / 3 + lineSeparator * 4 + 30 + } + } else { + labelPoint = { + x: position.x - getTextWidth(label) / 2, + y: position.y + thisObject.payload.floatingObject.currentImageSize / 2 + lineSeparator * 4 + } } } diff --git a/Projects/Foundations/UI/Spaces/Panel-Space/Layer.js b/Projects/Foundations/UI/Spaces/Panel-Space/Layer.js index 7f39e9267..d25a92cdf 100644 --- a/Projects/Foundations/UI/Spaces/Panel-Space/Layer.js +++ b/Projects/Foundations/UI/Spaces/Panel-Space/Layer.js @@ -511,7 +511,7 @@ function newLayer() { } } } else { - UI.projects.foundations.utilities.nodeConfig.savePropertyAtNodeConfig(thisObject.payload, 'showPanels', panelsVisibleButton.showPanels) + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(thisObject.payload, 'showPanels', panelsVisibleButton.showPanels) } } } @@ -560,7 +560,7 @@ function newLayer() { } } - UI.projects.foundations.utilities.nodeConfig.savePropertyAtNodeConfig(thisObject.payload, 'status', thisObject.status) + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(thisObject.payload, 'status', thisObject.status) let eventData = thisObject thisObject.container.eventHandler.raiseEvent('Status Changed', eventData) } diff --git a/Projects/Foundations/UI/Spaces/Panel-Space/LayersPanel.js b/Projects/Foundations/UI/Spaces/Panel-Space/LayersPanel.js index 1eb9b2b7f..000986a47 100644 --- a/Projects/Foundations/UI/Spaces/Panel-Space/LayersPanel.js +++ b/Projects/Foundations/UI/Spaces/Panel-Space/LayersPanel.js @@ -114,7 +114,7 @@ function newLayersPanel() { } function saveObjectStateVisibleLayers() { - UI.projects.foundations.utilities.nodeConfig.savePropertyAtNodeConfig(thisObject.payload, 'visibleLayers', desiredVisibleLayers) + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(thisObject.payload, 'visibleLayers', desiredVisibleLayers) } function saveObjectStatePanelLocation() { @@ -122,7 +122,7 @@ function newLayersPanel() { upOrDown: thisObject.upDownButton.status, leftOrRight: thisObject.leftRightButton.status } - UI.projects.foundations.utilities.nodeConfig.savePropertyAtNodeConfig(thisObject.payload, 'panelLocation', panelLocation) + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(thisObject.payload, 'panelLocation', panelLocation) } function readObjectState() { diff --git a/Projects/Foundations/UI/Utilities/NodeConfig.js b/Projects/Foundations/UI/Utilities/NodeConfig.js index 3a0dda7f7..865c3aba1 100644 --- a/Projects/Foundations/UI/Utilities/NodeConfig.js +++ b/Projects/Foundations/UI/Utilities/NodeConfig.js @@ -1,12 +1,12 @@ function newFoundationsUtilitiesNodeConfig() { let thisObject = { - savePropertyAtNodeConfig: savePropertyAtNodeConfig, + saveConfigProperty: saveConfigProperty, loadConfigProperty: loadConfigProperty } return thisObject - function savePropertyAtNodeConfig(payload, propertyName, value) { + function saveConfigProperty(payload, propertyName, value) { try { let config = JSON.parse(payload.node.config) config[propertyName] = value diff --git a/Projects/Governance/Icons/contribution-claims.png b/Projects/Governance/Icons/Programs/claims-program.png similarity index 100% rename from Projects/Governance/Icons/contribution-claims.png rename to Projects/Governance/Icons/Programs/claims-program.png diff --git a/Projects/Governance/Icons/Programs/mentorship-program.png b/Projects/Governance/Icons/Programs/mentorship-program.png new file mode 100644 index 000000000..b6f5da755 Binary files /dev/null and b/Projects/Governance/Icons/Programs/mentorship-program.png differ diff --git a/Projects/Governance/Icons/Programs/referral-program.png b/Projects/Governance/Icons/Programs/referral-program.png new file mode 100644 index 000000000..b9d3765cf Binary files /dev/null and b/Projects/Governance/Icons/Programs/referral-program.png differ diff --git a/Projects/Governance/Icons/Programs/staking-program.png b/Projects/Governance/Icons/Programs/staking-program.png new file mode 100644 index 000000000..9ab9dadd6 Binary files /dev/null and b/Projects/Governance/Icons/Programs/staking-program.png differ diff --git a/Projects/Governance/Icons/Programs/support-program.png b/Projects/Governance/Icons/Programs/support-program.png new file mode 100644 index 000000000..7894c5596 Binary files /dev/null and b/Projects/Governance/Icons/Programs/support-program.png differ diff --git a/Projects/Governance/Icons/Votes/votes-distribution.png b/Projects/Governance/Icons/Programs/voting-program.png similarity index 100% rename from Projects/Governance/Icons/Votes/votes-distribution.png rename to Projects/Governance/Icons/Programs/voting-program.png diff --git a/Projects/Governance/Icons/User/user-mentor.png b/Projects/Governance/Icons/User/user-mentor.png new file mode 100644 index 000000000..fcafb34f3 Binary files /dev/null and b/Projects/Governance/Icons/User/user-mentor.png differ diff --git a/Projects/Governance/Icons/User/user-support.png b/Projects/Governance/Icons/User/user-support.png new file mode 100644 index 000000000..96a7d7fd1 Binary files /dev/null and b/Projects/Governance/Icons/User/user-support.png differ diff --git a/Projects/Governance/Icons/profile-constructor.png b/Projects/Governance/Icons/profile-constructor.png new file mode 100644 index 000000000..ef69b801e Binary files /dev/null and b/Projects/Governance/Icons/profile-constructor.png differ diff --git a/Projects/Governance/Icons/token-switch.png b/Projects/Governance/Icons/token-switch.png new file mode 100644 index 000000000..6f1185b9f Binary files /dev/null and b/Projects/Governance/Icons/token-switch.png differ diff --git a/Projects/Governance/Icons/tokens-awarded.png b/Projects/Governance/Icons/tokens-awarded.png new file mode 100644 index 000000000..650a239d6 Binary files /dev/null and b/Projects/Governance/Icons/tokens-awarded.png differ diff --git a/Projects/Governance/Plugins/Pools/Superalgos.json b/Projects/Governance/Plugins/Pools/Superalgos.json index 45da273e9..c8001cec2 100644 --- a/Projects/Governance/Plugins/Pools/Superalgos.json +++ b/Projects/Governance/Plugins/Pools/Superalgos.json @@ -424,7 +424,7 @@ { "type": "Pool", "name": "User Referrals", - "config": "{\n \"codeName\": \"User-Referrals\"\n}", + "config": "{\n \"codeName\": \"Referral-Program\"\n}", "project": "Governance", "poolClasses": [], "pools": [], diff --git a/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json b/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json index b739f5bf7..32cb19cba 100644 --- a/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Julian-Molina.json @@ -3,399 +3,246 @@ "name": "Julian-Molina", "config": "{\n \"codeName\": \"\",\n \"tokens\": 500000\n}", "project": "Governance", - "contributionClaims": { - "type": "Contribution Claims", - "name": "New Contribution Claims", + "tokenSwitch": { + "type": "Token Switch", + "name": "New Token Switch", "config": "{}", "project": "Governance", - "assetContributionsFolder": [ - { - "type": "Asset Contributions Folder", - "name": "Tutorials", + "referralProgram": { + "type": "Referral Program", + "name": "New Referral Program", + "config": "{}", + "project": "Governance", + "userReferrer": { + "type": "User Referrer", + "name": "Jeremy", "config": "{}", "project": "Governance", - "assetContributionsFolder": [ - { - "type": "Asset Contributions Folder", - "name": "Tutorials Created", - "config": "{}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "b62215fd-405b-4b81-a446-d667de2fd23b", - "savedPayload": { - "position": { - "x": 26082.78190893733, - "y": 22758.100619195047 - }, - "targetPosition": { - "x": 25822.974287801997, - "y": 22908.100619195047 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Getting Started Tutorial", - "id": "6c3f251e-cb80-42b7-935b-23bcbe218f97" - } - } - } - ], - "id": "30c01eef-80cf-4fb8-9231-af6694be0af9", - "savedPayload": { - "position": { - "x": 25822.974287801997, - "y": 22908.100619195047 - }, - "targetPosition": { - "x": 25563.166666666664, - "y": 23058.100619195047 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Tutorials Mantainance", - "config": "{}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "4a841aaa-0730-4783-91be-87d718ee4e15", - "savedPayload": { - "position": { - "x": 26082.78190893733, - "y": 23358.100619195047 - }, - "targetPosition": { - "x": 25822.974287801997, - "y": 23208.100619195047 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Getting Started Tutorial", - "id": "6c3f251e-cb80-42b7-935b-23bcbe218f97" - } - } - } - ], - "id": "03cd14ee-432e-4c7c-b2b0-79dc24d07820", - "savedPayload": { - "position": { - "x": 25822.974287801997, - "y": 23208.100619195047 - }, - "targetPosition": { - "x": 25563.166666666664, - "y": 23058.100619195047 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "assetContributionClaims": [], - "id": "9318707a-afa0-4c84-8028-473eb448f96b", + "id": "0d0b04ff-034b-4b02-8351-67d621d514c0", "savedPayload": { "position": { - "x": 25563.166666666664, - "y": 23058.100619195047 + "x": 25532.618466191747, + "y": 23465.846712854385 }, "targetPosition": { - "x": 25263.166666666664, - "y": 23058.100619195047 + "x": 25233.45732703739, + "y": 23488.265740930314 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, - "uiObject": { - "isRunning": false + "uiObject": {}, + "referenceParent": { + "type": "User Profile", + "name": "Jeremy", + "id": "759e9012-c995-47ed-92f1-7d204bf2b58e" } } - } - ], - "featureContributionsFolder": [], - "positionContributionsFolder": [], - "id": "43a4118b-fc68-46a9-a7d8-fa4baafa5ad6", - "savedPayload": { - "position": { - "x": 25263.166666666664, - "y": 23058.100619195047 }, - "targetPosition": { - "x": 24963.166666666664, - "y": 23058.100619195047 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "votesDistribution": { - "type": "Votes Distribution", - "name": "New Votes Distribution", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Governance", - "votesSwitch": [ - { - "type": "Votes Switch", - "name": "Test", - "config": "{\n \"description\": \"\"\n}", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", "project": "Governance", - "votesSwitch": [], - "claimVotesSwitch": [ - { - "type": "Claim Votes Switch", - "name": "New Claim Votes Switch", - "config": "{}", - "project": "Governance", - "claimVotesSwitch": [], - "positionClaimVotes": [ - { - "type": "Position Claim Vote", - "name": "Luis-Fernando-Molina Project Leader Superalgos", - "config": "{}", - "project": "Governance", - "id": "ab4d6901-a84c-44d3-a97a-7bc14de9ff31", - "savedPayload": { - "position": { - "x": 25113.166666666664, - "y": 23837.523482601046 - }, - "targetPosition": { - "x": 24813.166666666664, - "y": 23837.523482601046 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Position Contribution Claim", - "name": "Project Leader Superalgos", - "id": "a2bb4366-f480-4685-80b0-e40af9cddd8c" - } - } - }, - { - "type": "Position Claim Vote", - "name": "Luis-Fernando-Molina Project Leader Superalgos", - "config": "{}", - "project": "Governance", - "id": "2248b955-af4b-42e6-9649-9b6a689d0ade", - "savedPayload": { - "position": { - "x": 24663.166666666664, - "y": 24097.33110373638 - }, - "targetPosition": { - "x": 24813.166666666664, - "y": 23837.523482601046 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Position Contribution Claim", - "name": "Project Leader Superalgos", - "id": "be2aedec-06fd-41fa-8599-08105931f75f" - } - } - } - ], - "assetClaimVotes": [], - "featureClaimVotes": [], - "id": "6029fd9b-94b4-4b62-960a-14fb88107cdb", - "savedPayload": { - "position": { - "x": 24813.166666666664, - "y": 23837.523482601046 - }, - "targetPosition": { - "x": 24663.166666666664, - "y": 23577.715861465713 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "New Weight Votes Switch", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [ - { - "type": "Position Weight Vote", - "name": "Superalgos Project Leader", - "config": "{}", - "project": "Governance", - "id": "11a8ac12-eba4-472d-b44b-8783720f8c6a", - "savedPayload": { - "position": { - "x": 24063.166666666664, - "y": 23577.715861465713 - }, - "targetPosition": { - "x": 24363.166666666664, - "y": 23577.715861465713 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Position", - "name": "Project Leader", - "id": "5f694173-4568-46b2-a52c-4244320919f7" - } - } - } - ], - "id": "d98792e3-620f-4827-b17f-74096a2fe5c8", - "savedPayload": { - "position": { - "x": 24363.166666666664, - "y": 23577.715861465713 - }, - "targetPosition": { - "x": 24663.166666666664, - "y": 23577.715861465713 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "userProfileVotesSwitch": [], - "id": "f4127f8b-eb94-4e5e-aea9-71ea43ba5b5b", + "id": "208f866a-459d-4dd8-93ea-1a2b8bfa3dac", "savedPayload": { "position": { - "x": 24663.166666666664, - "y": 23577.715861465713 + "x": 25402.453344456477, + "y": 23736.137373225112 }, "targetPosition": { - "x": 24813.166666666664, - "y": 23317.90824033038 + "x": 25233.45732703739, + "y": 23488.265740930314 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, - "uiObject": { - "isRunning": false - } + "uiObject": {} + } + }, + "id": "a9ddce61-97b0-47e8-ad6c-e9438aca3913", + "savedPayload": { + "position": { + "x": 25233.45732703739, + "y": 23488.265740930314 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23358.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false } } - ], - "id": "84b2e7e0-577a-4edc-98fd-003905decb99", + }, + "mentorshipProgram": { + "type": "Mentorship Program", + "name": "New Mentorship Program", + "config": "{}", + "project": "Governance", + "userMentors": [], + "id": "362a1ecb-dce9-4ebb-9b00-a20d3631f2f3", + "savedPayload": { + "position": { + "x": 25150.213607224283, + "y": 23592.650063935456 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23358.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "supportProgram": { + "type": "Support Program", + "name": "New Support Program", + "config": "{}", + "project": "Governance", + "userSupports": [], + "id": "f1020b53-23d4-4fea-b5d3-5409e13197a9", + "savedPayload": { + "position": { + "x": 25029.92294685356, + "y": 23650.578992849594 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23358.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "votingProgram": { + "type": "Voting Program", + "name": "New Voting Program", + "config": "{}", + "project": "Governance", + "votesSwitch": [], + "id": "0b2863a0-d280-4a9a-9e2c-fe5bdbc54854", + "savedPayload": { + "position": { + "x": 24896.41038647977, + "y": 23650.578992849594 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23358.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "claimsProgram": { + "type": "Claims Program", + "name": "New Claims Program", + "config": "{}", + "project": "Governance", + "assetContributionsFolder": [], + "featureContributionsFolder": [], + "positionContributionsFolder": [], + "id": "bec9399a-9f85-4cb5-bff4-9938a3bc7ac4", + "savedPayload": { + "position": { + "x": 24776.119726109046, + "y": 23592.650063935456 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23358.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "stakingProgram": { + "type": "Staking Program", + "name": "New Staking Program", + "config": "{}", + "project": "Governance", + "id": "d66a7bf2-963a-4d28-b896-c41e83f610ae", + "savedPayload": { + "position": { + "x": 24692.876006295937, + "y": 23488.265740930314 + }, + "targetPosition": { + "x": 24963.166666666664, + "y": 23358.100619195047 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "86a8ca4c-76d4-4eb0-9acb-5650095c6667", "savedPayload": { "position": { - "x": 24813.166666666664, - "y": 23317.90824033038 + "x": 24963.166666666664, + "y": 23358.100619195047 }, "targetPosition": { "x": 24963.166666666664, @@ -405,7 +252,7 @@ "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -414,37 +261,6 @@ } } }, - "userReferrer": { - "type": "User Referrer", - "name": "Luis-Fernando-Molina", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "edf7bcda-23f6-49bb-b9b2-9a34edcb4a40", - "savedPayload": { - "position": { - "x": 24813.166666666664, - "y": 22798.292998059715 - }, - "targetPosition": { - "x": 24963.166666666664, - "y": 23058.100619195047 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "User Profile", - "name": "Luis-Fernando-Molina", - "id": "148911b3-b2f3-44fb-8cb4-017991789132" - } - } - }, "id": "1fd95e41-4b22-48d5-be3a-904c37afcb11", "savedPayload": { "position": { @@ -458,8 +274,8 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, + "isCollapsed": false, + "angleToParent": 2, "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 61df8041c..0d67339a8 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -1,985 +1,1513 @@ { "type": "User Profile", "name": "Luis-Fernando-Molina", - "config": "{\n \"tokens\": 10000000\n}", + "config": "{\n \"tokens\": 10000000,\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x90293b042c180aa21b05f0356f31688c597be4ff2df136f63a2b8a899c658eb0\",\n \"s\": \"0x42abf909024d34217430e42ebadc96b7834218cc86a4c295a2ae419ff2fca6e3\",\n \"signature\": \"0x90293b042c180aa21b05f0356f31688c597be4ff2df136f63a2b8a899c658eb042abf909024d34217430e42ebadc96b7834218cc86a4c295a2ae419ff2fca6e31b\"\n }\n}", "project": "Governance", - "contributionClaims": { - "type": "Contribution Claims", - "name": "New Contribution Claims", - "config": "{\n\"codeName\": \"\"\n}", + "tokenSwitch": { + "type": "Token Switch", + "name": "New Token Switch", + "config": "{}", "project": "Governance", - "assetContributionsFolder": [ - { - "type": "Asset Contributions Folder", - "name": "Software", - "config": "{\n \"description\": \"\"\n}", + "referralProgram": { + "type": "Referral Program", + "name": "New Referral Program", + "config": "{}", + "project": "Governance", + "userReferrer": { + "type": "User Referrer", + "name": "Julian-Molina", + "config": "{}", "project": "Governance", - "assetContributionsFolder": [ - { - "type": "Asset Contributions Folder", - "name": "Plugins", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [ - { - "type": "Asset Contributions Folder", - "name": "Data-Mines", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "f44b3d0f-cb22-4f0f-a550-ce53224db391", - "savedPayload": { - "position": { - "x": 29746.912956127882, - "y": 22479.311870400597 - }, - "targetPosition": { - "x": 30184.228161873478, - "y": 22373.220349421354 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 3, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Candles", - "id": "0787b89c-2962-48ed-9e73-85858610ba31" - } - } - }, - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "a1d0f2fb-4466-4263-862c-fbfa86e3a5d2", - "savedPayload": { - "position": { - "x": 29734.35560426157, - "y": 22362.511385525606 - }, - "targetPosition": { - "x": 30184.228161873478, - "y": 22373.220349421354 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 3, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Bollinger", - "id": "6ead356c-31a9-4e31-a1b2-da82c5151d21" - } - } - }, - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "93a7db1d-3321-402c-837f-37c057dc2c99", - "savedPayload": { - "position": { - "x": 29752.456323746956, - "y": 22246.44069884271 - }, - "targetPosition": { - "x": 30184.228161873478, - "y": 22373.220349421354 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 3, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters", - "id": "589869da-7be7-422e-855c-b407be2399d6" - } - } - }, - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "4973a029-9b39-447e-904d-65e08240f3f8", - "savedPayload": { - "position": { - "x": 29799.981580463962, - "y": 22139.009835833473 - }, - "targetPosition": { - "x": 30184.228161873478, - "y": 22373.220349421354 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 3, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Samurai", - "id": "d6316f57-0098-4dd0-a55f-bc8dc7fa5608" - } - } - }, - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "2794d152-8a0b-4c41-8c0f-62731f8ab425", - "savedPayload": { - "position": { - "x": 29873.69260670653, - "y": 22047.54003227407 - }, - "targetPosition": { - "x": 30184.228161873478, - "y": 22373.220349421354 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 3, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Messari", - "id": "c95c6c99-b57d-4b2c-9672-d08eff2206a9" - } - } - } - ], - "id": "46870e1d-a79d-4e4f-a996-438d5b1f46b2", - "savedPayload": { - "position": { - "x": 30184.228161873478, - "y": 22373.220349421354 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 4, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Trading-Mines", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "ef626143-6921-4936-af19-449dc7e346bc", - "savedPayload": { - "position": { - "x": 30111.247880301293, - "y": 22175.61550952664 - }, - "targetPosition": { - "x": 30363.623940150646, - "y": 22337.80775476332 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters", - "id": "76a9d109-7811-4972-83b8-bb2fab614c7d" - } - } - } - ], - "id": "79c8615c-09b9-4732-b459-a65814777918", - "savedPayload": { - "position": { - "x": 30363.623940150646, - "y": 22337.80775476332 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Workspaces", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "0289586d-ab17-4cbc-8915-c1f6f0c4f4ab", - "savedPayload": { - "position": { - "x": 30223.083559632832, - "y": 22046.550255387443 - }, - "targetPosition": { - "x": 30419.541779816416, - "y": 22273.27512769372 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "API-Data-Fetcher-Bot-Demo", - "id": "9648867f-f3fd-4924-9812-71cab5733edb" - } - } - } - ], - "id": "22a46810-6aa8-4732-894e-5757aff04583", - "savedPayload": { - "position": { - "x": 30419.541779816416, - "y": 22273.27512769372 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "API-Maps", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "b1dfc14a-48c8-4821-b347-559c85b42728", - "savedPayload": { - "position": { - "x": 30366.750992198868, - "y": 21954.220802787288 - }, - "targetPosition": { - "x": 30491.375496099434, - "y": 22227.110401393642 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Messari", - "id": "2dc7c1ab-7213-40c5-b5b7-668642ff4074" - } - } - } - ], - "id": "129933eb-855a-43d3-83fe-1cdf01bfc4b3", - "savedPayload": { - "position": { - "x": 30491.375496099434, - "y": 22227.110401393642 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Learning-Mines", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "4d7bc5d1-3ef7-48b2-8f32-528f13092b97", - "savedPayload": { - "position": { - "x": 30530.61109703603, - "y": 21906.107134871436 - }, - "targetPosition": { - "x": 30573.305548518016, - "y": 22203.053567435716 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters", - "id": "e3b45ec2-02f9-41d6-aae6-9bba5ee4baa7" - } - } - } - ], - "id": "1fd24841-5a75-45f3-b45d-7008b822b062", - "savedPayload": { - "position": { - "x": 30573.305548518016, - "y": 22203.053567435716 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Trading-Engines", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "15b2a80e-109d-4813-92e0-facc2b97970e", - "savedPayload": { - "position": { - "x": 30701.38890296397, - "y": 21906.107134871436 - }, - "targetPosition": { - "x": 30658.694451481984, - "y": 22203.053567435716 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Low-Frequency", - "id": "9249f44a-fd86-4961-8051-6092b48f6087" - } - } - } - ], - "id": "12d128cd-f849-4418-8ff3-ffeb771404a7", - "savedPayload": { - "position": { - "x": 30658.694451481984, - "y": 22203.053567435716 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Learning-Engines", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "b1c3a921-6bcb-4a97-b829-426863cbd0ec", - "savedPayload": { - "position": { - "x": 30865.249007801132, - "y": 21954.220802787288 - }, - "targetPosition": { - "x": 30740.624503900566, - "y": 22227.110401393642 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Low-Frequency", - "id": "9249f44a-fd86-4961-8051-6092b48f6087" - } - } - } - ], - "id": "f7d3bb6f-e61b-41a8-8d27-280e7649b1e6", - "savedPayload": { - "position": { - "x": 30740.624503900566, - "y": 22227.110401393642 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Trading-Systems", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "809fb8e9-c75e-4590-b413-11b869d4370b", - "savedPayload": { - "position": { - "x": 31008.916440367168, - "y": 22046.550255387443 - }, - "targetPosition": { - "x": 30812.458220183584, - "y": 22273.27512769372 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters-Lightning-Strike", - "id": "fbff446b-49b9-4a78-8e4d-2cd841f1ef94" - } - } - } - ], - "id": "bdd7eecd-f0f5-4d90-80a5-18fb3491e161", - "savedPayload": { - "position": { - "x": 30812.458220183584, - "y": 22273.27512769372 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "Learning-Systems", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "850b4073-b297-4851-9cd7-498fe3a9a17c", - "savedPayload": { - "position": { - "x": 31120.752119698707, - "y": 22175.61550952664 - }, - "targetPosition": { - "x": 30868.376059849354, - "y": 22337.80775476332 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Sandbox", - "id": "a7bf6a56-8da9-4efb-b1c6-21114d6a5d0d" - } - } - } - ], - "id": "6ab8bfe5-3d45-4e89-8338-fe6dd1415fe6", - "savedPayload": { - "position": { - "x": 30868.376059849354, - "y": 22337.80775476332 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset Contributions Folder", - "name": "New Asset Contributions Folder", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "assetContributionsFolder": [], - "assetContributionClaims": [ - { - "type": "Asset Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "32efefb0-92eb-43c1-9dcf-1f26b1bad920", - "savedPayload": { - "position": { - "x": 31191.695784168696, - "y": 22330.96046589514 - }, - "targetPosition": { - "x": 30903.847892084348, - "y": 22415.480232947568 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters-Lightning-Strike", - "id": "fbff446b-49b9-4a78-8e4d-2cd841f1ef94" - } - } - } - ], - "id": "69afb0ba-5d80-4e7d-afff-b71e188df87d", - "savedPayload": { - "position": { - "x": 30903.847892084348, - "y": 22415.480232947568 - }, - "targetPosition": { - "x": 30616, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "assetContributionClaims": [], - "id": "1fdac20e-5b28-4044-aed4-761c3b0bbc77", - "savedPayload": { - "position": { - "x": 30616, - "y": 22499.999999999996 - }, - "targetPosition": { - "x": 30616, - "y": 22799.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "assetContributionClaims": [], - "id": "6bc4e587-086d-486a-8a5b-0721450fa2c2", + "id": "c96ae419-54ad-4d70-94fe-38833288d471", "savedPayload": { "position": { - "x": 30616, - "y": 22799.999999999996 + "x": 30660.151752050326, + "y": 22933.690934849117 }, "targetPosition": { - "x": 30616, - "y": 23099.999999999996 + "x": 30550.54944474041, + "y": 23212.953059442378 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, - "uiObject": { - "isRunning": false + "uiObject": {}, + "referenceParent": { + "type": "User Profile", + "name": "Julian-Molina", + "id": "1fd95e41-4b22-48d5-be3a-904c37afcb11" } } - } - ], - "featureContributionsFolder": [ - { - "type": "Feature Contributions Folder", - "name": "New Feature Contributions Folder", - "config": "{\n \"description\": \"\"\n}", + }, + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", "project": "Governance", - "featureContributionsFolder": [], - "featureContributionClaims": [ - { - "type": "Feature Contribution Claim", - "name": "", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "b7cdddaf-923f-44ce-9574-270efefc9331", - "savedPayload": { - "position": { - "x": 31216, - "y": 23099.999999999996 - }, - "targetPosition": { - "x": 30916, - "y": 23099.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Feature", - "name": "Highlights", - "id": "3997cd4b-15be-4c81-b8d9-23bee80dde32" - } - } - } - ], - "id": "51e4f552-a957-41b6-acae-ff5f1eebc520", + "id": "56ac3eb9-2d72-4a8d-99bc-3221819ce995", "savedPayload": { "position": { - "x": 30916, - "y": 23099.999999999996 + "x": 30847.198692607948, + "y": 23168.240379589526 }, "targetPosition": { - "x": 30616, - "y": 23099.999999999996 + "x": 30550.54944474041, + "y": 23212.953059442378 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, - "uiObject": { - "isRunning": false - } + "uiObject": {} + } + }, + "id": "43a24543-03cf-4511-b670-63566159dbd7", + "savedPayload": { + "position": { + "x": 30550.54944474041, + "y": 23212.953059442378 + }, + "targetPosition": { + "x": 30316, + "y": 23399.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false } } - ], - "positionContributionsFolder": [ - { - "type": "Position Contributions Folder", - "name": "New Position Contributions Folder", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "positionContributionsFolder": [], - "positionContributionClaims": [ - { - "type": "Position Contribution Claim", - "name": "Project Leader Superalgos", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "id": "be2aedec-06fd-41fa-8599-08105931f75f", - "savedPayload": { - "position": { - "x": 30875.807621135333, - "y": 23549.999999999996 - }, - "targetPosition": { - "x": 30616, - "y": 23399.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Position", - "name": "Project Leader", - "id": "5f694173-4568-46b2-a52c-4244320919f7" - } - } - }, - { - "type": "Position Contribution Claim", - "name": "Project Leader Superalgos", - "config": "{}", - "project": "Governance", - "id": "a2bb4366-f480-4685-80b0-e40af9cddd8c", - "savedPayload": { - "position": { - "x": 30356.192378864667, - "y": 23549.999999999996 - }, - "targetPosition": { - "x": 30616, - "y": 23399.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Position", - "name": "Project Leader", - "id": "5f694173-4568-46b2-a52c-4244320919f7" - } - } - } - ], - "id": "4278170e-f140-4cb9-95e1-3fd252afcf42", - "savedPayload": { - "position": { - "x": 30616, - "y": 23399.999999999996 - }, - "targetPosition": { - "x": 30616, - "y": 23099.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } + }, + "mentorshipProgram": { + "type": "Mentorship Program", + "name": "New Mentorship Program", + "config": "{}", + "project": "Governance", + "userMentors": [], + "id": "8af4af68-62bf-4ad2-bf84-f1124cba0abf", + "savedPayload": { + "position": { + "x": 30608.478373654547, + "y": 23466.75628018689 + }, + "targetPosition": { + "x": 30316, + "y": 23399.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false } } - ], - "id": "b3c56464-063e-403a-a1ed-3231a2d1f5cd", + }, + "supportProgram": { + "type": "Support Program", + "name": "New Support Program", + "config": "{}", + "project": "Governance", + "userSupports": [], + "id": "91d82012-4362-4fe0-b02b-0eb3b394ace5", + "savedPayload": { + "position": { + "x": 30446.165121735266, + "y": 23670.290660370723 + }, + "targetPosition": { + "x": 30316, + "y": 23399.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "votingProgram": { + "type": "Voting Program", + "name": "New Voting Program", + "config": "{}", + "project": "Governance", + "votesSwitch": [ + { + "type": "Votes Switch", + "name": "New Votes Switch", + "config": "{}", + "project": "Governance", + "votesSwitch": [], + "claimVotesSwitch": [], + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "New Weight Votes Switch", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Superalgos Pools", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Software Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Foundations Project Pool", + "config": "{}", + "project": "Governance", + "id": "f24631c9-92f7-40ec-af18-f32e5e200537", + "savedPayload": { + "position": { + "x": 30555.56228253721, + "y": 24685.538763626188 + }, + "targetPosition": { + "x": 30268.890440801366, + "y": 24773.96531594946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Foundations Project", + "id": "2207c69c-ee9d-4453-8bf4-582d79b4b635" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "TensorFlow Project Pool", + "config": "{}", + "project": "Governance", + "id": "21ac46d3-6170-422d-82ca-0738be0401c4", + "savedPayload": { + "position": { + "x": 30561.368814455913, + "y": 24840.721596136354 + }, + "targetPosition": { + "x": 30268.890440801366, + "y": 24773.96531594946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "TensorFlow Project", + "id": "ea854cf8-47cd-43f0-b58a-13e61ae3106d" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "Governance Project Pool", + "config": "{}", + "project": "Governance", + "id": "ac8070f0-fe42-4595-b844-e97170a0a5d6", + "savedPayload": { + "position": { + "x": 30488.806002350313, + "y": 24978.017137280734 + }, + "targetPosition": { + "x": 30268.890440801366, + "y": 24773.96531594946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Governance Project", + "id": "3c80032c-51a8-4fd8-ab65-cf219c03ce95" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "Education Project Pool", + "config": "{}", + "project": "Governance", + "id": "fcfd5e40-7df6-47bd-b246-fea2309636a7", + "savedPayload": { + "position": { + "x": 30357.316993124638, + "y": 25060.6371576853 + }, + "targetPosition": { + "x": 30268.890440801366, + "y": 24773.96531594946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Education Project", + "id": "0a79ec65-6f67-4c18-823f-48a6d0494a81" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "Ethereum Project Pool", + "config": "{}", + "project": "Governance", + "id": "db4d2213-3fd5-478e-b6f3-b754090e0721", + "savedPayload": { + "position": { + "x": 30202.13416061447, + "y": 25066.443689604006 + }, + "targetPosition": { + "x": 30268.890440801366, + "y": 24773.96531594946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Ethereum Project", + "id": "f51d23aa-742c-40d4-b000-2b90c3ae197c" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "a970cae4-b62a-4127-ad64-067d44f721b4", + "savedPayload": { + "position": { + "x": 30268.890440801366, + "y": 24773.96531594946 + }, + "targetPosition": { + "x": 30048.97487925242, + "y": 24569.913494618184 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Marketing Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Collective Rewards Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "First Exchange Listing The Token Pool", + "config": "{}", + "project": "Governance", + "id": "492e0acc-1d34-476b-8519-a25b26dc5d24", + "savedPayload": { + "position": { + "x": 30649.795366779184, + "y": 25127.393437872197 + }, + "targetPosition": { + "x": 30357.316993124638, + "y": 25060.6371576853 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "First Exchange Listing The Token", + "id": "6a456247-13b7-41f2-80b3-957c1af55009" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "10K Stars on Github Pool", + "config": "{}", + "project": "Governance", + "id": "0a569224-49d0-4518-ac0b-3a9237410d76", + "savedPayload": { + "position": { + "x": 30445.74354544791, + "y": 25347.308999421144 + }, + "targetPosition": { + "x": 30357.316993124638, + "y": 25060.6371576853 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "10K Stars on Github", + "id": "5bbe5a09-fe32-4802-8e14-d06615a24510" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "7ef32920-85af-4d4a-b4be-dd03415f905e", + "savedPayload": { + "position": { + "x": 30357.316993124638, + "y": 25060.6371576853 + }, + "targetPosition": { + "x": 30137.40143157569, + "y": 24856.585336354026 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Assets Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Marketing Assets Pool", + "config": "{}", + "project": "Governance", + "id": "8ee0f13f-79ac-49e6-a417-414ef568eae7", + "savedPayload": { + "position": { + "x": 30003.8888712019, + "y": 25441.54208366312 + }, + "targetPosition": { + "x": 30070.645151388795, + "y": 25149.063710008573 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Marketing Assets", + "id": "6b4bee15-622d-4df6-9662-4d7b8d44f198" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "7ffccefb-7efa-43d8-942a-25f02307de29", + "savedPayload": { + "position": { + "x": 30070.645151388795, + "y": 25149.063710008573 + }, + "targetPosition": { + "x": 30137.40143157569, + "y": 24856.585336354026 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "036afdd7-5205-41e6-aac2-5ef009ba46d8", + "savedPayload": { + "position": { + "x": 30137.40143157569, + "y": 24856.585336354026 + }, + "targetPosition": { + "x": 30048.97487925242, + "y": 24569.913494618184 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Community Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Users Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Usage Pool", + "config": "{}", + "project": "Governance", + "id": "536db08b-dc25-4548-b233-724d099dc447", + "savedPayload": { + "position": { + "x": 30407.062840071507, + "y": 25256.589716523136 + }, + "targetPosition": { + "x": 30141.828222020125, + "y": 25116.409128041218 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Usage", + "id": "60712b3c-ee76-40ba-8de2-e03aa61f6dde" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "User Referrals Pool", + "config": "{}", + "project": "Governance", + "id": "915e0231-3b99-4893-bb9a-dbcf638228d0", + "savedPayload": { + "position": { + "x": 30153.045580303024, + "y": 25416.19933947774 + }, + "targetPosition": { + "x": 30141.828222020125, + "y": 25116.409128041218 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "User Referrals", + "id": "639a6504-a0d0-4d7e-ad99-80ba5115ac72" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "e058f130-c894-40b7-9e66-dfef44f20991", + "savedPayload": { + "position": { + "x": 30141.828222020125, + "y": 25116.409128041218 + }, + "targetPosition": { + "x": 29982.218599065523, + "y": 24862.39186827273 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Contributors Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Badges Pool", + "config": "{}", + "project": "Governance", + "id": "1c26b6c1-477a-44f6-baa2-b8ab65622aed", + "savedPayload": { + "position": { + "x": 29848.706038691733, + "y": 25447.348615581825 + }, + "targetPosition": { + "x": 29915.462318878628, + "y": 25154.870241927278 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Badges", + "id": "6b11cf29-2957-417d-a268-3569178eca9e" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "8bf4d5ef-c106-47d2-abd8-9789453279db", + "savedPayload": { + "position": { + "x": 29915.462318878628, + "y": 25154.870241927278 + }, + "targetPosition": { + "x": 29982.218599065523, + "y": 24862.39186827273 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Token Holders Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Stacking Pool", + "config": "{}", + "project": "Governance", + "id": "fd7f8254-69b2-4d16-ac6b-b3d40b39273b", + "savedPayload": { + "position": { + "x": 29474.18407952855, + "y": 25181.611114181935 + }, + "targetPosition": { + "x": 29728.201339297037, + "y": 25022.001491227333 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Stacking", + "id": "ea79efd3-c3d9-4c80-a1d0-1cab106e0242" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "14c021f7-fe45-459e-80f2-d7d358b25f4a", + "savedPayload": { + "position": { + "x": 29728.201339297037, + "y": 25022.001491227333 + }, + "targetPosition": { + "x": 29982.218599065523, + "y": 24862.39186827273 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "2cc608dd-0424-4a44-be7a-b2993ce2976d", + "savedPayload": { + "position": { + "x": 29982.218599065523, + "y": 24862.39186827273 + }, + "targetPosition": { + "x": 30048.97487925242, + "y": 24569.913494618184 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Education Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Production Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Creating Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Blog-Tutorials Pool", + "config": "{}", + "project": "Governance", + "id": "ccb1229b-a633-4234-82c9-ea1404bb570b", + "savedPayload": { + "position": { + "x": 30150.49154519727, + "y": 25465.94216879386 + }, + "targetPosition": { + "x": 29866.59333005752, + "y": 25368.97927155752 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Blog-Tutorials", + "id": "0548fbd2-7904-481a-a33d-16ef93707276" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "In-App-Docs Pool", + "config": "{}", + "project": "Governance", + "id": "f7596a5b-52cb-4477-bc47-b2ef35d01dc8", + "savedPayload": { + "position": { + "x": 30039.27844976322, + "y": 25614.29508725685 + }, + "targetPosition": { + "x": 29866.59333005752, + "y": 25368.97927155752 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "In-App-Docs", + "id": "14175310-1a9c-4f4b-89e2-aabe4507932a" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "In-App-Tutorials Pool", + "config": "{}", + "project": "Governance", + "id": "1b0f7ebf-facc-484a-ae38-8ae379d8ddec", + "savedPayload": { + "position": { + "x": 29862.10550795294, + "y": 25668.945702100602 + }, + "targetPosition": { + "x": 29866.59333005752, + "y": 25368.97927155752 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "In-App-Tutorials", + "id": "64b19ffc-0240-46cd-804b-b57d25195f64" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "Video-Tutorials Pool", + "config": "{}", + "project": "Governance", + "id": "0d3dc298-3699-4ccf-a0d6-21d9b6d7f85d", + "savedPayload": { + "position": { + "x": 29686.646761651147, + "y": 25609.019335960882 + }, + "targetPosition": { + "x": 29866.59333005752, + "y": 25368.97927155752 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Video-Tutorials", + "id": "4d9474e1-e58f-4563-a1c2-e89533bc451e" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "4f922838-940d-4ab2-a185-f737f3572f8a", + "savedPayload": { + "position": { + "x": 29866.59333005752, + "y": 25368.97927155752 + }, + "targetPosition": { + "x": 29778.166777734248, + "y": 25082.307429821678 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Translating Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "In-App-Docs Pool", + "config": "{}", + "project": "Governance", + "id": "d6530670-46f6-4fa2-8839-25c77465437c", + "savedPayload": { + "position": { + "x": 29585.33231468587, + "y": 25602.013202807146 + }, + "targetPosition": { + "x": 29574.114956402973, + "y": 25302.222991370625 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "In-App-Docs", + "id": "5737235d-c74f-4247-b870-b52428b5576f" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "In-App-Tutorials Pool", + "config": "{}", + "project": "Governance", + "id": "3ce2eb05-c54a-40c1-816d-36e1088dfed2", + "savedPayload": { + "position": { + "x": 29370.063135071698, + "y": 25522.138552919572 + }, + "targetPosition": { + "x": 29574.114956402973, + "y": 25302.222991370625 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "In-App-Tutorials", + "id": "abe07b52-de21-44da-a989-f52067f508df" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "Video-Tutorials Pool", + "config": "{}", + "project": "Governance", + "id": "2da649ef-07fe-4e07-a1de-59c0c2e37ea8", + "savedPayload": { + "position": { + "x": 29274.324744966452, + "y": 25313.440349653523 + }, + "targetPosition": { + "x": 29574.114956402973, + "y": 25302.222991370625 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Video-Tutorials", + "id": "fb52e785-fa45-4522-8478-b0d039525b4a" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "2b64a4bf-8347-4b72-a3e4-1ad22ea3d78a", + "savedPayload": { + "position": { + "x": 29574.114956402973, + "y": 25302.222991370625 + }, + "targetPosition": { + "x": 29778.166777734248, + "y": 25082.307429821678 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "0d66181b-39c6-4e0b-a195-45d85fca3da4", + "savedPayload": { + "position": { + "x": 29778.166777734248, + "y": 25082.307429821678 + }, + "targetPosition": { + "x": 29844.923057921143, + "y": 24789.82905616713 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Consumption Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Completing Tutorials Pool", + "config": "{}", + "project": "Governance", + "id": "7db3a456-0428-4236-bac9-6bb40495f45a", + "savedPayload": { + "position": { + "x": 29354.199394854026, + "y": 25098.17117003935 + }, + "targetPosition": { + "x": 29558.2512161853, + "y": 24878.255608490403 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Completing Tutorials", + "id": "0bfaeebd-a900-4e6e-b62c-3387e4e7baec" + } + } + }, + { + "type": "Pool Weight Vote", + "name": "Reading the Docs Pool", + "config": "{}", + "project": "Governance", + "id": "621292e3-1917-413e-8327-3777e77c1fd5", + "savedPayload": { + "position": { + "x": 29265.772842530754, + "y": 24811.499328303507 + }, + "targetPosition": { + "x": 29558.2512161853, + "y": 24878.255608490403 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Reading the Docs", + "id": "c3bee026-075f-48db-92df-fc599cce744d" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "8ea22ba7-0745-4459-a7eb-6446bb64dae2", + "savedPayload": { + "position": { + "x": 29558.2512161853, + "y": 24878.255608490403 + }, + "targetPosition": { + "x": 29844.923057921143, + "y": 24789.82905616713 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "cbe7d779-09c1-4ea3-ab72-03c65d69fd3e", + "savedPayload": { + "position": { + "x": 29844.923057921143, + "y": 24789.82905616713 + }, + "targetPosition": { + "x": 30048.97487925242, + "y": 24569.913494618184 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Weight Votes Switch", + "name": "Management Pool Class", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [ + { + "type": "Pool Weight Vote", + "name": "Management Pool", + "config": "{}", + "project": "Governance", + "id": "2e7259e0-122f-4482-87a0-e73182ff29e8", + "savedPayload": { + "position": { + "x": 29475.631195780734, + "y": 24746.766599264727 + }, + "targetPosition": { + "x": 29762.303037516576, + "y": 24658.340046941456 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Pool", + "name": "Management", + "id": "5d878af1-e32c-4458-8fb7-98df55f1e54a" + } + } + } + ], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "f7fa794e-2188-40c2-b342-9b1995bbb9dc", + "savedPayload": { + "position": { + "x": 29762.303037516576, + "y": 24658.340046941456 + }, + "targetPosition": { + "x": 30048.97487925242, + "y": 24569.913494618184 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "e059f5c4-9132-4d76-9f3e-1060658fa704", + "savedPayload": { + "position": { + "x": 29795.339513058934, + "y": 24481.162641482904 + }, + "targetPosition": { + "x": 29925.5046347942, + "y": 24210.871981112177 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Pools", + "name": "Superalgos", + "id": "6f0aed87-db13-4818-bfe6-68abc463ebec" + } + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "1d398124-3f36-40a1-8b3b-6c77ad489b92", + "savedPayload": { + "position": { + "x": 29925.5046347942, + "y": 24210.871981112177 + }, + "targetPosition": { + "x": 30055.669756529467, + "y": 23940.58132074145 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "userProfileVotesSwitch": [], + "id": "2b8d3ce7-515c-44ad-8d80-3c2be6d7736f", + "savedPayload": { + "position": { + "x": 30055.669756529467, + "y": 23940.58132074145 + }, + "targetPosition": { + "x": 30185.834878264734, + "y": 23670.290660370723 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "d5ed432e-78bf-432e-be3b-8649932f7a65", + "savedPayload": { + "position": { + "x": 30185.834878264734, + "y": 23670.290660370723 + }, + "targetPosition": { + "x": 30316, + "y": 23399.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "claimsProgram": { + "type": "Claims Program", + "name": "New Claims Program", + "config": "{}", + "project": "Governance", + "assetContributionsFolder": [], + "featureContributionsFolder": [], + "positionContributionsFolder": [], + "id": "796dd30f-c90d-4b8d-a63d-89867347407b", + "savedPayload": { + "position": { + "x": 30023.521626345453, + "y": 23466.75628018689 + }, + "targetPosition": { + "x": 30316, + "y": 23399.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "stakingProgram": { + "type": "Staking Program", + "name": "New Staking Program", + "config": "{}", + "project": "Governance", + "id": "b046f4e4-40b1-4e47-8fed-75a6a5c6029d", + "savedPayload": { + "position": { + "x": 30081.45055525959, + "y": 23212.953059442378 + }, + "targetPosition": { + "x": 30316, + "y": 23399.999999999996 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "f8182a9c-f830-4ec1-a238-ac3a5efd69e6", "savedPayload": { "position": { - "x": 30616, - "y": 23099.999999999996 + "x": 30316, + "y": 23399.999999999996 }, "targetPosition": { "x": 30316, @@ -989,2928 +1517,7 @@ "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "votesDistribution": { - "type": "Votes Distribution", - "name": "New Votes Distribution", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Governance", - "votesSwitch": [ - { - "type": "Votes Switch", - "name": "New Votes Switch", - "config": "{\n \"description\": \"\"\n}", - "project": "Governance", - "votesSwitch": [], - "claimVotesSwitch": [ - { - "type": "Claim Votes Switch", - "name": "New Claim Votes Switch", - "config": "{}", - "project": "Governance", - "claimVotesSwitch": [], - "positionClaimVotes": [], - "assetClaimVotes": [], - "featureClaimVotes": [], - "id": "41933680-56bc-4886-8248-acea69608d99", - "savedPayload": { - "position": { - "x": 29456.192378864667, - "y": 23249.999999999996 - }, - "targetPosition": { - "x": 29716, - "y": 23099.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "New Weight Votes Switch", - "config": "{\n\"percentage\": 80\n}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Pools", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Superalgos Pools", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Software Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Foundations Project Pool", - "config": "{}", - "project": "Governance", - "id": "1fb8e4a2-98e8-4813-bb38-8b767a29327f", - "savedPayload": { - "position": { - "x": 28856.192378864667, - "y": 23469.615242270662 - }, - "targetPosition": { - "x": 28706.192378864667, - "y": 23209.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Foundations Project", - "id": "2207c69c-ee9d-4453-8bf4-582d79b4b635" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "TensorFlow Project Pool", - "config": "{}", - "project": "Governance", - "id": "f913d26c-6589-43a4-8262-1303f2070c48", - "savedPayload": { - "position": { - "x": 28706.192378864667, - "y": 23509.80762113533 - }, - "targetPosition": { - "x": 28706.192378864667, - "y": 23209.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "TensorFlow Project", - "id": "ea854cf8-47cd-43f0-b58a-13e61ae3106d" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "Governance Project Pool", - "config": "{}", - "project": "Governance", - "id": "ec076bab-296b-4ff8-8e2a-ef1c8f3a3a77", - "savedPayload": { - "position": { - "x": 28556.192378864667, - "y": 23469.615242270662 - }, - "targetPosition": { - "x": 28706.192378864667, - "y": 23209.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Governance Project", - "id": "3c80032c-51a8-4fd8-ab65-cf219c03ce95" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "Education Project Pool", - "config": "{}", - "project": "Governance", - "id": "bf39236a-a781-42cd-a64d-94041748e6ae", - "savedPayload": { - "position": { - "x": 28446.384757729335, - "y": 23359.80762113533 - }, - "targetPosition": { - "x": 28706.192378864667, - "y": 23209.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Education Project", - "id": "0a79ec65-6f67-4c18-823f-48a6d0494a81" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "Ethereum Project Pool", - "config": "{}", - "project": "Governance", - "id": "b98e59b5-9633-46b0-a2b8-35760acc6efd", - "savedPayload": { - "position": { - "x": 28406.192378864667, - "y": 23209.80762113533 - }, - "targetPosition": { - "x": 28706.192378864667, - "y": 23209.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Ethereum Project", - "id": "f51d23aa-742c-40d4-b000-2b90c3ae197c" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "be7843f6-1860-4dbf-93c1-fd010e54c089", - "savedPayload": { - "position": { - "x": 28706.192378864667, - "y": 23209.80762113533 - }, - "targetPosition": { - "x": 28856.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Marketing Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Collective Rewards Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "First Exchange Listing The Token Pool", - "config": "{}", - "project": "Governance", - "id": "4bef0dea-763d-4cfe-b56d-37b6d3ff4640", - "savedPayload": { - "position": { - "x": 28429.384757729335, - "y": 23648.80762113533 - }, - "targetPosition": { - "x": 28429.384757729335, - "y": 23348.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "First Exchange Listing The Token", - "id": "6a456247-13b7-41f2-80b3-957c1af55009" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "10K Stars on Github Pool", - "config": "{}", - "project": "Governance", - "id": "a5d807f5-7aa0-4251-915b-13c24367fea9", - "savedPayload": { - "position": { - "x": 28169.577136594, - "y": 23498.80762113533 - }, - "targetPosition": { - "x": 28429.384757729335, - "y": 23348.80762113533 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "10K Stars on Github", - "id": "5bbe5a09-fe32-4802-8e14-d06615a24510" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "7e160d0d-8b89-483c-88a3-6faab8af137f", - "savedPayload": { - "position": { - "x": 28429.384757729335, - "y": 23348.80762113533 - }, - "targetPosition": { - "x": 28579.384757729335, - "y": 23088.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Assets Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Marketing Assets Pool", - "config": "{}", - "project": "Governance", - "id": "98ac1d12-c38e-4b51-8d60-e489305cfc53", - "savedPayload": { - "position": { - "x": 27979.384757729335, - "y": 23088.999999999996 - }, - "targetPosition": { - "x": 28279.384757729335, - "y": 23088.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Marketing Assets", - "id": "6b4bee15-622d-4df6-9662-4d7b8d44f198" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "81fd5407-d0b1-4ea0-86a0-a88b51d9dfcf", - "savedPayload": { - "position": { - "x": 28279.384757729335, - "y": 23088.999999999996 - }, - "targetPosition": { - "x": 28579.384757729335, - "y": 23088.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "7f6c7f50-1c67-4195-a5e0-ce1a75abe959", - "savedPayload": { - "position": { - "x": 28596.384757729335, - "y": 23099.999999999996 - }, - "targetPosition": { - "x": 28856.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Community Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Users Pool Class", - "config": "{\n \"percentage\": 50\n}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Usage Pool", - "config": "{}", - "project": "Governance", - "id": "89277cd9-f206-4476-8333-fffb8ca02f25", - "savedPayload": { - "position": { - "x": 28266.414630977946, - "y": 23451.90978224268 - }, - "targetPosition": { - "x": 28344.060344508704, - "y": 23162.13203435596 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Usage", - "id": "60712b3c-ee76-40ba-8de2-e03aa61f6dde" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "User Referrals Pool", - "config": "{}", - "project": "Governance", - "id": "7315bd61-5404-4465-9c3f-839aa0723741", - "savedPayload": { - "position": { - "x": 28054.282596621983, - "y": 23239.777747886717 - }, - "targetPosition": { - "x": 28344.060344508704, - "y": 23162.13203435596 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "User Referrals", - "id": "639a6504-a0d0-4d7e-ad99-80ba5115ac72" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "6ad71de6-86e3-4690-8b4d-a6ebce312624", - "savedPayload": { - "position": { - "x": 28344.060344508704, - "y": 23162.13203435596 - }, - "targetPosition": { - "x": 28556.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Contributors Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Badges Pool", - "config": "{}", - "project": "Governance", - "id": "7ac68c05-85a5-4364-a40c-5fc7fcd5dd0c", - "savedPayload": { - "position": { - "x": 27956.192378864667, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 28256.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Badges", - "id": "6b11cf29-2957-417d-a268-3569178eca9e" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "bd8a404e-8a4d-4581-bf17-745334758bad", - "savedPayload": { - "position": { - "x": 28256.192378864667, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 28556.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Token Holders Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Stacking Pool", - "config": "{}", - "project": "Governance", - "id": "c8cf1ca3-aa33-4fa6-ad02-3cc677bbda2b", - "savedPayload": { - "position": { - "x": 28131.92831015274, - "y": 22525.73593128807 - }, - "targetPosition": { - "x": 28344.060344508704, - "y": 22737.867965644033 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Stacking", - "id": "ea79efd3-c3d9-4c80-a1d0-1cab106e0242" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "94eb5d18-e089-4342-9473-4decc936d5a2", - "savedPayload": { - "position": { - "x": 28344.060344508704, - "y": 22737.867965644033 - }, - "targetPosition": { - "x": 28556.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "fa3c4b33-7678-42a6-bc74-54656abd244a", - "savedPayload": { - "position": { - "x": 28556.192378864667, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 28856.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Education Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Production Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Creating Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Blog-Tutorials Pool", - "config": "{}", - "project": "Governance", - "id": "bdb6aa2a-696b-4871-8bc4-7bf0553e479c", - "savedPayload": { - "position": { - "x": 28005.218597613704, - "y": 23248.356568610478 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Blog-Tutorials", - "id": "0548fbd2-7904-481a-a33d-16ef93707276" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "In-App-Docs Pool", - "config": "{}", - "project": "Governance", - "id": "15900eed-ed19-4bbe-bf71-31bd368b66bd", - "savedPayload": { - "position": { - "x": 27835.837954686343, - "y": 23172.943447643214 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "In-App-Docs", - "id": "14175310-1a9c-4f4b-89e2-aabe4507932a" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "In-App-Tutorials Pool", - "config": "{}", - "project": "Governance", - "id": "6ec75769-767c-42c3-91ac-8124408d71df", - "savedPayload": { - "position": { - "x": 27743.13285637386, - "y": 23012.373507245324 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "In-App-Tutorials", - "id": "64b19ffc-0240-46cd-804b-b57d25195f64" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "Video-Tutorials Pool", - "config": "{}", - "project": "Governance", - "id": "eeb3885b-659e-49cf-ab71-5040292cee4f", - "savedPayload": { - "position": { - "x": 27762.51349930122, - "y": 22827.979007077258 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Video-Tutorials", - "id": "4d9474e1-e58f-4563-a1c2-e89533bc451e" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "3ff37446-4bb0-488d-9f42-c532f3e82f68", - "savedPayload": { - "position": { - "x": 28036.577136594, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 28296.384757729335, - "y": 22799.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Translating Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "In-App-Docs Pool", - "config": "{}", - "project": "Governance", - "id": "e5c88712-903b-4b02-b531-95c66c607ed6", - "savedPayload": { - "position": { - "x": 27746.79938870728, - "y": 22727.645713530754 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "In-App-Docs", - "id": "5737235d-c74f-4247-b870-b52428b5576f" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "In-App-Tutorials Pool", - "config": "{}", - "project": "Governance", - "id": "610e77e1-6aeb-4395-b207-32ad003b99a1", - "savedPayload": { - "position": { - "x": 27776.76951545867, - "y": 22499.999999999996 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "In-App-Tutorials", - "id": "abe07b52-de21-44da-a989-f52067f508df" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "Video-Tutorials Pool", - "config": "{}", - "project": "Governance", - "id": "b30abd50-51c1-4a16-8b3d-c771ab9507cf", - "savedPayload": { - "position": { - "x": 27958.931423063244, - "y": 22360.222252113275 - }, - "targetPosition": { - "x": 28036.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Video-Tutorials", - "id": "fb52e785-fa45-4522-8478-b0d039525b4a" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "926355a8-6fcc-4a8d-8690-2187390f8ac2", - "savedPayload": { - "position": { - "x": 28036.577136594, - "y": 22649.999999999996 - }, - "targetPosition": { - "x": 28296.384757729335, - "y": 22799.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "d4315c17-0d1a-423e-87ab-48d8ae8cf2e4", - "savedPayload": { - "position": { - "x": 28296.384757729335, - "y": 22799.999999999996 - }, - "targetPosition": { - "x": 28596.384757729335, - "y": 22799.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Consumption Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Completing Tutorials Pool", - "config": "{}", - "project": "Governance", - "id": "0085df98-6ad4-4928-a5e9-3f4b8c9daa0c", - "savedPayload": { - "position": { - "x": 28186.577136594, - "y": 22390.192378864664 - }, - "targetPosition": { - "x": 28446.384757729335, - "y": 22540.192378864664 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Completing Tutorials", - "id": "0bfaeebd-a900-4e6e-b62c-3387e4e7baec" - } - } - }, - { - "type": "Pool Weight Vote", - "name": "Reading the Docs Pool", - "config": "{}", - "project": "Governance", - "id": "afdf889d-9f1f-4b70-9182-6541bba5296e", - "savedPayload": { - "position": { - "x": 28446.384757729335, - "y": 22240.192378864664 - }, - "targetPosition": { - "x": 28446.384757729335, - "y": 22540.192378864664 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Reading the Docs", - "id": "c3bee026-075f-48db-92df-fc599cce744d" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "acf00509-aa64-4039-bdd6-e05fb1601cda", - "savedPayload": { - "position": { - "x": 28446.384757729335, - "y": 22540.192378864664 - }, - "targetPosition": { - "x": 28596.384757729335, - "y": 22799.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "5325ff1c-e2d1-41f4-ac33-3ca83a33f739", - "savedPayload": { - "position": { - "x": 28596.384757729335, - "y": 22799.999999999996 - }, - "targetPosition": { - "x": 28856.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Management Pool Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [ - { - "type": "Pool Weight Vote", - "name": "Management Pool", - "config": "{}", - "project": "Governance", - "id": "551cdbd3-ea0e-45db-b828-3fe4e1262b49", - "savedPayload": { - "position": { - "x": 28556.192378864667, - "y": 22430.38475772933 - }, - "targetPosition": { - "x": 28706.192378864667, - "y": 22690.192378864664 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Pool", - "name": "Management", - "id": "5d878af1-e32c-4458-8fb7-98df55f1e54a" - } - } - } - ], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "abc36814-d36f-4291-9855-de7693f37edf", - "savedPayload": { - "position": { - "x": 28706.192378864667, - "y": 22690.192378864664 - }, - "targetPosition": { - "x": 28856.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "5e63dbd8-dcd0-49bd-a5fa-37a6537b8805", - "savedPayload": { - "position": { - "x": 28856.192378864667, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 29156.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Pools", - "name": "Superalgos", - "id": "6f0aed87-db13-4818-bfe6-68abc463ebec" - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "994d6d16-2c84-4b8f-a333-f39fd9364cf3", - "savedPayload": { - "position": { - "x": 29156.192378864667, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 29456.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Features", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Foundations-Project-Plugins Assets", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "Plugins Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [ - { - "type": "Weight Votes Switch", - "name": "API-Maps Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "cb18e5b8-6087-4121-b4dc-519eee4a6e5e", - "savedPayload": { - "position": { - "x": 28320.9285906383, - "y": 23136.0561367962 - }, - "targetPosition": { - "x": 28413.633688950784, - "y": 22850.739181907655 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "CoinGecko.json", - "id": "5520a8c3-ab33-43cb-9fc3-91dfd446bb6f" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "53a24eef-7296-4f37-bfa3-bd7d44af2705", - "savedPayload": { - "position": { - "x": 28120.189408730643, - "y": 22913.112689152982 - }, - "targetPosition": { - "x": 28413.633688950784, - "y": 22850.739181907655 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Messari.json", - "id": "78a1592d-a780-4ad3-b681-4945f87d8c3e" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "9fc9999a-9f7c-428b-ab76-cd4e661e4c6d", - "savedPayload": { - "position": { - "x": 28413.633688950784, - "y": 22850.739181907655 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Data-Mines Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "606ef739-8450-4b71-a693-aa312cc643a3", - "savedPayload": { - "position": { - "x": 18114.722729807672, - "y": 46350.6236890753 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Alpha.json", - "id": "c3dbcb43-d981-45e7-b92a-6f6af5180592" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "d5fdd906-47b5-46ad-a0ac-2d26b53a29ef", - "savedPayload": { - "position": { - "x": 18056.366583793584, - "y": 46357.91819041541 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Bollinger.json", - "id": "e1f53501-bbce-4075-a6cd-e6a8eb61f2a0" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "b459a7b5-40ef-4d81-ba90-59a4c4ab7d0f", - "savedPayload": { - "position": { - "x": 17997.708648146516, - "y": 46353.687810640164 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Buddha.json", - "id": "1626d693-5206-484e-b0fd-30d598d3d138" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "de4b8500-878e-4d6d-ae80-fc469e943755", - "savedPayload": { - "position": { - "x": 17941.00311443763, - "y": 46338.095120871905 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Candles.json", - "id": "212b2b4b-a234-4b58-abf4-0cd16e8ced05" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "edc7265d-e234-4d65-a319-0493d5d58c77", - "savedPayload": { - "position": { - "x": 17888.429144526537, - "y": 46311.73933943393 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "CoinGecko.json", - "id": "e49df7d9-ee09-4f47-8f71-abf29d588420" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "70342165-5354-44f8-b4cd-daadfba36eb0", - "savedPayload": { - "position": { - "x": 17842.007126593096, - "y": 46275.63330422643 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Delta.json", - "id": "c1574672-0a07-4821-8a6e-642d39d20d11" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "a987691a-f4c9-46a5-86a2-b1e18d1c7975", - "savedPayload": { - "position": { - "x": 17803.521032752717, - "y": 46231.164549933914 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters.json", - "id": "9dd0804a-91ad-4160-8288-139c6d78a094" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "0999fb31-a56a-4e5b-9e4c-b2133547802d", - "savedPayload": { - "position": { - "x": 17774.44986200844, - "y": 46180.041985845484 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Messari.json", - "id": "e70ea49a-419b-4838-a82a-af934368d53e" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "10b6d7b6-3657-4980-964a-867938dbfcc5", - "savedPayload": { - "position": { - "x": 17755.91080314867, - "y": 46124.23022342919 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Omega-One.json", - "id": "f3e6edf8-b21a-4489-923c-b7b3efa77620" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "3eab8f52-1b01-49fc-b886-e0e9f5793087", - "savedPayload": { - "position": { - "x": 17748.616301808554, - "y": 46065.8740774151 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Pluvtech.json", - "id": "f99ac562-4315-46f7-9466-6a2578925bea" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "afbe4711-3d76-4058-bcf9-f157bec12da8", - "savedPayload": { - "position": { - "x": 17752.846681583796, - "y": 46007.21614176803 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Samurai.json", - "id": "a5d80050-4ed3-45a3-aebc-9d3fae8bf015" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "a73d2842-1d3e-4d05-ba26-52fe7507c038", - "savedPayload": { - "position": { - "x": 17768.439371352062, - "y": 45950.51060805915 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Sparta.json", - "id": "d23538f8-26ee-4ac0-9919-59678206ba6f" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "e835ceaf-d2b8-4883-81c0-8d2b835baa6b", - "savedPayload": { - "position": { - "x": 17794.79515279003, - "y": 45897.93663814806 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Turtles.json", - "id": "b92aa988-21d0-4a01-996a-5e3aa4fe24b4" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "8eab3036-c053-4c21-9d52-fc70a8aba17e", - "savedPayload": { - "position": { - "x": 17830.901187997537, - "y": 45851.51462021461 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Webhooks.json", - "id": "3199d2fd-f090-4307-b43e-285bc174ff0f" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "f8839fa1-34e6-4fec-850a-8d6bed1308f6", - "savedPayload": { - "position": { - "x": 17875.36994229005, - "y": 45813.02852637424 - }, - "targetPosition": { - "x": 18048.51349930122, - "y": 46058.02099292274 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Zeus.json", - "id": "3f0c0152-1777-4773-8592-3b3d826066f7" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "9092c31b-d88c-45f1-92c2-0d8c24acdff8", - "savedPayload": { - "position": { - "x": 28362.51349930122, - "y": 22772.020992922735 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Learning-Engines Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "25f2e430-9d78-4c33-809a-b9bfbd702d80", - "savedPayload": { - "position": { - "x": 28039.86399937304, - "y": 22712.71707796059 - }, - "targetPosition": { - "x": 28338.22056798352, - "y": 22681.358538980294 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Low-Frequency.json", - "id": "4bbc63bf-6844-4d1a-a626-b321bf2a999c" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "c3f5ab2c-60de-46df-85ed-7bbdf888045d", - "savedPayload": { - "position": { - "x": 28338.22056798352, - "y": 22681.358538980294 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Learning-Mines Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "d83eddcc-4c0c-4928-8841-f453d170c4c3", - "savedPayload": { - "position": { - "x": 28049.68857615372, - "y": 22525.25298550934 - }, - "targetPosition": { - "x": 28343.13285637386, - "y": 22587.62649275467 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters.json", - "id": "1de219c6-4a73-4c82-9d2b-652dac38abff" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "564e70a2-7743-4b2e-b9bf-b02bbc511ee4", - "savedPayload": { - "position": { - "x": 28343.13285637386, - "y": 22587.62649275467 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Learning-Systems Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "faf9ba2f-9ee3-4722-848c-3535b45efafa", - "savedPayload": { - "position": { - "x": 28116.961894323336, - "y": 22349.999999999996 - }, - "targetPosition": { - "x": 28376.76951545867, - "y": 22499.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Sandbox.json", - "id": "03b0fbdb-f308-463d-8d3b-a3057962b4ac" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "479d6da8-9088-4e9f-973a-852976d42680", - "savedPayload": { - "position": { - "x": 28376.76951545867, - "y": 22499.999999999996 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Trading-Engines Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "06e02ca7-b07d-4401-a7e4-9d2961258e37", - "savedPayload": { - "position": { - "x": 28235.098772778685, - "y": 22204.11310471356 - }, - "targetPosition": { - "x": 28435.837954686343, - "y": 22427.05655235678 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Low-Frequency.json", - "id": "7ca89c77-1960-40af-974b-bde4639a0627" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "7705d099-fb48-44a6-b068-008202b9f1b3", - "savedPayload": { - "position": { - "x": 28435.837954686343, - "y": 22427.05655235678 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Trading-Mines Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "249bbc12-7361-4320-bf97-bbc26988d202", - "savedPayload": { - "position": { - "x": 28392.535150748525, - "y": 22101.872725414436 - }, - "targetPosition": { - "x": 28514.556143671263, - "y": 22375.936362707216 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters.json", - "id": "d4abe1a2-9d0f-4753-a561-668108f97b88" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "9bf1e5eb-1b48-4054-b955-329ca798a838", - "savedPayload": { - "position": { - "x": 28514.556143671263, - "y": 22375.936362707216 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Trading-Systems Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "13f28e95-ed01-4233-8d48-65cfae0a4bca", - "savedPayload": { - "position": { - "x": 28372.074809176615, - "y": 22162.847314074563 - }, - "targetPosition": { - "x": 28605.218597613704, - "y": 22351.643431389515 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "BB-Top-Bounce-BTC-USDT.json", - "id": "d85a22c4-5e18-41bd-8dbd-cff6e6267929" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "4f7219e6-8287-4916-83c6-4a81dfe9f7dc", - "savedPayload": { - "position": { - "x": 28573.860058633407, - "y": 22053.286862779034 - }, - "targetPosition": { - "x": 28605.218597613704, - "y": 22351.643431389515 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Masters-Lightning-Strike.json", - "id": "0701da57-c800-4685-9906-25ad595ecc74" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "a337f901-5532-447a-aa50-8b82b825ca0a", - "savedPayload": { - "position": { - "x": 28794.014714928657, - "y": 22118.499642952425 - }, - "targetPosition": { - "x": 28605.218597613704, - "y": 22351.643431389515 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Sparta-WHB-BTC-USDT.json", - "id": "e4f79fc5-bd50-494a-b3ad-6c04c7c5bc39" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "2e8cb024-ccb8-4d05-a5b7-e22c1eb13bc7", - "savedPayload": { - "position": { - "x": 28605.218597613704, - "y": 22351.643431389515 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Weight Votes Switch", - "name": "Workspaces Asset Class", - "config": "{}", - "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "7fa82292-3455-4dbe-b5c9-d861ac21e272", - "savedPayload": { - "position": { - "x": 18114.960278409464, - "y": 45511.768860443575 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "API-Data-Fetcher-Bot-Demo.json", - "id": "f437d95c-7d2a-405f-b04e-b759b961e076" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "c3aec31d-04df-4004-af5d-707ecbca3579", - "savedPayload": { - "position": { - "x": 18154.10505186348, - "y": 45450.95636522635 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "BB-Top-Bounce-Demo.json", - "id": "b16ae75e-b377-4e37-95ec-11f4912f06e9" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "7faf1dbe-14b3-471b-9217-f1726040f50b", - "savedPayload": { - "position": { - "x": 18206.665732033543, - "y": 45401.27892806046 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Blank-Template.json", - "id": "ece42eff-9be9-45f5-b4df-8a8524cbf7ef" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "7ff83b27-62ea-412b-b24b-d508be54b41b", - "savedPayload": { - "position": { - "x": 18269.587683238475, - "y": 45365.62362102385 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Custom-Charts-Tutorials.json", - "id": "dbb3e7e2-6ca0-4e7d-8e5c-5964fae0ef04" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "0a45ba05-e295-4487-aa66-be95a3fad86f", - "savedPayload": { - "position": { - "x": 18339.214110386227, - "y": 45346.06260095972 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Exchange-Keys-Tests.json", - "id": "90d884d6-1e39-4cae-90b4-ddfe5de4fb7b" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "68542e51-e54b-4584-aa25-71a05b3ec5c0", - "savedPayload": { - "position": { - "x": 18411.498578612736, - "y": 45343.73268325277 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Getting-Started-Tutorials.json", - "id": "1a8633b9-5611-490e-8a85-ac5e4e5be598" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "fa9400f5-c4bf-4755-9e3b-9e63feb077ba", - "savedPayload": { - "position": { - "x": 18482.240177368032, - "y": 45358.76927425124 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Hello-World-Tutorial.json", - "id": "153a8762-7ab9-4e44-adb9-f55c748dbecc" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "3b52b1b4-e90e-463e-b7de-1748cab95c79", - "savedPayload": { - "position": { - "x": 18547.32766206771, - "y": 45390.29850194207 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Install-a-New-Market-Tutorial.json", - "id": "733a02dd-3423-4437-bffc-e366b3dd090a" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "ebe982e7-7fb3-420f-88d9-f3d167e7bf8f", - "savedPayload": { - "position": { - "x": 18602.978384684397, - "y": 45436.488002215956 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Tested-Exchanges.json", - "id": "6fd70a6a-475c-4d91-ad0a-d1cd5a3a9a50" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "f2e81b5f-fb36-4830-bf61-47d9bab3bb91", - "savedPayload": { - "position": { - "x": 18645.958127501763, - "y": 45494.65340920897 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Trading-Bot-Layers-Tutorial.json", - "id": "f8d7a42e-4b9c-4d38-8afc-536a3f0e9e05" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "dfb80097-939a-4d0c-a21d-a3ef83bb464e", - "savedPayload": { - "position": { - "x": 18673.769064092266, - "y": 45561.41436088935 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Trading-System-Design-Tutorials.json", - "id": "2e5f9473-6272-447b-9960-0aba25b610f3" - } - } - }, - { - "type": "Asset Weight Vote", - "name": "", - "config": "{}", - "project": "Governance", - "id": "b1d7d4a4-aba8-4184-b080-db76639015ae", - "savedPayload": { - "position": { - "x": 18684.794923909914, - "y": 45632.8909534116 - }, - "targetPosition": { - "x": 18384.95064383933, - "y": 45642.555719779855 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": {}, - "referenceParent": { - "type": "Asset", - "name": "Weak-hands-Buster-v2-Demo.json", - "id": "ddebdeff-028a-4183-a3b6-3a8aa3ea31d1" - } - } - } - ], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "a69e47b2-9ba6-48eb-a8b6-c6b6cd4cda10", - "savedPayload": { - "position": { - "x": 28698.95064383933, - "y": 22356.555719779855 - }, - "targetPosition": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "89af7f6d-2034-4690-85dd-34956ca95d6e", - "savedPayload": { - "position": { - "x": 28636.577136594, - "y": 22649.999999999996 - }, - "targetPosition": { - "x": 28896.384757729335, - "y": 22799.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "6cc5c0dc-8482-416e-a67f-461f09228f58", - "savedPayload": { - "position": { - "x": 28896.384757729335, - "y": 22799.999999999996 - }, - "targetPosition": { - "x": 29156.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Assets", - "name": "Foundations-Project-Plugins", - "id": "821486a9-5ad1-44a7-bf61-6fc3ef1b72c6" - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "46da6833-094c-4bd5-ba8a-e47a3f2cc804", - "savedPayload": { - "position": { - "x": 29306.192378864667, - "y": 22690.192378864664 - }, - "targetPosition": { - "x": 29456.192378864667, - "y": 22949.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "poolWeightVotes": [], - "assetWeightVotes": [], - "featureWeightVotes": [], - "positionWeightVotes": [], - "id": "7f6ebed6-f991-40c0-bced-7543b1f9675d", - "savedPayload": { - "position": { - "x": 29456.192378864667, - "y": 22949.999999999996 - }, - "targetPosition": { - "x": 29716, - "y": 23099.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "userProfileVotesSwitch": [], - "id": "b62f6477-25de-480c-9256-f1529ba8e652", - "savedPayload": { - "position": { - "x": 29716, - "y": 23099.999999999996 - }, - "targetPosition": { - "x": 30016, - "y": 23099.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "id": "390279e1-91ae-46d7-b955-c5060c4a52df", - "savedPayload": { - "position": { - "x": 30016, - "y": 23099.999999999996 - }, - "targetPosition": { - "x": 30316, - "y": 23099.999999999996 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -3932,8 +1539,8 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, + "isCollapsed": false, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, diff --git a/Projects/Governance/Plugins/Workspaces/Token-Distribution-Superalgos.json b/Projects/Governance/Plugins/Workspaces/Token-Distribution-Superalgos.json index 872fe8205..51ab22ec6 100644 --- a/Projects/Governance/Plugins/Workspaces/Token-Distribution-Superalgos.json +++ b/Projects/Governance/Plugins/Workspaces/Token-Distribution-Superalgos.json @@ -198,9 +198,9 @@ "name": "Julian-Molina", "config": "{\n \"codeName\": \"\",\n \"tokens\": 500000\n}", "project": "Governance", - "contributionClaims": { - "type": "Contribution Claims", - "name": "New Contribution Claims", + "claimsProgram": { + "type": "Claims Program", + "name": "New Claims Program", "config": "{}", "project": "Governance", "assetContributionsFolder": [ @@ -385,9 +385,9 @@ } } }, - "votesDistribution": { - "type": "Votes Distribution", - "name": "New Votes Distribution", + "votingProgram": { + "type": "Voting Program", + "name": "New Voting Program", "config": "{\n\"codeName\": \"\"\n}", "project": "Governance", "votesSwitch": [ diff --git a/Projects/Governance/Schemas/App-Schema/TokensAwarded.json b/Projects/Governance/Schemas/App-Schema/TokensAwarded.json new file mode 100644 index 000000000..cf14e5af3 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/TokensAwarded.json @@ -0,0 +1,21 @@ +{ + "type": "Tokens Awarded", + "menuItems": [ + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Referral Program->Mentorship Program->Support Program->Voting Program->Claims Program->Staking Program->" + }, + "propertyNameAtParent": "tokensAwarded" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json b/Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json index 27a30c464..45259400f 100644 --- a/Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json +++ b/Projects/Governance/Schemas/App-Schema/asset-contributions-folder.json @@ -42,7 +42,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Asset Contributions Folder->" + "compatibleTypes": "->Claims Program->Asset Contributions Folder->" }, "propertyNameAtParent": "assetContributionsFolder", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/contribution-claims.json b/Projects/Governance/Schemas/App-Schema/claims-program.json similarity index 78% rename from Projects/Governance/Schemas/App-Schema/contribution-claims.json rename to Projects/Governance/Schemas/App-Schema/claims-program.json index 50d309982..8a9e731d6 100644 --- a/Projects/Governance/Schemas/App-Schema/contribution-claims.json +++ b/Projects/Governance/Schemas/App-Schema/claims-program.json @@ -1,5 +1,5 @@ { - "type": "Contribution Claims", + "type": "Claims Program", "menuItems": [ { "action": "Configure", @@ -29,6 +29,15 @@ "label": "Add Position Contributions Folder", "relatedUiObject": "Position Contributions Folder" }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tokensAwarded", + "actionFunction": "payload.executeAction", + "label": "Add Tokens Awarded", + "relatedUiObject": "Tokens Awarded" + }, { "action": "Delete UI Object", "actionProject": "Foundations", @@ -47,11 +56,11 @@ "config": "{}" }, "attachingRules": { - "compatibleTypes": "->User Profile->" + "compatibleTypes": "->Token Switch->" }, "addLeftIcons": true, "level": 1, - "propertyNameAtParent": "contributionClaims", + "propertyNameAtParent": "claimsProgram", "childrenNodesProperties": [ { "name": "assetContributionsFolder", @@ -70,6 +79,12 @@ "type": "array", "childType": "Position Contributions Folder", "autoAdd": false + }, + { + "name": "tokensAwarded", + "type": "node", + "childType": "Tokens Awarded", + "autoAdd": true } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json b/Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json index eefd3ca61..c68c317a5 100644 --- a/Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json +++ b/Projects/Governance/Schemas/App-Schema/feature-contributions-folder.json @@ -42,7 +42,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Feature Contributions Folder->" + "compatibleTypes": "->Claims Program->Feature Contributions Folder->" }, "propertyNameAtParent": "featureContributionsFolder", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/governance-project.json b/Projects/Governance/Schemas/App-Schema/governance-project.json index b5e72eeca..03d3ba270 100644 --- a/Projects/Governance/Schemas/App-Schema/governance-project.json +++ b/Projects/Governance/Schemas/App-Schema/governance-project.json @@ -36,6 +36,13 @@ "relatedUiObject": "User Profile", "actionFunction": "payload.executeAction" }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "label": "Add Profile Constructor", + "relatedUiObject": "Profile Constructor" + }, { "action": "Delete UI Object", "actionProject": "Foundations", diff --git a/Projects/Governance/Schemas/App-Schema/mentorship-program.json b/Projects/Governance/Schemas/App-Schema/mentorship-program.json new file mode 100644 index 000000000..9bdf5ed90 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/mentorship-program.json @@ -0,0 +1,64 @@ +{ + "type": "Mentorship Program", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "label": "Add User Mentor", + "relatedUiObject": "User Mentor" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tokensAwarded", + "actionFunction": "payload.executeAction", + "label": "Add Tokens Awarded", + "relatedUiObject": "Tokens Awarded" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "attachingRules": { + "compatibleTypes": "->Token Switch->" + }, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "mentorshipProgram", + "childrenNodesProperties": [ + { + "name": "userMentors", + "type": "array", + "childType": "User Mentor", + "autoAdd": false + }, + { + "name": "tokensAwarded", + "type": "node", + "childType": "Tokens Awarded", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/position-contributions-folder.json b/Projects/Governance/Schemas/App-Schema/position-contributions-folder.json index 5cd5b5d86..36390af05 100644 --- a/Projects/Governance/Schemas/App-Schema/position-contributions-folder.json +++ b/Projects/Governance/Schemas/App-Schema/position-contributions-folder.json @@ -42,7 +42,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Contribution Claims->Position Contributions Folder->" + "compatibleTypes": "->Claims Program->Position Contributions Folder->" }, "propertyNameAtParent": "positionContributionsFolder", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/profile-constructor.json b/Projects/Governance/Schemas/App-Schema/profile-constructor.json new file mode 100644 index 000000000..40dae30b2 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/profile-constructor.json @@ -0,0 +1,44 @@ +{ + "type": "Profile Constructor", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Build Profile", + "actionProject": "Governance", + "label": "Build Profile", + "askConfirmation": true, + "confirmationLabel": "Confirm to Proceed", + "workDoneLabel": "Done", + "relatedUiObject": "Profile Constructor", + "actionFunction": "payload.executeAction" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "isHierarchyHead": true, + "editors": { + "config": true + }, + "initialValues": { + "config": "{ \"githubUsername\": \"\"}" + }, + "addLeftIcons": true, + "level": 2, + "referencingRules": { + "compatibleTypes": "->User Profile->" + } +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/referral-program.json b/Projects/Governance/Schemas/App-Schema/referral-program.json new file mode 100644 index 000000000..b16edcda3 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/referral-program.json @@ -0,0 +1,66 @@ +{ + "type": "Referral Program", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "userReferrer", + "actionFunction": "payload.executeAction", + "label": "Add User Referrer", + "relatedUiObject": "User Referrer" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tokensAwarded", + "actionFunction": "payload.executeAction", + "label": "Add Tokens Awarded", + "relatedUiObject": "Tokens Awarded" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "attachingRules": { + "compatibleTypes": "->Token Switch->" + }, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "referralProgram", + "childrenNodesProperties": [ + { + "name": "userReferrer", + "type": "node", + "childType": "User Referrer", + "autoAdd": true + }, + { + "name": "tokensAwarded", + "type": "node", + "childType": "Tokens Awarded", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/staking-program.json b/Projects/Governance/Schemas/App-Schema/staking-program.json new file mode 100644 index 000000000..d8e103712 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/staking-program.json @@ -0,0 +1,51 @@ +{ + "type": "Staking Program", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tokensAwarded", + "actionFunction": "payload.executeAction", + "label": "Add Tokens Awarded", + "relatedUiObject": "Tokens Awarded" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "attachingRules": { + "compatibleTypes": "->Token Switch->" + }, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "stakingProgram", + "childrenNodesProperties": [ + { + "name": "tokensAwarded", + "type": "node", + "childType": "Tokens Awarded", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/support-program.json b/Projects/Governance/Schemas/App-Schema/support-program.json new file mode 100644 index 000000000..a0bfb71e3 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/support-program.json @@ -0,0 +1,64 @@ +{ + "type": "Support Program", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "label": "Add User Support", + "relatedUiObject": "User Support" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "tokensAwarded", + "actionFunction": "payload.executeAction", + "label": "Add Tokens Awarded", + "relatedUiObject": "Tokens Awarded" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "attachingRules": { + "compatibleTypes": "->Token Switch->" + }, + "addLeftIcons": true, + "level": 1, + "propertyNameAtParent": "supportProgram", + "childrenNodesProperties": [ + { + "name": "userSupports", + "type": "array", + "childType": "User Support", + "autoAdd": false + }, + { + "name": "tokensAwarded", + "type": "node", + "childType": "Tokens Awarded", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/tokensSwitch.json b/Projects/Governance/Schemas/App-Schema/tokensSwitch.json new file mode 100644 index 000000000..caad9fc1d --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/tokensSwitch.json @@ -0,0 +1,126 @@ +{ + "type": "Token Switch", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "referralProgram", + "label": "Add Referral Program", + "relatedUiObject": "Referral Program" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "mentorshipProgram", + "label": "Add Mentorship Program", + "relatedUiObject": "Mentorship Program" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "supportProgram", + "label": "Add Support Program", + "relatedUiObject": "Support Program" + }, + { + "action": "Add UI Object", + "actionProject": "Voting Program", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "votingProgram", + "label": "Add Voting Program", + "relatedUiObject": "Voting Program" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "claimsProgram", + "label": "Add Claims Program", + "relatedUiObject": "Claims Program" + }, + { + "action": "Add UI Object", + "actionProject": "Foundations", + "actionFunction": "payload.executeAction", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "stakingProgram", + "label": "Add Staking Program", + "relatedUiObject": "Staking Program" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "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": "->User Profile->" + }, + "propertyNameAtParent": "tokenSwitch", + "childrenNodesProperties": [ + { + "name": "referralProgram", + "type": "node", + "childType": "Referral Program", + "autoAdd": true + }, + { + "name": "mentorshipProgram", + "type": "node", + "childType": "Mentorship Program", + "autoAdd": true + }, + { + "name": "supportProgram", + "type": "node", + "childType": "Support Program", + "autoAdd": true + }, + { + "name": "votingProgram", + "type": "node", + "childType": "Voting Program", + "autoAdd": true + }, + { + "name": "claimsProgram", + "type": "node", + "childType": "Claims Program", + "autoAdd": true + }, + { + "name": "stakingProgram", + "type": "node", + "childType": "Staking Program", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/user-mentor.json b/Projects/Governance/Schemas/App-Schema/user-mentor.json new file mode 100644 index 000000000..60f4577a1 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/user-mentor.json @@ -0,0 +1,40 @@ +{ + "type": "User Mentor", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Use Reference Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->mentorship Program->" + }, + "referencingRules": { + "compatibleTypes": "->User Profile->" + }, + "propertyNameAtParent": "userMentors" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/user-profile.json b/Projects/Governance/Schemas/App-Schema/user-profile.json index 53f1dafea..938527f3b 100644 --- a/Projects/Governance/Schemas/App-Schema/user-profile.json +++ b/Projects/Governance/Schemas/App-Schema/user-profile.json @@ -12,28 +12,10 @@ "action": "Add UI Object", "actionProject": "Foundations", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "contributionClaims", + "propertyToCheckFor": "tokenSwitch", "actionFunction": "payload.executeAction", - "label": "Add Contribution Claims", - "relatedUiObject": "Contribution Claims" - }, - { - "action": "Add UI Object", - "actionProject": "Foundations", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "votesDistribution", - "actionFunction": "payload.executeAction", - "label": "Add Votes Distribution", - "relatedUiObject": "Votes Distribution" - }, - { - "action": "Add UI Object", - "actionProject": "Foundations", - "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "userReferrer", - "actionFunction": "payload.executeAction", - "label": "Add User Referrer", - "relatedUiObject": "User Referrer" + "label": "Add Token Switch", + "relatedUiObject": "Token Switch" }, { "action": "Delete UI Object", @@ -50,7 +32,7 @@ "config": true }, "initialValues": { - "config": "{\n\"codeName\": \"\"\n}" + "config": "{}" }, "isTitleAllwaysVisible": false, "isHierarchyHead": true, @@ -58,22 +40,10 @@ "level": 0, "childrenNodesProperties": [ { - "name": "contributionClaims", + "name": "tokenSwitch", "type": "node", - "childType": "Contribution Claims", - "autoAdd": false - }, - { - "name": "votesDistribution", - "type": "node", - "childType": "Votes Distribution", - "autoAdd": false - }, - { - "name": "userReferrer", - "type": "node", - "childType": "User Referrer", - "autoAdd": false + "childType": "Token Switch", + "autoAdd": true } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/user-referrer.json b/Projects/Governance/Schemas/App-Schema/user-referrer.json index 4c04c2b59..4f300213e 100644 --- a/Projects/Governance/Schemas/App-Schema/user-referrer.json +++ b/Projects/Governance/Schemas/App-Schema/user-referrer.json @@ -26,12 +26,12 @@ "config": true }, "initialValues": { - "config": "{\n \"description\": \"\"\n}" + "config": "{}" }, "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->User Profile->" + "compatibleTypes": "->Referral Program->" }, "referencingRules": { "compatibleTypes": "->User Profile->" diff --git a/Projects/Governance/Schemas/App-Schema/userSupport.json b/Projects/Governance/Schemas/App-Schema/userSupport.json new file mode 100644 index 000000000..caa0d2478 --- /dev/null +++ b/Projects/Governance/Schemas/App-Schema/userSupport.json @@ -0,0 +1,40 @@ +{ + "type": "User Support", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Foundations", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "title": [ + "Use Reference Parent" + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->support Program->" + }, + "referencingRules": { + "compatibleTypes": "->User Profile->" + }, + "propertyNameAtParent": "userSupports" +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/votes-switch.json b/Projects/Governance/Schemas/App-Schema/votes-switch.json index bd97acfbf..3437ff59a 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-switch.json +++ b/Projects/Governance/Schemas/App-Schema/votes-switch.json @@ -65,7 +65,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Votes Distribution->Votes Switch->" + "compatibleTypes": "->Voting Program->Votes Switch->" }, "propertyNameAtParent": "votesSwitch", "childrenNodesProperties": [ diff --git a/Projects/Governance/Schemas/App-Schema/votes-distribution.json b/Projects/Governance/Schemas/App-Schema/voting-program.json similarity index 77% rename from Projects/Governance/Schemas/App-Schema/votes-distribution.json rename to Projects/Governance/Schemas/App-Schema/voting-program.json index 6cb033b94..04185a618 100644 --- a/Projects/Governance/Schemas/App-Schema/votes-distribution.json +++ b/Projects/Governance/Schemas/App-Schema/voting-program.json @@ -1,5 +1,5 @@ { - "type": "Votes Distribution", + "type": "Voting Program", "menuItems": [ { "action": "Configure", @@ -19,10 +19,10 @@ "action": "Add UI Object", "actionProject": "Foundations", "disableIfPropertyIsDefined": true, - "propertyToCheckFor": "userReferrer", + "propertyToCheckFor": "tokensAwarded", "actionFunction": "payload.executeAction", - "label": "Add User Referrer", - "relatedUiObject": "User Referrer" + "label": "Add Tokens Awarded", + "relatedUiObject": "Tokens Awarded" }, { "action": "Delete UI Object", @@ -42,17 +42,23 @@ "config": "{}" }, "attachingRules": { - "compatibleTypes": "->User Profile->" + "compatibleTypes": "->Token Switch->" }, "addLeftIcons": true, "level": 1, - "propertyNameAtParent": "votesDistribution", + "propertyNameAtParent": "votingProgram", "childrenNodesProperties": [ { "name": "votesSwitch", "type": "array", "childType": "Votes Switch", "autoAdd": false + }, + { + "name": "tokensAwarded", + "type": "node", + "childType": "Tokens Awarded", + "autoAdd": true } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Nodes/C/Contribution/Contribution-Claims/contribution-claims.json b/Projects/Governance/Schemas/Docs-Nodes/C/Contribution/Contribution-Claims/contribution-claims.json index 2ec3b147f..0f38bc9ea 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/C/Contribution/Contribution-Claims/contribution-claims.json +++ b/Projects/Governance/Schemas/Docs-Nodes/C/Contribution/Contribution-Claims/contribution-claims.json @@ -1,5 +1,5 @@ { - "type": "Contribution Claims", + "type": "Claims Program", "definition": { "text": "This node helps define the section of the User Profiel hierarchy that is going to be used to define the claims users make for the contributions they have done. These claims need later to be voted by other users in order to be considered during the token distribution process.", "updated": 1622989461838 diff --git a/Projects/Governance/Schemas/Docs-Nodes/U/User/User-Profile/user-profile.json b/Projects/Governance/Schemas/Docs-Nodes/U/User/User-Profile/user-profile.json index bc21b5fbe..b3a567301 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/U/User/User-Profile/user-profile.json +++ b/Projects/Governance/Schemas/Docs-Nodes/U/User/User-Profile/user-profile.json @@ -1,7 +1,7 @@ { "type": "User Profile", "definition": { - "text": "At these hierarchies, users define their profile, which essentially means declaring which are their contribution claims, and which is the way they would like to distribute their voting power. From each user profile starts a stream of votes that flows through switches that split these streams according to the user preferences and end up at other hierarchies's nodes, who are the recipient of these votes. ", + "text": "At these hierarchies, users define their profile, which essentially means declaring which are their Claims Program, and which is the way they would like to distribute their voting power. From each user profile starts a stream of votes that flows through switches that split these streams according to the user preferences and end up at other hierarchies's nodes, who are the recipient of these votes. ", "updated": 1622988108578 }, "paragraphs": [ diff --git a/Projects/Governance/Schemas/Docs-Nodes/V/Votes/Votes-Distribution/votes-distribution.json b/Projects/Governance/Schemas/Docs-Nodes/V/Votes/Votes-Distribution/votes-distribution.json index fb7eefb6d..672e68c22 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/V/Votes/Votes-Distribution/votes-distribution.json +++ b/Projects/Governance/Schemas/Docs-Nodes/V/Votes/Votes-Distribution/votes-distribution.json @@ -1,5 +1,5 @@ { - "type": "Votes Distribution", + "type": "Voting Program", "definition": { "text": "This node defined the section where votes are going to flow like vote-streams, going through Votes Swithces and several different types of Vote nodes. Via references they are later sent to recipient nodes living at other hierarchies.", "updated": 1622989230849 diff --git a/Projects/Governance/UI/Function-Libraries/ActionSwitch.js b/Projects/Governance/UI/Function-Libraries/ActionSwitch.js index 378790fc2..4dd5ba618 100644 --- a/Projects/Governance/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Governance/UI/Function-Libraries/ActionSwitch.js @@ -28,6 +28,11 @@ function newGovernanceActionSwitch() { UI.projects.governance.functionLibraries.votes.installVotes(action.node, action.rootNodes) break } + case 'Build Profile': + { + UI.projects.governance.functionLibraries.profileConstructor.buildProfile(action.node, action.rootNodes) + break + } case 'Add Missing Plugin User Profiles': { UI.projects.governance.functionLibraries.pluginsFunctions.addMissingPluginUserProfiles(action.node, action.rootNodes) diff --git a/Projects/Governance/UI/Function-Libraries/Claims.js b/Projects/Governance/UI/Function-Libraries/Claims.js index 4a5fb6fdf..a048f246e 100644 --- a/Projects/Governance/UI/Function-Libraries/Claims.js +++ b/Projects/Governance/UI/Function-Libraries/Claims.js @@ -40,13 +40,13 @@ function newGovernanceFunctionLibraryClaims() { }, count: 0 } - countForNode(userProfilesNode.contributionClaims) + countForNode(userProfilesNode.claimsProgram) } /* Claim Calculation Follows */ for (let i = 0; i < userProfiles.length; i++) { let userProfilesNode = userProfiles[i] - calculateForNode(userProfilesNode.contributionClaims, userProfilesNode) + calculateForNode(userProfilesNode.claimsProgram, userProfilesNode) } } @@ -102,7 +102,7 @@ function newGovernanceFunctionLibraryClaims() { node.type !== 'Asset Contributions Folder' && node.type !== 'Feature Contributions Folder' && node.type !== 'Position Contributions Folder' && - node.type !== 'Contribution Claims' + node.type !== 'Claims Program' ) { if (node.payload.claims === undefined) { node.payload.claims = { @@ -170,7 +170,7 @@ function newGovernanceFunctionLibraryClaims() { node.type !== 'Asset Contributions Folder' && node.type !== 'Feature Contributions Folder' && node.type !== 'Position Contributions Folder' && - node.type !== 'Contribution Claims' + node.type !== 'Claims Program' ) { if ( node.payload.claims !== undefined && diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js index 13e621677..2fc2f894b 100644 --- a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -13,6 +13,10 @@ function newGovernanceFunctionLibraryDistributionProcess() { let positions = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Positions') let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + UI.projects.governance.functionLibraries.tokenPower.calculate( + userProfiles + ) + UI.projects.governance.functionLibraries.votes.calculate( pools, features, diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js new file mode 100644 index 000000000..48106de7e --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -0,0 +1,97 @@ +function newGovernanceFunctionLibraryProfileConstructor() { + let thisObject = { + buildProfile: buildProfile + } + + return thisObject + + function buildProfile( + node, + rootNodes + ) { + /* + Some validations first... + */ + if (node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage("You need to reference the node that contains the data to be signed.") + return + } + let data = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'githubUsername') + + if (data === undefined || data === "") { + node.payload.referenceParent.payload.uiObject.setErrorMessage("githubUsername config property missing.") + return + } + + createNewAccount() + signUserProfileData() + + function createNewAccount() { + let params = { + method: 'createWalletAccount', + entropy: node.id + (new Date()).valueOf() + } + + let url = 'WEB3' // we don't need to ask this to any specific superalgos node. + + httpRequest(JSON.stringify(params), url, onResponse) + + function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Call via HTTP Interface failed.') + walletAccountNode.payload.uiObject.menu.internalClick('Delete UI Object') + return + } + + let response = JSON.parse(data) + + /* Lets check the result of the method call */ + if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Call to WEB3 Server failed. ' + response.error) + return + } + + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'address', response.address) + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'privateKey', response.privateKey) + } + } + + function signUserProfileData() { + + let privateKey = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'privateKey') + if (privateKey === undefined || privateKey === "") { return } + + let request = { + url: 'WEB3', + params: { + method: "signData", + privateKey: privateKey, + data: data + } + } + + httpRequest(JSON.stringify(request.params), request.url, onResponse) + + function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Call via HTTP Interface failed.') + return + } + + let response = JSON.parse(data) + + /* Lets check the result of the method call */ + if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setErrorMessage('Call to WEB3 Server failed. ' + response.error) + console.log('Call to WEB3 Server failed. ' + response.error) + return + } + UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload.referenceParent.payload, 'signature', response.signature) + + node.payload.uiObject.setInfoMessage("Profile Account has been successfully created.") + } + } + } +} diff --git a/Projects/Governance/UI/Function-Libraries/TokenPower.js b/Projects/Governance/UI/Function-Libraries/TokenPower.js new file mode 100644 index 000000000..e2508f7dc --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/TokenPower.js @@ -0,0 +1,250 @@ +function newGovernanceFunctionLibraryTokenPower() { + let thisObject = { + calculate: calculate + } + + return thisObject + + function calculate( + userProfiles + ) { + /* + We will first reset all the token power, and then distribute it to each Program. + */ + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + resetTokenPower(userProfile) + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + distributeForProfile(userProfile) + } + + function resetTokenPower(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.tokenPower = 0 + /* + When we reach certain node types, we will halt the distribution, because these are targets for + token power. + */ + if ( + node.type === 'Referral Program' || + node.type === 'Mentorship Program' || + node.type === 'Support Program' || + node.type === 'Voting Program' || + node.type === 'Claims Program' || + node.type === 'Staking Program' + ) { return } + /* + We will reset token power of children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + switch (property.type) { + case 'node': { + let childNode = node[property.name] + resetTokenPower(childNode) + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + resetTokenPower(childNode) + } + } + break + } + } + } + } + } + + function distributeForProfile(userProfile) { + if (userProfile.payload === undefined) { return } + let tokenPower + if (userProfile.payload.blockchainTokens === undefined) { + return + } else { + tokenPower = userProfile.payload.blockchainTokens + } + /* + Before we start we will do some validations: + */ + if (userProfile.tokenSwitch === undefined) { + userProfile.payload.uiObject.setErrorMessage("You need to have a Token Switch child node.") + return + } + if (userProfile.tokenSwitch.referralProgram === undefined) { + userProfile.tokenSwitch.payload.uiObject.setErrorMessage("You need to have a Referral Program child node.") + return + } + if (userProfile.tokenSwitch.mentorshipProgram === undefined) { + userProfile.tokenSwitch.payload.uiObject.setErrorMessage("You need to have a Mentorship Program child node.") + return + } + if (userProfile.tokenSwitch.supportProgram === undefined) { + userProfile.tokenSwitch.payload.uiObject.setErrorMessage("You need to have a Spupport Program child node.") + return + } + + distributeTokenPower(userProfile, tokenPower) + } + + function distributeTokenPower(node, tokenPower, switchPercentage) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.tokenPower = node.payload.tokenPower + tokenPower + drawTokenPower(node, node.payload.tokenPower, switchPercentage) + /* + When we reach certain node types, we will halt the distribution, + because these are targets for token power. + */ + if ( + node.type === 'Referral Program' || + node.type === 'Mentorship Program' || + node.type === 'Support Program' || + node.type === 'Voting Program' || + node.type === 'Claims Program' || + node.type === 'Staking Program' + ) { return } + /* + We will redistribute token power among children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + /* + Before distributing the token power, we will calculate how the power + is going to be switched between all nodes. The first pass is about + scanning all sibling nodes to see which ones have a percentage defined + at their config, and check that all percentages don't add more than 100. + */ + let totalPercentage = 0 + let totalNodesWithoutPercentage = 0 + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + switch (property.type) { + case 'node': { + let childNode = node[property.name] + if (childNode === undefined) { continue } + let percentage = getPercentage(childNode) + + if (percentage !== undefined && isNaN(percentage) !== true) { + totalPercentage = totalPercentage + percentage + } else { + totalNodesWithoutPercentage++ + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + if (childNode === undefined) { continue } + let percentage = getPercentage(childNode) + if (percentage !== undefined && isNaN(percentage) !== true) { + totalPercentage = totalPercentage + percentage + } else { + totalNodesWithoutPercentage++ + } + } + } + break + } + } + } + if (totalPercentage > 100) { + node.payload.uiObject.setErrorMessage('Token Power Switching Error. Total Percentage of children nodes is grater that 100.') + return + } + let defaultPercentage = 0 + if (totalNodesWithoutPercentage > 0) { + defaultPercentage = (100 - totalPercentage) / totalNodesWithoutPercentage + } + /* + Here we do the actual distribution. + */ + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + switch (property.type) { + case 'node': { + let childNode = node[property.name] + if (childNode === undefined) { continue } + let percentage = getPercentage(childNode) + if (percentage === undefined || isNaN(percentage) === true) { + percentage = defaultPercentage + } + distributeTokenPower(childNode, tokenPower * percentage / 100, percentage) + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + if (childNode === undefined) { continue } + let percentage = getPercentage(childNode) + if (percentage === undefined || isNaN(percentage) === true) { + percentage = defaultPercentage + } + distributeTokenPower(childNode, tokenPower * percentage / 100, percentage) + } + } + break + } + } + } + } + } + + function getPercentage(node) { + /* + There are some system wide rules regarfing mandatory percentages, + we will apply them now. + */ + switch (node.type) { + case 'Referral Program': { + return 20 + } + case 'Mentorship Program': { + return 10 + } + case 'Support Program': { + return 10 + } + default: return UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'percentage') + } + } + + function drawTokenPower(node, tokenPower, percentage) { + tokenPower = new Intl.NumberFormat().format(tokenPower) + ' ' + 'Token Power' + if (node.payload !== undefined) { + if (node.type === 'User Profile') { + return + } + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + + node.payload.uiObject.setValue(tokenPower) + + if (percentage !== undefined) { + node.payload.uiObject.percentageAngleOffset = 180 + node.payload.uiObject.percentageAtAngle = true + node.payload.uiObject.setPercentage(percentage.toFixed(2)) + } + } + } + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Tokens.js b/Projects/Governance/UI/Function-Libraries/Tokens.js index a41f1d8fc..35ec03401 100644 --- a/Projects/Governance/UI/Function-Libraries/Tokens.js +++ b/Projects/Governance/UI/Function-Libraries/Tokens.js @@ -71,7 +71,7 @@ function newGovernanceFunctionLibraryTokens() { switch (property.type) { case 'node': { - if (node.type === 'Pools' && property.name === "votesDistribution") { + if (node.type === 'Pools' && property.name === "votingProgram") { let childNode = node[property.name] resetTokenFlow(childNode) } @@ -142,7 +142,7 @@ function newGovernanceFunctionLibraryTokens() { switch (property.type) { case 'node': { - if (node.type === 'Pools' && property.name === "votesDistribution") { + if (node.type === 'Pools' && property.name === "votingProgram") { let childNode = node[property.name] distributeTokens(childNode, tokens) } diff --git a/Projects/Governance/UI/Function-Libraries/UserReferrals.js b/Projects/Governance/UI/Function-Libraries/UserReferrals.js index bcb6d724d..4bcf9c34d 100644 --- a/Projects/Governance/UI/Function-Libraries/UserReferrals.js +++ b/Projects/Governance/UI/Function-Libraries/UserReferrals.js @@ -9,29 +9,55 @@ function newGovernanceFunctionLibraryUserReferrals() { pools, userProfiles ) { - let tokensReward - let totalReferralsPower = 0 + /* + Here we will store the total amount of tokens that is going to be distributed among all participants + of the Referral Program. This will come from a Pool that is configured wiht a codeName config property + with the value "Referral-Program" + */ + let referralProgramPoolTokenReward + /* + In order to be able to calculate the share of the Referrals Program Pool for each User Profile, + we need to accumulate all the Icomming Referral Power that each User Profile at their Referral Program + node has, because with that Incoming Power is that each Referral Program node gets a share of + the pool. + */ + let accumulatedIncomingReferralPower = 0 /* Scan Pools Until finding the User-Referrlas Pool */ for (let i = 0; i < pools.length; i++) { let poolsNode = pools[i] findPool(poolsNode) } - if (tokensReward === undefined || tokensReward === 0) { return } + if (referralProgramPoolTokenReward === undefined || referralProgramPoolTokenReward === 0) { return } /* - We will first reset all the referral combinedPower, and then distribute it. + We will first reset all the referral outgoingPower, and then distribute it. */ for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - resetUserReferrals(userProfile) + + if (userProfile.tokenSwitch === undefined) { continue } + if (userProfile.tokenSwitch.referralProgram === undefined) { continue } + if (userProfile.tokenSwitch.referralProgram.payload === undefined) { continue } + + resetUserReferrals(userProfile.tokenSwitch.referralProgram) } for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - distributeForProfile(userProfile) + + if (userProfile.tokenSwitch === undefined) { continue } + if (userProfile.tokenSwitch.referralProgram === undefined) { continue } + if (userProfile.tokenSwitch.referralProgram.payload === undefined) { continue } + + distributeForReferralProgram(userProfile.tokenSwitch.referralProgram) } for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - calculateAwardedForProfile(userProfile) + + if (userProfile.tokenSwitch === undefined) { continue } + if (userProfile.tokenSwitch.referralProgram === undefined) { continue } + if (userProfile.tokenSwitch.referralProgram.payload === undefined) { continue } + + calculateForReferralProgram(userProfile.tokenSwitch.referralProgram) } function findPool(node) { @@ -40,14 +66,14 @@ function newGovernanceFunctionLibraryUserReferrals() { /* When we reach certain node types, we will halt the distribution, because these are targets for - voting combinedPower. + voting outgoingPower. */ if ( node.type === 'Pool' ) { let codeName = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'codeName') - if (codeName === "User-Referrals") { - tokensReward = node.payload.tokens + if (codeName === "Referral-Program") { + referralProgramPoolTokenReward = node.payload.tokens return } } @@ -82,11 +108,11 @@ function newGovernanceFunctionLibraryUserReferrals() { function resetUserReferrals(node) { if (node === undefined) { return } if (node.payload === undefined) { return } - node.payload.referring = { + node.payload.referrals = { count: 0, - combinedPower: 0, + outgoingPower: 0, ownPower: 0, - referralsPower: 0, + incomingPower: 0, awarded: { tokens: 0, percentage: 0 @@ -96,115 +122,197 @@ function newGovernanceFunctionLibraryUserReferrals() { If the node is a User Profile, we will check if it has a User Referrer child defined. */ if ( - node.userReferrer !== undefined && - node.type === 'User Profile' + node.type === 'User Profile' && + node.tokenSwitch !== undefined && + node.tokenSwitch.referralProgram !== undefined + ) { + resetUserReferrals(node.tokenSwitch.referralProgram) + return + } + /* + If the node is a Referral Program, we will check if it has a User Referrer child defined. + */ + if ( + node.type === 'Referral Program' && + node.userReferrer !== undefined ) { resetUserReferrals(node.userReferrer) return } /* - If there is a reference parent defined, this means that the referral combinedPower is + If there is a reference parent defined, this means that the referral outgoingPower is transfered to it. */ if ( - node.payload.referenceParent !== undefined && - node.type === 'User Referrer' + node.type === 'User Referrer' && + node.payload.referenceParent !== undefined ) { resetUserReferrals(node.payload.referenceParent) return } } - function distributeForProfile(userProfile) { - if (userProfile === undefined || userProfile.payload === undefined) { return } - let referringPower = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(userProfile.payload, 'tokens') - let referringCount = 0 - userProfile.payload.referring.ownPower = referringPower - distributeUserReferrals(userProfile, referringPower, referringCount) + function distributeForReferralProgram(referralProgram) { + if (referralProgram === undefined || referralProgram.payload === undefined) { return } + /* + Here we will convert Token Power into Referral Power. + As per system rules referringPower = tokensPower + */ + let referringPower = referralProgram.payload.tokenPower + /* + We will also reseet the count of referrals here. + */ + let count = 0 + /* + The Own Power is the power generated by the same User Profile tokens, not inherited from others. + */ + referralProgram.payload.referrals.ownPower = referringPower + + distributeReferralPower(referralProgram, referringPower, count) } - function distributeUserReferrals(node, referringPower, referringCount) { + function distributeReferralPower( + node, + referringPower, + count + ) { + if (node === undefined) { return } if (node.payload === undefined) { return } - node.payload.referring.count = node.payload.referring.count + referringCount - node.payload.referring.combinedPower = node.payload.referring.combinedPower + referringPower - /* - If the node is a User Profile, we will check if it has a User Referrer child defined. - */ - totalReferralsPower = totalReferralsPower - node.payload.referring.referralsPower - node.payload.referring.referralsPower = node.payload.referring.combinedPower - node.payload.referring.ownPower - totalReferralsPower = totalReferralsPower + node.payload.referring.referralsPower - if ( - node.userReferrer !== undefined && - node.type === 'User Profile' - ) { - distributeUserReferrals(node.userReferrer, referringPower, 1, 0) - return - } - /* - If there is a reference parent defined, this means that the referral combinedPower is - transfered to it. - */ - if ( - node.payload.referenceParent !== undefined && - node.type === 'User Referrer' - ) { - drawUserReferrals(node) - distributeUserReferrals(node.payload.referenceParent, referringPower / 10, 1) - return - } - } + switch (node.type) { + case 'Referral Program': { + /* + This is the point where we increase to our local count of referrals whatever it comes + at the count parameters. If we are processing the User Profile of this Referral Program + then we will add zero, otherwise, 1. + */ + node.payload.referrals.count = node.payload.referrals.count + count + /* + The outgoingPower of this node will be accumulating all the referringPower flowing + through it, no matter from where it comes. + */ + node.payload.referrals.outgoingPower = node.payload.referrals.outgoingPower + referringPower + /* + We need to adjust the balance that holds the accumulationt of all incomingPower of all Referral Program + nodes. To do this we will substratct the current incomingPower, bacause it is going to be recalculated + inmediatelly after this, and then we will add it again after the recalcualtion. + */ + accumulatedIncomingReferralPower = accumulatedIncomingReferralPower - node.payload.referrals.incomingPower + /* + At any point in time, the incomingPower will be equal to the total of the outgoingPower minus + the ownPower. This is like this because the outgoingPower is the accumulation of all the + power flow that is leaving this node, which includes the ownPower. That means that if we + substract the ownPower, we will have the accumulation of all the incomingPower, which + means all the power coming from other User Profiles referencing this one. + */ + node.payload.referrals.incomingPower = node.payload.referrals.outgoingPower - node.payload.referrals.ownPower + /* + Now that we have the incomingPower calculated again, we can add it again to the balance of all the incomingPower + of all Referral Program nodes. + */ + accumulatedIncomingReferralPower = accumulatedIncomingReferralPower + node.payload.referrals.incomingPower - function calculateAwardedForProfile(userProfile) { - let totalPowerRewardRation = tokensReward / totalReferralsPower - if (totalPowerRewardRation < 1) { totalPowerRewardRation = 1 } - - userProfile.payload.referring.awarded.tokens = userProfile.payload.referring.referralsPower * totalPowerRewardRation - drawUserProfiles(userProfile) - } - - function drawUserReferrals(node) { - if (node.payload !== undefined) { - const powerText = new Intl.NumberFormat().format(node.payload.referring.combinedPower) - - node.payload.uiObject.valueAngleOffset = 0 - node.payload.uiObject.valueAtAngle = false - - node.payload.uiObject.setStatus(powerText + ' ' + 'Combined Referring Power') - return - } - } - - function drawUserProfiles(node) { - if (node.payload !== undefined) { - const powerText = new Intl.NumberFormat().format(node.payload.referring.combinedPower) - const awardedTokens = new Intl.NumberFormat().format(node.payload.referring.awarded.tokens) - const referralPower = new Intl.NumberFormat().format(node.payload.referring.referralsPower) - - node.payload.uiObject.valueAngleOffset = 0 - node.payload.uiObject.valueAtAngle = false - - if ( - ( - node.userReferrer !== undefined && - node.userReferrer.payload !== undefined && - node.userReferrer.payload.referenceParent !== undefined) - || - node.payload.referring.combinedPower >= 10000000 - ) { - let status = - powerText + ' ' + 'Combined Referring Power' + ' - ' + - node.payload.referring.count + ' Referrals' + ' - ' + - referralPower + ' Referrals Power' + ' - ' + - awardedTokens + ' ' + 'SA Tokens Awarded' - - node.payload.uiObject.setStatus(status) - return - } else { - node.payload.referring.awarded.tokens = 0 - node.payload.uiObject.setStatus(awardedTokens + ' SA Tokens not Awarded, because you have not defined your referrer yet.') + if (node.userReferrer !== undefined) { + distributeReferralPower(node.userReferrer, referringPower, 0) + } + break } + case 'User Referrer': { + drawUserReferrer(node) + if (node.payload.referenceParent !== undefined) { + distributeReferralPower(node.payload.referenceParent, referringPower / 10, 0) + } + break + } + case 'User Profile': { + if (node.tokenSwitch !== undefined) { + distributeReferralPower(node.tokenSwitch, referringPower, 0) + } + break + } + case 'Token Switch': { + if (node.referralProgram !== undefined) { + distributeReferralPower(node.referralProgram, referringPower, 1) + } + break + } + } + } + + function calculateForReferralProgram(referralProgram) { + /* + Here we will calculate which share of the Referral Program Pool this user will get in tokens. + To do that, we use the incomingPower, to se which proportion of the accumulatedIncomingReferralPower + represents. + */ + if (referralProgram.payload === undefined) { return } + /* + If the accumulatedIncomingReferralPower is not grater the amount of tokens at the Referral Program Pool, then + this user will get the exact amount of tokens from the pool as incomingPower he has. + + If the accumulatedIncomingReferralPower is grater the amount of tokens at the Referral Program Pool, then + the amount ot tokens to be received is a proportional to the share of incomingPower in accumulatedIncomingReferralPower. + */ + let totalPowerRewardRatio = accumulatedIncomingReferralPower / referralProgramPoolTokenReward + if (totalPowerRewardRatio < 1) { totalPowerRewardRatio = 1 } + + if (referralProgram.tokensAwarded === undefined || referralProgram.tokensAwarded.payload === undefined) { + referralProgram.payload.uiObject.setErrorMessage("Tokens Awarded Node is needed in order for this Program to get Tokens from the Referral Program Pool.") + return + } + referralProgram.payload.referrals.awarded.tokens = referralProgram.payload.referrals.incomingPower * totalPowerRewardRatio + /* + As per the system rules, the Referral Program will not give tokens to users that do not ha their own Referrer set up, + unless it has a big amount of tokens (this last condition is for the edge case where a user it at the top of the + referral pyramid.) + */ + if ( + referralProgram.payload.referrals.ownPower < 1000000 && + (referralProgram.userReferrer === undefined || referralProgram.userReferrer.payload.referenceParent === undefined) + ) { + + referralProgram.payload.uiObject.setErrorMessage("In order to be awarded " + referralProgram.payload.referrals.awarded.tokens + " SA Tokens from your referrals, you need first to define yourself who your referrer is.") + referralProgram.payload.referrals.awarded.tokens = 0 + } + + drawReferralProgram(referralProgram) + } + + function drawUserReferrer(node) { + if (node.payload !== undefined) { + const ownPowerText = new Intl.NumberFormat().format(node.payload.parentNode.payload.referrals.ownPower) + const incomingPowerText = new Intl.NumberFormat().format(node.payload.parentNode.payload.referrals.incomingPower) + const outgoingPowerText = new Intl.NumberFormat().format(node.payload.parentNode.payload.referrals.outgoingPower) + + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + + node.payload.uiObject.setValue(outgoingPowerText + ' ' + 'Referring Power') + + node.payload.uiObject.statusAngleOffset = 0 + node.payload.uiObject.statusAtAngle = false + + node.payload.uiObject.setStatus(ownPowerText + ' Own RP + ' + incomingPowerText + ' Incoming RP = ' + outgoingPowerText + ' ' + ' Outgoing RP') + } + } + + function drawReferralProgram(node) { + if (node.payload !== undefined) { + + node.payload.uiObject.statusAngleOffset = 0 + node.payload.uiObject.statusAtAngle = false + + node.payload.uiObject.setStatus("Referring Power = Token Power") + } + if (node.tokensAwarded !== undefined && node.tokensAwarded.payload !== undefined) { + + const tokensAwardedText = new Intl.NumberFormat().format(node.payload.referrals.awarded.tokens) + + node.tokensAwarded.payload.uiObject.statusAngleOffset = 0 + node.tokensAwarded.payload.uiObject.statusAtAngle = false + + node.tokensAwarded.payload.uiObject.setValue(tokensAwardedText + ' SA Tokens') } } } diff --git a/Projects/Governance/UI/Function-Libraries/Votes.js b/Projects/Governance/UI/Function-Libraries/Votes.js index 790517151..70afdc0c5 100644 --- a/Projects/Governance/UI/Function-Libraries/Votes.js +++ b/Projects/Governance/UI/Function-Libraries/Votes.js @@ -41,11 +41,23 @@ function newGovernanceFunctionLibraryVotes() { */ for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - resetVotes(userProfile) + + if (userProfile.tokenSwitch === undefined) { continue } + if (userProfile.tokenSwitch.votingProgram === undefined) { continue } + if (userProfile.tokenSwitch.votingProgram.payload === undefined) { continue } + + resetVotes(userProfile.tokenSwitch.votingProgram) } for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - distributeForProfile(userProfile) + + if (userProfile.tokenSwitch === undefined) { continue } + if (userProfile.tokenSwitch.votingProgram === undefined) { continue } + if (userProfile.tokenSwitch.votingProgram.payload === undefined) { continue } + + userProfile.tokenSwitch.votingProgram.payload.votes = userProfile.tokenSwitch.votingProgram.payload.tokenPower + + distributeForVotingProgram(userProfile.tokenSwitch.votingProgram) } function resetVotes(node) { @@ -89,11 +101,11 @@ function newGovernanceFunctionLibraryVotes() { for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { let property = schemaDocument.childrenNodesProperties[i] - if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } + if (node.type === 'User Profile' && property.name !== "votingProgram") { continue } switch (property.type) { case 'node': { - if (node.type === 'User Profile' && property.name === "votesDistribution") { + if (node.type === 'User Profile' && property.name === "votingProgram") { let childNode = node[property.name] resetVotes(childNode) } @@ -114,9 +126,10 @@ function newGovernanceFunctionLibraryVotes() { } } - function distributeForProfile(userProfile) { - let votes = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(userProfile.payload, 'tokens') - distributeVotes(userProfile, votes) + function distributeForVotingProgram(votingProgram) { + if (votingProgram.payload === undefined) { return } + let votes = votingProgram.payload.votes + distributeVotes(votingProgram, votes) } function distributeVotes(node, votes, switchPercentage) { @@ -169,11 +182,11 @@ function newGovernanceFunctionLibraryVotes() { for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { let property = schemaDocument.childrenNodesProperties[i] - if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } + if (node.type === 'User Profile' && property.name !== "votingProgram") { continue } switch (property.type) { case 'node': { - if (node.type === 'User Profile' && property.name === "votesDistribution") { + if (node.type === 'User Profile' && property.name === "votingProgram") { let childNode = node[property.name] if (childNode === undefined) { continue } let percentage = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(childNode.payload, 'percentage') @@ -217,11 +230,11 @@ function newGovernanceFunctionLibraryVotes() { for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { let property = schemaDocument.childrenNodesProperties[i] - if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } + if (node.type === 'User Profile' && property.name !== "votingProgram") { continue } switch (property.type) { case 'node': { - if (node.type === 'User Profile' && property.name === "votesDistribution") { + if (node.type === 'User Profile' && property.name === "votingProgram") { let childNode = node[property.name] if (childNode === undefined) { continue } let percentage = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(childNode.payload, 'percentage') @@ -255,7 +268,16 @@ function newGovernanceFunctionLibraryVotes() { function drawVotes(node, votes, percentage) { votes = new Intl.NumberFormat().format(votes) + ' ' + 'Votes' if (node.payload !== undefined) { - if (node.type === 'User Profile') { + + if (node.type === 'Voting Program') { + node.payload.uiObject.statusAngleOffset = 0 + node.payload.uiObject.statusAtAngle = false + + node.payload.uiObject.setStatus("Votes = Tokens Power") + + if (percentage !== undefined) { + node.payload.uiObject.setPercentage(percentage.toFixed(2)) + } return } if ( @@ -273,9 +295,13 @@ function newGovernanceFunctionLibraryVotes() { ) { node.payload.uiObject.valueAngleOffset = 0 node.payload.uiObject.valueAtAngle = false + node.payload.uiObject.percentageAngleOffset = 0 + node.payload.uiObject.percentageAtAngle = false } else { node.payload.uiObject.valueAngleOffset = 180 node.payload.uiObject.valueAtAngle = true + node.payload.uiObject.percentageAngleOffset = 180 + node.payload.uiObject.percentageAtAngle = true } node.payload.uiObject.setValue(votes) diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index 827d8fcd0..1a5425677 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -14,6 +14,8 @@ function newGovernanceUserProfileSpace() { thisObject.container.initialize(MODULE_NAME) thisObject.container.isDraggeable = false + waitingForResponses = 0 + return thisObject function initialize() { @@ -39,6 +41,84 @@ function newGovernanceUserProfileSpace() { function physics() { if (UI.projects.foundations.spaces.designSpace.workspace === undefined) { return } + let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + if (waitingForResponses !== 0) { return } + /* + We will get all the user Profiles tokens from the blockchain, making a call + every 5 seconds so as not to exceed the rate limit. + */ + let timer = 0 + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + if (userProfile.payload === undefined) { continue } + + if (userProfile.payload.blockchainTokens === undefined) { + getBlockchainAccount(userProfile) + } + } + + function getBlockchainAccount(userProfile) { + let signature = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(userProfile.payload, 'signature') + if (signature === undefined || signature === "") { return } + + let request = { + url: 'WEB3', + params: { + method: "recoverAddress", + signature: JSON.stringify(signature) + } + } + + httpRequest(JSON.stringify(request.params), request.url, onResponse) + + function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + userProfile.payload.uiObject.setErrorMessage('Call via HTTP Interface failed.') + return + } + + let response = JSON.parse(data) + + /* Lets check the result of the method call */ + if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + userProfile.payload.uiObject.setErrorMessage('Call to WEB3 Server failed. ' + response.error) + console.log('Call to WEB3 Server failed. ' + response.error) + return + } + + let blockchainAccount = response.address + if ( + blockchainAccount !== undefined && + blockchainAccount !== "" && + userProfile.payload.blockchainTokens === undefined + ) { + 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, timer, userProfile, blockchainAccount) + timer = timer + 5000 + } + } + } + + function getBlockchainTokens(userProfile, blockchainAccount) { + console.log('blockchainAccount ', blockchainAccount) + const url = "https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=0xfb981ed9a92377ca4d75d924b9ca06df163924fd&address=" + blockchainAccount + "&tag=latest&apikey=YourApiKeyToken" + + fetch(url).then(function (response) { + return response.json(); + }).then(function (data) { + console.log(data) + userProfile.payload.uiObject.setInfoMessage(data) + userProfile.payload.blockchainTokens = Number(data.result) / 1000000000000000000 + waitingForResponses-- + }).catch(function (err) { + const message = err.message + ' - ' + 'Can not access BSC SCAN servers.' + console.log(message) + userProfile.payload.uiObject.setErrorMessage(message, 1000) + waitingForResponses-- + }); + } } function draw() { diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 7ba6c94d5..76c98a4f6 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -963,6 +963,11 @@ "propertyName": "assets", "functionName": "newGovernanceFunctionLibraryAssets" }, + { + "name": "TokenPower", + "propertyName": "tokenPower", + "functionName": "newGovernanceFunctionLibraryTokenPower" + }, { "name": "Votes", "propertyName": "votes", @@ -997,6 +1002,11 @@ "name": "User Referrals", "propertyName": "userrReferrals", "functionName": "newGovernanceFunctionLibraryUserReferrals" + }, + { + "name": "Profile Constructor", + "propertyName": "profileConstructor", + "functionName": "newGovernanceFunctionLibraryProfileConstructor" } ], "utilities": [],