@1upmonster/duel 0.1.8 → 0.2.2

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 (186) hide show
  1. package/README.md +110 -59
  2. package/dist/admin.d.ts +25 -40
  3. package/dist/admin.js +93 -114
  4. package/dist/encryption.js +1 -2
  5. package/dist/generated/duel/accounts/index.d.ts +10 -0
  6. package/dist/generated/duel/accounts/index.js +11 -0
  7. package/dist/generated/duel/accounts/matchTicket.d.ts +38 -0
  8. package/dist/generated/duel/accounts/matchTicket.js +45 -0
  9. package/dist/generated/duel/accounts/queue.d.ts +42 -0
  10. package/dist/generated/duel/accounts/queue.js +45 -0
  11. package/dist/generated/duel/accounts/tenant.d.ts +41 -0
  12. package/dist/generated/duel/accounts/tenant.js +44 -0
  13. package/dist/generated/duel/errors/duel.d.ts +31 -0
  14. package/dist/generated/duel/errors/duel.js +35 -0
  15. package/dist/generated/duel/errors/index.d.ts +8 -0
  16. package/dist/generated/duel/errors/index.js +9 -0
  17. package/dist/generated/duel/index.d.ts +12 -0
  18. package/dist/generated/duel/index.js +13 -0
  19. package/dist/generated/duel/instructions/cancelTicket.d.ts +45 -0
  20. package/dist/generated/duel/instructions/cancelTicket.js +56 -0
  21. package/dist/generated/duel/instructions/closeTicket.d.ts +45 -0
  22. package/dist/generated/duel/instructions/closeTicket.js +56 -0
  23. package/dist/generated/duel/instructions/commitTickets.d.ts +39 -0
  24. package/dist/generated/duel/instructions/commitTickets.js +50 -0
  25. package/dist/generated/duel/instructions/createTicket.d.ts +48 -0
  26. package/dist/generated/duel/instructions/createTicket.js +63 -0
  27. package/dist/generated/duel/instructions/delegateQueue.d.ts +69 -0
  28. package/dist/generated/duel/instructions/delegateQueue.js +90 -0
  29. package/dist/generated/duel/instructions/delegateTicket.d.ts +69 -0
  30. package/dist/generated/duel/instructions/delegateTicket.js +90 -0
  31. package/dist/generated/duel/instructions/flushMatches.d.ts +37 -0
  32. package/dist/generated/duel/instructions/flushMatches.js +43 -0
  33. package/dist/generated/duel/instructions/index.d.ts +19 -0
  34. package/dist/generated/duel/instructions/index.js +20 -0
  35. package/dist/generated/duel/instructions/initializeQueue.d.ts +48 -0
  36. package/dist/generated/duel/instructions/initializeQueue.js +63 -0
  37. package/dist/generated/duel/instructions/initializeTenant.d.ts +70 -0
  38. package/dist/generated/duel/instructions/initializeTenant.js +67 -0
  39. package/dist/generated/duel/instructions/joinQueue.d.ts +51 -0
  40. package/dist/generated/duel/instructions/joinQueue.js +56 -0
  41. package/dist/generated/duel/instructions/processUndelegation.d.ts +43 -0
  42. package/dist/generated/duel/instructions/processUndelegation.js +49 -0
  43. package/dist/generated/duel/instructions/setupTicketPermission.d.ts +54 -0
  44. package/dist/generated/duel/instructions/setupTicketPermission.js +63 -0
  45. package/dist/generated/duel/programs/duel.d.ts +92 -0
  46. package/dist/generated/duel/programs/duel.js +146 -0
  47. package/dist/generated/duel/programs/index.d.ts +8 -0
  48. package/dist/generated/duel/programs/index.js +9 -0
  49. package/dist/generated/duel/types/accountType.d.ts +25 -0
  50. package/dist/generated/duel/types/accountType.js +25 -0
  51. package/dist/generated/duel/types/index.d.ts +13 -0
  52. package/dist/generated/duel/types/index.js +14 -0
  53. package/dist/generated/duel/types/matchEntry.d.ts +23 -0
  54. package/dist/generated/duel/types/matchEntry.js +18 -0
  55. package/dist/generated/duel/types/matchFound.d.ts +23 -0
  56. package/dist/generated/duel/types/matchFound.js +18 -0
  57. package/dist/generated/duel/types/pendingMatch.d.ts +21 -0
  58. package/dist/generated/duel/types/pendingMatch.js +18 -0
  59. package/dist/generated/duel/types/queueEntry.d.ts +19 -0
  60. package/dist/generated/duel/types/queueEntry.js +18 -0
  61. package/dist/generated/duel/types/ticketStatus.d.ts +40 -0
  62. package/dist/generated/duel/types/ticketStatus.js +25 -0
  63. package/dist/generated/rps-game/accounts/gameSession.d.ts +40 -0
  64. package/dist/generated/rps-game/accounts/gameSession.js +45 -0
  65. package/dist/generated/rps-game/accounts/index.d.ts +9 -0
  66. package/dist/generated/rps-game/accounts/index.js +10 -0
  67. package/dist/generated/rps-game/accounts/playerProfile.d.ts +36 -0
  68. package/dist/generated/rps-game/accounts/playerProfile.js +47 -0
  69. package/dist/generated/rps-game/errors/index.d.ts +8 -0
  70. package/dist/generated/rps-game/errors/index.js +9 -0
  71. package/dist/generated/rps-game/errors/rpsGame.d.ts +25 -0
  72. package/dist/generated/rps-game/errors/rpsGame.js +29 -0
  73. package/dist/generated/rps-game/index.d.ts +12 -0
  74. package/dist/generated/rps-game/index.js +13 -0
  75. package/dist/generated/rps-game/instructions/closePlayer.d.ts +45 -0
  76. package/dist/generated/rps-game/instructions/closePlayer.js +56 -0
  77. package/dist/generated/rps-game/instructions/delegatePda.d.ts +69 -0
  78. package/dist/generated/rps-game/instructions/delegatePda.js +90 -0
  79. package/dist/generated/rps-game/instructions/index.d.ts +16 -0
  80. package/dist/generated/rps-game/instructions/index.js +17 -0
  81. package/dist/generated/rps-game/instructions/initializePlayer.d.ts +48 -0
  82. package/dist/generated/rps-game/instructions/initializePlayer.js +63 -0
  83. package/dist/generated/rps-game/instructions/makeChoice.d.ts +44 -0
  84. package/dist/generated/rps-game/instructions/makeChoice.js +46 -0
  85. package/dist/generated/rps-game/instructions/onMatchFound.d.ts +43 -0
  86. package/dist/generated/rps-game/instructions/onMatchFound.js +45 -0
  87. package/dist/generated/rps-game/instructions/persistResults.d.ts +43 -0
  88. package/dist/generated/rps-game/instructions/persistResults.js +50 -0
  89. package/dist/generated/rps-game/instructions/processUndelegation.d.ts +43 -0
  90. package/dist/generated/rps-game/instructions/processUndelegation.js +49 -0
  91. package/dist/generated/rps-game/instructions/startGame.d.ts +54 -0
  92. package/dist/generated/rps-game/instructions/startGame.js +67 -0
  93. package/dist/generated/rps-game/instructions/startGameWithTicket.d.ts +57 -0
  94. package/dist/generated/rps-game/instructions/startGameWithTicket.js +67 -0
  95. package/dist/generated/rps-game/programs/index.d.ts +8 -0
  96. package/dist/generated/rps-game/programs/index.js +9 -0
  97. package/dist/generated/rps-game/programs/rpsGame.d.ts +78 -0
  98. package/dist/generated/rps-game/programs/rpsGame.js +118 -0
  99. package/dist/generated/rps-game/types/accountType.d.ts +34 -0
  100. package/dist/generated/rps-game/types/accountType.js +25 -0
  101. package/dist/generated/rps-game/types/choice.d.ts +17 -0
  102. package/dist/generated/rps-game/types/choice.js +25 -0
  103. package/dist/generated/rps-game/types/gameResult.d.ts +26 -0
  104. package/dist/generated/rps-game/types/gameResult.js +25 -0
  105. package/dist/generated/rps-game/types/index.d.ts +10 -0
  106. package/dist/generated/rps-game/types/index.js +11 -0
  107. package/dist/index.d.ts +2 -1
  108. package/dist/index.js +3 -2
  109. package/dist/player.d.ts +25 -46
  110. package/dist/player.js +81 -140
  111. package/dist/tee.d.ts +14 -0
  112. package/dist/tee.js +62 -0
  113. package/dist/transaction.d.ts +11 -0
  114. package/dist/transaction.js +50 -0
  115. package/dist/utils.d.ts +4 -4
  116. package/dist/utils.js +23 -8
  117. package/package.json +3 -6
  118. package/src/admin.ts +151 -161
  119. package/src/duel.json +66 -7
  120. package/src/encryption.ts +0 -3
  121. package/src/generated/duel/accounts/index.ts +11 -0
  122. package/src/generated/duel/accounts/matchTicket.ts +77 -0
  123. package/src/generated/duel/accounts/queue.ts +77 -0
  124. package/src/generated/duel/accounts/tenant.ts +76 -0
  125. package/src/generated/duel/errors/duel.ts +46 -0
  126. package/src/generated/duel/errors/index.ts +9 -0
  127. package/src/generated/duel/index.ts +13 -0
  128. package/src/generated/duel/instructions/cancelTicket.ts +100 -0
  129. package/src/generated/duel/instructions/closeTicket.ts +100 -0
  130. package/src/generated/duel/instructions/commitTickets.ts +84 -0
  131. package/src/generated/duel/instructions/createTicket.ts +109 -0
  132. package/src/generated/duel/instructions/delegateQueue.ts +157 -0
  133. package/src/generated/duel/instructions/delegateTicket.ts +157 -0
  134. package/src/generated/duel/instructions/flushMatches.ts +76 -0
  135. package/src/generated/duel/instructions/index.ts +20 -0
  136. package/src/generated/duel/instructions/initializeQueue.ts +109 -0
  137. package/src/generated/duel/instructions/initializeTenant.ts +126 -0
  138. package/src/generated/duel/instructions/joinQueue.ts +106 -0
  139. package/src/generated/duel/instructions/processUndelegation.ts +86 -0
  140. package/src/generated/duel/instructions/setupTicketPermission.ts +115 -0
  141. package/src/generated/duel/programs/duel.ts +108 -0
  142. package/src/generated/duel/programs/index.ts +9 -0
  143. package/src/generated/duel/types/accountType.ts +36 -0
  144. package/src/generated/duel/types/index.ts +14 -0
  145. package/src/generated/duel/types/matchEntry.ts +25 -0
  146. package/src/generated/duel/types/matchFound.ts +25 -0
  147. package/src/generated/duel/types/pendingMatch.ts +25 -0
  148. package/src/generated/duel/types/queueEntry.ts +25 -0
  149. package/src/generated/duel/types/ticketStatus.ts +38 -0
  150. package/src/generated/rps-game/accounts/gameSession.ts +77 -0
  151. package/src/generated/rps-game/accounts/index.ts +10 -0
  152. package/src/generated/rps-game/accounts/playerProfile.ts +80 -0
  153. package/src/generated/rps-game/errors/index.ts +9 -0
  154. package/src/generated/rps-game/errors/rpsGame.ts +40 -0
  155. package/src/generated/rps-game/index.ts +13 -0
  156. package/src/generated/rps-game/instructions/closePlayer.ts +100 -0
  157. package/src/generated/rps-game/instructions/delegatePda.ts +157 -0
  158. package/src/generated/rps-game/instructions/index.ts +17 -0
  159. package/src/generated/rps-game/instructions/initializePlayer.ts +109 -0
  160. package/src/generated/rps-game/instructions/makeChoice.ts +84 -0
  161. package/src/generated/rps-game/instructions/onMatchFound.ts +79 -0
  162. package/src/generated/rps-game/instructions/persistResults.ts +88 -0
  163. package/src/generated/rps-game/instructions/processUndelegation.ts +86 -0
  164. package/src/generated/rps-game/instructions/startGame.ts +118 -0
  165. package/src/generated/rps-game/instructions/startGameWithTicket.ts +121 -0
  166. package/src/generated/rps-game/programs/index.ts +9 -0
  167. package/src/generated/rps-game/programs/rpsGame.ts +95 -0
  168. package/src/generated/rps-game/types/accountType.ts +36 -0
  169. package/src/generated/rps-game/types/choice.ts +25 -0
  170. package/src/generated/rps-game/types/gameResult.ts +37 -0
  171. package/src/generated/rps-game/types/index.ts +11 -0
  172. package/src/index.ts +2 -1
  173. package/src/player.ts +129 -192
  174. package/src/{idl/private_matchmaking.json → rps_game.json} +547 -583
  175. package/src/tee.ts +79 -0
  176. package/src/transaction.ts +90 -0
  177. package/src/utils.ts +35 -20
  178. package/tsconfig.json +2 -2
  179. package/dist/client.d.ts +0 -54
  180. package/dist/client.js +0 -265
  181. package/dist/duel.json +0 -1207
  182. package/dist/private_matchmaking.json +0 -534
  183. package/dist/types.d.ts +0 -635
  184. package/dist/types.js +0 -2
  185. package/src/idl/private_matchmaking.ts +0 -1033
  186. package/src/types.ts +0 -300
