polkamarkets-js 3.2.0 → 3.3.1

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 (149) hide show
  1. package/abis/AddAdminToLand.json +1 -0
  2. package/abis/ClaimMerkleRoot.json +1 -0
  3. package/abis/CreateLand.json +1 -0
  4. package/abis/CreateMarkets.json +1 -0
  5. package/abis/DeployContracts.json +1 -0
  6. package/abis/DeployMerkleRewardsDistributor.json +1 -0
  7. package/abis/DeployToken.json +1 -0
  8. package/abis/DeployUSDT.json +1 -0
  9. package/abis/MintTokens.json +1 -0
  10. package/abis/PredictionMarketV3_3.json +1 -0
  11. package/abis/PublishMerkleRoot.json +1 -0
  12. package/abis/ResolveMarket.json +1 -0
  13. package/abis/TradeMarket.json +1 -0
  14. package/abis/USDT.json +1 -0
  15. package/package.json +1 -1
  16. package/script/UpdateMarket.s.sol +56 -0
  17. package/scripts/AddAdminToLand.s.sol +29 -0
  18. package/scripts/ClaimMerkleRoot.s.sol +34 -0
  19. package/scripts/CreateLand.s.sol +28 -0
  20. package/scripts/CreateMarkets.s.sol +71 -0
  21. package/scripts/DeployContracts.s.sol +94 -0
  22. package/scripts/DeployMerkleRewardsDistributor.s.sol +27 -0
  23. package/scripts/DeployToken.s.sol +17 -0
  24. package/scripts/DeployUSDT.s.sol +24 -0
  25. package/scripts/MintTokens.s.sol +21 -0
  26. package/scripts/PublishMerkleRoot.s.sol +50 -0
  27. package/scripts/ResolveMarket.s.sol +23 -0
  28. package/scripts/TradeMarket.s.sol +28 -0
  29. package/scripts/UpdateMarket.s.sol +55 -0
  30. package/src/Application.js +2 -1
  31. package/src/interfaces/index.js +2 -0
  32. package/src/models/PredictionMarketV3Contract.js +5 -1
  33. package/src/models/PredictionMarketV3PlusContract.js +39 -2
  34. package/test/UpdateTest.t.sol +55 -0
  35. package/test/WhaleTest.t.sol +188 -0
  36. package/contracts/PredictionMarketV3_4Bad.sol +0 -1487
  37. package/contracts/PredictionMarketV3_4Good.sol +0 -1508
  38. package/dist/Application.d.ts +0 -201
  39. package/dist/Application.d.ts.map +0 -1
  40. package/dist/Application.js +0 -411
  41. package/dist/Application.js.map +0 -1
  42. package/dist/index.d.ts +0 -7
  43. package/dist/index.d.ts.map +0 -1
  44. package/dist/index.js +0 -16
  45. package/dist/index.js.map +0 -1
  46. package/dist/interfaces/index.d.ts +0 -4
  47. package/dist/interfaces/index.d.ts.map +0 -1
  48. package/dist/interfaces/index.js +0 -22
  49. package/dist/interfaces/index.js.map +0 -1
  50. package/dist/models/AchievementsContract.d.ts +0 -43
  51. package/dist/models/AchievementsContract.d.ts.map +0 -1
  52. package/dist/models/AchievementsContract.js +0 -177
  53. package/dist/models/AchievementsContract.js.map +0 -1
  54. package/dist/models/ArbitrationContract.d.ts +0 -23
  55. package/dist/models/ArbitrationContract.d.ts.map +0 -1
  56. package/dist/models/ArbitrationContract.js +0 -47
  57. package/dist/models/ArbitrationContract.js.map +0 -1
  58. package/dist/models/ArbitrationProxyContract.d.ts +0 -14
  59. package/dist/models/ArbitrationProxyContract.d.ts.map +0 -1
  60. package/dist/models/ArbitrationProxyContract.js +0 -26
  61. package/dist/models/ArbitrationProxyContract.js.map +0 -1
  62. package/dist/models/ERC20Contract.d.ts +0 -50
  63. package/dist/models/ERC20Contract.d.ts.map +0 -1
  64. package/dist/models/ERC20Contract.js +0 -99
  65. package/dist/models/ERC20Contract.js.map +0 -1
  66. package/dist/models/FantasyERC20Contract.d.ts +0 -13
  67. package/dist/models/FantasyERC20Contract.d.ts.map +0 -1
  68. package/dist/models/FantasyERC20Contract.js +0 -43
  69. package/dist/models/FantasyERC20Contract.js.map +0 -1
  70. package/dist/models/IContract.d.ts +0 -57
  71. package/dist/models/IContract.d.ts.map +0 -1
  72. package/dist/models/IContract.js +0 -515
  73. package/dist/models/IContract.js.map +0 -1
  74. package/dist/models/PolkamarketsSmartAccount.d.ts +0 -26
  75. package/dist/models/PolkamarketsSmartAccount.d.ts.map +0 -1
  76. package/dist/models/PolkamarketsSmartAccount.js +0 -100
  77. package/dist/models/PolkamarketsSmartAccount.js.map +0 -1
  78. package/dist/models/PredictionMarketContract.d.ts +0 -113
  79. package/dist/models/PredictionMarketContract.d.ts.map +0 -1
  80. package/dist/models/PredictionMarketContract.js +0 -298
  81. package/dist/models/PredictionMarketContract.js.map +0 -1
  82. package/dist/models/PredictionMarketV2Contract.d.ts +0 -157
  83. package/dist/models/PredictionMarketV2Contract.d.ts.map +0 -1
  84. package/dist/models/PredictionMarketV2Contract.js +0 -431
  85. package/dist/models/PredictionMarketV2Contract.js.map +0 -1
  86. package/dist/models/PredictionMarketV3Contract.d.ts +0 -42
  87. package/dist/models/PredictionMarketV3Contract.d.ts.map +0 -1
  88. package/dist/models/PredictionMarketV3Contract.js +0 -277
  89. package/dist/models/PredictionMarketV3Contract.js.map +0 -1
  90. package/dist/models/PredictionMarketV3ControllerContract.d.ts +0 -128
  91. package/dist/models/PredictionMarketV3ControllerContract.d.ts.map +0 -1
  92. package/dist/models/PredictionMarketV3ControllerContract.js +0 -174
  93. package/dist/models/PredictionMarketV3ControllerContract.js.map +0 -1
  94. package/dist/models/PredictionMarketV3FactoryContract.d.ts +0 -31
  95. package/dist/models/PredictionMarketV3FactoryContract.d.ts.map +0 -1
  96. package/dist/models/PredictionMarketV3FactoryContract.js +0 -81
  97. package/dist/models/PredictionMarketV3FactoryContract.js.map +0 -1
  98. package/dist/models/PredictionMarketV3ManagerContract.d.ts +0 -67
  99. package/dist/models/PredictionMarketV3ManagerContract.d.ts.map +0 -1
  100. package/dist/models/PredictionMarketV3ManagerContract.js +0 -97
  101. package/dist/models/PredictionMarketV3ManagerContract.js.map +0 -1
  102. package/dist/models/PredictionMarketV3QuerierContract.d.ts +0 -33
  103. package/dist/models/PredictionMarketV3QuerierContract.d.ts.map +0 -1
  104. package/dist/models/PredictionMarketV3QuerierContract.js +0 -61
  105. package/dist/models/PredictionMarketV3QuerierContract.js.map +0 -1
  106. package/dist/models/PredictionMarketV3_2Contract.d.ts +0 -32
  107. package/dist/models/PredictionMarketV3_2Contract.d.ts.map +0 -1
  108. package/dist/models/PredictionMarketV3_2Contract.js +0 -169
  109. package/dist/models/PredictionMarketV3_2Contract.js.map +0 -1
  110. package/dist/models/RealitioERC20Contract.d.ts +0 -16
  111. package/dist/models/RealitioERC20Contract.d.ts.map +0 -1
  112. package/dist/models/RealitioERC20Contract.js +0 -18
  113. package/dist/models/RealitioERC20Contract.js.map +0 -1
  114. package/dist/models/VotingContract.d.ts +0 -38
  115. package/dist/models/VotingContract.d.ts.map +0 -1
  116. package/dist/models/VotingContract.js +0 -85
  117. package/dist/models/VotingContract.js.map +0 -1
  118. package/dist/models/WETH9Contract.d.ts +0 -29
  119. package/dist/models/WETH9Contract.d.ts.map +0 -1
  120. package/dist/models/WETH9Contract.js +0 -44
  121. package/dist/models/WETH9Contract.js.map +0 -1
  122. package/dist/models/index.d.ts +0 -18
  123. package/dist/models/index.d.ts.map +0 -1
  124. package/dist/models/index.js +0 -37
  125. package/dist/models/index.js.map +0 -1
  126. package/dist/types/contracts.d.ts +0 -46
  127. package/dist/types/contracts.d.ts.map +0 -1
  128. package/dist/types/contracts.js +0 -3
  129. package/dist/types/contracts.js.map +0 -1
  130. package/dist/types/index.d.ts +0 -1
  131. package/dist/types/index.d.ts.map +0 -1
  132. package/dist/types/index.js +0 -3
  133. package/dist/types/index.js.map +0 -1
  134. package/dist/utils/Account.d.ts +0 -34
  135. package/dist/utils/Account.d.ts.map +0 -1
  136. package/dist/utils/Account.js +0 -38
  137. package/dist/utils/Account.js.map +0 -1
  138. package/dist/utils/Contract.d.ts +0 -31
  139. package/dist/utils/Contract.d.ts.map +0 -1
  140. package/dist/utils/Contract.js +0 -123
  141. package/dist/utils/Contract.js.map +0 -1
  142. package/dist/utils/Numbers.d.ts +0 -27
  143. package/dist/utils/Numbers.d.ts.map +0 -1
  144. package/dist/utils/Numbers.js +0 -87
  145. package/dist/utils/Numbers.js.map +0 -1
  146. package/script/CreateMarketLib.sol +0 -1873
  147. package/script/DeployProxy.s.sol +0 -27
  148. package/script/DeployUpgradeablePM.s.sol +0 -47
  149. package/script/PredictionMarketV3_3Flow.s.sol +0 -132
