dash-platform-sdk 1.3.0-dev.4 → 1.3.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/bundle.min.js +21 -2
  2. package/package.json +29 -30
  3. package/proto/generated/google/protobuf/wrappers.d.ts +260 -29
  4. package/proto/generated/platform.client.d.ts +251 -0
  5. package/proto/generated/platform.d.ts +3682 -1939
  6. package/src/DashPlatformSDK.d.ts +5 -4
  7. package/src/contestedResources/createStateTransition.d.ts +1 -2
  8. package/src/grpcConnectionPool.d.ts +30 -8
  9. package/src/keyPair/deriveChild.d.ts +2 -2
  10. package/src/keyPair/derivePath.d.ts +2 -2
  11. package/src/keyPair/index.d.ts +39 -114
  12. package/src/keyPair/mnemonicToSeed.d.ts +1 -1
  13. package/src/names/searchByIdentity.d.ts +1 -1
  14. package/src/node/index.d.ts +3 -3
  15. package/src/node/totalCredits.d.ts +2 -1
  16. package/src/types.d.ts +6 -12
  17. package/src/utils/bytesToTypedArray.d.ts +1 -0
  18. package/src/utils/calculateMsgHash.d.ts +1 -1
  19. package/src/utils/calculateSignHash.d.ts +1 -1
  20. package/src/utils/calculateStateIdHash.d.ts +1 -1
  21. package/src/utils/createVoterIdentityId.d.ts +1 -1
  22. package/src/utils/getEvonodeList.d.ts +2 -2
  23. package/src/utils/sha256.d.ts +1 -1
  24. package/src/utils/signHash.d.ts +1 -1
  25. package/src/utils/signRequestId.d.ts +1 -1
  26. package/src/utils/verifyTenderdashProof.d.ts +1 -1
  27. package/src/voting/createStateTransition.d.ts +1 -2
  28. package/src/voting/index.d.ts +3 -4
  29. package/bundle.min.js.LICENSE.txt +0 -1
  30. package/index.js +0 -5
  31. package/proto/generated/google/protobuf/wrappers.js +0 -398
  32. package/proto/generated/platform.js +0 -18524
  33. package/src/DashPlatformSDK.js +0 -91
  34. package/src/constants.js +0 -13
  35. package/src/contestedResources/createStateTransition.js +0 -9
  36. package/src/contestedResources/getContestedResourceVoteState.js +0 -123
  37. package/src/contestedResources/index.js +0 -76
  38. package/src/dataContracts/create.js +0 -14
  39. package/src/dataContracts/createStateTransition.js +0 -23
  40. package/src/dataContracts/getDataContractByIdentifier.js +0 -87
  41. package/src/dataContracts/index.js +0 -103
  42. package/src/documents/create.js +0 -7
  43. package/src/documents/createStateTransition.js +0 -64
  44. package/src/documents/index.js +0 -130
  45. package/src/documents/query.js +0 -94
  46. package/src/grpcConnectionPool.js +0 -137
  47. package/src/identities/createStateTransition.js +0 -46
  48. package/src/identities/getIdentityBalance.js +0 -83
  49. package/src/identities/getIdentityByIdentifier.js +0 -83
  50. package/src/identities/getIdentityByNonUniquePublicKeyHash.js +0 -85
  51. package/src/identities/getIdentityByPublicKeyHash.js +0 -83
  52. package/src/identities/getIdentityContractNonce.js +0 -86
  53. package/src/identities/getIdentityNonce.js +0 -84
  54. package/src/identities/getIdentityPublicKeys.js +0 -85
  55. package/src/identities/index.js +0 -237
  56. package/src/keyPair/deriveChild.js +0 -50
  57. package/src/keyPair/derivePath.js +0 -50
  58. package/src/keyPair/index.js +0 -323
  59. package/src/keyPair/keyToPublicKey.d.ts +0 -2
  60. package/src/keyPair/keyToPublicKey.js +0 -47
  61. package/src/keyPair/keyToWalletId.d.ts +0 -2
  62. package/src/keyPair/keyToWalletId.js +0 -50
  63. package/src/keyPair/keyToXPrivateKey.d.ts +0 -3
  64. package/src/keyPair/keyToXPrivateKey.js +0 -50
  65. package/src/keyPair/keyToXPublicKey.d.ts +0 -3
  66. package/src/keyPair/keyToXPublicKey.js +0 -50
  67. package/src/keyPair/mnemonicToIdentityKey.d.ts +0 -3
  68. package/src/keyPair/mnemonicToIdentityKey.js +0 -57
  69. package/src/keyPair/mnemonicToSeed.js +0 -47
  70. package/src/keyPair/mnemonicToWallet.d.ts +0 -2
  71. package/src/keyPair/mnemonicToWallet.js +0 -55
  72. package/src/keyPair/privateKeyToWif.d.ts +0 -2
  73. package/src/keyPair/privateKeyToWif.js +0 -50
  74. package/src/keyPair/publicKeyToAddress.d.ts +0 -2
  75. package/src/keyPair/publicKeyToAddress.js +0 -50
  76. package/src/keyPair/seedToWallet.d.ts +0 -2
  77. package/src/keyPair/seedToWallet.js +0 -50
  78. package/src/keyPair/walletToIdentityKey.d.ts +0 -3
  79. package/src/keyPair/walletToIdentityKey.js +0 -56
  80. package/src/keyPair/xkeyToHDXKey.d.ts +0 -2
  81. package/src/keyPair/xkeyToHDXKey.js +0 -50
  82. package/src/names/index.js +0 -170
  83. package/src/names/registerName.js +0 -131
  84. package/src/names/searchByIdentity.js +0 -51
  85. package/src/names/searchByName.js +0 -64
  86. package/src/names/testNameContested.js +0 -6
  87. package/src/names/validateName.js +0 -14
  88. package/src/node/epochs.js +0 -88
  89. package/src/node/index.js +0 -102
  90. package/src/node/status.js +0 -85
  91. package/src/node/totalCredits.js +0 -76
  92. package/src/signer/AbstractSigner.js +0 -2
  93. package/src/signer/PrivateKeySigner.d.ts +0 -0
  94. package/src/signer/PrivateKeySigner.js +0 -64
  95. package/src/signer/setSigner.js +0 -8
  96. package/src/stateTransitions/broadcast.js +0 -60
  97. package/src/stateTransitions/index.js +0 -87
  98. package/src/stateTransitions/waitForStateTransitionResult.js +0 -60
  99. package/src/tokens/createStateTransition.js +0 -79
  100. package/src/tokens/getIdentitiesTokenBalances.js +0 -86
  101. package/src/tokens/getIdentityTokensBalances.js +0 -86
  102. package/src/tokens/getTokenContractInfo.js +0 -86
  103. package/src/tokens/getTokenDirectPurchasePrices.js +0 -83
  104. package/src/tokens/getTokenTotalSupply.js +0 -84
  105. package/src/tokens/index.js +0 -193
  106. package/src/types.js +0 -25
  107. package/src/utils/base58ToBytes.js +0 -7
  108. package/src/utils/bytesToHex.js +0 -6
  109. package/src/utils/calculateMsgHash.js +0 -34
  110. package/src/utils/calculateSignHash.js +0 -11
  111. package/src/utils/calculateStateIdHash.js +0 -12
  112. package/src/utils/convertToHomographSafeChars.js +0 -14
  113. package/src/utils/createVoterIdentityId.js +0 -12
  114. package/src/utils/getEvonodeList.js +0 -63
  115. package/src/utils/getQuorumPublicKey.js +0 -69
  116. package/src/utils/getRandomArrayItem.js +0 -6
  117. package/src/utils/getRandomBytes.js +0 -7
  118. package/src/utils/hexToBytes.js +0 -7
  119. package/src/utils/index.js +0 -68
  120. package/src/utils/indexBytesToString.js +0 -7
  121. package/src/utils/sha256.js +0 -13
  122. package/src/utils/signHash.js +0 -25
  123. package/src/utils/signRequestId.js +0 -22
  124. package/src/utils/sleep.js +0 -51
  125. package/src/utils/stringToIndexValueBytes.js +0 -13
  126. package/src/utils/verifyTenderdashProof.js +0 -30
  127. package/src/voting/createStateTransition.js +0 -9
  128. package/src/voting/createVote.js +0 -8
  129. package/src/voting/index.js +0 -62
  130. package/test/unit/ContestedResources.spec.js +0 -344
  131. package/test/unit/DataContract.spec.js +0 -142
  132. package/test/unit/Document.spec.js +0 -199
  133. package/test/unit/Identity.spec.js +0 -357
  134. package/test/unit/KeyPair.spec.js +0 -149
  135. package/test/unit/Names.spec.js +0 -96
  136. package/test/unit/Node.spec.js +0 -129
  137. package/test/unit/SDK.spec.js +0 -12
  138. package/test/unit/Tokens.spec.js +0 -288
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = getIdentitiesTokenBalances;
40
- var platform_1 = require("../../proto/generated/platform");
41
- var pshenmic_dpp_1 = require("pshenmic-dpp");
42
- var getQuorumPublicKey_1 = require("../utils/getQuorumPublicKey");
43
- var bytesToHex_1 = require("../utils/bytesToHex");
44
- var verifyTenderdashProof_1 = require("../utils/verifyTenderdashProof");
45
- function getIdentitiesTokenBalances(grpcPool, identifiers, tokenIdentifier) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var ids, tokenId, request, v0, _a, proof, metadata, _b, rootHash, balances, quorumPublicKey, verify;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- ids = identifiers.map(function (identifier) { return new pshenmic_dpp_1.IdentifierWASM(identifier); });
52
- tokenId = new pshenmic_dpp_1.IdentifierWASM(tokenIdentifier);
53
- request = platform_1.GetIdentitiesTokenBalancesRequest.fromPartial({
54
- v0: {
55
- tokenId: tokenId.bytes(),
56
- identityIds: ids.map(function (id) { return id.bytes(); }),
57
- prove: true
58
- }
59
- });
60
- return [4 /*yield*/, grpcPool.getClient().getIdentitiesTokenBalances(request)];
61
- case 1:
62
- v0 = (_c.sent()).v0;
63
- _a = v0, proof = _a.proof, metadata = _a.metadata;
64
- if (proof == null) {
65
- throw new Error('Proof not found');
66
- }
67
- if (metadata == null) {
68
- throw new Error('Metadata not found');
69
- }
70
- _b = (0, pshenmic_dpp_1.verifyTokenBalancesForIdentitiesProof)(proof.grovedbProof, tokenId, true, ids, pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, balances = _b.balances;
71
- return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
72
- case 2:
73
- quorumPublicKey = _c.sent();
74
- verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
75
- if (!verify) {
76
- throw new Error('Failed to verify query');
77
- }
78
- return [2 /*return*/, balances
79
- .map(function (identityTokenBalance) { return ({
80
- identityId: new pshenmic_dpp_1.IdentifierWASM(identityTokenBalance.identityId),
81
- balance: identityTokenBalance.balance
82
- }); })];
83
- }
84
- });
85
- });
86
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = getIdentityTokensBalances;
40
- var pshenmic_dpp_1 = require("pshenmic-dpp");
41
- var platform_1 = require("../../proto/generated/platform");
42
- var getQuorumPublicKey_1 = require("../utils/getQuorumPublicKey");
43
- var bytesToHex_1 = require("../utils/bytesToHex");
44
- var verifyTenderdashProof_1 = require("../utils/verifyTenderdashProof");
45
- function getIdentityTokensBalances(grpcPool, identifier, tokenIdentifiers) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var id, tokenIds, request, v0, _a, proof, metadata, _b, rootHash, balances, quorumPublicKey, verify;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- id = new pshenmic_dpp_1.IdentifierWASM(identifier);
52
- tokenIds = tokenIdentifiers.map(function (tokenIdentifier) { return new pshenmic_dpp_1.IdentifierWASM(tokenIdentifier); });
53
- request = platform_1.GetIdentityTokenBalancesRequest.fromPartial({
54
- v0: {
55
- tokenIds: tokenIds.map(function (identifier) { return identifier.bytes(); }),
56
- identityId: id.bytes(),
57
- prove: true
58
- }
59
- });
60
- return [4 /*yield*/, grpcPool.getClient().getIdentityTokenBalances(request)];
61
- case 1:
62
- v0 = (_c.sent()).v0;
63
- _a = v0, proof = _a.proof, metadata = _a.metadata;
64
- if (proof == null) {
65
- throw new Error('Proof not found');
66
- }
67
- if (metadata == null) {
68
- throw new Error('Metadata not found');
69
- }
70
- _b = (0, pshenmic_dpp_1.verifyTokensBalancesForIdentityProof)(proof.grovedbProof, tokenIds, id, true, pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, balances = _b.balances;
71
- return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
72
- case 2:
73
- quorumPublicKey = _c.sent();
74
- verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
75
- if (!verify) {
76
- throw new Error('Failed to verify query');
77
- }
78
- return [2 /*return*/, balances
79
- .map(function (tokenBalance) { return ({
80
- tokenId: new pshenmic_dpp_1.IdentifierWASM(tokenBalance.tokenId),
81
- balance: tokenBalance.balance
82
- }); })];
83
- }
84
- });
85
- });
86
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = getTokenContractInfo;
40
- var platform_1 = require("../../proto/generated/platform");
41
- var pshenmic_dpp_1 = require("pshenmic-dpp");
42
- var getQuorumPublicKey_1 = require("../utils/getQuorumPublicKey");
43
- var bytesToHex_1 = require("../utils/bytesToHex");
44
- var verifyTenderdashProof_1 = require("../utils/verifyTenderdashProof");
45
- function getTokenContractInfo(grpcPool, tokenIdentifier) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var tokenId, request, v0, _a, proof, metadata, _b, rootHash, contractInfo, quorumPublicKey, verify;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- tokenId = new pshenmic_dpp_1.IdentifierWASM(tokenIdentifier);
52
- request = platform_1.GetTokenContractInfoRequest.fromPartial({
53
- v0: {
54
- tokenId: (tokenId).bytes(),
55
- prove: true
56
- }
57
- });
58
- return [4 /*yield*/, grpcPool.getClient().getTokenContractInfo(request)];
59
- case 1:
60
- v0 = (_c.sent()).v0;
61
- _a = v0, proof = _a.proof, metadata = _a.metadata;
62
- if (proof == null) {
63
- throw new Error('Proof not found');
64
- }
65
- if (metadata == null) {
66
- throw new Error('Metadata not found');
67
- }
68
- _b = (0, pshenmic_dpp_1.verifyTokenContractInfoProof)(proof.grovedbProof, tokenId, true, pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, contractInfo = _b.contractInfo;
69
- if (contractInfo == null) {
70
- throw new Error('ContractInfo not found');
71
- }
72
- return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
73
- case 2:
74
- quorumPublicKey = _c.sent();
75
- verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
76
- if (!verify) {
77
- throw new Error('Failed to verify query');
78
- }
79
- return [2 /*return*/, {
80
- dataContractId: contractInfo.contractId,
81
- tokenContractPosition: contractInfo.tokenContractPosition
82
- }];
83
- }
84
- });
85
- });
86
- }
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = getTokenDirectPurchasePrices;
40
- var pshenmic_dpp_1 = require("pshenmic-dpp");
41
- var platform_1 = require("../../proto/generated/platform");
42
- var getQuorumPublicKey_1 = require("../utils/getQuorumPublicKey");
43
- var verifyTenderdashProof_1 = require("../utils/verifyTenderdashProof");
44
- var bytesToHex_1 = require("../utils/bytesToHex");
45
- function getTokenDirectPurchasePrices(grpcPool, tokenIdentifiers) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var tokenIds, request, v0, _a, proof, metadata, _b, rootHash, prices, quorumPublicKey, verify;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- tokenIds = tokenIdentifiers.map(function (tokenId) { return new pshenmic_dpp_1.IdentifierWASM(tokenId).bytes(); });
52
- request = platform_1.GetTokenDirectPurchasePricesRequest.fromPartial({
53
- v0: {
54
- tokenIds: tokenIds,
55
- prove: true
56
- }
57
- });
58
- return [4 /*yield*/, grpcPool.getClient().getTokenDirectPurchasePrices(request)];
59
- case 1:
60
- v0 = (_c.sent()).v0;
61
- _a = v0, proof = _a.proof, metadata = _a.metadata;
62
- if (proof == null) {
63
- throw new Error('Proof not found');
64
- }
65
- if (metadata == null) {
66
- throw new Error('Metadata not found');
67
- }
68
- _b = (0, pshenmic_dpp_1.verifyTokenDirectPurchasePrices)(proof.grovedbProof, tokenIds, true, pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, prices = _b.prices;
69
- if (prices == null) {
70
- throw new Error('Prices not found');
71
- }
72
- return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
73
- case 2:
74
- quorumPublicKey = _c.sent();
75
- verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
76
- if (!verify) {
77
- throw new Error('Failed to verify query');
78
- }
79
- return [2 /*return*/, prices];
80
- }
81
- });
82
- });
83
- }
@@ -1,84 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = getTokenTotalSupply;
40
- var platform_1 = require("../../proto/generated/platform");
41
- var pshenmic_dpp_1 = require("pshenmic-dpp");
42
- var getQuorumPublicKey_1 = require("../utils/getQuorumPublicKey");
43
- var bytesToHex_1 = require("../utils/bytesToHex");
44
- var verifyTenderdashProof_1 = require("../utils/verifyTenderdashProof");
45
- function getTokenTotalSupply(grpcPool, tokenIdentifier) {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var tokenId, request, v0, _a, proof, metadata, _b, rootHash, totalBalance, quorumPublicKey, verify;
48
- return __generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- tokenId = new pshenmic_dpp_1.IdentifierWASM(tokenIdentifier);
52
- request = platform_1.GetTokenTotalSupplyRequest.fromPartial({
53
- v0: {
54
- tokenId: (tokenId).bytes(),
55
- prove: true
56
- }
57
- });
58
- return [4 /*yield*/, grpcPool.getClient().getTokenTotalSupply(request)];
59
- case 1:
60
- v0 = (_c.sent()).v0;
61
- _a = v0, proof = _a.proof, metadata = _a.metadata;
62
- if (proof == null) {
63
- throw new Error('Proof not found');
64
- }
65
- if (metadata == null) {
66
- throw new Error('Metadata not found');
67
- }
68
- _b = (0, pshenmic_dpp_1.verifyTokenTotalSupplyProof)(proof.grovedbProof, tokenId, true, pshenmic_dpp_1.PlatformVersionWASM.PLATFORM_V9), rootHash = _b.rootHash, totalBalance = _b.totalBalance;
69
- return [4 /*yield*/, (0, getQuorumPublicKey_1.getQuorumPublicKey)(grpcPool.network, proof.quorumType, (0, bytesToHex_1.default)(proof.quorumHash))];
70
- case 2:
71
- quorumPublicKey = _c.sent();
72
- verify = (0, verifyTenderdashProof_1.default)(proof, metadata, rootHash, quorumPublicKey);
73
- if (!verify) {
74
- throw new Error('Failed to verify query');
75
- }
76
- return [2 /*return*/, {
77
- tokenId: tokenId,
78
- totalSystemAmount: totalBalance.tokenSupply,
79
- totalAggregatedAmountInUserAccounts: totalBalance.aggregatedTokenAccountBalances
80
- }];
81
- }
82
- });
83
- });
84
- }
@@ -1,193 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.TokensController = void 0;
40
- var getIdentitiesTokenBalances_1 = require("./getIdentitiesTokenBalances");
41
- var getIdentityTokensBalances_1 = require("./getIdentityTokensBalances");
42
- var getTokenContractInfo_1 = require("./getTokenContractInfo");
43
- var getTokenTotalSupply_1 = require("./getTokenTotalSupply");
44
- var createStateTransition_1 = require("./createStateTransition");
45
- var pshenmic_dpp_1 = require("pshenmic-dpp");
46
- var getIdentityContractNonce_1 = require("../identities/getIdentityContractNonce");
47
- var getTokenDirectPurchasePrices_1 = require("./getTokenDirectPurchasePrices");
48
- /**
49
- * Tokens controller for requesting information about tokens and tokens holders
50
- *
51
- * @hideconstructor
52
- */
53
- var TokensController = /** @class */ (function () {
54
- function TokensController(grpcPool) {
55
- this.grpcPool = grpcPool;
56
- }
57
- /**
58
- * Retrieves a token balances for identities
59
- *
60
- * @param identifiers {IdentifierLike[]} - list of identifiers which balance we need to get
61
- * @param tokenIdentifier {IdentifierLike} - token identifier
62
- *
63
- * @return {Promise<IdentitiesTokenBalances>}
64
- */
65
- TokensController.prototype.getIdentitiesTokenBalances = function (identifiers, tokenIdentifier) {
66
- return __awaiter(this, void 0, void 0, function () {
67
- return __generator(this, function (_a) {
68
- switch (_a.label) {
69
- case 0: return [4 /*yield*/, (0, getIdentitiesTokenBalances_1.default)(this.grpcPool, identifiers, tokenIdentifier)];
70
- case 1: return [2 /*return*/, _a.sent()];
71
- }
72
- });
73
- });
74
- };
75
- /**
76
- * Retrieves a tokens balances for identity
77
- *
78
- * @param identifier {IdentifierLike} - identifier which balance we need to get
79
- * @param tokenIdentifiers {IdentifierLike[]} - list of tokens ids which used in request
80
- *
81
- * @return {Promise<IdentityTokenBalances>}
82
- */
83
- TokensController.prototype.getIdentityTokensBalances = function (identifier, tokenIdentifiers) {
84
- return __awaiter(this, void 0, void 0, function () {
85
- return __generator(this, function (_a) {
86
- switch (_a.label) {
87
- case 0: return [4 /*yield*/, (0, getIdentityTokensBalances_1.default)(this.grpcPool, identifier, tokenIdentifiers)];
88
- case 1: return [2 /*return*/, _a.sent()];
89
- }
90
- });
91
- });
92
- };
93
- /**
94
- * Retrieves a tokens contract info by id
95
- *
96
- * @param tokenIdentifier {IdentifierLike} - token id which contract info we need
97
- *
98
- * @return {Promise<TokenContractInfo>}
99
- */
100
- TokensController.prototype.getTokenContractInfo = function (tokenIdentifier) {
101
- return __awaiter(this, void 0, void 0, function () {
102
- return __generator(this, function (_a) {
103
- switch (_a.label) {
104
- case 0: return [4 /*yield*/, (0, getTokenContractInfo_1.default)(this.grpcPool, tokenIdentifier)];
105
- case 1: return [2 /*return*/, _a.sent()];
106
- }
107
- });
108
- });
109
- };
110
- /**
111
- * Retrieves a token total supply
112
- *
113
- * @param tokenIdentifier {IdentifierLike} - token id which total supply we need
114
- *
115
- * @return {Promise<TokenTotalSupply>}
116
- */
117
- TokensController.prototype.getTokenTotalSupply = function (tokenIdentifier) {
118
- return __awaiter(this, void 0, void 0, function () {
119
- return __generator(this, function (_a) {
120
- switch (_a.label) {
121
- case 0: return [4 /*yield*/, (0, getTokenTotalSupply_1.default)(this.grpcPool, tokenIdentifier)];
122
- case 1: return [2 /*return*/, _a.sent()];
123
- }
124
- });
125
- });
126
- };
127
- /**
128
- * Retrieves a tokens prices
129
- *
130
- * @param tokenIdentifiers {IdentifierLike[]} - token ids which price we need
131
- *
132
- * @return {Promise<TokenDirectPurchasePrices[]>}
133
- */
134
- TokensController.prototype.getTokensDirectPurchasePrice = function (tokenIdentifiers) {
135
- return __awaiter(this, void 0, void 0, function () {
136
- return __generator(this, function (_a) {
137
- switch (_a.label) {
138
- case 0: return [4 /*yield*/, (0, getTokenDirectPurchasePrices_1.default)(this.grpcPool, tokenIdentifiers)];
139
- case 1: return [2 /*return*/, _a.sent()];
140
- }
141
- });
142
- });
143
- };
144
- /**
145
- * Creates a Token Base Transition that contains base information about token transition
146
- *
147
- * @param tokenId {IdentifierLike} - token identifier
148
- * @param ownerId {IdentifierLike} - identity identifier of sender of the transaction
149
- *
150
- * @return {TokenBaseTransitionWASM}
151
- */
152
- TokensController.prototype.createBaseTransition = function (tokenId, ownerId) {
153
- return __awaiter(this, void 0, void 0, function () {
154
- var _a, dataContractId, tokenContractPosition, identityContractNonce;
155
- return __generator(this, function (_b) {
156
- switch (_b.label) {
157
- case 0: return [4 /*yield*/, (0, getTokenContractInfo_1.default)(this.grpcPool, tokenId)];
158
- case 1:
159
- _a = _b.sent(), dataContractId = _a.dataContractId, tokenContractPosition = _a.tokenContractPosition;
160
- return [4 /*yield*/, (0, getIdentityContractNonce_1.default)(this.grpcPool, ownerId, dataContractId)];
161
- case 2:
162
- identityContractNonce = _b.sent();
163
- return [2 /*return*/, new pshenmic_dpp_1.TokenBaseTransitionWASM(identityContractNonce + BigInt(1), tokenContractPosition, dataContractId, tokenId, undefined)];
164
- }
165
- });
166
- });
167
- };
168
- /**
169
- * Helper function for creation of a token state transition to be broadcasted in the network
170
- *
171
- * You have to pass token base transition acquired from .createBaseTransition() method
172
- * together with token transition type and its params
173
- *
174
- * @param base {TokenBaseTransitionWASM} - token Base transition
175
- * @param ownerId {IdentifierLike} - `identity identifier of the owner of the transaction`
176
- * @param type {TokenTransitionType} - token transition type as string (f.e. 'transfer')
177
- * @param params {TokenTransitionParams} - params required for a token transition
178
- *
179
- * @return {StateTransitionWASM}
180
- */
181
- TokensController.prototype.createStateTransition = function (base, ownerId, type, params) {
182
- var owner = new pshenmic_dpp_1.IdentifierWASM(ownerId);
183
- if (params.identityId != null) {
184
- params.identityId = new pshenmic_dpp_1.IdentifierWASM(params.identityId);
185
- }
186
- if (params.price != null && typeof params.price === 'bigint') {
187
- params.price = pshenmic_dpp_1.TokenPricingScheduleWASM.SinglePrice(params.price);
188
- }
189
- return (0, createStateTransition_1.default)(base, owner, type, params);
190
- };
191
- return TokensController;
192
- }());
193
- exports.TokensController = TokensController;
package/src/types.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FinishedVoteOutcome = exports.ContestedStateResultType = exports.DashPlatformSDK = exports.IdentityPublicKeyWASM = exports.StateTransitionWASM = exports.DataContractWASM = exports.DocumentWASM = exports.IdentityWASM = exports.IdentifierWASM = void 0;
4
- var pshenmic_dpp_1 = require("pshenmic-dpp");
5
- Object.defineProperty(exports, "IdentifierWASM", { enumerable: true, get: function () { return pshenmic_dpp_1.IdentifierWASM; } });
6
- Object.defineProperty(exports, "IdentityWASM", { enumerable: true, get: function () { return pshenmic_dpp_1.IdentityWASM; } });
7
- Object.defineProperty(exports, "DocumentWASM", { enumerable: true, get: function () { return pshenmic_dpp_1.DocumentWASM; } });
8
- Object.defineProperty(exports, "DataContractWASM", { enumerable: true, get: function () { return pshenmic_dpp_1.DataContractWASM; } });
9
- Object.defineProperty(exports, "StateTransitionWASM", { enumerable: true, get: function () { return pshenmic_dpp_1.StateTransitionWASM; } });
10
- Object.defineProperty(exports, "IdentityPublicKeyWASM", { enumerable: true, get: function () { return pshenmic_dpp_1.IdentityPublicKeyWASM; } });
11
- var DashPlatformSDK_1 = require("./DashPlatformSDK");
12
- Object.defineProperty(exports, "DashPlatformSDK", { enumerable: true, get: function () { return DashPlatformSDK_1.DashPlatformSDK; } });
13
- var ContestedStateResultType;
14
- (function (ContestedStateResultType) {
15
- ContestedStateResultType[ContestedStateResultType["DOCUMENTS"] = 0] = "DOCUMENTS";
16
- ContestedStateResultType[ContestedStateResultType["VOTE_TALLY"] = 1] = "VOTE_TALLY";
17
- ContestedStateResultType[ContestedStateResultType["DOCUMENTS_AND_VOTE_TALLY"] = 2] = "DOCUMENTS_AND_VOTE_TALLY";
18
- })(ContestedStateResultType || (exports.ContestedStateResultType = ContestedStateResultType = {}));
19
- var FinishedVoteOutcome;
20
- (function (FinishedVoteOutcome) {
21
- FinishedVoteOutcome[FinishedVoteOutcome["TOWARDS_IDENTITY"] = 0] = "TOWARDS_IDENTITY";
22
- FinishedVoteOutcome[FinishedVoteOutcome["LOCKED"] = 1] = "LOCKED";
23
- FinishedVoteOutcome[FinishedVoteOutcome["NO_PREVIOUS_WINNER"] = 2] = "NO_PREVIOUS_WINNER";
24
- FinishedVoteOutcome[FinishedVoteOutcome["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
25
- })(FinishedVoteOutcome || (exports.FinishedVoteOutcome = FinishedVoteOutcome = {}));