@@ -1,31 +1,27 @@
1
1
  {
2
- "address": "DdBj92msRBH5yC22AjbBo86AdvAJSTFvCXU4nAf2mGZm",
2
+ "address": "8ohu3RobXyZ2DebyJjbs2co9YCG275FUsVckEcmDbCos",
3
3
  "metadata": {
4
- "name": "private_matchmaking",
4
+ "name": "rps_game",
5
5
  "version": "0.1.0",
6
6
  "spec": "0.1.0",
7
7
  "description": "Created with Anchor"
8
8
  },
9
9
  "instructions": [
10
10
  {
11
- "name": "close_page",
11
+ "name": "close_player",
12
12
  "discriminator": [
13
- 205,
14
- 141,
15
- 25,
16
- 179,
17
- 31,
18
- 1,
19
- 103,
20
- 43
13
+ 225,
14
+ 227,
15
+ 204,
16
+ 63,
17
+ 32,
18
+ 122,
19
+ 58,
20
+ 227
21
21
  ],
22
22
  "accounts": [
23
23
  {
24
- "name": "queue",
25
- "writable": true
26
- },
27
- {
28
- "name": "page",
24
+ "name": "profile",
29
25
  "writable": true,
30
26
  "pda": {
31
27
  "seeds": [
@@ -33,138 +29,54 @@
33
29
  "kind": "const",
34
30
  "value": [
35
31
  112,
32
+ 108,
36
33
  97,
37
- 103,
38
- 101
39
- ]
40
- },
41
- {
42
- "kind": "account",
43
- "path": "queue"
44
- },
45
- {
46
- "kind": "arg",
47
- "path": "page_index"
48
- }
49
- ]
50
- }
51
- },
52
- {
53
- "name": "authority",
54
- "writable": true,
55
- "signer": true
56
- }
57
- ],
58
- "args": [
59
- {
60
- "name": "_page_index",
61
- "type": "u64"
62
- }
63
- ]
64
- },
65
- {
66
- "name": "close_queue",
67
- "discriminator": [
68
- 199,
69
- 20,
70
- 99,
71
- 205,
72
- 82,
73
- 40,
74
- 134,
75
- 109
76
- ],
77
- "accounts": [
78
- {
79
- "name": "queue",
80
- "writable": true,
81
- "pda": {
82
- "seeds": [
83
- {
84
- "kind": "const",
85
- "value": [
86
- 113,
87
- 117,
88
- 101,
89
- 117,
34
+ 121,
90
35
  101,
91
- 45,
92
- 104,
36
+ 114,
37
+ 95,
38
+ 112,
39
+ 114,
40
+ 111,
41
+ 102,
42
+ 105,
43
+ 108,
93
44
  101,
94
- 97,
95
- 100
45
+ 95,
46
+ 118,
47
+ 51,
48
+ 53
96
49
  ]
97
50
  },
98
51
  {
99
52
  "kind": "account",
100
- "path": "authority"
101
- },
102
- {
103
- "kind": "arg",
104
- "path": "queue_id"
53
+ "path": "player"
105
54
  }
106
55
  ]
107
56
  }
108
57
  },
109
58
  {
110
- "name": "authority",
111
- "writable": true,
112
- "signer": true
113
- }
114
- ],
115
- "args": [
116
- {
117
- "name": "_queue_id",
118
- "type": "string"
119
- }
120
- ]
121
- },
122
- {
123
- "name": "create_mock_player",
124
- "discriminator": [
125
- 168,
126
- 23,
127
- 255,
128
- 112,
129
- 93,
130
- 42,
131
- 58,
132
- 223
133
- ],
134
- "accounts": [
135
- {
136
- "name": "player_account",
137
- "writable": true,
138
- "signer": true
139
- },
140
- {
141
- "name": "authority",
142
- "writable": true,
59
+ "name": "player",
143
60
  "signer": true
144
61
  },
145
62
  {
146
- "name": "system_program",
147
- "address": "11111111111111111111111111111111"
63
+ "name": "payer",
64
+ "writable": true
148
65
  }
149
66
  ],
150
- "args": [
151
- {
152
- "name": "elo",
153
- "type": "u64"
154
- }
155
- ]
67
+ "args": []
156
68
  },
157
69
  {
158
- "name": "delegate_queue",
70
+ "name": "delegate_pda",
159
71
  "discriminator": [
160
- 31,
161
- 200,
162
- 139,
163
- 125,
164
- 93,
165
- 239,
166
- 83,
167
- 87
72
+ 248,
73
+ 217,
74
+ 193,
75
+ 46,
76
+ 124,
77
+ 191,
78
+ 64,
79
+ 135
168
80
  ],
169
81
  "accounts": [
170
82
  {
@@ -191,38 +103,38 @@
191
103
  "program": {
192
104
  "kind": "const",
193
105
  "value": [
194
- 187,
195
- 145,
196
- 71,
197
- 224,
198
- 31,
199
- 36,
106
+ 115,
107
+ 248,
108
+ 196,
109
+ 181,
110
+ 159,
111
+ 143,
112
+ 138,
113
+ 238,
114
+ 148,
115
+ 225,
116
+ 132,
117
+ 191,
118
+ 0,
119
+ 72,
120
+ 2,
121
+ 22,
122
+ 197,
123
+ 130,
124
+ 14,
125
+ 154,
126
+ 122,
127
+ 229,
128
+ 203,
129
+ 173,
130
+ 165,
200
131
  128,
201
- 147,
202
- 29,
203
- 187,
204
- 82,
205
- 52,
206
- 119,
207
- 101,
208
- 210,
209
- 112,
210
- 67,
211
- 137,
212
- 5,
213
- 133,
214
- 51,
215
- 149,
216
- 134,
217
- 253,
218
- 182,
219
- 36,
220
- 207,
221
- 205,
222
- 109,
223
- 77,
224
- 127,
225
- 248
132
+ 238,
133
+ 37,
134
+ 164,
135
+ 236,
136
+ 244,
137
+ 250
226
138
  ]
227
139
  }
228
140
  }
@@ -300,38 +212,7 @@
300
212
  },
301
213
  {
302
214
  "name": "pda",
303
- "writable": true,
304
- "pda": {
305
- "seeds": [
306
- {
307
- "kind": "const",
308
- "value": [
309
- 113,
310
- 117,
311
- 101,
312
- 117,
313
- 101,
314
- 45,
315
- 104,
316
- 101,
317
- 97,
318
- 100
319
- ]
320
- },
321
- {
322
- "kind": "account",
323
- "path": "authority"
324
- },
325
- {
326
- "kind": "arg",
327
- "path": "queue_id"
328
- }
329
- ]
330
- }
331
- },
332
- {
333
- "name": "authority",
334
- "signer": true
215
+ "writable": true
335
216
  },
336
217
  {
337
218
  "name": "payer",
@@ -344,7 +225,7 @@
344
225
  },
345
226
  {
346
227
  "name": "owner_program",
347
- "address": "DdBj92msRBH5yC22AjbBo86AdvAJSTFvCXU4nAf2mGZm"
228
+ "address": "8ohu3RobXyZ2DebyJjbs2co9YCG275FUsVckEcmDbCos"
348
229
  },
349
230
  {
350
231
  "name": "delegation_program",
@@ -357,30 +238,30 @@
357
238
  ],
358
239
  "args": [
359
240
  {
360
- "name": "queue_id",
361
- "type": "string"
241
+ "name": "account_type",
242
+ "type": {
243
+ "defined": {
244
+ "name": "AccountType"
245
+ }
246
+ }
362
247
  }
363
248
  ]
364
249
  },
365
250
  {
366
- "name": "initialize_page",
251
+ "name": "initialize_player",
367
252
  "discriminator": [
368
- 26,
369
- 128,
370
- 8,
371
- 201,
372
- 196,
373
- 58,
374
- 74,
375
- 74
253
+ 79,
254
+ 249,
255
+ 88,
256
+ 177,
257
+ 220,
258
+ 62,
259
+ 56,
260
+ 128
376
261
  ],
377
262
  "accounts": [
378
263
  {
379
- "name": "queue",
380
- "writable": true
381
- },
382
- {
383
- "name": "page",
264
+ "name": "profile",
384
265
  "writable": true,
385
266
  "pda": {
386
267
  "seeds": [
@@ -388,24 +269,39 @@
388
269
  "kind": "const",
389
270
  "value": [
390
271
  112,
272
+ 108,
391
273
  97,
392
- 103,
393
- 101
274
+ 121,
275
+ 101,
276
+ 114,
277
+ 95,
278
+ 112,
279
+ 114,
280
+ 111,
281
+ 102,
282
+ 105,
283
+ 108,
284
+ 101,
285
+ 95,
286
+ 118,
287
+ 51,
288
+ 53
394
289
  ]
395
290
  },
396
291
  {
397
292
  "kind": "account",
398
- "path": "queue"
399
- },
400
- {
401
- "kind": "arg",
402
- "path": "page_index"
293
+ "path": "player"
403
294
  }
404
295
  ]
405
296
  }
406
297
  },
407
298
  {
408
- "name": "authority",
299
+ "name": "player",
300
+ "writable": true,
301
+ "signer": true
302
+ },
303
+ {
304
+ "name": "payer",
409
305
  "writable": true,
410
306
  "signer": true
411
307
  },
@@ -414,211 +310,192 @@
414
310
  "address": "11111111111111111111111111111111"
415
311
  }
416
312
  ],
