@peeramid-labs/sdk 3.0.0 → 3.0.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.
@@ -1,432 +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
- exports.gameStatusEnum = void 0;
7
- const index_1 = require("../utils/index");
8
- const RankifyDiamondInstance_1 = __importDefault(require("../abis/RankifyDiamondInstance"));
9
- /**
10
- * Enum representing different states of a game instance
11
- * @public
12
- */
13
- var gameStatusEnum;
14
- (function (gameStatusEnum) {
15
- /** Game has been created but not opened for registration */
16
- gameStatusEnum["created"] = "Game created";
17
- /** Game is open for player registration */
18
- gameStatusEnum["open"] = "Registration open";
19
- /** Game is in progress */
20
- gameStatusEnum["started"] = "In progress";
21
- /** Game is in its final turn */
22
- gameStatusEnum["lastTurn"] = "Playing last turn";
23
- /** Game is in overtime */
24
- gameStatusEnum["overtime"] = "PLaying in overtime";
25
- /** Game has finished */
26
- gameStatusEnum["finished"] = "Finished";
27
- /** Game was not found */
28
- gameStatusEnum["notFound"] = "not found";
29
- })(gameStatusEnum || (exports.gameStatusEnum = gameStatusEnum = {}));
30
- /**
31
- * Base class for interacting with a Rankify game instance
32
- * Provides core functionality for managing game state and interactions
33
- */
34
- class InstanceBase {
35
- /** Public client for blockchain interactions */
36
- publicClient;
37
- /** Chain ID of the network */
38
- chainId;
39
- /** Address of the Rankify instance contract */
40
- instanceAddress;
41
- /**
42
- * Creates a new InstanceBase
43
- * @param {Object} params - Constructor parameters
44
- * @param {PublicClient} params.publicClient - Public client for blockchain interactions
45
- * @param {number} params.chainId - Chain ID of the network
46
- * @param {Address} params.instanceAddress - Address of the Rankify instance contract
47
- */
48
- constructor({ publicClient, chainId, instanceAddress, }) {
49
- this.publicClient = publicClient;
50
- this.chainId = chainId;
51
- this.instanceAddress = instanceAddress;
52
- }
53
- /**
54
- * Retrieves the historic turn information for a specific game and turn ID.
55
- * @returns The historic turn event object.
56
- * @throws {ApiError} If the game or turn is not found.
57
- */
58
- getHistoricTurn = async (gameId, turnId) => {
59
- const logs = await this.publicClient.getContractEvents({
60
- address: this.instanceAddress,
61
- abi: RankifyDiamondInstance_1.default,
62
- eventName: "TurnEnded",
63
- args: {
64
- gameId,
65
- turn: turnId,
66
- },
67
- });
68
- if (logs.length !== 1) {
69
- console.error("getHistoricTurn", gameId, turnId, "failed:", logs.length);
70
- throw new index_1.ApiError("Game not found", { status: 404 });
71
- }
72
- return logs[0];
73
- };
74
- /**
75
- * Retrieves the previous turn information for a specific game.
76
- * @param gameId - The ID of the game.
77
- * @returns The previous turn information for the specified game.
78
- */
79
- getPreviousTurnStats = async (gameId) => {
80
- const currentTurn = await this.publicClient.readContract({
81
- address: this.instanceAddress,
82
- abi: RankifyDiamondInstance_1.default,
83
- functionName: "getTurn",
84
- args: [gameId],
85
- });
86
- if (currentTurn > 1n) {
87
- return this.getHistoricTurn(gameId, currentTurn - 1n);
88
- }
89
- else {
90
- return {
91
- players: "N/A",
92
- scores: "N/A",
93
- turnSalt: "N/A",
94
- voters: ["N/A"],
95
- votesRevealed: ["N/A"],
96
- };
97
- }
98
- };
99
- /**
100
- * Retrieves the voting information for a specific game and turn.
101
- * @param gameId - The ID of the game.
102
- * @param turnId - The ID of the turn.
103
- * @returns The voting information for the specified game and turn.
104
- */
105
- getVoting = async (gameId, turnId) => {
106
- if (!gameId)
107
- throw new Error("gameId not set");
108
- if (!turnId)
109
- throw new Error("turnId not set");
110
- const voteEvents = await this.publicClient.getContractEvents({
111
- address: this.instanceAddress,
112
- abi: RankifyDiamondInstance_1.default,
113
- eventName: "VoteSubmitted",
114
- args: {
115
- gameId,
116
- turn: turnId,
117
- },
118
- });
119
- const proposalEvents = await this.publicClient.getContractEvents({
120
- address: this.instanceAddress,
121
- abi: RankifyDiamondInstance_1.default,
122
- eventName: "ProposalSubmitted",
123
- args: {
124
- gameId,
125
- turn: turnId,
126
- },
127
- });
128
- return { voteEvents, proposalEvents };
129
- };
130
- /**
131
- * Retrieves the ongoing voting for a specific game.
132
- * @param gameId - The ID of the game.
133
- */
134
- getOngoingVoting = async (gameId) => {
135
- try {
136
- const turn = await this.publicClient.readContract({
137
- address: this.instanceAddress,
138
- abi: RankifyDiamondInstance_1.default,
139
- functionName: "getTurn",
140
- args: [gameId],
141
- });
142
- return this.getVoting(gameId, turn);
143
- }
144
- catch (error) {
145
- console.error(error);
146
- }
147
- };
148
- /**
149
- * Retrieves the ongoing proposals for a specific game.
150
- * @param gameId - The ID of the game.
151
- * @returns The ongoing proposals for the specified game.
152
- */
153
- getOngoingProposals = async (gameId) => {
154
- const currentTurn = await this.publicClient.readContract({
155
- address: this.instanceAddress,
156
- abi: RankifyDiamondInstance_1.default,
157
- functionName: "getTurn",
158
- args: [gameId],
159
- });
160
- try {
161
- const lastTurnEndedEvent = await this.publicClient.getContractEvents({
162
- address: this.instanceAddress,
163
- abi: RankifyDiamondInstance_1.default,
164
- eventName: "TurnEnded",
165
- args: { turn: currentTurn - 1n, gameId },
166
- });
167
- if (lastTurnEndedEvent.length !== 1) {
168
- console.error("getOngoingProposals", gameId, "failed:", lastTurnEndedEvent.length);
169
- throw new index_1.ApiError("Game not found", { status: 404 });
170
- }
171
- const args = lastTurnEndedEvent[0].args;
172
- return { currentTurn, proposals: args.newProposals };
173
- }
174
- catch (error) {
175
- console.error("Error in getOngoingProposals:", error);
176
- return { currentTurn, proposals: [] };
177
- }
178
- };
179
- /**
180
- * Retrieves the registration deadline for a specific game.
181
- * @param gameId - The ID of the game.
182
- * @param timeToJoin - Optional. The additional time (in seconds) to join the game.
183
- * @returns A Promise that resolves to the registration deadline timestamp.
184
- */
185
- getRegistrationDeadline = async (gameId, timeToJoin) => {
186
- const log = await this.publicClient.getContractEvents({
187
- address: this.instanceAddress,
188
- abi: RankifyDiamondInstance_1.default,
189
- eventName: "RegistrationOpen",
190
- args: {
191
- gameId: gameId,
192
- },
193
- });
194
- if (log.length !== 1) {
195
- console.error("getRegistrationDeadline", gameId, "failed:", log.length);
196
- throw new index_1.ApiError("Game not found", { status: 404 });
197
- }
198
- const block = await this.publicClient.getBlock({ blockNumber: log[0].blockNumber });
199
- if (timeToJoin) {
200
- return Number(block.timestamp) + timeToJoin;
201
- }
202
- const gameState = await this.publicClient.readContract({
203
- address: this.instanceAddress,
204
- abi: RankifyDiamondInstance_1.default,
205
- functionName: "getGameState",
206
- args: [gameId],
207
- });
208
- return Number(block.timestamp) + Number(gameState.timeToJoin);
209
- };
210
- /**
211
- * Resolves the deadline for the current turn.
212
- * @param block The current block.
213
- * @param gameId The ID of the game.
214
- * @param timePerTurn The time duration per turn (optional).
215
- * @returns The deadline for the current turn.
216
- */
217
- resolveTurnDeadline = async (block, gameId, timePerTurn) => {
218
- if (timePerTurn)
219
- return Number(block.timestamp) + timePerTurn;
220
- const gameState = await this.publicClient.readContract({
221
- address: this.instanceAddress,
222
- abi: RankifyDiamondInstance_1.default,
223
- functionName: "getGameState",
224
- args: [gameId],
225
- });
226
- return Number(block.timestamp) + Number(gameState.timePerTurn);
227
- };
228
- /**
229
- * Retrieves the deadline for the current turn in a game.
230
- * @param gameId - The ID of the game.
231
- * @param timePerTurn - Optional. The duration of each turn in seconds.
232
- * @returns A Promise that resolves to the deadline for the current turn, or 0 if the turn has not started.
233
- */
234
- getTurnDeadline = async (gameId, timePerTurn) => {
235
- if (!gameId)
236
- throw new Error("gameId not set");
237
- const currentTurn = await this.publicClient.readContract({
238
- address: this.instanceAddress,
239
- abi: RankifyDiamondInstance_1.default,
240
- functionName: "getTurn",
241
- args: [gameId],
242
- });
243
- if (currentTurn === 0n)
244
- return 0;
245
- const eventName = currentTurn === 1n ? "GameStarted" : "TurnEnded";
246
- const args = currentTurn === 1n ? { gameId } : { gameId, turnId: currentTurn - 1n };
247
- const logs = await this.publicClient.getContractEvents({
248
- address: this.instanceAddress,
249
- abi: RankifyDiamondInstance_1.default,
250
- eventName: eventName,
251
- args: args,
252
- });
253
- if (logs.length !== 1) {
254
- console.error("getTurnDeadline", gameId, "failed:", logs.length);
255
- throw new index_1.ApiError("Game not found", { status: 404 });
256
- }
257
- const block = await this.publicClient.getBlock({ blockNumber: logs[0].blockNumber });
258
- return this.resolveTurnDeadline(block, gameId, timePerTurn);
259
- };
260
- /**
261
- * Retrieves the contract state.
262
- */
263
- getContractState = async () => {
264
- const state = await this.publicClient.readContract({
265
- address: this.instanceAddress,
266
- abi: RankifyDiamondInstance_1.default,
267
- functionName: "getContractState",
268
- });
269
- return state;
270
- };
271
- /**
272
- * Retrieves a player's game.
273
- * @param account - The player's account address.
274
- */
275
- getPlayersGame = async (account) => {
276
- return this.publicClient.readContract({
277
- address: this.instanceAddress,
278
- abi: RankifyDiamondInstance_1.default,
279
- functionName: "getPlayersGame",
280
- args: [account],
281
- });
282
- };
283
- /**
284
- * Retrieves the list of proposal scores for a specific game.
285
- * @param gameId - The ID of the game.
286
- * @returns A Promise that resolves to the list of proposal scores.
287
- */
288
- getProposalScoresList = async (gameId) => {
289
- if (!gameId)
290
- throw new Error("gameId not set");
291
- const logs = await this.publicClient.getContractEvents({
292
- address: this.instanceAddress,
293
- abi: RankifyDiamondInstance_1.default,
294
- eventName: "ProposalScore",
295
- args: { gameId },
296
- });
297
- return logs;
298
- };
299
- /**
300
- * Retrieves the current turn of a game.
301
- * @param gameId - The ID of the game.
302
- * @returns A Promise that resolves to the current turn of the game.
303
- */
304
- getCurrentTurn = async (gameId) => {
305
- return this.publicClient.readContract({
306
- address: this.instanceAddress,
307
- abi: RankifyDiamondInstance_1.default,
308
- functionName: "getTurn",
309
- args: [gameId],
310
- });
311
- };
312
- /**
313
- * Retrieves the game state for a specific game.
314
- * @param gameId - The ID of the game.
315
- * @returns A promise that resolves to an object containing the game state.
316
- */
317
- getGameState = async (gameId) => {
318
- const [gameMaster, joinRequirements, scores, currentTurn, isFinished, isOvertime, isLastTurn, isOpen, createdBy, gameRank, players, canStart,] = await Promise.all([
319
- this.publicClient.readContract({
320
- address: this.instanceAddress,
321
- abi: RankifyDiamondInstance_1.default,
322
- functionName: "getGM",
323
- args: [gameId],
324
- }),
325
- this.publicClient.readContract({
326
- address: this.instanceAddress,
327
- abi: RankifyDiamondInstance_1.default,
328
- functionName: "getJoinRequirements",
329
- args: [gameId],
330
- }),
331
- this.publicClient.readContract({
332
- address: this.instanceAddress,
333
- abi: RankifyDiamondInstance_1.default,
334
- functionName: "getScores",
335
- args: [gameId],
336
- }),
337
- this.publicClient.readContract({
338
- address: this.instanceAddress,
339
- abi: RankifyDiamondInstance_1.default,
340
- functionName: "getTurn",
341
- args: [gameId],
342
- }),
343
- this.publicClient.readContract({
344
- address: this.instanceAddress,
345
- abi: RankifyDiamondInstance_1.default,
346
- functionName: "isGameOver",
347
- args: [gameId],
348
- }),
349
- this.publicClient.readContract({
350
- address: this.instanceAddress,
351
- abi: RankifyDiamondInstance_1.default,
352
- functionName: "isOvertime",
353
- args: [gameId],
354
- }),
355
- this.publicClient.readContract({
356
- address: this.instanceAddress,
357
- abi: RankifyDiamondInstance_1.default,
358
- functionName: "isLastTurn",
359
- args: [gameId],
360
- }),
361
- this.publicClient.readContract({
362
- address: this.instanceAddress,
363
- abi: RankifyDiamondInstance_1.default,
364
- functionName: "isRegistrationOpen",
365
- args: [gameId],
366
- }),
367
- this.publicClient.readContract({
368
- address: this.instanceAddress,
369
- abi: RankifyDiamondInstance_1.default,
370
- functionName: "gameCreator",
371
- args: [gameId],
372
- }),
373
- this.publicClient.readContract({
374
- address: this.instanceAddress,
375
- abi: RankifyDiamondInstance_1.default,
376
- functionName: "getGameRank",
377
- args: [gameId],
378
- }),
379
- this.publicClient.readContract({
380
- address: this.instanceAddress,
381
- abi: RankifyDiamondInstance_1.default,
382
- functionName: "getPlayers",
383
- args: [gameId],
384
- }),
385
- this.publicClient.readContract({
386
- address: this.instanceAddress,
387
- abi: RankifyDiamondInstance_1.default,
388
- functionName: "canStartGame",
389
- args: [gameId],
390
- }),
391
- ]);
392
- const requirementsPerContract = await Promise.all(joinRequirements.contractAddresses.map(async (address, idx) => {
393
- return this.publicClient.readContract({
394
- address: this.instanceAddress,
395
- abi: RankifyDiamondInstance_1.default,
396
- functionName: "getJoinRequirementsByToken",
397
- args: [gameId, address, joinRequirements.contractIds[idx], joinRequirements.contractTypes[idx]],
398
- });
399
- }));
400
- const gamePhase = isFinished
401
- ? gameStatusEnum["finished"]
402
- : isOvertime
403
- ? gameStatusEnum["overtime"]
404
- : isLastTurn
405
- ? gameStatusEnum["lastTurn"]
406
- : currentTurn > 0n
407
- ? gameStatusEnum["started"]
408
- : isOpen
409
- ? gameStatusEnum["open"]
410
- : gameMaster
411
- ? gameStatusEnum["created"]
412
- : gameStatusEnum["notFound"];
413
- return {
414
- gameMaster,
415
- joinRequirements,
416
- requirementsPerContract,
417
- scores,
418
- currentTurn,
419
- isFinished,
420
- isOvertime,
421
- isLastTurn,
422
- isOpen,
423
- createdBy,
424
- gameRank,
425
- players,
426
- canStart,
427
- gamePhase,
428
- };
429
- };
430
- }
431
- exports.default = InstanceBase;
432
- //# sourceMappingURL=InstanceBase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InstanceBase.js","sourceRoot":"","sources":["../../../src/rankify/InstanceBase.ts"],"names":[],"mappings":"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"}
@@ -1,175 +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 artifacts_1 = require("../utils/artifacts");
7
- const RankifyDiamondInstance_1 = __importDefault(require("../abis/RankifyDiamondInstance"));
8
- const InstanceBase_1 = __importDefault(require("./InstanceBase"));
9
- class RankifyPlayer extends InstanceBase_1.default {
10
- walletClient;
11
- account;
12
- constructor({ publicClient, walletClient, chainId, instanceAddress, account, }) {
13
- super({
14
- publicClient,
15
- chainId,
16
- instanceAddress,
17
- });
18
- this.walletClient = walletClient;
19
- this.account = account;
20
- }
21
- approveTokensIfNeeded = async (value) => {
22
- const tokenContract = (0, artifacts_1.getContract)(this.chainId, "Rankify", this.walletClient);
23
- if (!this.walletClient.account?.address)
24
- throw new Error("Account not found");
25
- if (value > 0n) {
26
- const { request } = await this.publicClient.simulateContract({
27
- address: tokenContract.address,
28
- abi: tokenContract.abi,
29
- functionName: "approve",
30
- args: [this.instanceAddress, value],
31
- account: this.walletClient.account,
32
- });
33
- const hash = await this.walletClient.writeContract(request);
34
- await this.publicClient.waitForTransactionReceipt({ hash });
35
- }
36
- };
37
- createGame = async (creationArgs) => {
38
- // if (!creationArgs) throw new Error("args is required");
39
- const estimationArgs = [
40
- creationArgs.minGameTime,
41
- ];
42
- const price = await this.publicClient.readContract({
43
- address: this.instanceAddress,
44
- abi: RankifyDiamondInstance_1.default,
45
- functionName: "estimateGamePrice",
46
- args: estimationArgs,
47
- });
48
- await this.approveTokensIfNeeded(price);
49
- if (!this.walletClient.account?.address)
50
- throw new Error("Account not found");
51
- const { request } = await this.publicClient.simulateContract({
52
- address: this.instanceAddress,
53
- abi: RankifyDiamondInstance_1.default,
54
- functionName: "createGame",
55
- args: [creationArgs],
56
- account: this.walletClient.account.address,
57
- });
58
- const hash = await this.walletClient.writeContract(request);
59
- const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
60
- const events = await this.publicClient.getContractEvents({
61
- address: this.instanceAddress,
62
- abi: RankifyDiamondInstance_1.default,
63
- eventName: "gameCreated",
64
- args: {},
65
- fromBlock: receipt.blockNumber,
66
- toBlock: receipt.blockNumber,
67
- });
68
- if (events.length > 1) {
69
- throw new Error("Failed to create game: Multiple GameCreated events found");
70
- }
71
- if (events.length === 0) {
72
- throw new Error("Failed to create game: GameCreated event not found");
73
- }
74
- if (!events[0].args)
75
- throw new Error("Failed to create game: Event args not found");
76
- if (!("gameId" in events[0].args))
77
- throw new Error("Failed to create game: GameId not found");
78
- const { gameId } = events[0].args;
79
- return {
80
- gameId,
81
- receipt,
82
- };
83
- };
84
- joinGame = async (gameId) => {
85
- const reqs = (await this.publicClient.readContract({
86
- address: this.instanceAddress,
87
- abi: RankifyDiamondInstance_1.default,
88
- functionName: "getJoinRequirements",
89
- args: [gameId],
90
- }));
91
- const values = reqs.ethValues;
92
- const value = values.bet + values.burn + values.pay;
93
- if (this.walletClient.account?.address)
94
- throw new Error("Account not found");
95
- const { request } = await this.publicClient.simulateContract({
96
- address: this.instanceAddress,
97
- abi: RankifyDiamondInstance_1.default,
98
- functionName: "joinGame",
99
- args: [gameId],
100
- value,
101
- account: this.walletClient.account,
102
- });
103
- const hash = await this.walletClient.writeContract(request);
104
- return this.publicClient.waitForTransactionReceipt({ hash });
105
- };
106
- startGame = async (gameId) => {
107
- if (!this.walletClient.account?.address)
108
- throw new Error("Account not found");
109
- const { request } = await this.publicClient.simulateContract({
110
- address: this.instanceAddress,
111
- abi: RankifyDiamondInstance_1.default,
112
- functionName: "startGame",
113
- args: [gameId],
114
- account: this.walletClient.account,
115
- });
116
- const hash = await this.walletClient.writeContract(request);
117
- return this.publicClient.waitForTransactionReceipt({ hash });
118
- };
119
- cancelGame = async (gameId) => {
120
- if (!this.walletClient.account?.address)
121
- throw new Error("Account not found");
122
- const { request } = await this.publicClient.simulateContract({
123
- address: this.instanceAddress,
124
- abi: RankifyDiamondInstance_1.default,
125
- functionName: "cancelGame",
126
- args: [gameId],
127
- account: this.walletClient.account,
128
- });
129
- const hash = await this.walletClient.writeContract(request);
130
- return this.publicClient.waitForTransactionReceipt({ hash });
131
- };
132
- leaveGame = async (gameId) => {
133
- if (!this.walletClient.account?.address)
134
- throw new Error("Account not found");
135
- const { request } = await this.publicClient.simulateContract({
136
- address: this.instanceAddress,
137
- abi: RankifyDiamondInstance_1.default,
138
- functionName: "leaveGame",
139
- args: [gameId],
140
- account: this.walletClient.account,
141
- });
142
- const hash = await this.walletClient.writeContract(request);
143
- return this.publicClient.waitForTransactionReceipt({ hash });
144
- };
145
- openRegistration = async (gameId) => {
146
- if (!this.walletClient.account?.address)
147
- throw new Error("Account not found");
148
- const { request } = await this.publicClient.simulateContract({
149
- address: this.instanceAddress,
150
- abi: RankifyDiamondInstance_1.default,
151
- functionName: "openRegistration",
152
- args: [gameId],
153
- account: this.walletClient.account,
154
- });
155
- const hash = await this.walletClient.writeContract(request);
156
- return this.publicClient.waitForTransactionReceipt({ hash });
157
- };
158
- setJoinRequirements = async (params) => {
159
- if (!this.walletClient.account?.address)
160
- throw new Error("Account not found");
161
- if (!params)
162
- throw new Error("params is required");
163
- const { request } = await this.publicClient.simulateContract({
164
- address: this.instanceAddress,
165
- abi: RankifyDiamondInstance_1.default,
166
- functionName: "setJoinRequirements",
167
- args: params,
168
- account: this.walletClient.account,
169
- });
170
- const hash = await this.walletClient.writeContract(request);
171
- return this.publicClient.waitForTransactionReceipt({ hash });
172
- };
173
- }
174
- exports.default = RankifyPlayer;
175
- //# sourceMappingURL=Player.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Player.js","sourceRoot":"","sources":["../../../src/rankify/Player.ts"],"names":[],"mappings":"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"}