@@ -1,157 +0,0 @@
1
- import moment from "moment";
2
- import { BigNumber } from "ethers";
3
- import IContract from "./IContract";
4
- declare class PredictionMarketV2Contract extends IContract {
5
- static ACTIONS: {
6
- [key: number]: string;
7
- };
8
- constructor(params: any);
9
- getMinimumRequiredBalance(): Promise<number>;
10
- getWETHAddress(): Promise<string>;
11
- getMarkets(): Promise<number[]>;
12
- getMarketData({ marketId }: {
13
- marketId: number;
14
- }): Promise<any>;
15
- getOutcomeData({ marketId, outcomeId, }: {
16
- marketId: number;
17
- outcomeId: number;
18
- }): Promise<any>;
19
- getMarketDetails({ marketId }: {
20
- marketId: number;
21
- }): Promise<any>;
22
- getMarketIdsFromQuestions({ questions, }: {
23
- questions: string[];
24
- }): Promise<any[]>;
25
- getMarketQuestionId({ marketId, }: {
26
- marketId: number;
27
- }): Promise<string>;
28
- getAverageOutcomeBuyPrice({ events, marketId, outcomeId, }: {
29
- events: any[];
30
- marketId: number;
31
- outcomeId: number;
32
- }): number;
33
- getAverageAddLiquidityPrice({ events, marketId, }: {
34
- events: any[];
35
- marketId: number;
36
- }): number;
37
- isMarketERC20TokenWrapped({ marketId, }: {
38
- marketId: number;
39
- }): Promise<boolean>;
40
- getMyPortfolio(): Promise<{
41
- [key: string]: any;
42
- }>;
43
- getPortfolio({ user }: {
44
- user: string;
45
- }): Promise<{
46
- [key: string]: any;
47
- }>;
48
- getMyMarketShares({ marketId }: {
49
- marketId: number;
50
- }): Promise<{
51
- [key: string]: any;
52
- }>;
53
- getMyActions(): Promise<any[]>;
54
- getActions({ user }: {
55
- user: string;
56
- }): Promise<any[]>;
57
- getMarketOutcomePrice({ marketId, outcomeId, }: {
58
- marketId: number;
59
- outcomeId: number;
60
- }): Promise<any>;
61
- getMarketPrices({ marketId }: {
62
- marketId: number;
63
- }): Promise<{
64
- [key: number]: any;
65
- }>;
66
- getMarketShares({ marketId }: {
67
- marketId: number;
68
- }): Promise<{
69
- [key: number]: any;
70
- }>;
71
- getTokenDecimals({ contractAddress, }: {
72
- contractAddress: string;
73
- }): Promise<number>;
74
- getMarketDecimals({ marketId }: {
75
- marketId: number;
76
- }): Promise<number>;
77
- prepareCreateMarketDescription({ value, name, description, image, duration, oracleAddress, outcomes, category, token, odds, fee, treasuryFee, treasury, }: {
78
- value: number;
79
- name: string;
80
- description: string;
81
- image: string;
82
- duration: number;
83
- oracleAddress: string;
84
- outcomes: string[];
85
- category: string;
86
- token: string;
87
- odds: number[];
88
- fee: number;
89
- treasuryFee: number;
90
- treasury: string;
91
- }): Promise<any>;
92
- createMarket(params: any): Promise<any>;
93
- createMarketWithETH(params: any): Promise<any>;
94
- addLiquidity({ marketId, value, wrapped, }: {
95
- marketId: number;
96
- value: number;
97
- wrapped: boolean;
98
- }): Promise<any>;
99
- removeLiquidity({ marketId, shares, wrapped, }: {
100
- marketId: number;
101
- shares: number;
102
- wrapped: boolean;
103
- }): Promise<any>;
104
- buy({ marketId, outcomeId, value, minOutcomeSharesToBuy, wrapped, }: {
105
- marketId: number;
106
- outcomeId: number;
107
- value: number;
108
- minOutcomeSharesToBuy: number;
109
- wrapped: boolean;
110
- }): Promise<any>;
111
- sell({ marketId, outcomeId, value, maxOutcomeSharesToSell, wrapped, }: {
112
- marketId: number;
113
- outcomeId: number;
114
- value: number;
115
- maxOutcomeSharesToSell: number;
116
- wrapped: boolean;
117
- }): Promise<any>;
118
- resolveMarketOutcome({ marketId }: {
119
- marketId: number;
120
- }): Promise<any>;
121
- claimWinnings({ marketId, wrapped, }: {
122
- marketId: number;
123
- wrapped: boolean;
124
- }): Promise<any>;
125
- claimVoidedOutcomeShares({ marketId, outcomeId, wrapped, }: {
126
- marketId: number;
127
- outcomeId: number;
128
- wrapped: boolean;
129
- }): Promise<any>;
130
- claimLiquidity({ marketId }: {
131
- marketId: number;
132
- }): Promise<any>;
133
- calcBuyAmount({ marketId, outcomeId, value, }: {
134
- marketId: number;
135
- outcomeId: number;
136
- value: number;
137
- }): Promise<string>;
138
- calcSellAmount({ marketId, outcomeId, value, }: {
139
- marketId: number;
140
- outcomeId: number;
141
- value: number;
142
- }): Promise<string>;
143
- getMarketResolutionDate({ marketId }: {
144
- marketId: number;
145
- }): Promise<moment.Moment>;
146
- getMarketPrice({ marketId }: {
147
- marketId: number;
148
- }): Promise<number>;
149
- isMarketClosed({ marketId }: {
150
- marketId: number;
151
- }): Promise<boolean>;
152
- calcDistribution({ odds }: {
153
- odds: number[];
154
- }): BigNumber[];
155
- }
156
- export default PredictionMarketV2Contract;
157
- //# sourceMappingURL=PredictionMarketV2Contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PredictionMarketV2Contract.d.ts","sourceRoot":"","sources":["../../src/models/PredictionMarketV2Contract.ts"],"names":[],"mappings":"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"}
@@ -1,431 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const moment_1 = __importDefault(require("moment"));
7
- const Numbers_1 = __importDefault(require("../utils/Numbers"));
8
- const IContract_1 = __importDefault(require("./IContract"));
9
- const reality_eth_lib_1 = __importDefault(require("@reality.eth/reality-eth-lib"));
10
- const ERC20Contract_1 = __importDefault(require("./ERC20Contract"));
11
- class PredictionMarketV2Contract extends IContract_1.default {
12
- constructor(params) {
13
- super({ ...params, abi: params.contract.abi });
14
- this.contractName = "predictionMarketV2";
15
- }
16
- async getMinimumRequiredBalance() {
17
- const requiredBalance = await this.params.contract
18
- .getContract()
19
- .methods.requiredBalance()
20
- .call();
21
- const requiredBalanceToken = await this.params.contract
22
- .getContract()
23
- .methods.requiredBalanceToken()
24
- .call();
25
- const decimals = await this.getTokenDecimals({
26
- contractAddress: requiredBalanceToken,
27
- });
28
- return Numbers_1.default.fromDecimalsNumber(requiredBalance, decimals);
29
- }
30
- async getWETHAddress() {
31
- return await this.params.contract.getContract().methods.WETH().call();
32
- }
33
- async getMarkets() {
34
- const res = await this.params.contract
35
- .getContract()
36
- .methods.getMarkets()
37
- .call();
38
- return res.map((marketId) => Number(Numbers_1.default.fromHex(marketId)));
39
- }
40
- async getMarketData({ marketId }) {
41
- const marketData = await this.params.contract
42
- .getContract()
43
- .methods.getMarketData(marketId)
44
- .call();
45
- const outcomeIds = await this.params.contract
46
- .getContract()
47
- .methods.getMarketOutcomeIds(marketId)
48
- .call();
49
- const decimals = await this.getMarketDecimals({ marketId });
50
- const state = parseInt(marketData[0]);
51
- const resolvedOutcomeId = parseInt(marketData[5]);
52
- return {
53
- closeDateTime: moment_1.default.unix(marketData[1]).format("YYYY-MM-DD HH:mm"),
54
- state,
55
- oracleAddress: "0x0000000000000000000000000000000000000000",
56
- liquidity: Numbers_1.default.fromDecimalsNumber(marketData[2], decimals),
57
- outcomeIds: outcomeIds.map((outcomeId) => Numbers_1.default.fromBigNumberToInteger(outcomeId, 18)),
58
- resolvedOutcomeId,
59
- voided: state === 2 && !outcomeIds.includes(resolvedOutcomeId.toString()),
60
- };
61
- }
62
- async getOutcomeData({ marketId, outcomeId, }) {
63
- const outcomeData = await this.params.contract
64
- .getContract()
65
- .methods.getMarketOutcomeData(marketId, outcomeId)
66
- .call();
67
- const decimals = await this.getMarketDecimals({ marketId });
68
- return {
69
- name: "", // TODO: remove; deprecated
70
- price: Numbers_1.default.fromDecimalsNumber(outcomeData[0], 18),
71
- shares: Numbers_1.default.fromDecimalsNumber(outcomeData[1], decimals),
72
- };
73
- }
74
- async getMarketDetails({ marketId }) {
75
- const events = await this.getEvents("MarketCreated", { marketId });
76
- if (events.length === 0) {
77
- // legacy record, returning empty data
78
- return {
79
- name: "",
80
- category: "",
81
- subcategory: "",
82
- image: "",
83
- outcomes: [],
84
- };
85
- }
86
- // parsing question with realitio standard
87
- const question = reality_eth_lib_1.default.populatedJSONForTemplate('{"title": "%s", "type": "single-select", "outcomes": [%s], "category": "%s", "lang": "%s"}', events[0].returnValues.question);
88
- // splitting name and description with the first occurrence of ';' character
89
- const name = question.title.split(";")[0];
90
- const description = question.title.split(";").slice(1).join(";");
91
- return {
92
- name,
93
- description,
94
- category: question.category.split(";")[0],
95
- subcategory: question.category.split(";")[1],
96
- outcomes: question.outcomes,
97
- image: events[0].returnValues.image,
98
- };
99
- }
100
- async getMarketIdsFromQuestions({ questions, }) {
101
- const events = await this.getEvents("MarketCreated");
102
- return events
103
- .filter((event) => questions.includes(event.returnValues.question))
104
- .map((event) => event.returnValues.marketId);
105
- }
106
- async getMarketQuestionId({ marketId, }) {
107
- const marketAltData = await this.params.contract
108
- .getContract()
109
- .methods.getMarketAltData(marketId)
110
- .call();
111
- return marketAltData[1];
112
- }
113
- getAverageOutcomeBuyPrice({ events, marketId, outcomeId, }) {
114
- let totalShares = 0;
115
- let totalAmount = 0;
116
- events.forEach((event) => {
117
- if (event.marketId === marketId && event.outcomeId === outcomeId) {
118
- if (event.action === "Buy") {
119
- totalShares += event.shares;
120
- totalAmount += event.value;
121
- }
122
- else if (event.action === "Sell") {
123
- const proportion = event.shares / totalShares;
124
- totalShares -= event.shares;
125
- totalAmount *= 1 - proportion;
126
- }
127
- }
128
- });
129
- return totalShares && totalAmount ? totalAmount / totalShares : 0;
130
- }
131
- getAverageAddLiquidityPrice({ events, marketId, }) {
132
- let totalShares = 0;
133
- let totalAmount = 0;
134
- events.forEach((event) => {
135
- if (event.marketId === marketId) {
136
- if (event.action === "Add Liquidity") {
137
- totalShares += event.shares;
138
- totalAmount += event.value;
139
- }
140
- else if (event.action === "Remove Liquidity") {
141
- const proportion = event.shares / totalShares;
142
- totalShares -= event.shares;
143
- totalAmount *= 1 - proportion;
144
- }
145
- }
146
- });
147
- return totalShares && totalAmount ? totalAmount / totalShares : 0;
148
- }
149
- async isMarketERC20TokenWrapped({ marketId, }) {
150
- const tokenAddress = await this.params.contract
151
- .getContract()
152
- .methods.getMarketToken(marketId)
153
- .call();
154
- const wethAddress = await this.getWETHAddress();
155
- return tokenAddress === wethAddress;
156
- }
157
- async getMyPortfolio() {
158
- const user = await this.getMyAccount();
159
- if (!user)
160
- return {};
161
- return await this.getPortfolio({ user });
162
- }
163
- async getPortfolio({ user }) {
164
- const events = await this.getActions({ user });
165
- const marketIds = [...new Set(events.map((event) => event.marketId))];
166
- const portfolio = {};
167
- const decimals = await this.getMarketDecimals({
168
- marketId: marketIds[0],
169
- });
170
- for (const marketId of marketIds) {
171
- const marketData = await this.getMarketData({ marketId });
172
- const outcomeIds = marketData.outcomeIds;
173
- const outcomeShares = {};
174
- for (const outcomeId of outcomeIds) {
175
- const shares = await this.__sendTx(this.getContract().methods.getShares(marketId, outcomeId, user), true);
176
- if (shares > 0) {
177
- outcomeShares[outcomeId] = {
178
- shares: Numbers_1.default.fromDecimals(shares, decimals),
179
- price: this.getAverageOutcomeBuyPrice({
180
- events,
181
- marketId,
182
- outcomeId,
183
- }),
184
- };
185
- }
186
- }
187
- const liquidityShares = await this.__sendTx(this.getContract().methods.getLiquidityShares(marketId, user), true);
188
- const claimStatus = {
189
- winningsToClaim: false,
190
- winningsClaimed: false,
191
- };
192
- if (marketData.state === 2) {
193
- // resolved market
194
- const winnings = await this.__sendTx(this.getContract().methods.getWinnings(marketId, user), true);
195
- claimStatus.winningsToClaim = winnings > 0;
196
- claimStatus.winningsClaimed = events.some((event) => {
197
- return (event.action === "Claim Winnings" && event.marketId === marketId);
198
- });
199
- }
200
- portfolio[marketId] = {
201
- outcomes: outcomeShares,
202
- liquidity: {
203
- shares: Numbers_1.default.fromDecimals(liquidityShares, decimals),
204
- price: this.getAverageAddLiquidityPrice({ events, marketId }),
205
- },
206
- claimStatus,
207
- };
208
- }
209
- return portfolio;
210
- }
211
- async getMyMarketShares({ marketId }) {
212
- const user = await this.getMyAccount();
213
- if (!user) {
214
- return {};
215
- }
216
- const marketData = await this.getMarketData({ marketId });
217
- const outcomeIds = marketData.outcomeIds;
218
- const outcomeShares = {};
219
- for (const outcomeId of outcomeIds) {
220
- const shares = await this.__sendTx(this.getContract().methods.getShares(marketId, outcomeId, user), true);
221
- outcomeShares[outcomeId] = {
222
- shares: Numbers_1.default.fromDecimals(shares, 18),
223
- };
224
- }
225
- return outcomeShares;
226
- }
227
- async getMyActions() {
228
- const user = await this.getMyAccount();
229
- if (!user)
230
- return [];
231
- return await this.getActions({ user });
232
- }
233
- async getActions({ user }) {
234
- const events = await this.getEvents("MarketAction", { user });
235
- const parsedEvents = events.map((event) => {
236
- return {
237
- action: PredictionMarketV2Contract.ACTIONS[Numbers_1.default.fromBigNumberToInteger(event.returnValues.action, 18)],
238
- marketId: Numbers_1.default.fromBigNumberToInteger(event.returnValues.marketId, 18),
239
- outcomeId: Numbers_1.default.fromBigNumberToInteger(event.returnValues.outcomeId, 18),
240
- shares: Numbers_1.default.fromDecimalsNumber(event.returnValues.shares, 18),
241
- value: Numbers_1.default.fromDecimalsNumber(event.returnValues.value, 18),
242
- timestamp: Numbers_1.default.fromBigNumberToInteger(event.returnValues.timestamp, 18),
243
- transactionHash: event.transactionHash,
244
- };
245
- });
246
- // reverse to get chronological order
247
- return parsedEvents.reverse();
248
- }
249
- async getMarketOutcomePrice({ marketId, outcomeId, }) {
250
- const outcomeData = await this.getOutcomeData({ marketId, outcomeId });
251
- return outcomeData.price;
252
- }
253
- async getMarketPrices({ marketId }) {
254
- const marketData = await this.getMarketData({ marketId });
255
- const { outcomeIds } = marketData;
256
- const prices = {};
257
- for (const outcomeId of outcomeIds) {
258
- prices[outcomeId] = await this.getMarketOutcomePrice({
259
- marketId,
260
- outcomeId,
261
- });
262
- }
263
- return prices;
264
- }
265
- async getMarketShares({ marketId }) {
266
- const marketData = await this.getMarketData({ marketId });
267
- const { outcomeIds } = marketData;
268
- const shares = {};
269
- for (const outcomeId of outcomeIds) {
270
- const outcomeData = await this.getOutcomeData({ marketId, outcomeId });
271
- shares[outcomeId] = outcomeData.shares;
272
- }
273
- return shares;
274
- }
275
- async getTokenDecimals({ contractAddress, }) {
276
- const tokenContract = new ERC20Contract_1.default({
277
- web3: this.web3,
278
- contractAddress,
279
- acc: this.acc,
280
- });
281
- return await tokenContract.getDecimals();
282
- }
283
- async getMarketDecimals({ marketId }) {
284
- const tokenAddress = await this.params.contract
285
- .getContract()
286
- .methods.getMarketToken(marketId)
287
- .call();
288
- return await this.getTokenDecimals({ contractAddress: tokenAddress });
289
- }
290
- async prepareCreateMarketDescription({ value, name, description = "", image, duration, oracleAddress, outcomes, category, token, odds = [], fee = 0, treasuryFee = 0, treasury = "0x0000000000000000000000000000000000000000", }) {
291
- const decimals = await this.getTokenDecimals({ contractAddress: token });
292
- const valueToWei = Numbers_1.default.toSmartContractDecimals(value, decimals);
293
- const feeToWei = Numbers_1.default.toSmartContractDecimals(fee, 18);
294
- const treasuryFeeToWei = Numbers_1.default.toSmartContractDecimals(treasuryFee, 18);
295
- const title = `${name};${description}`;
296
- const question = reality_eth_lib_1.default.encodeText("single-select", title, outcomes, category);
297
- let distribution = [];
298
- if (odds.length > 0) {
299
- if (odds.length !== outcomes.length) {
300
- throw new Error("Odds and outcomes must have the same length");
301
- }
302
- const oddsSum = odds.reduce((a, b) => a + b, 0);
303
- if (oddsSum < 99.9 || oddsSum > 100.1) {
304
- throw new Error("Odds must sum 100");
305
- }
306
- distribution = this.calcDistribution({ odds });
307
- }
308
- return {
309
- value: valueToWei,
310
- closesAt: duration,
311
- outcomes: outcomes.length,
312
- token,
313
- question,
314
- image,
315
- arbitrator: oracleAddress,
316
- fee: feeToWei,
317
- treasuryFee: treasuryFeeToWei,
318
- treasury,
319
- distribution,
320
- };
321
- }
322
- async createMarket(params) {
323
- const desc = await this.prepareCreateMarketDescription(params);
324
- return await this.__sendTx(this.getContract().methods.createMarket(desc.closesAt, desc.token, desc.question, desc.image, desc.arbitrator, desc.fee, desc.treasuryFee, desc.treasury, desc.outcomes, desc.distribution), false, desc.value);
325
- }
326
- async createMarketWithETH(params) {
327
- const token = await this.getWETHAddress();
328
- const desc = await this.prepareCreateMarketDescription({ ...params, token });
329
- return await this.__sendTx(this.getContract().methods.createMarket(desc.closesAt, desc.token, desc.question, desc.image, desc.arbitrator, desc.fee, desc.treasuryFee, desc.treasury, desc.outcomes, desc.distribution), false, desc.value);
330
- }
331
- async addLiquidity({ marketId, value, wrapped = false, }) {
332
- const decimals = await this.getMarketDecimals({ marketId });
333
- const amount = Numbers_1.default.toSmartContractDecimals(value, decimals);
334
- if (wrapped) {
335
- return await this.__sendTx(this.getContract().methods.addLiquidity(marketId), false, amount);
336
- }
337
- return await this.__sendTx(this.getContract().methods.addLiquidity(marketId, amount));
338
- }
339
- async removeLiquidity({ marketId, shares, wrapped = false, }) {
340
- const decimals = await this.getMarketDecimals({ marketId });
341
- const amount = Numbers_1.default.toSmartContractDecimals(shares, decimals);
342
- if (wrapped) {
343
- return await this.__sendTx(this.getContract().methods.removeLiquidity(marketId), false, amount);
344
- }
345
- return await this.__sendTx(this.getContract().methods.removeLiquidity(marketId, amount));
346
- }
347
- async buy({ marketId, outcomeId, value, minOutcomeSharesToBuy, wrapped = false, }) {
348
- const decimals = await this.getMarketDecimals({ marketId });
349
- const amount = Numbers_1.default.toSmartContractDecimals(value, decimals);
350
- const minShares = Numbers_1.default.toSmartContractDecimals(minOutcomeSharesToBuy, decimals);
351
- if (wrapped) {
352
- return await this.__sendTx(this.getContract().methods.buy(marketId, outcomeId, minShares), false, amount);
353
- }
354
- return await this.__sendTx(this.getContract().methods.buy(marketId, outcomeId, amount, minShares));
355
- }
356
- async sell({ marketId, outcomeId, value, maxOutcomeSharesToSell, wrapped = false, }) {
357
- const decimals = await this.getMarketDecimals({ marketId });
358
- const amount = Numbers_1.default.toSmartContractDecimals(value, decimals);
359
- const maxShares = Numbers_1.default.toSmartContractDecimals(maxOutcomeSharesToSell, decimals);
360
- if (wrapped) {
361
- return await this.__sendTx(this.getContract().methods.sell(marketId, outcomeId, maxShares), false, amount);
362
- }
363
- return await this.__sendTx(this.getContract().methods.sell(marketId, outcomeId, amount, maxShares));
364
- }
365
- async resolveMarketOutcome({ marketId }) {
366
- return await this.__sendTx(this.getContract().methods.resolveMarket(marketId));
367
- }
368
- async claimWinnings({ marketId, wrapped = false, }) {
369
- if (wrapped) {
370
- const user = await this.getMyAccount();
371
- return await this.__sendTx(this.getContract().methods.claimWinnings(marketId, user));
372
- }
373
- return await this.__sendTx(this.getContract().methods.claimWinnings(marketId));
374
- }
375
- async claimVoidedOutcomeShares({ marketId, outcomeId, wrapped = false, }) {
376
- if (wrapped) {
377
- const user = await this.getMyAccount();
378
- return await this.__sendTx(this.getContract().methods.claimVoidedOutcomeShares(marketId, outcomeId, user));
379
- }
380
- return await this.__sendTx(this.getContract().methods.claimVoidedOutcomeShares(marketId, outcomeId));
381
- }
382
- async claimLiquidity({ marketId }) {
383
- return await this.__sendTx(this.getContract().methods.claimLiquidity(marketId));
384
- }
385
- async calcBuyAmount({ marketId, outcomeId, value, }) {
386
- const decimals = await this.getMarketDecimals({ marketId });
387
- const amount = Numbers_1.default.toSmartContractDecimals(value, decimals);
388
- const buyAmount = await this.getContract()
389
- .methods.calcBuyAmount(marketId, outcomeId, amount)
390
- .call();
391
- return Numbers_1.default.fromDecimals(buyAmount, decimals);
392
- }
393
- async calcSellAmount({ marketId, outcomeId, value, }) {
394
- const decimals = await this.getMarketDecimals({ marketId });
395
- const amount = Numbers_1.default.toSmartContractDecimals(value, decimals);
396
- const sellAmount = await this.getContract()
397
- .methods.calcSellAmount(marketId, outcomeId, amount)
398
- .call();
399
- return Numbers_1.default.fromDecimals(sellAmount, decimals);
400
- }
401
- async getMarketResolutionDate({ marketId }) {
402
- const marketData = await this.getMarketData({ marketId });
403
- return moment_1.default.unix(marketData.closesAt).utc();
404
- }
405
- async getMarketPrice({ marketId }) {
406
- const marketData = await this.getMarketData({ marketId });
407
- const decimals = await this.getMarketDecimals({ marketId });
408
- return parseFloat(Numbers_1.default.fromDecimals(marketData.price, decimals));
409
- }
410
- async isMarketClosed({ marketId }) {
411
- const marketData = await this.getMarketData({ marketId });
412
- return marketData.state > 1;
413
- }
414
- calcDistribution({ odds }) {
415
- const totalInverse = odds.reduce((acc, o) => acc + 1 / o, 0);
416
- const distribution = odds.map((o) => Numbers_1.default.toSmartContractDecimals((1 / o / totalInverse) * 100, 18));
417
- return distribution;
418
- }
419
- }
420
- PredictionMarketV2Contract.ACTIONS = {
421
- 0: "Buy",
422
- 1: "Sell",
423
- 2: "Add Liquidity",
424
- 3: "Remove Liquidity",
425
- 4: "Claim Winnings",
426
- 5: "Claim Liquidity",
427
- 6: "Claim Fees",
428
- 7: "Claim Voided",
429
- };
430
- exports.default = PredictionMarketV2Contract;
431
- //# sourceMappingURL=PredictionMarketV2Contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PredictionMarketV2Contract.js","sourceRoot":"","sources":["../../src/models/PredictionMarketV2Contract.ts"],"names":[],"mappings":"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"}