417
- "args": [
418
- {
419
- "name": "page_index",
420
- "type": "u64"
421
- }
422
- ]
313
+ "args": []
423
314
  },
424
315
  {
425
- "name": "initialize_queue",
316
+ "name": "make_choice",
426
317
  "discriminator": [
427
- 174,
428
- 102,
429
- 132,
430
- 232,
431
- 90,
432
- 202,
433
- 27,
434
- 20
318
+ 207,
319
+ 18,
320
+ 251,
321
+ 32,
322
+ 135,
323
+ 122,
324
+ 160,
325
+ 77
435
326
  ],
436
327
  "accounts": [
437
328
  {
438
- "name": "queue",
329
+ "name": "game_session",
330
+ "writable": true
331
+ },
332
+ {
333
+ "name": "player1_profile",
439
334
  "writable": true,
440
335
  "pda": {
441
336
  "seeds": [
442
337
  {
443
338
  "kind": "const",
444
339
  "value": [
445
- 113,
446
- 117,
447
- 101,
448
- 117,
340
+ 112,
341
+ 108,
342
+ 97,
343
+ 121,
449
344
  101,
450
- 45,
451
- 104,
345
+ 114,
346
+ 95,
347
+ 112,
348
+ 114,
349
+ 111,
350
+ 102,
351
+ 105,
352
+ 108,
452
353
  101,
453
- 97,
454
- 100
354
+ 95,
355
+ 118,
356
+ 51,
357
+ 53
455
358
  ]
456
359
  },
457
360
  {
458
361
  "kind": "account",
459
- "path": "authority"
460
- },
461
- {
462
- "kind": "arg",
463
- "path": "queue_id"
362
+ "path": "game_session.player1",
363
+ "account": "GameSession"
464
364
  }
465
365
  ]
466
366
  }
467
367
  },
468
368
  {
469
- "name": "tenant_program_id"
470
- },
471
- {
472
- "name": "authority",
369
+ "name": "player2_profile",
473
370
  "writable": true,
474
- "signer": true
371
+ "pda": {
372
+ "seeds": [
373
+ {
374
+ "kind": "const",
375
+ "value": [
376
+ 112,
377
+ 108,
378
+ 97,
379
+ 121,
380
+ 101,
381
+ 114,
382
+ 95,
383
+ 112,
384
+ 114,
385
+ 111,
386
+ 102,
387
+ 105,
388
+ 108,
389
+ 101,
390
+ 95,
391
+ 118,
392
+ 51,
393
+ 53
394
+ ]
395
+ },
396
+ {
397
+ "kind": "account",
398
+ "path": "game_session.player2",
399
+ "account": "GameSession"
400
+ }
401
+ ]
402
+ }
475
403
  },
476
404
  {
477
- "name": "system_program",
478
- "address": "11111111111111111111111111111111"
405
+ "name": "player",
406
+ "signer": true
479
407
  }
480
408
  ],
481
409
  "args": [
482
410
  {
483
- "name": "_queue_id",
484
- "type": "string"
485
- },
486
- {
487
- "name": "config",
411
+ "name": "choice",
488
412
  "type": {
489
413
  "defined": {
490
- "name": "QueueConfig"
414
+ "name": "Choice"
491
415
  }
492
416
  }
417
+ }
418
+ ]
419
+ },
420
+ {
421
+ "name": "on_match_found",
422
+ "docs": [
423
+ "Callback handler invoked by the duel program after a match is committed.",
424
+ "Demonstrates the CPI callback pattern for permissionless integration."
425
+ ],
426
+ "discriminator": [
427
+ 66,
428
+ 209,
429
+ 170,
430
+ 159,
431
+ 10,
432
+ 195,
433
+ 34,
434
+ 214
435
+ ],
436
+ "accounts": [
437
+ {
438
+ "name": "signer",
439
+ "signer": true
440
+ }
441
+ ],
442
+ "args": [
443
+ {
444
+ "name": "player1",
445
+ "type": "pubkey"
493
446
  },
494
447
  {
495
- "name": "capacity",
496
- "type": "u16"
448
+ "name": "player2",
449
+ "type": "pubkey"
497
450
  },
498
451
  {
499
- "name": "page_size",
500
- "type": "u8"
452
+ "name": "match_id",
453
+ "type": "u64"
501
454
  }
502
455
  ]
503
456
  },
