@actuallyfair/verifier 0.0.3 → 0.0.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.
@@ -0,0 +1,495 @@
1
+ import { DuelPlinkoRisk } from "./generated/context/plinko";
2
+
3
+ export const DUEL_PLINKO_RISK_KEYS = ["low", "medium", "high"] as const;
4
+ export type DuelPlinkoRiskKey = (typeof DUEL_PLINKO_RISK_KEYS)[number];
5
+
6
+ const DUEL_PLINKO_RISK_ENUM_BY_KEY: Record<DuelPlinkoRiskKey, DuelPlinkoRisk> = {
7
+ low: DuelPlinkoRisk.DUEL_PLINKO_RISK_LOW,
8
+ medium: DuelPlinkoRisk.DUEL_PLINKO_RISK_MEDIUM,
9
+ high: DuelPlinkoRisk.DUEL_PLINKO_RISK_HIGH,
10
+ };
11
+
12
+ const DUEL_PLINKO_RISK_KEY_BY_ENUM: Partial<Record<DuelPlinkoRisk, DuelPlinkoRiskKey>> = {
13
+ [DuelPlinkoRisk.DUEL_PLINKO_RISK_LOW]: "low",
14
+ [DuelPlinkoRisk.DUEL_PLINKO_RISK_MEDIUM]: "medium",
15
+ [DuelPlinkoRisk.DUEL_PLINKO_RISK_HIGH]: "high",
16
+ };
17
+
18
+ export const DUEL_PLINKO_PAYOUTS: Record<
19
+ number,
20
+ Record<DuelPlinkoRiskKey, number[]>
21
+ > = {
22
+ "8": {
23
+ "low": [
24
+ 5.6518011,
25
+ 2.11942541,
26
+ 1.11017522,
27
+ 1.0092502,
28
+ 0.5046251,
29
+ 1.0092502,
30
+ 1.11017522,
31
+ 2.11942541,
32
+ 5.6518011
33
+ ],
34
+ "medium": [
35
+ 13.13061611,
36
+ 3.03014218,
37
+ 1.31306161,
38
+ 0.70703318,
39
+ 0.40401896,
40
+ 0.70703318,
41
+ 1.31306161,
42
+ 3.03014218,
43
+ 13.13061611
44
+ ],
45
+ "high": [
46
+ 29.2451735,
47
+ 4.03381703,
48
+ 1.51268139,
49
+ 0.30253628,
50
+ 0.20169085,
51
+ 0.30253628,
52
+ 1.51268139,
53
+ 4.03381703,
54
+ 29.2451735
55
+ ]
56
+ },
57
+ "9": {
58
+ "low": [
59
+ 5.6518011,
60
+ 2.01850039,
61
+ 1.61480032,
62
+ 1.0092502,
63
+ 0.70647514,
64
+ 0.70647514,
65
+ 1.0092502,
66
+ 1.61480032,
67
+ 2.01850039,
68
+ 5.6518011
69
+ ],
70
+ "medium": [
71
+ 18.13787234,
72
+ 4.0306383,
73
+ 1.71302128,
74
+ 0.90689362,
75
+ 0.50382979,
76
+ 0.50382979,
77
+ 0.90689362,
78
+ 1.71302128,
79
+ 4.0306383,
80
+ 18.13787234
81
+ ],
82
+ "high": [
83
+ 43.36353312,
84
+ 7.05917981,
85
+ 2.01690852,
86
+ 0.60507256,
87
+ 0.20169085,
88
+ 0.20169085,
89
+ 0.60507256,
90
+ 2.01690852,
91
+ 7.05917981,
92
+ 43.36353312
93
+ ]
94
+ },
95
+ "10": {
96
+ "low": [
97
+ 8.98055474,
98
+ 3.02715328,
99
+ 1.41267153,
100
+ 1.1099562,
101
+ 1.00905109,
102
+ 0.50452555,
103
+ 1.00905109,
104
+ 1.1099562,
105
+ 1.41267153,
106
+ 3.02715328,
107
+ 8.98055474
108
+ ],
109
+ "medium": [
110
+ 22.22104265,
111
+ 5.05023697,
112
+ 2.02009479,
113
+ 1.41406635,
114
+ 0.60602844,
115
+ 0.40401896,
116
+ 0.60602844,
117
+ 1.41406635,
118
+ 2.02009479,
119
+ 5.05023697,
120
+ 22.22104265
121
+ ],
122
+ "high": [
123
+ 76.64252366,
124
+ 10.08454259,
125
+ 3.02536278,
126
+ 0.90760883,
127
+ 0.30253628,
128
+ 0.20169085,
129
+ 0.30253628,
130
+ 0.90760883,
131
+ 3.02536278,
132
+ 10.08454259,
133
+ 76.64252366
134
+ ]
135
+ },
136
+ "11": {
137
+ "low": [
138
+ 8.4760292,
139
+ 3.02715328,
140
+ 1.91719708,
141
+ 1.31176642,
142
+ 1.00905109,
143
+ 0.70633577,
144
+ 0.70633577,
145
+ 1.00905109,
146
+ 1.31176642,
147
+ 1.91719708,
148
+ 3.02715328,
149
+ 8.4760292
150
+ ],
151
+ "medium": [
152
+ 24.2124497,
153
+ 6.05311243,
154
+ 3.02655621,
155
+ 1.81593373,
156
+ 0.70619645,
157
+ 0.50442604,
158
+ 0.50442604,
159
+ 0.70619645,
160
+ 1.81593373,
161
+ 3.02655621,
162
+ 6.05311243,
163
+ 24.2124497
164
+ ],
165
+ "high": [
166
+ 120.89533189,
167
+ 14.10445539,
168
+ 5.23879772,
169
+ 1.41044554,
170
+ 0.40298444,
171
+ 0.20149222,
172
+ 0.20149222,
173
+ 0.40298444,
174
+ 1.41044554,
175
+ 5.23879772,
176
+ 14.10445539,
177
+ 120.89533189
178
+ ]
179
+ },
180
+ "12": {
181
+ "low": [
182
+ 10.09299985,
183
+ 3.02789996,
184
+ 1.61487998,
185
+ 1.41301998,
186
+ 1.11022998,
187
+ 1.00929999,
188
+ 0.50464999,
189
+ 1.00929999,
190
+ 1.11022998,
191
+ 1.41301998,
192
+ 1.61487998,
193
+ 3.02789996,
194
+ 10.09299985
195
+ ],
196
+ "medium": [
197
+ 33.30361367,
198
+ 11.10120456,
199
+ 4.03680166,
200
+ 2.01840083,
201
+ 1.11012046,
202
+ 0.60552025,
203
+ 0.30276012,
204
+ 0.60552025,
205
+ 1.11012046,
206
+ 2.01840083,
207
+ 4.03680166,
208
+ 11.10120456,
209
+ 33.30361367
210
+ ],
211
+ "high": [
212
+ 171.34432238,
213
+ 24.18978669,
214
+ 8.16405301,
215
+ 2.01581556,
216
+ 0.70553545,
217
+ 0.20158156,
218
+ 0.20158156,
219
+ 0.20158156,
220
+ 0.70553545,
221
+ 2.01581556,
222
+ 8.16405301,
223
+ 24.18978669,
224
+ 171.34432238
225
+ ]
226
+ },
227
+ "13": {
228
+ "low": [
229
+ 8.17371699,
230
+ 4.03640345,
231
+ 3.02730259,
232
+ 1.91729164,
233
+ 1.21092104,
234
+ 0.90819078,
235
+ 0.7063706,
236
+ 0.7063706,
237
+ 0.90819078,
238
+ 1.21092104,
239
+ 1.91729164,
240
+ 3.02730259,
241
+ 4.03640345,
242
+ 8.17371699
243
+ ],
244
+ "medium": [
245
+ 43.39347736,
246
+ 13.11895827,
247
+ 6.05490382,
248
+ 3.02745191,
249
+ 1.31189583,
250
+ 0.70640545,
251
+ 0.40366025,
252
+ 0.40366025,
253
+ 0.70640545,
254
+ 1.31189583,
255
+ 3.02745191,
256
+ 6.05490382,
257
+ 13.11895827,
258
+ 43.39347736
259
+ ],
260
+ "high": [
261
+ 262.13350416,
262
+ 37.30361405,
263
+ 11.09026364,
264
+ 4.03282314,
265
+ 1.00820579,
266
+ 0.20164116,
267
+ 0.20164116,
268
+ 0.20164116,
269
+ 0.20164116,
270
+ 1.00820579,
271
+ 4.03282314,
272
+ 11.09026364,
273
+ 37.30361405,
274
+ 262.13350416
275
+ ]
276
+ },
277
+ "14": {
278
+ "low": [
279
+ 7.16452779,
280
+ 4.03635368,
281
+ 1.917268,
282
+ 1.41272379,
283
+ 1.31181495,
284
+ 1.10999726,
285
+ 1.00908842,
286
+ 0.50454421,
287
+ 1.00908842,
288
+ 1.10999726,
289
+ 1.31181495,
290
+ 1.41272379,
291
+ 1.917268,
292
+ 4.03635368,
293
+ 7.16452779
294
+ ],
295
+ "medium": [
296
+ 58.5307369,
297
+ 15.13725954,
298
+ 7.06405445,
299
+ 4.03660255,
300
+ 1.91738621,
301
+ 1.00915064,
302
+ 0.50457532,
303
+ 0.20183013,
304
+ 0.50457532,
305
+ 1.00915064,
306
+ 1.91738621,
307
+ 4.03660255,
308
+ 7.06405445,
309
+ 15.13725954,
310
+ 58.5307369
311
+ ],
312
+ "high": [
313
+ 423.91122183,
314
+ 56.52149624,
315
+ 18.16762379,
316
+ 5.04656216,
317
+ 1.91769362,
318
+ 0.30279373,
319
+ 0.20186249,
320
+ 0.20186249,
321
+ 0.20186249,
322
+ 0.30279373,
323
+ 1.91769362,
324
+ 5.04656216,
325
+ 18.16762379,
326
+ 56.52149624,
327
+ 423.91122183
328
+ ]
329
+ },
330
+ "15": {
331
+ "low": [
332
+ 15.13623299,
333
+ 8.0726576,
334
+ 3.0272466,
335
+ 2.0181644,
336
+ 1.5136233,
337
+ 1.10999042,
338
+ 1.0090822,
339
+ 0.70635754,
340
+ 0.70635754,
341
+ 1.0090822,
342
+ 1.10999042,
343
+ 1.5136233,
344
+ 2.0181644,
345
+ 3.0272466,
346
+ 8.0726576,
347
+ 15.13623299
348
+ ],
349
+ "medium": [
350
+ 88.80142344,
351
+ 18.16392752,
352
+ 11.10017793,
353
+ 5.04553542,
354
+ 3.02732125,
355
+ 1.31183921,
356
+ 0.50455354,
357
+ 0.30273213,
358
+ 0.30273213,
359
+ 0.50455354,
360
+ 1.31183921,
361
+ 3.02732125,
362
+ 5.04553542,
363
+ 11.10017793,
364
+ 18.16392752,
365
+ 88.80142344
366
+ ],
367
+ "high": [
368
+ 625.46900798,
369
+ 83.73214139,
370
+ 27.23816648,
371
+ 8.07056784,
372
+ 3.02646294,
373
+ 0.50441049,
374
+ 0.2017642,
375
+ 0.2017642,
376
+ 0.2017642,
377
+ 0.2017642,
378
+ 0.50441049,
379
+ 3.02646294,
380
+ 8.07056784,
381
+ 27.23816648,
382
+ 83.73214139,
383
+ 625.46900798
384
+ ]
385
+ },
386
+ "16": {
387
+ "low": [
388
+ 16.14566358,
389
+ 9.08193576,
390
+ 2.01820795,
391
+ 1.41274556,
392
+ 1.41274556,
393
+ 1.21092477,
394
+ 1.11001437,
395
+ 1.00910397,
396
+ 0.50455199,
397
+ 1.00910397,
398
+ 1.11001437,
399
+ 1.21092477,
400
+ 1.41274556,
401
+ 1.41274556,
402
+ 2.01820795,
403
+ 9.08193576,
404
+ 16.14566358
405
+ ],
406
+ "medium": [
407
+ 111.01307231,
408
+ 41.37759968,
409
+ 10.09209748,
410
+ 5.04604874,
411
+ 3.02762924,
412
+ 1.51381462,
413
+ 1.00920975,
414
+ 0.50460487,
415
+ 0.30276292,
416
+ 0.50460487,
417
+ 1.00920975,
418
+ 1.51381462,
419
+ 3.02762924,
420
+ 5.04604874,
421
+ 10.09209748,
422
+ 41.37759968,
423
+ 111.01307231
424
+ ],
425
+ "high": [
426
+ 1009.33110512,
427
+ 131.21304367,
428
+ 26.24260873,
429
+ 9.08397995,
430
+ 4.03732442,
431
+ 2.01866221,
432
+ 0.20186622,
433
+ 0.20186622,
434
+ 0.20186622,
435
+ 0.20186622,
436
+ 0.20186622,
437
+ 2.01866221,
438
+ 4.03732442,
439
+ 9.08397995,
440
+ 26.24260873,
441
+ 131.21304367,
442
+ 1009.33110512
443
+ ]
444
+ }
445
+ };
446
+
447
+ const DUEL_PLINKO_ROW_VALUES = Object.keys(DUEL_PLINKO_PAYOUTS)
448
+ .map((value) => Number.parseInt(value, 10))
449
+ .filter((value) => Number.isFinite(value))
450
+ .sort((a, b) => a - b);
451
+
452
+ export const DUEL_PLINKO_ROWS = {
453
+ min: DUEL_PLINKO_ROW_VALUES[0] ?? 0,
454
+ max: DUEL_PLINKO_ROW_VALUES[DUEL_PLINKO_ROW_VALUES.length - 1] ?? 0,
455
+ } as const;
456
+
457
+ export function getDuelPlinkoPayouts(
458
+ rows: number,
459
+ risk: DuelPlinkoRiskKey
460
+ ): number[] {
461
+ return DUEL_PLINKO_PAYOUTS[rows]?.[risk] ?? [];
462
+ }
463
+
464
+ export function isDuelPlinkoRiskKey(value: string): value is DuelPlinkoRiskKey {
465
+ return DUEL_PLINKO_RISK_KEYS.includes(value as DuelPlinkoRiskKey);
466
+ }
467
+
468
+ export function isDuelPlinkoRows(rows: number): boolean {
469
+ return (
470
+ Number.isInteger(rows) &&
471
+ rows >= DUEL_PLINKO_ROWS.min &&
472
+ rows <= DUEL_PLINKO_ROWS.max
473
+ );
474
+ }
475
+
476
+ export function duelPlinkoRiskToEnum(value: DuelPlinkoRiskKey): DuelPlinkoRisk {
477
+ return DUEL_PLINKO_RISK_ENUM_BY_KEY[value];
478
+ }
479
+
480
+ export function duelPlinkoRiskFromEnum(
481
+ value: DuelPlinkoRisk
482
+ ): DuelPlinkoRiskKey | null {
483
+ return DUEL_PLINKO_RISK_KEY_BY_ENUM[value] ?? null;
484
+ }
485
+
486
+ export function getDuelPlinkoPayoutsFromEnum(
487
+ rows: number,
488
+ risk: DuelPlinkoRisk
489
+ ): number[] {
490
+ const key = duelPlinkoRiskFromEnum(risk);
491
+ if (!key) {
492
+ return [];
493
+ }
494
+ return getDuelPlinkoPayouts(rows, key);
495
+ }