504
457
  {
505
- "name": "join_queue",
458
+ "name": "persist_results",
506
459
  "discriminator": [
507
- 157,
508
- 115,
460
+ 9,
461
+ 175,
462
+ 42,
463
+ 217,
464
+ 2,
509
465
  48,
510
- 109,
511
- 65,
512
- 86,
513
- 203,
514
- 238
466
+ 80,
467
+ 81
515
468
  ],
516
469
  "accounts": [
517
470
  {
518
- "name": "queue",
471
+ "name": "game_session",
519
472
  "writable": true
520
473
  },
521
474
  {
522
- "name": "page",
475
+ "name": "player1_profile",
523
476
  "writable": true
524
477
  },
525
478
  {
526
- "name": "player_status",
527
- "writable": true,
528
- "pda": {
529
- "seeds": [
530
- {
531
- "kind": "const",
532
- "value": [
533
- 115,
534
- 116,
535
- 97,
536
- 116,
537
- 117,
538
- 115
539
- ]
540
- },
541
- {
542
- "kind": "account",
543
- "path": "player_game_account"
544
- }
545
- ]
546
- }
479
+ "name": "player2_profile",
480
+ "writable": true
547
481
  },
548
482
  {
549
- "name": "player_authority",
483
+ "name": "payer",
550
484
  "writable": true,
551
485
  "signer": true
552
486
  },
553
487
  {
554
- "name": "player_game_account",
555
- "docs": [
556
- "The account containing ELO data"
557
- ]
558
- },
559
- {
560
- "name": "tenant_program",
561
- "docs": [
562
- "MUST match the queue.tenant_program_id (Checked manually)."
563
- ]
488
+ "name": "magic_program",
489
+ "address": "Magic11111111111111111111111111111111111111"
564
490
  },
565
491
  {
566
- "name": "system_program",
567
- "address": "11111111111111111111111111111111"
492
+ "name": "magic_context",
493
+ "writable": true,
494
+ "address": "MagicContext1111111111111111111111111111111"
568
495
  }
569
496
  ],
570
497
  "args": []
571
498
  },
572
- {
573
- "name": "process_match",
574
- "discriminator": [
575
- 139,
576
- 58,
577
- 77,
578
- 101,
579
- 46,
580
- 54,
581
- 202,
582
- 140
583
- ],
584
- "accounts": [
585
- {
586
- "name": "queue_account",
587
- "writable": true
588
- },
589
- {
590
- "name": "page",
591
- "writable": true,
592
- "pda": {
593
- "seeds": [
594
- {
595
- "kind": "const",
596
- "value": [
597
- 112,
598
- 97,
599
- 103,
600
- 101
601
- ]
602
- },
603
- {
604
- "kind": "account",
605
- "path": "queue_account"
606
- },
607
- {
608
- "kind": "arg",
609
- "path": "page_index"
610
- }
611
- ]
612
- }
613
- }
614
- ],
615
- "args": [
616
- {
617
- "name": "_page_index",
618
- "type": "u64"
619
- }
620
- ]
621
- },
622
499
  {
623
500
  "name": "process_undelegation",
624
501
  "discriminator": [
@@ -657,368 +534,455 @@
657
534
  ]
658
535
  },
659
536
  {
660
- "name": "resize_queue",
537
+ "name": "setup_game_session_permission",
538
+ "docs": [
539
+ "Set up permission for a game session PDA so co-authorities can write it on TEE.",
540
+ "`player1`, `player2`, `game_id`, and `bump` identify the exact session PDA.",
541
+ "Must be called BEFORE delegate_pda while the program still owns the PDA."
542
+ ],
661
543
  "discriminator": [
662
- 140,
663
- 145,
664
- 226,
665
- 236,
666
- 71,
667
- 103,
668
- 230,
669
- 105
544
+ 247,
545
+ 246,
546
+ 24,
547
+ 111,
548
+ 9,
549
+ 186,
550
+ 33,
551
+ 115
670
552
  ],
671
553
  "accounts": [
672
554
  {
673
- "name": "queue",
555
+ "name": "game_session"
556
+ },
557
+ {
558
+ "name": "payer",
559
+ "writable": true,
560
+ "signer": true
561
+ },
562
+ {
563
+ "name": "permission",
674
564
  "writable": true
675
565
  },
676
566
  {
677
- "name": "authority",
678
- "signer": true,
679
- "relations": [
680
- "queue"
681
- ]
567
+ "name": "permission_program"
568
+ },
569
+ {
570
+ "name": "system_program",
571
+ "address": "11111111111111111111111111111111"
682
572
  }
683
573
  ],
684
574
  "args": [
685
575
  {
686
- "name": "new_capacity",
687
- "type": "u16"
576
+ "name": "player1",
577
+ "type": "pubkey"
578
+ },
579
+ {
580
+ "name": "player2",
581
+ "type": "pubkey"
582
+ },
583
+ {
584
+ "name": "game_id",
585
+ "type": "u64"
586
+ },
587
+ {
588
+ "name": "bump",
589
+ "type": "u8"
590
+ },
591
+ {
592
+ "name": "co_authority",
593
+ "type": "pubkey"
688
594
  }
689
595
  ]
690
596
  },
691
597
  {
692
- "name": "unlock_player",
598
+ "name": "setup_profile_permission",
599
+ "docs": [
600
+ "Set up permission for player profile PDA so a co-authority can write it on TEE.",
601
+ "`bump` is the PDA bump from `find_program_address`.",
602
+ "Must be called BEFORE delegate_pda while the program still owns the PDA."
603
+ ],
693
604
  "discriminator": [
694
- 226,
695
- 41,
696
- 76,
697
- 17,
698
- 253,
699
- 9,
700
- 82,
701
- 188
605
+ 73,
606
+ 8,
607
+ 18,
608
+ 120,
609
+ 36,
610
+ 201,
611
+ 159,
612
+ 80
702
613
  ],
703
614
  "accounts": [
704
615
  {
705
- "name": "queue"
616
+ "name": "profile"
706
617
  },
707
618
  {
708
- "name": "authority",
619
+ "name": "player",
709
620
  "writable": true,
710
621
  "signer": true
711
622
  },
712
623
  {
713
- "name": "player_status",
624
+ "name": "permission",
625
+ "writable": true
626
+ },
627
+ {
628
+ "name": "permission_program"
629
+ },
630
+ {
631
+ "name": "system_program",
632
+ "address": "11111111111111111111111111111111"
633
+ }
634
+ ],
635
+ "args": [
636
+ {
637
+ "name": "bump",
638
+ "type": "u8"
639
+ },
640
+ {
641
+ "name": "co_authority",
642
+ "type": "pubkey"
643
+ }
644
+ ]
645
+ },
646
+ {
647
+ "name": "start_game",
648
+ "discriminator": [
649
+ 249,
650
+ 47,
651
+ 252,
652
+ 172,
653
+ 184,
654
+ 162,
655
+ 245,
656
+ 14
657
+ ],
658
+ "accounts": [
659
+ {
660
+ "name": "game_session",
714
661
  "writable": true,
715
662
  "pda": {
716
663
  "seeds": [
717
664
  {
718
665
  "kind": "const",
719
666
  "value": [
720
- 115,
721
- 116,
667
+ 103,
722
668
  97,
723
- 116,
724
- 117,
725
- 115
669
+ 109,
670
+ 101,
671
+ 95,
672
+ 115,
673
+ 101,
674
+ 115,
675
+ 115,
676
+ 105,
677
+ 111,
678
+ 110,
679
+ 95,
680
+ 118,
681
+ 49
726
682
  ]
727
683
  },
728
684
  {
729
685
  "kind": "account",
730
- "path": "player_game_account"
686
+ "path": "player"
687
+ },
688
+ {
689
+ "kind": "arg",
690
+ "path": "opponent"
691
+ },
692
+ {
693
+ "kind": "arg",
694
+ "path": "game_id"
731
695
  }
732
696
  ]
733
697
  }
734
698
  },
735
699
  {
736
700
  "name": "player",
737
- "writable": true
701
+ "writable": true,
702
+ "signer": true
738
703
  },
739
704
  {
740
- "name": "player_game_account"
705
+ "name": "system_program",
706
+ "address": "11111111111111111111111111111111"
741
707
  }
742
708
  ],
743
- "args": []
744
- }
745
- ],
746
- "accounts": [
747
- {
748
- "name": "MockPlayer",
749
- "discriminator": [
750
- 128,
751
- 205,
752
- 19,
753
- 217,
754
- 238,
755
- 150,
756
- 18,
757
- 255
758
- ]
759
- },
760
- {
761
- "name": "PlayerStatus",
762
- "discriminator": [
763
- 28,
764
- 122,
765
- 125,
766
- 124,
767
- 167,
768
- 143,
769
- 216,
770
- 176
709
+ "args": [
710
+ {
711
+ "name": "game_id",
712
+ "type": "u64"
713
+ },
714
+ {
715
+ "name": "opponent",
716
+ "type": "pubkey"
717
+ }
771
718
  ]
772
719
  },
773
720
  {
774
- "name": "QueueHead",
721
+ "name": "start_game_with_ticket",
722
+ "docs": [
723
+ "Start game with MatchTicket verification - proves the match was legitimately found"
724
+ ],
775
725
  "discriminator": [
776
- 252,
777
- 245,
778
- 9,
779
- 149,
780
- 18,
781
- 35,
782
- 210,
783
- 142
726
+ 2,
727
+ 250,
728
+ 253,
729
+ 202,
730
+ 51,
731
+ 138,
732
+ 80,
733
+ 20
734
+ ],
735
+ "accounts": [
736
+ {
737
+ "name": "game_session",
738
+ "writable": true,
739
+ "pda": {
740
+ "seeds": [
741
+ {
742
+ "kind": "const",
743
+ "value": [
744
+ 103,
745
+ 97,
746
+ 109,
747
+ 101,
748
+ 95,
749
+ 115,
750
+ 101,
751
+ 115,
752
+ 115,
753
+ 105,
754
+ 111,
755
+ 110,
756
+ 95,
757
+ 118,
758
+ 49
759
+ ]
760
+ },
761
+ {
762
+ "kind": "account",
763
+ "path": "player"
764
+ },
765
+ {
766
+ "kind": "arg",
767
+ "path": "opponent"
768
+ },
769
+ {
770
+ "kind": "arg",
771
+ "path": "game_id"
772
+ }
773
+ ]
774
+ }
775
+ },
776
+ {
777
+ "name": "player",
778
+ "writable": true,
779
+ "signer": true
780
+ },
781
+ {
782
+ "name": "match_ticket"
783
+ },
784
+ {
785
+ "name": "system_program",
786
+ "address": "11111111111111111111111111111111"
787
+ }
788
+ ],
789
+ "args": [
790
+ {
791
+ "name": "game_id",
792
+ "type": "u64"
793
+ },
794
+ {
795
+ "name": "opponent",
796
+ "type": "pubkey"
797
+ }
784
798
  ]
785
- },
799
+ }
800
+ ],
801
+ "accounts": [
786
802
  {
787
- "name": "QueuePage",
803
+ "name": "GameSession",
788
804
  "discriminator": [
789
- 44,
790
- 9,
791
- 254,
792
- 108,
805
+ 150,
806
+ 116,
807
+ 20,
808
+ 197,
809
+ 205,
793
810
  121,
794
- 225,
795
- 80,
796
- 69
811
+ 220,
812
+ 240
797
813
  ]
798
- }
799
- ],
800
- "events": [
814
+ },
801
815
  {
802
- "name": "MatchFound",
816
+ "name": "PlayerProfile",
803
817
  "discriminator": [
804
- 73,
805
- 161,
806
- 70,
807
- 145,
808
- 232,
809
- 249,
810
- 72,
811
- 211
818
+ 82,
819
+ 226,
820
+ 99,
821
+ 87,
822
+ 164,
823
+ 130,
824
+ 181,
825
+ 80
812
826
  ]
813
827
  }
814
828
  ],
815
829
  "errors": [
816
830
  {
817
831
  "code": 6000,
818
- "name": "InvalidAccountOwner",
819
- "msg": "Account owner is invalid"
832
+ "name": "AlreadyChose",
833
+ "msg": "Already chose"
820
834
  },
821
835
  {
822
836
  "code": 6001,
823
- "name": "QueueFull",
824
- "msg": "Queue is full"
837
+ "name": "InvalidPlayer",
838
+ "msg": "Invalid player"
825
839
  },
826
840
  {
827
841
  "code": 6002,
828
- "name": "AccountTooSmall",
829
- "msg": "Account data too small for ELO offset"
830
- },
831
- {
832
- "code": 6003,
833
- "name": "InvalidEloType",
834
- "msg": "Invalid ELO type configuration"
835
- },
836
- {
837
- "code": 6004,
838
- "name": "IndexOutOfBounds",
839
- "msg": "Page index out of bounds"
842
+ "name": "InvalidMatchTicket",
843
+ "msg": "Invalid match ticket - not matched or wrong opponent"
840
844
  }
841
845
  ],
842
846
  "types": [
843
847
  {
844
- "name": "MatchFound",
848
+ "name": "AccountType",
845
849
  "type": {
846
- "kind": "struct",
847
- "fields": [
848
- {
849
- "name": "queue",
850
- "type": "pubkey"
851
- },
852
- {
853
- "name": "player_a",
854
- "type": "pubkey"
855
- },
850
+ "kind": "enum",
851
+ "variants": [
856
852
  {
857
- "name": "player_b",
858
- "type": "pubkey"
859
- },
860
- {
861
- "name": "elo_a",
862
- "type": "u64"
863
- },
864
- {
865
- "name": "elo_b",
866
- "type": "u64"
853
+ "name": "PlayerProfile",
854
+ "fields": [
855
+ {
856
+ "name": "player",
857
+ "type": "pubkey"
858
+ }
859
+ ]
867
860
  },
868
861
  {
869
- "name": "timestamp",
870
- "type": "i64"
862
+ "name": "GameSession",
863
+ "fields": [
864
+ {
865
+ "name": "p1",
866
+ "type": "pubkey"
867
+ },
868
+ {
869
+ "name": "p2",
870
+ "type": "pubkey"
871
+ },
872
+ {
873
+ "name": "id",
874
+ "type": "u64"
875
+ }
876
+ ]
871
877
  }
872
878
  ]
873
879
  }
874
880
  },
875
881
  {
876
- "name": "MockPlayer",
882
+ "name": "Choice",
877
883
  "type": {
878
- "kind": "struct",
879
- "fields": [
884
+ "kind": "enum",
885
+ "variants": [
880
886
  {
881
- "name": "elo",
882
- "type": "u64"
887
+ "name": "Rock"
888
+ },
889
+ {
890
+ "name": "Paper"
891
+ },
892
+ {
893
+ "name": "Scissors"
883
894
  }
884
895
  ]
885
896
  }
886
897
  },
887
898
  {
888
- "name": "PlayerEntry",
899
+ "name": "GameResult",
889
900
  "type": {
890
- "kind": "struct",
891
- "fields": [
901
+ "kind": "enum",
902
+ "variants": [
892
903
  {
893
- "name": "authority",
894
- "type": "pubkey"
895
- },
896
- {
897
- "name": "account",
898
- "type": "pubkey"
904
+ "name": "Winner",
905
+ "fields": [
906
+ "pubkey"
907
+ ]
899
908
  },
900
909
  {
901
- "name": "elo",
902
- "type": "u64"
910
+ "name": "Tie"
903
911
  },
904
912
  {
905
- "name": "joined_at",
906
- "type": "i64"
913
+ "name": "None"
907
914
  }
908
915
  ]
909
916
  }
910
917
  },
911
918
  {
912
- "name": "PlayerStatus",
919
+ "name": "GameSession",
913
920
  "type": {
914
921
  "kind": "struct",
915
922
  "fields": [
916
923
  {
917
- "name": "player",
918
- "type": "pubkey"
924
+ "name": "game_id",
925
+ "type": "u64"
919
926
  },
920
927
  {
921
- "name": "queue",
928
+ "name": "player1",
922
929
  "type": "pubkey"
923
930
  },
924
931
  {
925
- "name": "in_match",
926
- "type": "bool"
927
- },
928
- {
929
- "name": "joined_at",
930
- "type": "i64"
932
+ "name": "player2",
933
+ "type": "pubkey"
931
934
  },
932
935
  {
933
- "name": "bump",
934
- "type": "u8"
935
- }
936
- ]
937
- }
938
- },
939
- {
940
- "name": "QueueConfig",
941
- "type": {
942
- "kind": "struct",
943
- "fields": [
944
- {
945
- "name": "match_threshold",
946
- "type": "u32"
936
+ "name": "player1_choice",
937
+ "type": {
938
+ "option": {
939
+ "defined": {
940
+ "name": "Choice"
941
+ }
942
+ }
943
+ }
947
944
  },
948
945
  {
949
- "name": "search_window",
950
- "type": "u32"
946
+ "name": "player2_choice",
947
+ "type": {
948
+ "option": {
949
+ "defined": {
950
+ "name": "Choice"
951
+ }
952
+ }
953
+ }
951
954
  },
952
955
  {
953
- "name": "reserved",
956
+ "name": "result",
954
957
  "type": {
955
- "array": [
956
- "u8",
957
- 64
958
- ]
958
+ "defined": {
959
+ "name": "GameResult"
960
+ }
959
961
  }
960
962
  }
961
963
  ]
962
964
  }
963
965
  },
964
966
  {
965
- "name": "QueueHead",
967
+ "name": "PlayerProfile",
966
968
  "type": {
967
969
  "kind": "struct",
968
970
  "fields": [
969
971
  {
970
- "name": "authority",
971
- "type": "pubkey"
972
- },
973
- {
974
- "name": "tenant_program_id",
972
+ "name": "player",
975
973
  "type": "pubkey"
976
974
  },
977
975
  {
978
- "name": "config",
979
- "type": {
980
- "defined": {
981
- "name": "QueueConfig"
982
- }
983
- }
984
- },
985
- {
986
- "name": "capacity",
987
- "type": "u16"
988
- },
989
- {
990
- "name": "page_size",
991
- "type": "u8"
992
- },
993
- {
994
- "name": "write_page_index",
976
+ "name": "elo",
995
977
  "type": "u64"
996
978
  },
997
979
  {
998
- "name": "read_page_index",
980
+ "name": "games_played",
999
981
  "type": "u64"
1000
982
  },
1001
983
  {
1002
- "name": "bump",
1003
- "type": "u8"
1004
- }
1005
- ]
1006
- }
1007
- },
1008
- {
1009
- "name": "QueuePage",
1010
- "type": {
1011
- "kind": "struct",
1012
- "fields": [
1013
- {
1014
- "name": "players",
1015
- "type": {
1016
- "vec": {
1017
- "defined": {
1018
- "name": "PlayerEntry"
1019
- }
1020
- }
1021
- }
984
+ "name": "games_won",
985
+ "type": "u64"
1022
986
  }
1023
987
  ]
1024
988
  }