@wise-old-man/utils 3.3.15 → 4.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.
package/dist/index.d.ts CHANGED
@@ -1,392 +1,18 @@
1
- /**
2
- * Hardcode Prisma Types into this file, to avoid having to import the whole Prisma Client
3
- */
4
-
5
- type Prisma_Base_Achievement = {
6
- playerId: number;
7
- name: string;
8
- metric: Metric;
9
- threshold: bigint;
10
- accuracy: bigint | null;
11
- createdAt: Date;
12
- };
13
-
14
- export type MemberActivity = {
15
- groupId: number;
16
- playerId: number;
17
- type: ActivityType;
18
- role: GroupRole | null;
19
- previousRole: GroupRole | null;
20
- createdAt: Date;
21
- };
22
-
23
- export type PlayerAnnotation = {
24
- playerId: number;
25
- type: PlayerAnnotationType;
26
- createdAt: Date;
27
- };
28
-
29
- export type PlayerArchive = {
30
- playerId: number;
31
- previousUsername: string;
32
- archiveUsername: string;
33
- restoredUsername: string | null;
34
- createdAt: Date;
35
- restoredAt: Date | null;
36
- };
37
-
38
- type Prisma_Base_GroupSocialLinks = {
39
- id: number;
40
- groupId: number;
41
- website: string | null;
42
- discord: string | null;
43
- twitter: string | null;
44
- youtube: string | null;
45
- twitch: string | null;
46
- updatedAt: Date;
47
- createdAt: Date;
48
- };
49
-
50
- export type Membership = {
51
- playerId: number;
52
- groupId: number;
53
- role: GroupRole;
54
- createdAt: Date;
55
- updatedAt: Date;
56
- };
57
-
58
- export type Prisma_Base_Group = {
59
- id: number;
60
- name: string;
61
- clanChat: string | null;
62
- description: string | null;
63
- homeworld: number | null;
64
- verified: boolean;
65
- patron: boolean;
66
- visible: boolean;
67
- profileImage: string | null;
68
- bannerImage: string | null;
69
- score: number;
70
- verificationHash: string;
71
- createdAt: Date;
72
- updatedAt: Date;
73
- creatorIpHash: string | null;
74
- };
75
-
76
- export type GroupRoleOrder = {
77
- role: GroupRole;
78
- index: number;
79
- };
80
-
81
- type Participation = {
82
- playerId: number;
83
- competitionId: number;
84
- startSnapshotId: number | null;
85
- endSnapshotId: number | null;
86
- teamName: string | null;
87
- createdAt: Date;
88
- updatedAt: Date;
89
- };
90
-
91
- type Prisma_Base_Competition = {
92
- id: number;
93
- title: string;
94
- metric: Metric;
95
- type: CompetitionType;
96
- startsAt: Date;
97
- endsAt: Date;
98
- groupId: number | null;
99
- score: number;
100
- visible: boolean;
101
- verificationHash: string;
102
- createdAt: Date | null;
103
- updatedAt: Date | null;
104
- creatorIpHash: string | null;
105
- };
106
-
107
- type Prisma_Base_NameChange = {
108
- id: number;
109
- playerId: number;
110
- oldName: string;
111
- newName: string;
112
- status: NameChangeStatus;
113
- reviewContext: unknown | null;
114
- resolvedAt: Date | null;
115
- updatedAt: Date;
116
- createdAt: Date;
117
- };
118
-
119
- type Prisma_Base_Player = {
120
- id: number;
121
- username: string;
122
- displayName: string;
123
- type: PlayerType;
124
- build: PlayerBuild;
125
- status: PlayerStatus;
126
- country: Country | null;
127
- patron: boolean;
128
- exp: bigint;
129
- ehp: number;
130
- ehb: number;
131
- ttm: number;
132
- tt200m: number;
133
- registeredAt: Date;
134
- updatedAt: Date | null;
135
- lastChangedAt: Date | null;
136
- lastImportedAt: Date | null;
137
- latestSnapshotId: number | null;
138
- };
139
-
140
- type Prisma_Base_Record = {
141
- id: number;
142
- playerId: number;
143
- period: Period;
144
- metric: Metric;
145
- value: bigint;
146
- updatedAt: Date;
147
- };
148
-
149
- type Prisma_Base_Snapshot = {
150
- id: number;
151
- playerId: number;
152
- importedAt: Date | null;
153
- createdAt: Date;
154
- overallRank: number;
155
- overallExperience: bigint;
156
- attackRank: number;
157
- attackExperience: number;
158
- defenceRank: number;
159
- defenceExperience: number;
160
- strengthRank: number;
161
- strengthExperience: number;
162
- hitpointsRank: number;
163
- hitpointsExperience: number;
164
- rangedRank: number;
165
- rangedExperience: number;
166
- prayerRank: number;
167
- prayerExperience: number;
168
- magicRank: number;
169
- magicExperience: number;
170
- cookingRank: number;
171
- cookingExperience: number;
172
- woodcuttingRank: number;
173
- woodcuttingExperience: number;
174
- fletchingRank: number;
175
- fletchingExperience: number;
176
- fishingRank: number;
177
- fishingExperience: number;
178
- firemakingRank: number;
179
- firemakingExperience: number;
180
- craftingRank: number;
181
- craftingExperience: number;
182
- smithingRank: number;
183
- smithingExperience: number;
184
- miningRank: number;
185
- miningExperience: number;
186
- herbloreRank: number;
187
- herbloreExperience: number;
188
- agilityRank: number;
189
- agilityExperience: number;
190
- thievingRank: number;
191
- thievingExperience: number;
192
- slayerRank: number;
193
- slayerExperience: number;
194
- farmingRank: number;
195
- farmingExperience: number;
196
- runecraftingRank: number;
197
- runecraftingExperience: number;
198
- hunterRank: number;
199
- hunterExperience: number;
200
- constructionRank: number;
201
- constructionExperience: number;
202
- league_pointsRank: number;
203
- league_pointsScore: number;
204
- bounty_hunter_hunterRank: number;
205
- bounty_hunter_hunterScore: number;
206
- bounty_hunter_rogueScore: number;
207
- clue_scrolls_allRank: number;
208
- bounty_hunter_rogueRank: number;
209
- clue_scrolls_allScore: number;
210
- clue_scrolls_beginnerRank: number;
211
- clue_scrolls_easyRank: number;
212
- clue_scrolls_beginnerScore: number;
213
- clue_scrolls_easyScore: number;
214
- clue_scrolls_mediumRank: number;
215
- clue_scrolls_mediumScore: number;
216
- clue_scrolls_hardRank: number;
217
- clue_scrolls_hardScore: number;
218
- clue_scrolls_eliteRank: number;
219
- clue_scrolls_eliteScore: number;
220
- clue_scrolls_masterRank: number;
221
- clue_scrolls_masterScore: number;
222
- last_man_standingRank: number;
223
- last_man_standingScore: number;
224
- pvp_arenaRank: number;
225
- pvp_arenaScore: number;
226
- abyssal_sireRank: number;
227
- abyssal_sireKills: number;
228
- alchemical_hydraRank: number;
229
- alchemical_hydraKills: number;
230
- amoxliatlRank: number;
231
- amoxliatlKills: number;
232
- artioRank: number;
233
- artioKills: number;
234
- barrows_chestsRank: number;
235
- barrows_chestsKills: number;
236
- bryophytaKills: number;
237
- bryophytaRank: number;
238
- cerberusKills: number;
239
- chambers_of_xericRank: number;
240
- cerberusRank: number;
241
- callistoRank: number;
242
- callistoKills: number;
243
- calvarionRank: number;
244
- calvarionKills: number;
245
- chambers_of_xericKills: number;
246
- chambers_of_xeric_challenge_modeRank: number;
247
- chambers_of_xeric_challenge_modeKills: number;
248
- chaos_elementalKills: number;
249
- chaos_fanaticKills: number;
250
- chaos_fanaticRank: number;
251
- commander_zilyanaRank: number;
252
- chaos_elementalRank: number;
253
- commander_zilyanaKills: number;
254
- corporeal_beastRank: number;
255
- corporeal_beastKills: number;
256
- crazy_archaeologistRank: number;
257
- crazy_archaeologistKills: number;
258
- dagannoth_primeRank: number;
259
- dagannoth_primeKills: number;
260
- dagannoth_rexRank: number;
261
- dagannoth_rexKills: number;
262
- dagannoth_supremeRank: number;
263
- dagannoth_supremeKills: number;
264
- deranged_archaeologistRank: number;
265
- deranged_archaeologistKills: number;
266
- general_graardorRank: number;
267
- general_graardorKills: number;
268
- giant_moleRank: number;
269
- giant_moleKills: number;
270
- grotesque_guardiansRank: number;
271
- grotesque_guardiansKills: number;
272
- hesporiRank: number;
273
- hesporiKills: number;
274
- kalphite_queenKills: number;
275
- kalphite_queenRank: number;
276
- king_black_dragonRank: number;
277
- king_black_dragonKills: number;
278
- krakenRank: number;
279
- krakenKills: number;
280
- kreearraRank: number;
281
- kreearraKills: number;
282
- kril_tsutsarothRank: number;
283
- kril_tsutsarothKills: number;
284
- mimicRank: number;
285
- mimicKills: number;
286
- nightmareRank: number;
287
- nightmareKills: number;
288
- oborRank: number;
289
- oborKills: number;
290
- phantom_muspahRank: number;
291
- phantom_muspahKills: number;
292
- sarachnisRank: number;
293
- sarachnisKills: number;
294
- scorpiaRank: number;
295
- scorpiaKills: number;
296
- skotizoRank: number;
297
- skotizoKills: number;
298
- spindelRank: number;
299
- spindelKills: number;
300
- the_gauntletRank: number;
301
- the_gauntletKills: number;
302
- the_corrupted_gauntletKills: number;
303
- the_corrupted_gauntletRank: number;
304
- the_hueycoatlRank: number;
305
- the_hueycoatlKills: number;
306
- theatre_of_bloodRank: number;
307
- theatre_of_bloodKills: number;
308
- thermonuclear_smoke_devilRank: number;
309
- thermonuclear_smoke_devilKills: number;
310
- tombs_of_amascutRank: number;
311
- tombs_of_amascutKills: number;
312
- tombs_of_amascut_expertRank: number;
313
- tombs_of_amascut_expertKills: number;
314
- tzkal_zukRank: number;
315
- tzkal_zukKills: number;
316
- tztok_jadRank: number;
317
- tztok_jadKills: number;
318
- venenatisRank: number;
319
- venenatisKills: number;
320
- vetionRank: number;
321
- vetionKills: number;
322
- vorkathRank: number;
323
- vorkathKills: number;
324
- wintertodtRank: number;
325
- zalcanoRank: number;
326
- wintertodtKills: number;
327
- zalcanoKills: number;
328
- zulrahRank: number;
329
- zulrahKills: number;
330
- ehpValue: number;
331
- ehbValue: number;
332
- ehbRank: number;
333
- ehpRank: number;
334
- soul_wars_zealScore: number;
335
- soul_wars_zealRank: number;
336
- temporossKills: number;
337
- temporossRank: number;
338
- theatre_of_blood_hard_modeKills: number;
339
- theatre_of_blood_hard_modeRank: number;
340
- phosanis_nightmareKills: number;
341
- phosanis_nightmareRank: number;
342
- nexKills: number;
343
- nexRank: number;
344
- guardians_of_the_riftScore: number;
345
- guardians_of_the_riftRank: number;
346
- };
347
-
1
+ declare class BaseAPIClient {
2
+ private headers;
3
+ private baseUrl;
4
+ constructor(headers: object, baseUrl: string);
5
+ private buildParams;
6
+ private fetch;
7
+ private request;
8
+ private requestText;
9
+ postRequest<T>(path: string, body?: unknown): Promise<T>;
10
+ putRequest<T>(path: string, body?: unknown): Promise<T>;
11
+ deleteRequest<T>(path: string, body?: unknown): Promise<T>;
12
+ getRequest<T>(path: string, params?: unknown): Promise<T>;
13
+ getText(path: string, params?: unknown): Promise<string>;
14
+ }
348
15
 
349
- /**
350
- * Prisma currently seems to ignore the @map() in enum declarations.
351
- *
352
- * So by declaring this enum in the schema file:
353
- *
354
- * enum NameChangeStatus {
355
- * PENDING @map('pending')
356
- * DENIED @map('denied')
357
- * APPROVED @map('approved')
358
- * }
359
- *
360
- * you would expect the prisma client to then generate the following object:
361
- *
362
- * const NameChangeStatus = {
363
- * PENDING: 'pending',
364
- * DENIED: 'denied',
365
- * APPROVED: 'approved',
366
- * }
367
- *
368
- * but unfortunately, the mapping is only used for queries, and the actual esulting object is this:
369
- *
370
- * const NameChangeStatus = {
371
- * PENDING: 'PENDING',
372
- * DENIED: 'DENIED',
373
- * APPROVED: 'APPROVED',
374
- * }
375
- *
376
- * And because I'd hate having to call enum values in lowercase, like:
377
- * NameChangeStatus.pending
378
- * Metric.king_black_dragon
379
- * Period.day
380
- *
381
- * I'd rather do some mapping to ensure I have the best of both worlds,
382
- * lowercase database values, but with uppercase in code.
383
- * With the mappings below, we can now use prisma enums by calling them with uppercase, like:
384
- *
385
- * NameChangeStatus.PENDING
386
- * Metric.KING_BLACK_DRAGON
387
- * Period.DAY
388
- *
389
- */
390
16
  declare const Skill: {
391
17
  readonly OVERALL: "overall";
392
18
  readonly ATTACK: "attack";
@@ -620,331 +246,310 @@ declare const Metric: {
620
246
  readonly CONSTRUCTION: "construction";
621
247
  };
622
248
  type Metric = (typeof Metric)[keyof typeof Metric];
623
- declare const NameChangeStatus: {
624
- readonly PENDING: "pending";
625
- readonly DENIED: "denied";
626
- readonly APPROVED: "approved";
627
- };
628
- type NameChangeStatus = (typeof NameChangeStatus)[keyof typeof NameChangeStatus];
629
- declare const Period: {
630
- readonly FIVE_MIN: "five_min";
631
- readonly DAY: "day";
632
- readonly WEEK: "week";
633
- readonly MONTH: "month";
634
- readonly YEAR: "year";
635
- };
636
- type Period = (typeof Period)[keyof typeof Period];
637
- declare const PlayerType: {
638
- readonly UNKNOWN: "unknown";
639
- readonly REGULAR: "regular";
640
- readonly IRONMAN: "ironman";
641
- readonly HARDCORE: "hardcore";
642
- readonly ULTIMATE: "ultimate";
643
- };
644
- type PlayerType = (typeof PlayerType)[keyof typeof PlayerType];
645
- declare const PlayerAnnotationType: {
646
- readonly OPT_OUT: "opt_out";
647
- readonly OPT_OUT_GROUPS: "opt_out_groups";
648
- readonly OPT_OUT_COMPETITIONS: "opt_out_competitions";
649
- readonly BLOCKED: "blocked";
650
- readonly FAKE_F2P: "fake_f2p";
651
- };
652
- type PlayerAnnotationType = (typeof PlayerAnnotationType)[keyof typeof PlayerAnnotationType];
653
- declare const PlayerBuild: {
654
- readonly MAIN: "main";
655
- readonly F2P: "f2p";
656
- readonly F2P_LVL3: "f2p_lvl3";
657
- readonly LVL3: "lvl3";
658
- readonly ZERKER: "zerker";
659
- readonly DEF1: "def1";
660
- readonly HP10: "hp10";
661
- };
662
- type PlayerBuild = (typeof PlayerBuild)[keyof typeof PlayerBuild];
663
- declare const PlayerStatus: {
664
- readonly ACTIVE: "active";
665
- readonly UNRANKED: "unranked";
666
- readonly FLAGGED: "flagged";
667
- readonly ARCHIVED: "archived";
668
- readonly BANNED: "banned";
669
- };
670
- type PlayerStatus = (typeof PlayerStatus)[keyof typeof PlayerStatus];
249
+ declare const METRICS: Metric[];
250
+ declare const SKILLS: Skill[];
251
+ declare const BOSSES: Boss[];
252
+ declare const ACTIVITIES: Activity[];
253
+ declare const COMPUTED_METRICS: ComputedMetric[];
254
+
255
+ interface Snapshot {
256
+ id: number;
257
+ playerId: number;
258
+ importedAt: Date | null;
259
+ createdAt: Date;
260
+ overallRank: number;
261
+ overallExperience: number;
262
+ attackRank: number;
263
+ attackExperience: number;
264
+ defenceRank: number;
265
+ defenceExperience: number;
266
+ strengthRank: number;
267
+ strengthExperience: number;
268
+ hitpointsRank: number;
269
+ hitpointsExperience: number;
270
+ rangedRank: number;
271
+ rangedExperience: number;
272
+ prayerRank: number;
273
+ prayerExperience: number;
274
+ magicRank: number;
275
+ magicExperience: number;
276
+ cookingRank: number;
277
+ cookingExperience: number;
278
+ woodcuttingRank: number;
279
+ woodcuttingExperience: number;
280
+ fletchingRank: number;
281
+ fletchingExperience: number;
282
+ fishingRank: number;
283
+ fishingExperience: number;
284
+ firemakingRank: number;
285
+ firemakingExperience: number;
286
+ craftingRank: number;
287
+ craftingExperience: number;
288
+ smithingRank: number;
289
+ smithingExperience: number;
290
+ miningRank: number;
291
+ miningExperience: number;
292
+ herbloreRank: number;
293
+ herbloreExperience: number;
294
+ agilityRank: number;
295
+ agilityExperience: number;
296
+ thievingRank: number;
297
+ thievingExperience: number;
298
+ slayerRank: number;
299
+ slayerExperience: number;
300
+ farmingRank: number;
301
+ farmingExperience: number;
302
+ runecraftingRank: number;
303
+ runecraftingExperience: number;
304
+ hunterRank: number;
305
+ hunterExperience: number;
306
+ constructionRank: number;
307
+ constructionExperience: number;
308
+ league_pointsRank: number;
309
+ league_pointsScore: number;
310
+ bounty_hunter_hunterRank: number;
311
+ bounty_hunter_hunterScore: number;
312
+ bounty_hunter_rogueRank: number;
313
+ bounty_hunter_rogueScore: number;
314
+ clue_scrolls_allRank: number;
315
+ clue_scrolls_allScore: number;
316
+ clue_scrolls_beginnerRank: number;
317
+ clue_scrolls_beginnerScore: number;
318
+ clue_scrolls_easyRank: number;
319
+ clue_scrolls_easyScore: number;
320
+ clue_scrolls_mediumRank: number;
321
+ clue_scrolls_mediumScore: number;
322
+ clue_scrolls_hardRank: number;
323
+ clue_scrolls_hardScore: number;
324
+ clue_scrolls_eliteRank: number;
325
+ clue_scrolls_eliteScore: number;
326
+ clue_scrolls_masterRank: number;
327
+ clue_scrolls_masterScore: number;
328
+ last_man_standingRank: number;
329
+ last_man_standingScore: number;
330
+ pvp_arenaRank: number;
331
+ pvp_arenaScore: number;
332
+ soul_wars_zealRank: number;
333
+ soul_wars_zealScore: number;
334
+ guardians_of_the_riftRank: number;
335
+ guardians_of_the_riftScore: number;
336
+ colosseum_gloryRank: number;
337
+ colosseum_gloryScore: number;
338
+ collections_loggedRank: number;
339
+ collections_loggedScore: number;
340
+ abyssal_sireRank: number;
341
+ abyssal_sireKills: number;
342
+ alchemical_hydraRank: number;
343
+ alchemical_hydraKills: number;
344
+ amoxliatlRank: number;
345
+ amoxliatlKills: number;
346
+ araxxorRank: number;
347
+ araxxorKills: number;
348
+ artioRank: number;
349
+ artioKills: number;
350
+ barrows_chestsRank: number;
351
+ barrows_chestsKills: number;
352
+ bryophytaRank: number;
353
+ bryophytaKills: number;
354
+ cerberusRank: number;
355
+ cerberusKills: number;
356
+ callistoRank: number;
357
+ callistoKills: number;
358
+ calvarionRank: number;
359
+ calvarionKills: number;
360
+ chambers_of_xericRank: number;
361
+ chambers_of_xericKills: number;
362
+ chambers_of_xeric_challenge_modeRank: number;
363
+ chambers_of_xeric_challenge_modeKills: number;
364
+ chaos_elementalRank: number;
365
+ chaos_elementalKills: number;
366
+ chaos_fanaticRank: number;
367
+ chaos_fanaticKills: number;
368
+ commander_zilyanaRank: number;
369
+ commander_zilyanaKills: number;
370
+ corporeal_beastRank: number;
371
+ corporeal_beastKills: number;
372
+ crazy_archaeologistRank: number;
373
+ crazy_archaeologistKills: number;
374
+ dagannoth_primeRank: number;
375
+ dagannoth_primeKills: number;
376
+ dagannoth_rexRank: number;
377
+ dagannoth_rexKills: number;
378
+ dagannoth_supremeRank: number;
379
+ dagannoth_supremeKills: number;
380
+ deranged_archaeologistRank: number;
381
+ deranged_archaeologistKills: number;
382
+ doom_of_mokhaiotlRank: number;
383
+ doom_of_mokhaiotlKills: number;
384
+ duke_sucellusRank: number;
385
+ duke_sucellusKills: number;
386
+ general_graardorRank: number;
387
+ general_graardorKills: number;
388
+ giant_moleRank: number;
389
+ giant_moleKills: number;
390
+ grotesque_guardiansRank: number;
391
+ grotesque_guardiansKills: number;
392
+ hesporiRank: number;
393
+ hesporiKills: number;
394
+ kalphite_queenRank: number;
395
+ kalphite_queenKills: number;
396
+ king_black_dragonRank: number;
397
+ king_black_dragonKills: number;
398
+ krakenRank: number;
399
+ krakenKills: number;
400
+ kreearraRank: number;
401
+ kreearraKills: number;
402
+ kril_tsutsarothRank: number;
403
+ kril_tsutsarothKills: number;
404
+ lunar_chestsRank: number;
405
+ lunar_chestsKills: number;
406
+ mimicRank: number;
407
+ mimicKills: number;
408
+ nexRank: number;
409
+ nexKills: number;
410
+ nightmareRank: number;
411
+ nightmareKills: number;
412
+ phosanis_nightmareRank: number;
413
+ phosanis_nightmareKills: number;
414
+ oborRank: number;
415
+ oborKills: number;
416
+ phantom_muspahRank: number;
417
+ phantom_muspahKills: number;
418
+ sarachnisRank: number;
419
+ sarachnisKills: number;
420
+ scorpiaRank: number;
421
+ scorpiaKills: number;
422
+ scurriusRank: number;
423
+ scurriusKills: number;
424
+ skotizoRank: number;
425
+ skotizoKills: number;
426
+ sol_hereditRank: number;
427
+ sol_hereditKills: number;
428
+ spindelRank: number;
429
+ spindelKills: number;
430
+ temporossRank: number;
431
+ temporossKills: number;
432
+ the_gauntletRank: number;
433
+ the_gauntletKills: number;
434
+ the_corrupted_gauntletRank: number;
435
+ the_corrupted_gauntletKills: number;
436
+ the_hueycoatlRank: number;
437
+ the_hueycoatlKills: number;
438
+ the_leviathanRank: number;
439
+ the_leviathanKills: number;
440
+ the_royal_titansRank: number;
441
+ the_royal_titansKills: number;
442
+ the_whispererRank: number;
443
+ the_whispererKills: number;
444
+ theatre_of_bloodRank: number;
445
+ theatre_of_bloodKills: number;
446
+ theatre_of_blood_hard_modeRank: number;
447
+ theatre_of_blood_hard_modeKills: number;
448
+ thermonuclear_smoke_devilRank: number;
449
+ thermonuclear_smoke_devilKills: number;
450
+ tombs_of_amascutRank: number;
451
+ tombs_of_amascutKills: number;
452
+ tombs_of_amascut_expertRank: number;
453
+ tombs_of_amascut_expertKills: number;
454
+ tzkal_zukRank: number;
455
+ tzkal_zukKills: number;
456
+ tztok_jadRank: number;
457
+ tztok_jadKills: number;
458
+ vardorvisRank: number;
459
+ vardorvisKills: number;
460
+ venenatisRank: number;
461
+ venenatisKills: number;
462
+ vetionRank: number;
463
+ vetionKills: number;
464
+ vorkathRank: number;
465
+ vorkathKills: number;
466
+ wintertodtRank: number;
467
+ wintertodtKills: number;
468
+ yamaRank: number;
469
+ yamaKills: number;
470
+ zalcanoRank: number;
471
+ zalcanoKills: number;
472
+ zulrahRank: number;
473
+ zulrahKills: number;
474
+ ehpRank: number;
475
+ ehpValue: number;
476
+ ehbRank: number;
477
+ ehbValue: number;
478
+ }
479
+
480
+ interface AchievementDefinition {
481
+ name: string;
482
+ metric: Metric;
483
+ measure: string;
484
+ threshold: number;
485
+ validate: (snapshot: Snapshot) => boolean;
486
+ getCurrentValue: (snapshot: Snapshot) => number;
487
+ }
488
+
489
+ declare enum MetricMeasure {
490
+ EXPERIENCE = "experience",
491
+ KILLS = "kills",
492
+ SCORE = "score",
493
+ VALUE = "value"
494
+ }
495
+
496
+ type AchievementMeasure = MetricMeasure | 'levels';
497
+
498
+ interface Achievement {
499
+ playerId: number;
500
+ name: string;
501
+ metric: Metric;
502
+ threshold: number;
503
+ accuracy: number | null;
504
+ createdAt: Date;
505
+ }
506
+
507
+ interface BossMetaConfig {
508
+ boss: Boss;
509
+ rate: number;
510
+ }
511
+
512
+ declare enum CompetitionCSVTableType {
513
+ TEAM = "team",
514
+ TEAMS = "teams",
515
+ PARTICIPANTS = "participants"
516
+ }
517
+
518
+ declare enum CompetitionStatus {
519
+ UPCOMING = "upcoming",
520
+ ONGOING = "ongoing",
521
+ FINISHED = "finished"
522
+ }
523
+ declare const COMPETITION_STATUSES: CompetitionStatus[];
524
+
525
+ interface CompetitionTeam {
526
+ name: string;
527
+ participants: string[];
528
+ }
529
+
671
530
  declare const CompetitionType: {
672
531
  readonly CLASSIC: "classic";
673
532
  readonly TEAM: "team";
674
533
  };
675
534
  type CompetitionType = (typeof CompetitionType)[keyof typeof CompetitionType];
676
- declare const GroupRole: {
677
- readonly ACHIEVER: "achiever";
678
- readonly ADAMANT: "adamant";
679
- readonly ADEPT: "adept";
680
- readonly ADMINISTRATOR: "administrator";
681
- readonly ADMIRAL: "admiral";
682
- readonly ADVENTURER: "adventurer";
683
- readonly AIR: "air";
684
- readonly ANCHOR: "anchor";
685
- readonly APOTHECARY: "apothecary";
686
- readonly ARCHER: "archer";
687
- readonly ARMADYLEAN: "armadylean";
688
- readonly ARTILLERY: "artillery";
689
- readonly ARTISAN: "artisan";
690
- readonly ASGARNIAN: "asgarnian";
691
- readonly ASSASSIN: "assassin";
692
- readonly ASSISTANT: "assistant";
693
- readonly ASTRAL: "astral";
694
- readonly ATHLETE: "athlete";
695
- readonly ATTACKER: "attacker";
696
- readonly BANDIT: "bandit";
697
- readonly BANDOSIAN: "bandosian";
698
- readonly BARBARIAN: "barbarian";
699
- readonly BATTLEMAGE: "battlemage";
700
- readonly BEAST: "beast";
701
- readonly BERSERKER: "berserker";
702
- readonly BLISTERWOOD: "blisterwood";
703
- readonly BLOOD: "blood";
704
- readonly BLUE: "blue";
705
- readonly BOB: "bob";
706
- readonly BODY: "body";
707
- readonly BRASSICAN: "brassican";
708
- readonly BRAWLER: "brawler";
709
- readonly BRIGADIER: "brigadier";
710
- readonly BRIGAND: "brigand";
711
- readonly BRONZE: "bronze";
712
- readonly BRUISER: "bruiser";
713
- readonly BULWARK: "bulwark";
714
- readonly BURGLAR: "burglar";
715
- readonly BURNT: "burnt";
716
- readonly CADET: "cadet";
717
- readonly CAPTAIN: "captain";
718
- readonly CARRY: "carry";
719
- readonly CHAMPION: "champion";
720
- readonly CHAOS: "chaos";
721
- readonly CLERIC: "cleric";
722
- readonly COLLECTOR: "collector";
723
- readonly COLONEL: "colonel";
724
- readonly COMMANDER: "commander";
725
- readonly COMPETITOR: "competitor";
726
- readonly COMPLETIONIST: "completionist";
727
- readonly CONSTRUCTOR: "constructor";
728
- readonly COOK: "cook";
729
- readonly COORDINATOR: "coordinator";
730
- readonly CORPORAL: "corporal";
731
- readonly COSMIC: "cosmic";
732
- readonly COUNCILLOR: "councillor";
733
- readonly CRAFTER: "crafter";
734
- readonly CREW: "crew";
735
- readonly CRUSADER: "crusader";
736
- readonly CUTPURSE: "cutpurse";
737
- readonly DEATH: "death";
738
- readonly DEFENDER: "defender";
739
- readonly DEFILER: "defiler";
740
- readonly DEPUTY_OWNER: "deputy_owner";
741
- readonly DESTROYER: "destroyer";
742
- readonly DIAMOND: "diamond";
743
- readonly DISEASED: "diseased";
744
- readonly DOCTOR: "doctor";
745
- readonly DOGSBODY: "dogsbody";
746
- readonly DRAGON: "dragon";
747
- readonly DRAGONSTONE: "dragonstone";
748
- readonly DRUID: "druid";
749
- readonly DUELLIST: "duellist";
750
- readonly EARTH: "earth";
751
- readonly ELITE: "elite";
752
- readonly EMERALD: "emerald";
753
- readonly ENFORCER: "enforcer";
754
- readonly EPIC: "epic";
755
- readonly EXECUTIVE: "executive";
756
- readonly EXPERT: "expert";
757
- readonly EXPLORER: "explorer";
758
- readonly FARMER: "farmer";
759
- readonly FEEDER: "feeder";
760
- readonly FIGHTER: "fighter";
761
- readonly FIRE: "fire";
762
- readonly FIREMAKER: "firemaker";
763
- readonly FIRESTARTER: "firestarter";
764
- readonly FISHER: "fisher";
765
- readonly FLETCHER: "fletcher";
766
- readonly FORAGER: "forager";
767
- readonly FREMENNIK: "fremennik";
768
- readonly GAMER: "gamer";
769
- readonly GATHERER: "gatherer";
770
- readonly GENERAL: "general";
771
- readonly GNOME_CHILD: "gnome_child";
772
- readonly GNOME_ELDER: "gnome_elder";
773
- readonly GOBLIN: "goblin";
774
- readonly GOLD: "gold";
775
- readonly GOON: "goon";
776
- readonly GREEN: "green";
777
- readonly GREY: "grey";
778
- readonly GUARDIAN: "guardian";
779
- readonly GUTHIXIAN: "guthixian";
780
- readonly HARPOON: "harpoon";
781
- readonly HEALER: "healer";
782
- readonly HELLCAT: "hellcat";
783
- readonly HELPER: "helper";
784
- readonly HERBOLOGIST: "herbologist";
785
- readonly HERO: "hero";
786
- readonly HOLY: "holy";
787
- readonly HOARDER: "hoarder";
788
- readonly HUNTER: "hunter";
789
- readonly IGNITOR: "ignitor";
790
- readonly ILLUSIONIST: "illusionist";
791
- readonly IMP: "imp";
792
- readonly INFANTRY: "infantry";
793
- readonly INQUISITOR: "inquisitor";
794
- readonly IRON: "iron";
795
- readonly JADE: "jade";
796
- readonly JUSTICIAR: "justiciar";
797
- readonly KANDARIN: "kandarin";
798
- readonly KARAMJAN: "karamjan";
799
- readonly KHARIDIAN: "kharidian";
800
- readonly KITTEN: "kitten";
801
- readonly KNIGHT: "knight";
802
- readonly LABOURER: "labourer";
803
- readonly LAW: "law";
804
- readonly LEADER: "leader";
805
- readonly LEARNER: "learner";
806
- readonly LEGACY: "legacy";
807
- readonly LEGEND: "legend";
808
- readonly LEGIONNAIRE: "legionnaire";
809
- readonly LIEUTENANT: "lieutenant";
810
- readonly LOOTER: "looter";
811
- readonly LUMBERJACK: "lumberjack";
812
- readonly MAGIC: "magic";
813
- readonly MAGICIAN: "magician";
814
- readonly MAJOR: "major";
815
- readonly MAPLE: "maple";
816
- readonly MARSHAL: "marshal";
817
- readonly MASTER: "master";
818
- readonly MAXED: "maxed";
819
- readonly MEDIATOR: "mediator";
820
- readonly MEDIC: "medic";
821
- readonly MENTOR: "mentor";
822
- readonly MEMBER: "member";
823
- readonly MERCHANT: "merchant";
824
- readonly MIND: "mind";
825
- readonly MINER: "miner";
826
- readonly MINION: "minion";
827
- readonly MISTHALINIAN: "misthalinian";
828
- readonly MITHRIL: "mithril";
829
- readonly MODERATOR: "moderator";
830
- readonly MONARCH: "monarch";
831
- readonly MORYTANIAN: "morytanian";
832
- readonly MYSTIC: "mystic";
833
- readonly MYTH: "myth";
834
- readonly NATURAL: "natural";
835
- readonly NATURE: "nature";
836
- readonly NECROMANCER: "necromancer";
837
- readonly NINJA: "ninja";
838
- readonly NOBLE: "noble";
839
- readonly NOVICE: "novice";
840
- readonly NURSE: "nurse";
841
- readonly OAK: "oak";
842
- readonly OFFICER: "officer";
843
- readonly ONYX: "onyx";
844
- readonly OPAL: "opal";
845
- readonly ORACLE: "oracle";
846
- readonly ORANGE: "orange";
847
- readonly OWNER: "owner";
848
- readonly PAGE: "page";
849
- readonly PALADIN: "paladin";
850
- readonly PAWN: "pawn";
851
- readonly PILGRIM: "pilgrim";
852
- readonly PINE: "pine";
853
- readonly PINK: "pink";
854
- readonly PREFECT: "prefect";
855
- readonly PRIEST: "priest";
856
- readonly PRIVATE: "private";
857
- readonly PRODIGY: "prodigy";
858
- readonly PROSELYTE: "proselyte";
859
- readonly PROSPECTOR: "prospector";
860
- readonly PROTECTOR: "protector";
861
- readonly PURE: "pure";
862
- readonly PURPLE: "purple";
863
- readonly PYROMANCER: "pyromancer";
864
- readonly QUESTER: "quester";
865
- readonly RACER: "racer";
866
- readonly RAIDER: "raider";
867
- readonly RANGER: "ranger";
868
- readonly RECORD_CHASER: "record_chaser";
869
- readonly RECRUIT: "recruit";
870
- readonly RECRUITER: "recruiter";
871
- readonly RED_TOPAZ: "red_topaz";
872
- readonly RED: "red";
873
- readonly ROGUE: "rogue";
874
- readonly RUBY: "ruby";
875
- readonly RUNE: "rune";
876
- readonly RUNECRAFTER: "runecrafter";
877
- readonly SAGE: "sage";
878
- readonly SAPPHIRE: "sapphire";
879
- readonly SARADOMINIST: "saradominist";
880
- readonly SAVIOUR: "saviour";
881
- readonly SCAVENGER: "scavenger";
882
- readonly SCHOLAR: "scholar";
883
- readonly SCOURGE: "scourge";
884
- readonly SCOUT: "scout";
885
- readonly SCRIBE: "scribe";
886
- readonly SEER: "seer";
887
- readonly SENATOR: "senator";
888
- readonly SENTRY: "sentry";
889
- readonly SERENIST: "serenist";
890
- readonly SERGEANT: "sergeant";
891
- readonly SHAMAN: "shaman";
892
- readonly SHERIFF: "sheriff";
893
- readonly SHORT_GREEN_GUY: "short_green_guy";
894
- readonly SKILLER: "skiller";
895
- readonly SKULLED: "skulled";
896
- readonly SLAYER: "slayer";
897
- readonly SMITER: "smiter";
898
- readonly SMITH: "smith";
899
- readonly SMUGGLER: "smuggler";
900
- readonly SNIPER: "sniper";
901
- readonly SOUL: "soul";
902
- readonly SPECIALIST: "specialist";
903
- readonly SPEED_RUNNER: "speed_runner";
904
- readonly SPELLCASTER: "spellcaster";
905
- readonly SQUIRE: "squire";
906
- readonly STAFF: "staff";
907
- readonly STEEL: "steel";
908
- readonly STRIDER: "strider";
909
- readonly STRIKER: "striker";
910
- readonly SUMMONER: "summoner";
911
- readonly SUPERIOR: "superior";
912
- readonly SUPERVISOR: "supervisor";
913
- readonly TEACHER: "teacher";
914
- readonly TEMPLAR: "templar";
915
- readonly THERAPIST: "therapist";
916
- readonly THIEF: "thief";
917
- readonly TIRANNIAN: "tirannian";
918
- readonly TRIALIST: "trialist";
919
- readonly TRICKSTER: "trickster";
920
- readonly TZKAL: "tzkal";
921
- readonly TZTOK: "tztok";
922
- readonly UNHOLY: "unholy";
923
- readonly VAGRANT: "vagrant";
924
- readonly VANGUARD: "vanguard";
925
- readonly WALKER: "walker";
926
- readonly WANDERER: "wanderer";
927
- readonly WARDEN: "warden";
928
- readonly WARLOCK: "warlock";
929
- readonly WARRIOR: "warrior";
930
- readonly WATER: "water";
931
- readonly WILD: "wild";
932
- readonly WILLOW: "willow";
933
- readonly WILY: "wily";
934
- readonly WINTUMBER: "wintumber";
935
- readonly WITCH: "witch";
936
- readonly WIZARD: "wizard";
937
- readonly WORKER: "worker";
938
- readonly WRATH: "wrath";
939
- readonly XERICIAN: "xerician";
940
- readonly YELLOW: "yellow";
941
- readonly YEW: "yew";
942
- readonly ZAMORAKIAN: "zamorakian";
943
- readonly ZAROSIAN: "zarosian";
944
- readonly ZEALOT: "zealot";
945
- readonly ZENYTE: "zenyte";
946
- };
947
- type GroupRole = (typeof GroupRole)[keyof typeof GroupRole];
535
+ declare const COMPETITION_TYPES: CompetitionType[];
536
+
537
+ interface Competition {
538
+ id: number;
539
+ title: string;
540
+ metric: Metric;
541
+ type: CompetitionType;
542
+ startsAt: Date;
543
+ endsAt: Date;
544
+ groupId: number | null;
545
+ score: number;
546
+ visible: boolean;
547
+ verificationHash: string;
548
+ createdAt: Date | null;
549
+ updatedAt: Date | null;
550
+ creatorIpHash: string | null;
551
+ }
552
+
948
553
  declare const Country: {
949
554
  readonly AD: "AD";
950
555
  readonly AE: "AE";
@@ -1200,629 +805,1022 @@ declare const Country: {
1200
805
  readonly ZW: "ZW";
1201
806
  };
1202
807
  type Country = (typeof Country)[keyof typeof Country];
1203
- declare const ActivityType: {
1204
- readonly JOINED: "joined";
1205
- readonly LEFT: "left";
1206
- readonly CHANGED_ROLE: "changed_role";
1207
- };
1208
- type ActivityType = (typeof ActivityType)[keyof typeof ActivityType];
808
+ declare const COUNTRY_CODES: Country[];
1209
809
 
1210
- type Achievement = Omit<Prisma_Base_Achievement, 'threshold' | 'accuracy'> & {
1211
- threshold: number;
1212
- accuracy: number | null;
1213
- };
1214
- type Record = Omit<Prisma_Base_Record, 'value'> & {
1215
- value: number;
1216
- };
1217
- type Snapshot = Omit<Prisma_Base_Snapshot, 'overallExperience'> & {
1218
- overallExperience: number;
1219
- };
1220
- type Player = Omit<Prisma_Base_Player, 'exp' | 'latestSnapshotId'> & {
1221
- exp: number;
1222
- };
1223
- type Group = Omit<Prisma_Base_Group, 'creatorIpHash'>;
1224
- type Competition = Omit<Prisma_Base_Competition, 'creatorIpHash'>;
1225
- type NameChange = Omit<Prisma_Base_NameChange, 'reviewContext'> & {
1226
- reviewContext: SkipContext | DenyContext | null;
810
+ declare const Period: {
811
+ readonly FIVE_MIN: "five_min";
812
+ readonly DAY: "day";
813
+ readonly WEEK: "week";
814
+ readonly MONTH: "month";
815
+ readonly YEAR: "year";
1227
816
  };
1228
- type GroupSocialLinks = Omit<Prisma_Base_GroupSocialLinks, 'id' | 'groupId' | 'createdAt' | 'updatedAt'>;
817
+ type Period = (typeof Period)[keyof typeof Period];
818
+ declare const PERIODS: ("five_min" | "day" | "week" | "month" | "year")[];
1229
819
 
1230
- interface AchievementTemplate {
1231
- name: string;
1232
- metric: Metric;
1233
- measure?: string;
1234
- thresholds: number[];
1235
- getCurrentValue?: (snapshot: Snapshot, threshold: number) => number;
1236
- }
1237
- interface AchievementDefinition {
1238
- name: string;
1239
- metric: Metric;
1240
- measure: string;
1241
- threshold: number;
1242
- validate: (snapshot: Snapshot) => boolean;
1243
- getCurrentValue: (snapshot: Snapshot) => number;
1244
- }
1245
- interface ExtendedAchievement extends Achievement {
1246
- measure: string;
1247
- }
1248
- interface ExtendedAchievementWithPlayer extends ExtendedAchievement {
1249
- player: Player;
1250
- }
1251
- interface AchievementProgress extends Omit<ExtendedAchievement, 'createdAt'> {
1252
- createdAt: Date | null;
1253
- currentValue: number;
1254
- absoluteProgress: number;
1255
- relativeProgress: number;
820
+ interface Delta {
821
+ playerId: number;
822
+ period: Period;
823
+ startedAt: Date;
824
+ endedAt: Date;
825
+ updatedAt: Date | null;
826
+ overall: number;
827
+ attack: number;
828
+ defence: number;
829
+ strength: number;
830
+ hitpoints: number;
831
+ ranged: number;
832
+ prayer: number;
833
+ magic: number;
834
+ cooking: number;
835
+ woodcutting: number;
836
+ fletching: number;
837
+ fishing: number;
838
+ firemaking: number;
839
+ crafting: number;
840
+ smithing: number;
841
+ mining: number;
842
+ herblore: number;
843
+ agility: number;
844
+ thieving: number;
845
+ slayer: number;
846
+ farming: number;
847
+ runecrafting: number;
848
+ hunter: number;
849
+ construction: number;
850
+ abyssal_sire: number;
851
+ alchemical_hydra: number;
852
+ amoxliatl: number;
853
+ araxxor: number;
854
+ artio: number;
855
+ barrows_chests: number;
856
+ bryophyta: number;
857
+ callisto: number;
858
+ calvarion: number;
859
+ cerberus: number;
860
+ chambers_of_xeric: number;
861
+ chambers_of_xeric_challenge_mode: number;
862
+ chaos_elemental: number;
863
+ chaos_fanatic: number;
864
+ commander_zilyana: number;
865
+ corporeal_beast: number;
866
+ crazy_archaeologist: number;
867
+ dagannoth_prime: number;
868
+ dagannoth_rex: number;
869
+ dagannoth_supreme: number;
870
+ deranged_archaeologist: number;
871
+ doom_of_mokhaiotl: number;
872
+ duke_sucellus: number;
873
+ general_graardor: number;
874
+ giant_mole: number;
875
+ grotesque_guardians: number;
876
+ hespori: number;
877
+ kalphite_queen: number;
878
+ king_black_dragon: number;
879
+ kraken: number;
880
+ kreearra: number;
881
+ kril_tsutsaroth: number;
882
+ lunar_chests: number;
883
+ mimic: number;
884
+ nex: number;
885
+ nightmare: number;
886
+ phosanis_nightmare: number;
887
+ obor: number;
888
+ phantom_muspah: number;
889
+ sarachnis: number;
890
+ scorpia: number;
891
+ scurrius: number;
892
+ skotizo: number;
893
+ sol_heredit: number;
894
+ spindel: number;
895
+ tempoross: number;
896
+ the_gauntlet: number;
897
+ the_corrupted_gauntlet: number;
898
+ the_hueycoatl: number;
899
+ the_leviathan: number;
900
+ the_royal_titans: number;
901
+ the_whisperer: number;
902
+ theatre_of_blood: number;
903
+ theatre_of_blood_hard_mode: number;
904
+ thermonuclear_smoke_devil: number;
905
+ tombs_of_amascut: number;
906
+ tombs_of_amascut_expert: number;
907
+ tzkal_zuk: number;
908
+ tztok_jad: number;
909
+ vardorvis: number;
910
+ venenatis: number;
911
+ vetion: number;
912
+ vorkath: number;
913
+ wintertodt: number;
914
+ yama: number;
915
+ zalcano: number;
916
+ zulrah: number;
917
+ league_points: number;
918
+ bounty_hunter_hunter: number;
919
+ bounty_hunter_rogue: number;
920
+ clue_scrolls_all: number;
921
+ clue_scrolls_beginner: number;
922
+ clue_scrolls_easy: number;
923
+ clue_scrolls_medium: number;
924
+ clue_scrolls_hard: number;
925
+ clue_scrolls_elite: number;
926
+ clue_scrolls_master: number;
927
+ last_man_standing: number;
928
+ pvp_arena: number;
929
+ soul_wars_zeal: number;
930
+ guardians_of_the_rift: number;
931
+ colosseum_glory: number;
932
+ collections_logged: number;
933
+ ehp: number;
934
+ ehb: number;
1256
935
  }
1257
936
 
1258
- interface MeasuredDeltaProgress {
1259
- start: number;
1260
- end: number;
1261
- gained: number;
1262
- }
1263
- interface SkillDelta {
1264
- metric: Skill;
1265
- ehp: MeasuredDeltaProgress;
1266
- rank: MeasuredDeltaProgress;
1267
- level: MeasuredDeltaProgress;
1268
- experience: MeasuredDeltaProgress;
1269
- }
1270
- interface BossDelta {
1271
- metric: Boss;
1272
- ehb: MeasuredDeltaProgress;
1273
- rank: MeasuredDeltaProgress;
1274
- kills: MeasuredDeltaProgress;
1275
- }
1276
- interface ActivityDelta {
1277
- metric: Activity;
1278
- rank: MeasuredDeltaProgress;
1279
- score: MeasuredDeltaProgress;
1280
- }
1281
- interface ComputedMetricDelta {
1282
- metric: ComputedMetric;
1283
- rank: MeasuredDeltaProgress;
1284
- value: MeasuredDeltaProgress;
1285
- }
1286
- interface PlayerDeltasMap {
1287
- skills: MapOf<Skill, SkillDelta>;
1288
- bosses: MapOf<Boss, BossDelta>;
1289
- activities: MapOf<Activity, ActivityDelta>;
1290
- computed: MapOf<ComputedMetric, ComputedMetricDelta>;
937
+ declare enum EfficiencyAlgorithmType {
938
+ MAIN = "main",
939
+ IRONMAN = "ironman",
940
+ ULTIMATE = "ultimate",
941
+ LVL3 = "lvl3",
942
+ F2P = "f2p",
943
+ F2P_LVL3 = "f2p_lvl3",
944
+ F2P_IRONMAN = "f2p_ironman",
945
+ F2P_LVL3_IRONMAN = "f2p_lvl3_ironman",
946
+ DEF1 = "def1"
1291
947
  }
1292
- interface DeltaLeaderboardEntry {
1293
- player: Player;
1294
- playerId: number;
1295
- startDate: Date;
1296
- endDate: Date;
1297
- gained: number;
1298
- }
1299
- interface DeltaGroupLeaderboardEntry {
1300
- player: Player;
1301
- startDate: Date;
1302
- endDate: Date;
1303
- data: {
1304
- start: number;
1305
- end: number;
1306
- gained: number;
1307
- };
1308
- }
1309
-
1310
- type SnapshotFragment = Omit<Snapshot, 'id'>;
1311
- interface SkillValue {
1312
- metric: Skill;
1313
- rank: number;
1314
- level: number;
1315
- experience: number;
1316
- ehp: number;
1317
- }
1318
- interface BossValue {
1319
- metric: Boss;
1320
- rank: number;
1321
- kills: number;
1322
- ehb: number;
1323
- }
1324
- interface ActivityValue {
1325
- metric: Activity;
1326
- rank: number;
1327
- score: number;
1328
- }
1329
- interface ComputedMetricValue {
1330
- metric: ComputedMetric;
1331
- rank: number;
1332
- value: number;
1333
- }
1334
- interface MetricLeaders {
1335
- skills: MapOf<Skill, Omit<SkillValue, 'ehp'> & {
1336
- player: Player | null;
1337
- }>;
1338
- bosses: MapOf<Boss, Omit<BossValue, 'ehb'> & {
1339
- player: Player | null;
1340
- }>;
1341
- activities: MapOf<Activity, ActivityValue & {
1342
- player: Player | null;
1343
- }>;
1344
- computed: MapOf<ComputedMetric, ComputedMetricValue & {
1345
- player: Player | null;
1346
- }>;
1347
- }
1348
- interface FormattedSnapshot {
1349
- id: number;
1350
- playerId: number;
1351
- createdAt: Date;
1352
- importedAt: Date | null;
1353
- data: {
1354
- skills: MapOf<Skill, SkillValue>;
1355
- bosses: MapOf<Boss, BossValue>;
1356
- activities: MapOf<Activity, ActivityValue>;
1357
- computed: MapOf<ComputedMetric, ComputedMetricValue>;
1358
- };
1359
- }
1360
-
1361
- interface GroupListItem extends Omit<Group, 'verificationHash'> {
1362
- memberCount: number;
1363
- }
1364
- interface GroupDetails extends GroupListItem {
1365
- socialLinks: GroupSocialLinks;
1366
- memberships: MembershipWithPlayer[];
1367
- roleOrders: GroupRoleOrder[];
1368
- }
1369
- interface MembershipWithGroup extends Membership {
1370
- group: GroupListItem;
1371
- }
1372
- interface MembershipWithPlayer extends Membership {
1373
- player: Player;
1374
- }
1375
- interface MemberInput {
1376
- username: string;
1377
- role: string | GroupRole;
1378
- }
1379
- interface GroupHiscoresSkillItem {
1380
- type: 'skill';
1381
- rank: number;
1382
- level: number;
1383
- experience: number;
1384
- }
1385
- interface GroupHiscoresBossItem {
1386
- type: 'boss';
1387
- rank: number;
1388
- kills: number;
1389
- }
1390
- interface GroupHiscoresActivityItem {
1391
- type: 'activity';
1392
- rank: number;
1393
- score: number;
1394
- }
1395
- interface GroupHiscoresComputedMetricItem {
1396
- type: 'computed';
1397
- rank: number;
1398
- value: number;
1399
- }
1400
- interface GroupHiscoresEntry {
1401
- player: Player;
1402
- data: GroupHiscoresSkillItem | GroupHiscoresBossItem | GroupHiscoresActivityItem | GroupHiscoresComputedMetricItem;
1403
- }
1404
- interface GroupStatistics {
1405
- maxedCombatCount: number;
1406
- maxedTotalCount: number;
1407
- maxed200msCount: number;
1408
- averageStats: FormattedSnapshot;
1409
- metricLeaders: MetricLeaders;
1410
- }
1411
- type MemberActivityWithPlayer = MemberActivity & {
1412
- player: Player;
1413
- };
1414
-
1415
- type CleanCompetition = Omit<Competition, 'verificationHash'>;
1416
- type CleanParticipation = Omit<Participation, 'startSnapshotId' | 'endSnapshotId'>;
1417
- interface CompetitionListItem extends CleanCompetition {
1418
- group?: GroupListItem;
1419
- participantCount: number;
1420
- }
1421
- interface CompetitionDetails extends CompetitionListItem {
1422
- participations: ParticipationWithPlayerAndProgress[];
1423
- }
1424
- interface CompetitionWithParticipations extends CompetitionListItem {
1425
- participations: ParticipationWithPlayer[];
1426
- }
1427
- interface ParticipationWithCompetition extends CleanParticipation {
1428
- competition: CompetitionListItem;
1429
- }
1430
- interface ParticipationWithPlayer extends CleanParticipation {
1431
- player: Player;
1432
- }
1433
- interface ParticipationWithPlayerAndProgress extends ParticipationWithPlayer {
1434
- progress: MeasuredDeltaProgress;
1435
- levels: MeasuredDeltaProgress;
1436
- }
1437
- interface ParticipationWithCompetitionAndStandings extends ParticipationWithCompetition {
1438
- progress: MeasuredDeltaProgress;
1439
- levels: MeasuredDeltaProgress;
1440
- rank: number;
1441
- }
1442
- interface Team {
1443
- name: string;
1444
- participants: string[];
1445
- }
1446
- type Top5ProgressResult = Array<{
1447
- player: Player;
1448
- history: Array<{
1449
- value: number;
1450
- date: Date;
1451
- }>;
1452
- }>;
1453
-
1454
- declare enum EfficiencyAlgorithmType {
1455
- MAIN = "main",
1456
- IRONMAN = "ironman",
1457
- ULTIMATE = "ultimate",
1458
- LVL3 = "lvl3",
1459
- F2P = "f2p",
1460
- F2P_LVL3 = "f2p_lvl3",
1461
- F2P_IRONMAN = "f2p_ironman",
1462
- F2P_LVL3_IRONMAN = "f2p_lvl3_ironman",
1463
- DEF1 = "def1"
1464
- }
1465
- interface SkillMetaMethod {
1466
- rate: number;
1467
- realRate?: number;
1468
- startExp: number;
1469
- description: string;
1470
- }
1471
- interface SkillMetaConfig {
1472
- skill: Skill;
1473
- methods: Array<SkillMetaMethod>;
1474
- bonuses: Bonus[];
1475
- }
1476
- interface BossMetaConfig {
1477
- boss: Boss;
1478
- rate: number;
1479
- }
1480
- interface Bonus {
1481
- originSkill: Skill;
1482
- bonusSkill: Skill;
1483
- startExp: number;
1484
- endExp: number;
1485
- maxBonus?: number;
1486
- end: boolean;
1487
- ratio: number;
1488
- }
1489
-
1490
- type DenyContext = {
1491
- reason: 'manual_review';
1492
- } | {
1493
- reason: 'old_stats_cannot_be_found';
1494
- } | {
1495
- reason: 'new_name_not_on_the_hiscores';
1496
- } | {
1497
- reason: 'negative_gains';
1498
- negativeGains: MapOf<Metric, number>;
1499
- };
1500
- type SkipContext = {
1501
- reason: 'transition_period_too_long';
1502
- maxHoursDiff: number;
1503
- hoursDiff: number;
1504
- } | {
1505
- reason: 'excessive_gains';
1506
- ehpDiff: number;
1507
- ehbDiff: number;
1508
- hoursDiff: number;
1509
- } | {
1510
- reason: 'total_level_too_low';
1511
- minTotalLevel: number;
1512
- totalLevel: number;
1513
- };
1514
- type NameChangeDetails = {
1515
- nameChange: NameChange;
1516
- data?: {
1517
- isNewOnHiscores: boolean;
1518
- isOldOnHiscores: boolean;
1519
- isNewTracked: boolean;
1520
- hasNegativeGains: boolean;
1521
- negativeGains: MapOf<Metric, number> | null;
1522
- timeDiff: number;
1523
- hoursDiff: number;
1524
- ehpDiff: number;
1525
- ehbDiff: number;
1526
- oldStats: FormattedSnapshot;
1527
- newStats: FormattedSnapshot | null;
1528
- };
1529
- };
1530
- type NameChangeWithPlayer = NameChange & {
1531
- player: Player;
1532
- };
1533
-
1534
- interface PlayerDetails extends Player {
1535
- combatLevel: number;
1536
- archive: PlayerArchive | null;
1537
- latestSnapshot: FormattedSnapshot | null;
1538
- annotations: PlayerAnnotation[];
1539
- }
1540
- interface FlaggedPlayerReviewContext {
1541
- previous: FormattedSnapshot;
1542
- rejected: FormattedSnapshot;
1543
- negativeGains: boolean;
1544
- excessiveGains: boolean;
1545
- possibleRollback: boolean;
1546
- excessiveGainsReversed: boolean;
1547
- data: {
1548
- stackableGainedRatio: number;
1549
- previousEHP: number;
1550
- previousEHB: number;
1551
- previousRank: number;
1552
- rejectedEHP: number;
1553
- rejectedEHB: number;
1554
- rejectedRank: number;
1555
- };
1556
- }
1557
- type PlayerArchiveWithPlayer = PlayerArchive & {
1558
- player: Player;
1559
- };
1560
-
1561
- type RecordLeaderboardEntry = Record & {
1562
- player: Player;
1563
- };
1564
-
1565
- type MapOf<K extends keyof any, T> = {
1566
- [P in K]: T;
1567
- };
1568
-
1569
- declare enum CompetitionStatus {
1570
- UPCOMING = "upcoming",
1571
- ONGOING = "ongoing",
1572
- FINISHED = "finished"
1573
- }
1574
- declare enum CompetitionCSVTableType {
1575
- TEAM = "team",
1576
- TEAMS = "teams",
1577
- PARTICIPANTS = "participants"
1578
- }
1579
- declare const CompetitionTypeProps: MapOf<CompetitionType, {
1580
- name: string;
1581
- }>;
1582
- declare const CompetitionStatusProps: MapOf<CompetitionStatus, {
1583
- name: string;
1584
- }>;
1585
- declare const COMPETITION_TYPES: ("classic" | "team")[];
1586
- declare const COMPETITION_STATUSES: CompetitionStatus[];
1587
- declare function isCompetitionType(typeString: string): typeString is CompetitionType;
1588
- declare function isCompetitionStatus(statusString: string): statusString is CompetitionStatus;
1589
-
1590
- interface CountryDetails {
1591
- code: Country;
1592
- name: string;
1593
- }
1594
- declare const CountryProps: MapOf<Country, CountryDetails>;
1595
- declare const COUNTRY_CODES: ("AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AO" | "AQ" | "AR" | "AS" | "AT" | "AU" | "AW" | "AX" | "AZ" | "BA" | "BB" | "BD" | "BE" | "BF" | "BG" | "BH" | "BI" | "BJ" | "BL" | "BM" | "BN" | "BO" | "BQ" | "BR" | "BS" | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG" | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV" | "CW" | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC" | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM" | "FO" | "FR" | "GA" | "GB" | "GB_NIR" | "GB_SCT" | "GB_WLS" | "GD" | "GE" | "GF" | "GG" | "GH" | "GI" | "GL" | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY" | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IM" | "IN" | "IO" | "IQ" | "IR" | "IS" | "IT" | "JE" | "JM" | "JO" | "JP" | "KE" | "KG" | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA" | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY" | "MA" | "MC" | "MD" | "ME" | "MF" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO" | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY" | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP" | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK" | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE" | "RO" | "RS" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH" | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "SS" | "ST" | "SV" | "SX" | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TL" | "TM" | "TN" | "TO" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG" | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN" | "VU" | "WF" | "WS" | "YE" | "YT" | "ZA" | "ZM" | "ZW")[];
1596
- declare function isCountry(countryCodeString: string): countryCodeString is Country;
1597
- declare function findCountry(countryIdentifier: string): CountryDetails | undefined;
1598
- declare function findCountryByName(countryName: string): CountryDetails | undefined;
1599
- declare function findCountryByCode(countryCode: string): CountryDetails | undefined;
1600
-
1601
- declare const MAX_LEVEL = 99;
1602
- declare const MAX_VIRTUAL_LEVEL = 126;
1603
- declare const MAX_SKILL_EXP = 200000000;
1604
- declare const SKILL_EXP_AT_99 = 13034431;
1605
- declare const CAPPED_MAX_TOTAL_XP: number;
1606
- declare function getExpForLevel(level: number): number;
1607
- declare function getLevel(exp: number, virtual?: boolean): number;
1608
- declare function getCombatLevel(attack: number, strength: number, defence: number, ranged: number, magic: number, hitpoints: number, prayer: number): number;
1609
-
1610
- declare const GROUP_ROLES: ("magic" | "slayer" | "hunter" | "achiever" | "adamant" | "adept" | "administrator" | "admiral" | "adventurer" | "air" | "anchor" | "apothecary" | "archer" | "armadylean" | "artillery" | "artisan" | "asgarnian" | "assassin" | "assistant" | "astral" | "athlete" | "attacker" | "bandit" | "bandosian" | "barbarian" | "battlemage" | "beast" | "berserker" | "blisterwood" | "blood" | "blue" | "bob" | "body" | "brassican" | "brawler" | "brigadier" | "brigand" | "bronze" | "bruiser" | "bulwark" | "burglar" | "burnt" | "cadet" | "captain" | "carry" | "champion" | "chaos" | "cleric" | "collector" | "colonel" | "commander" | "competitor" | "completionist" | "constructor" | "cook" | "coordinator" | "corporal" | "cosmic" | "councillor" | "crafter" | "crew" | "crusader" | "cutpurse" | "death" | "defender" | "defiler" | "deputy_owner" | "destroyer" | "diamond" | "diseased" | "doctor" | "dogsbody" | "dragon" | "dragonstone" | "druid" | "duellist" | "earth" | "elite" | "emerald" | "enforcer" | "epic" | "executive" | "expert" | "explorer" | "farmer" | "feeder" | "fighter" | "fire" | "firemaker" | "firestarter" | "fisher" | "fletcher" | "forager" | "fremennik" | "gamer" | "gatherer" | "general" | "gnome_child" | "gnome_elder" | "goblin" | "gold" | "goon" | "green" | "grey" | "guardian" | "guthixian" | "harpoon" | "healer" | "hellcat" | "helper" | "herbologist" | "hero" | "holy" | "hoarder" | "ignitor" | "illusionist" | "imp" | "infantry" | "inquisitor" | "iron" | "jade" | "justiciar" | "kandarin" | "karamjan" | "kharidian" | "kitten" | "knight" | "labourer" | "law" | "leader" | "learner" | "legacy" | "legend" | "legionnaire" | "lieutenant" | "looter" | "lumberjack" | "magician" | "major" | "maple" | "marshal" | "master" | "maxed" | "mediator" | "medic" | "mentor" | "member" | "merchant" | "mind" | "miner" | "minion" | "misthalinian" | "mithril" | "moderator" | "monarch" | "morytanian" | "mystic" | "myth" | "natural" | "nature" | "necromancer" | "ninja" | "noble" | "novice" | "nurse" | "oak" | "officer" | "onyx" | "opal" | "oracle" | "orange" | "owner" | "page" | "paladin" | "pawn" | "pilgrim" | "pine" | "pink" | "prefect" | "priest" | "private" | "prodigy" | "proselyte" | "prospector" | "protector" | "pure" | "purple" | "pyromancer" | "quester" | "racer" | "raider" | "ranger" | "record_chaser" | "recruit" | "recruiter" | "red_topaz" | "red" | "rogue" | "ruby" | "rune" | "runecrafter" | "sage" | "sapphire" | "saradominist" | "saviour" | "scavenger" | "scholar" | "scourge" | "scout" | "scribe" | "seer" | "senator" | "sentry" | "serenist" | "sergeant" | "shaman" | "sheriff" | "short_green_guy" | "skiller" | "skulled" | "smiter" | "smith" | "smuggler" | "sniper" | "soul" | "specialist" | "speed_runner" | "spellcaster" | "squire" | "staff" | "steel" | "strider" | "striker" | "summoner" | "superior" | "supervisor" | "teacher" | "templar" | "therapist" | "thief" | "tirannian" | "trialist" | "trickster" | "tzkal" | "tztok" | "unholy" | "vagrant" | "vanguard" | "walker" | "wanderer" | "warden" | "warlock" | "warrior" | "water" | "wild" | "willow" | "wily" | "wintumber" | "witch" | "wizard" | "worker" | "wrath" | "xerician" | "yellow" | "yew" | "zamorakian" | "zarosian" | "zealot" | "zenyte")[];
1611
- declare const PRIVELEGED_GROUP_ROLES: GroupRole[];
1612
- type GroupRolePropsMap = MapOf<GroupRole, {
1613
- name: string;
1614
- isPriveleged: boolean;
1615
- }>;
1616
- declare const GroupRoleProps: GroupRolePropsMap;
1617
- declare function findGroupRole(roleName: string): GroupRole | null;
1618
- declare function isGroupRole(roleString: string): roleString is GroupRole;
1619
-
1620
- declare enum MetricType {
1621
- SKILL = "skill",
1622
- BOSS = "boss",
1623
- ACTIVITY = "activity",
1624
- COMPUTED = "computed"
1625
- }
1626
- declare enum MetricMeasure {
1627
- EXPERIENCE = "experience",
1628
- KILLS = "kills",
1629
- SCORE = "score",
1630
- VALUE = "value"
1631
- }
1632
- interface SkillProperties {
1633
- name: string;
1634
- isCombat: boolean;
1635
- isMembers: boolean;
1636
- type: MetricType;
1637
- measure: MetricMeasure;
1638
- }
1639
- interface BossProperties {
1640
- name: string;
1641
- minimumValue: number;
1642
- isMembers: boolean;
1643
- type: MetricType;
1644
- measure: MetricMeasure;
1645
- }
1646
- interface ActivityProperties {
1647
- name: string;
1648
- minimumValue: number;
1649
- type: MetricType;
1650
- measure: MetricMeasure;
1651
- }
1652
- interface ComputedMetricProperties {
1653
- name: string;
1654
- type: MetricType;
1655
- measure: MetricMeasure;
1656
- }
1657
- declare const MetricProps: {
1658
- readonly ehp: ComputedMetricProperties;
1659
- readonly ehb: ComputedMetricProperties;
1660
- readonly league_points: ActivityProperties;
1661
- readonly bounty_hunter_hunter: ActivityProperties;
1662
- readonly bounty_hunter_rogue: ActivityProperties;
1663
- readonly clue_scrolls_all: ActivityProperties;
1664
- readonly clue_scrolls_beginner: ActivityProperties;
1665
- readonly clue_scrolls_easy: ActivityProperties;
1666
- readonly clue_scrolls_medium: ActivityProperties;
1667
- readonly clue_scrolls_hard: ActivityProperties;
1668
- readonly clue_scrolls_elite: ActivityProperties;
1669
- readonly clue_scrolls_master: ActivityProperties;
1670
- readonly last_man_standing: ActivityProperties;
1671
- readonly pvp_arena: ActivityProperties;
1672
- readonly soul_wars_zeal: ActivityProperties;
1673
- readonly guardians_of_the_rift: ActivityProperties;
1674
- readonly colosseum_glory: ActivityProperties;
1675
- readonly collections_logged: ActivityProperties;
1676
- readonly abyssal_sire: BossProperties;
1677
- readonly alchemical_hydra: BossProperties;
1678
- readonly amoxliatl: BossProperties;
1679
- readonly araxxor: BossProperties;
1680
- readonly artio: BossProperties;
1681
- readonly barrows_chests: BossProperties;
1682
- readonly bryophyta: BossProperties;
1683
- readonly callisto: BossProperties;
1684
- readonly calvarion: BossProperties;
1685
- readonly cerberus: BossProperties;
1686
- readonly chambers_of_xeric: BossProperties;
1687
- readonly chambers_of_xeric_challenge_mode: BossProperties;
1688
- readonly chaos_elemental: BossProperties;
1689
- readonly chaos_fanatic: BossProperties;
1690
- readonly commander_zilyana: BossProperties;
1691
- readonly corporeal_beast: BossProperties;
1692
- readonly crazy_archaeologist: BossProperties;
1693
- readonly dagannoth_prime: BossProperties;
1694
- readonly dagannoth_rex: BossProperties;
1695
- readonly dagannoth_supreme: BossProperties;
1696
- readonly deranged_archaeologist: BossProperties;
1697
- readonly doom_of_mokhaiotl: BossProperties;
1698
- readonly duke_sucellus: BossProperties;
1699
- readonly general_graardor: BossProperties;
1700
- readonly giant_mole: BossProperties;
1701
- readonly grotesque_guardians: BossProperties;
1702
- readonly hespori: BossProperties;
1703
- readonly kalphite_queen: BossProperties;
1704
- readonly king_black_dragon: BossProperties;
1705
- readonly kraken: BossProperties;
1706
- readonly kreearra: BossProperties;
1707
- readonly kril_tsutsaroth: BossProperties;
1708
- readonly lunar_chests: BossProperties;
1709
- readonly mimic: BossProperties;
1710
- readonly nex: BossProperties;
1711
- readonly nightmare: BossProperties;
1712
- readonly phosanis_nightmare: BossProperties;
1713
- readonly obor: BossProperties;
1714
- readonly phantom_muspah: BossProperties;
1715
- readonly sarachnis: BossProperties;
1716
- readonly scorpia: BossProperties;
1717
- readonly scurrius: BossProperties;
1718
- readonly skotizo: BossProperties;
1719
- readonly sol_heredit: BossProperties;
1720
- readonly spindel: BossProperties;
1721
- readonly tempoross: BossProperties;
1722
- readonly the_gauntlet: BossProperties;
1723
- readonly the_corrupted_gauntlet: BossProperties;
1724
- readonly the_hueycoatl: BossProperties;
1725
- readonly the_leviathan: BossProperties;
1726
- readonly the_royal_titans: BossProperties;
1727
- readonly the_whisperer: BossProperties;
1728
- readonly theatre_of_blood: BossProperties;
1729
- readonly theatre_of_blood_hard_mode: BossProperties;
1730
- readonly thermonuclear_smoke_devil: BossProperties;
1731
- readonly tombs_of_amascut: BossProperties;
1732
- readonly tombs_of_amascut_expert: BossProperties;
1733
- readonly tzkal_zuk: BossProperties;
1734
- readonly tztok_jad: BossProperties;
1735
- readonly vardorvis: BossProperties;
1736
- readonly venenatis: BossProperties;
1737
- readonly vetion: BossProperties;
1738
- readonly vorkath: BossProperties;
1739
- readonly wintertodt: BossProperties;
1740
- readonly yama: BossProperties;
1741
- readonly zalcano: BossProperties;
1742
- readonly zulrah: BossProperties;
1743
- readonly overall: SkillProperties;
1744
- readonly attack: SkillProperties;
1745
- readonly defence: SkillProperties;
1746
- readonly strength: SkillProperties;
1747
- readonly hitpoints: SkillProperties;
1748
- readonly ranged: SkillProperties;
1749
- readonly prayer: SkillProperties;
1750
- readonly magic: SkillProperties;
1751
- readonly cooking: SkillProperties;
1752
- readonly woodcutting: SkillProperties;
1753
- readonly fletching: SkillProperties;
1754
- readonly fishing: SkillProperties;
1755
- readonly firemaking: SkillProperties;
1756
- readonly crafting: SkillProperties;
1757
- readonly smithing: SkillProperties;
1758
- readonly mining: SkillProperties;
1759
- readonly herblore: SkillProperties;
1760
- readonly agility: SkillProperties;
1761
- readonly thieving: SkillProperties;
1762
- readonly slayer: SkillProperties;
1763
- readonly farming: SkillProperties;
1764
- readonly runecrafting: SkillProperties;
1765
- readonly hunter: SkillProperties;
1766
- readonly construction: SkillProperties;
1767
- };
1768
- declare const METRICS: Metric[];
1769
- declare const SKILLS: Skill[];
1770
- declare const BOSSES: Boss[];
1771
- declare const ACTIVITIES: Activity[];
1772
- declare const COMPUTED_METRICS: ComputedMetric[];
1773
- declare const REAL_SKILLS: Skill[];
1774
- declare const F2P_BOSSES: Boss[];
1775
- declare const MEMBER_SKILLS: Skill[];
1776
- declare const COMBAT_SKILLS: Skill[];
1777
- declare const REAL_METRICS: (Skill | Activity | Boss)[];
1778
- declare function findMetric(metricName: string): Metric | null;
1779
- declare function isMetric(metric: Metric | string): metric is Metric;
1780
- declare function isSkill(metric: Metric | string): metric is Skill;
1781
- declare function isActivity(metric: Metric | string): metric is Activity;
1782
- declare function isBoss(metric: Metric | string): metric is Boss;
1783
- declare function isComputedMetric(metric: Metric | string): metric is ComputedMetric;
1784
- declare function getMetricRankKey<T extends Metric>(metric: T): `${T}Rank`;
1785
- type MetricValueKey = `${Skill}Experience` | `${Boss}Kills` | `${Activity}Score` | `${ComputedMetric}Value`;
1786
- declare function getMetricValueKey(metric: Metric): MetricValueKey;
1787
- declare function getMetricMeasure(metric: Metric): MetricMeasure;
1788
- declare function getMetricName(metric: Metric): string;
1789
- declare function getMinimumValue(metric: Metric): number;
1790
- declare function getParentEfficiencyMetric(metric: Metric): "ehp" | "ehb";
1791
-
1792
- type PeriodPropsMap = MapOf<Period, {
1793
- name: string;
1794
- milliseconds: number;
1795
- }>;
1796
- declare const PeriodProps: PeriodPropsMap;
1797
- declare const PERIODS: ("five_min" | "day" | "week" | "month" | "year")[];
1798
- declare function findPeriod(periodName: string): Period | null;
1799
- declare function isPeriod(periodString: string): periodString is Period;
1800
- declare function parsePeriodExpression(periodExpression: string): {
1801
- expression: string;
1802
- durationMs: number;
1803
- };
1804
948
 
1805
- declare const PlayerTypeProps: MapOf<PlayerType, {
1806
- name: string;
1807
- }>;
1808
- declare const PlayerBuildProps: MapOf<PlayerBuild, {
949
+ declare const GroupRole: {
950
+ readonly ACHIEVER: "achiever";
951
+ readonly ADAMANT: "adamant";
952
+ readonly ADEPT: "adept";
953
+ readonly ADMINISTRATOR: "administrator";
954
+ readonly ADMIRAL: "admiral";
955
+ readonly ADVENTURER: "adventurer";
956
+ readonly AIR: "air";
957
+ readonly ANCHOR: "anchor";
958
+ readonly APOTHECARY: "apothecary";
959
+ readonly ARCHER: "archer";
960
+ readonly ARMADYLEAN: "armadylean";
961
+ readonly ARTILLERY: "artillery";
962
+ readonly ARTISAN: "artisan";
963
+ readonly ASGARNIAN: "asgarnian";
964
+ readonly ASSASSIN: "assassin";
965
+ readonly ASSISTANT: "assistant";
966
+ readonly ASTRAL: "astral";
967
+ readonly ATHLETE: "athlete";
968
+ readonly ATTACKER: "attacker";
969
+ readonly BANDIT: "bandit";
970
+ readonly BANDOSIAN: "bandosian";
971
+ readonly BARBARIAN: "barbarian";
972
+ readonly BATTLEMAGE: "battlemage";
973
+ readonly BEAST: "beast";
974
+ readonly BERSERKER: "berserker";
975
+ readonly BLISTERWOOD: "blisterwood";
976
+ readonly BLOOD: "blood";
977
+ readonly BLUE: "blue";
978
+ readonly BOB: "bob";
979
+ readonly BODY: "body";
980
+ readonly BRASSICAN: "brassican";
981
+ readonly BRAWLER: "brawler";
982
+ readonly BRIGADIER: "brigadier";
983
+ readonly BRIGAND: "brigand";
984
+ readonly BRONZE: "bronze";
985
+ readonly BRUISER: "bruiser";
986
+ readonly BULWARK: "bulwark";
987
+ readonly BURGLAR: "burglar";
988
+ readonly BURNT: "burnt";
989
+ readonly CADET: "cadet";
990
+ readonly CAPTAIN: "captain";
991
+ readonly CARRY: "carry";
992
+ readonly CHAMPION: "champion";
993
+ readonly CHAOS: "chaos";
994
+ readonly CLERIC: "cleric";
995
+ readonly COLLECTOR: "collector";
996
+ readonly COLONEL: "colonel";
997
+ readonly COMMANDER: "commander";
998
+ readonly COMPETITOR: "competitor";
999
+ readonly COMPLETIONIST: "completionist";
1000
+ readonly CONSTRUCTOR: "constructor";
1001
+ readonly COOK: "cook";
1002
+ readonly COORDINATOR: "coordinator";
1003
+ readonly CORPORAL: "corporal";
1004
+ readonly COSMIC: "cosmic";
1005
+ readonly COUNCILLOR: "councillor";
1006
+ readonly CRAFTER: "crafter";
1007
+ readonly CREW: "crew";
1008
+ readonly CRUSADER: "crusader";
1009
+ readonly CUTPURSE: "cutpurse";
1010
+ readonly DEATH: "death";
1011
+ readonly DEFENDER: "defender";
1012
+ readonly DEFILER: "defiler";
1013
+ readonly DEPUTY_OWNER: "deputy_owner";
1014
+ readonly DESTROYER: "destroyer";
1015
+ readonly DIAMOND: "diamond";
1016
+ readonly DISEASED: "diseased";
1017
+ readonly DOCTOR: "doctor";
1018
+ readonly DOGSBODY: "dogsbody";
1019
+ readonly DRAGON: "dragon";
1020
+ readonly DRAGONSTONE: "dragonstone";
1021
+ readonly DRUID: "druid";
1022
+ readonly DUELLIST: "duellist";
1023
+ readonly EARTH: "earth";
1024
+ readonly ELITE: "elite";
1025
+ readonly EMERALD: "emerald";
1026
+ readonly ENFORCER: "enforcer";
1027
+ readonly EPIC: "epic";
1028
+ readonly EXECUTIVE: "executive";
1029
+ readonly EXPERT: "expert";
1030
+ readonly EXPLORER: "explorer";
1031
+ readonly FARMER: "farmer";
1032
+ readonly FEEDER: "feeder";
1033
+ readonly FIGHTER: "fighter";
1034
+ readonly FIRE: "fire";
1035
+ readonly FIREMAKER: "firemaker";
1036
+ readonly FIRESTARTER: "firestarter";
1037
+ readonly FISHER: "fisher";
1038
+ readonly FLETCHER: "fletcher";
1039
+ readonly FORAGER: "forager";
1040
+ readonly FREMENNIK: "fremennik";
1041
+ readonly GAMER: "gamer";
1042
+ readonly GATHERER: "gatherer";
1043
+ readonly GENERAL: "general";
1044
+ readonly GNOME_CHILD: "gnome_child";
1045
+ readonly GNOME_ELDER: "gnome_elder";
1046
+ readonly GOBLIN: "goblin";
1047
+ readonly GOLD: "gold";
1048
+ readonly GOON: "goon";
1049
+ readonly GREEN: "green";
1050
+ readonly GREY: "grey";
1051
+ readonly GUARDIAN: "guardian";
1052
+ readonly GUTHIXIAN: "guthixian";
1053
+ readonly HARPOON: "harpoon";
1054
+ readonly HEALER: "healer";
1055
+ readonly HELLCAT: "hellcat";
1056
+ readonly HELPER: "helper";
1057
+ readonly HERBOLOGIST: "herbologist";
1058
+ readonly HERO: "hero";
1059
+ readonly HOLY: "holy";
1060
+ readonly HOARDER: "hoarder";
1061
+ readonly HUNTER: "hunter";
1062
+ readonly IGNITOR: "ignitor";
1063
+ readonly ILLUSIONIST: "illusionist";
1064
+ readonly IMP: "imp";
1065
+ readonly INFANTRY: "infantry";
1066
+ readonly INQUISITOR: "inquisitor";
1067
+ readonly IRON: "iron";
1068
+ readonly JADE: "jade";
1069
+ readonly JUSTICIAR: "justiciar";
1070
+ readonly KANDARIN: "kandarin";
1071
+ readonly KARAMJAN: "karamjan";
1072
+ readonly KHARIDIAN: "kharidian";
1073
+ readonly KITTEN: "kitten";
1074
+ readonly KNIGHT: "knight";
1075
+ readonly LABOURER: "labourer";
1076
+ readonly LAW: "law";
1077
+ readonly LEADER: "leader";
1078
+ readonly LEARNER: "learner";
1079
+ readonly LEGACY: "legacy";
1080
+ readonly LEGEND: "legend";
1081
+ readonly LEGIONNAIRE: "legionnaire";
1082
+ readonly LIEUTENANT: "lieutenant";
1083
+ readonly LOOTER: "looter";
1084
+ readonly LUMBERJACK: "lumberjack";
1085
+ readonly MAGIC: "magic";
1086
+ readonly MAGICIAN: "magician";
1087
+ readonly MAJOR: "major";
1088
+ readonly MAPLE: "maple";
1089
+ readonly MARSHAL: "marshal";
1090
+ readonly MASTER: "master";
1091
+ readonly MAXED: "maxed";
1092
+ readonly MEDIATOR: "mediator";
1093
+ readonly MEDIC: "medic";
1094
+ readonly MENTOR: "mentor";
1095
+ readonly MEMBER: "member";
1096
+ readonly MERCHANT: "merchant";
1097
+ readonly MIND: "mind";
1098
+ readonly MINER: "miner";
1099
+ readonly MINION: "minion";
1100
+ readonly MISTHALINIAN: "misthalinian";
1101
+ readonly MITHRIL: "mithril";
1102
+ readonly MODERATOR: "moderator";
1103
+ readonly MONARCH: "monarch";
1104
+ readonly MORYTANIAN: "morytanian";
1105
+ readonly MYSTIC: "mystic";
1106
+ readonly MYTH: "myth";
1107
+ readonly NATURAL: "natural";
1108
+ readonly NATURE: "nature";
1109
+ readonly NECROMANCER: "necromancer";
1110
+ readonly NINJA: "ninja";
1111
+ readonly NOBLE: "noble";
1112
+ readonly NOVICE: "novice";
1113
+ readonly NURSE: "nurse";
1114
+ readonly OAK: "oak";
1115
+ readonly OFFICER: "officer";
1116
+ readonly ONYX: "onyx";
1117
+ readonly OPAL: "opal";
1118
+ readonly ORACLE: "oracle";
1119
+ readonly ORANGE: "orange";
1120
+ readonly OWNER: "owner";
1121
+ readonly PAGE: "page";
1122
+ readonly PALADIN: "paladin";
1123
+ readonly PAWN: "pawn";
1124
+ readonly PILGRIM: "pilgrim";
1125
+ readonly PINE: "pine";
1126
+ readonly PINK: "pink";
1127
+ readonly PREFECT: "prefect";
1128
+ readonly PRIEST: "priest";
1129
+ readonly PRIVATE: "private";
1130
+ readonly PRODIGY: "prodigy";
1131
+ readonly PROSELYTE: "proselyte";
1132
+ readonly PROSPECTOR: "prospector";
1133
+ readonly PROTECTOR: "protector";
1134
+ readonly PURE: "pure";
1135
+ readonly PURPLE: "purple";
1136
+ readonly PYROMANCER: "pyromancer";
1137
+ readonly QUESTER: "quester";
1138
+ readonly RACER: "racer";
1139
+ readonly RAIDER: "raider";
1140
+ readonly RANGER: "ranger";
1141
+ readonly RECORD_CHASER: "record_chaser";
1142
+ readonly RECRUIT: "recruit";
1143
+ readonly RECRUITER: "recruiter";
1144
+ readonly RED_TOPAZ: "red_topaz";
1145
+ readonly RED: "red";
1146
+ readonly ROGUE: "rogue";
1147
+ readonly RUBY: "ruby";
1148
+ readonly RUNE: "rune";
1149
+ readonly RUNECRAFTER: "runecrafter";
1150
+ readonly SAGE: "sage";
1151
+ readonly SAPPHIRE: "sapphire";
1152
+ readonly SARADOMINIST: "saradominist";
1153
+ readonly SAVIOUR: "saviour";
1154
+ readonly SCAVENGER: "scavenger";
1155
+ readonly SCHOLAR: "scholar";
1156
+ readonly SCOURGE: "scourge";
1157
+ readonly SCOUT: "scout";
1158
+ readonly SCRIBE: "scribe";
1159
+ readonly SEER: "seer";
1160
+ readonly SENATOR: "senator";
1161
+ readonly SENTRY: "sentry";
1162
+ readonly SERENIST: "serenist";
1163
+ readonly SERGEANT: "sergeant";
1164
+ readonly SHAMAN: "shaman";
1165
+ readonly SHERIFF: "sheriff";
1166
+ readonly SHORT_GREEN_GUY: "short_green_guy";
1167
+ readonly SKILLER: "skiller";
1168
+ readonly SKULLED: "skulled";
1169
+ readonly SLAYER: "slayer";
1170
+ readonly SMITER: "smiter";
1171
+ readonly SMITH: "smith";
1172
+ readonly SMUGGLER: "smuggler";
1173
+ readonly SNIPER: "sniper";
1174
+ readonly SOUL: "soul";
1175
+ readonly SPECIALIST: "specialist";
1176
+ readonly SPEED_RUNNER: "speed_runner";
1177
+ readonly SPELLCASTER: "spellcaster";
1178
+ readonly SQUIRE: "squire";
1179
+ readonly STAFF: "staff";
1180
+ readonly STEEL: "steel";
1181
+ readonly STRIDER: "strider";
1182
+ readonly STRIKER: "striker";
1183
+ readonly SUMMONER: "summoner";
1184
+ readonly SUPERIOR: "superior";
1185
+ readonly SUPERVISOR: "supervisor";
1186
+ readonly TEACHER: "teacher";
1187
+ readonly TEMPLAR: "templar";
1188
+ readonly THERAPIST: "therapist";
1189
+ readonly THIEF: "thief";
1190
+ readonly TIRANNIAN: "tirannian";
1191
+ readonly TRIALIST: "trialist";
1192
+ readonly TRICKSTER: "trickster";
1193
+ readonly TZKAL: "tzkal";
1194
+ readonly TZTOK: "tztok";
1195
+ readonly UNHOLY: "unholy";
1196
+ readonly VAGRANT: "vagrant";
1197
+ readonly VANGUARD: "vanguard";
1198
+ readonly WALKER: "walker";
1199
+ readonly WANDERER: "wanderer";
1200
+ readonly WARDEN: "warden";
1201
+ readonly WARLOCK: "warlock";
1202
+ readonly WARRIOR: "warrior";
1203
+ readonly WATER: "water";
1204
+ readonly WILD: "wild";
1205
+ readonly WILLOW: "willow";
1206
+ readonly WILY: "wily";
1207
+ readonly WINTUMBER: "wintumber";
1208
+ readonly WITCH: "witch";
1209
+ readonly WIZARD: "wizard";
1210
+ readonly WORKER: "worker";
1211
+ readonly WRATH: "wrath";
1212
+ readonly XERICIAN: "xerician";
1213
+ readonly YELLOW: "yellow";
1214
+ readonly YEW: "yew";
1215
+ readonly ZAMORAKIAN: "zamorakian";
1216
+ readonly ZAROSIAN: "zarosian";
1217
+ readonly ZEALOT: "zealot";
1218
+ readonly ZENYTE: "zenyte";
1219
+ };
1220
+ type GroupRole = (typeof GroupRole)[keyof typeof GroupRole];
1221
+ declare const GROUP_ROLES: GroupRole[];
1222
+
1223
+ interface GroupRoleOrder {
1224
+ groupId: number;
1225
+ role: GroupRole;
1226
+ index: number;
1227
+ }
1228
+
1229
+ interface GroupSocialLinks {
1230
+ id: number;
1231
+ groupId: number;
1232
+ website: string | null;
1233
+ discord: string | null;
1234
+ twitter: string | null;
1235
+ youtube: string | null;
1236
+ twitch: string | null;
1237
+ createdAt: Date;
1238
+ updatedAt: Date;
1239
+ }
1240
+
1241
+ interface Group {
1242
+ id: number;
1809
1243
  name: string;
1810
- }>;
1811
- declare const PlayerStatusProps: MapOf<PlayerStatus, {
1244
+ clanChat: string | null;
1245
+ description: string | null;
1246
+ homeworld: number | null;
1247
+ verified: boolean;
1248
+ patron: boolean;
1249
+ visible: boolean;
1250
+ profileImage: string | null;
1251
+ bannerImage: string | null;
1252
+ score: number;
1253
+ verificationHash: string;
1254
+ createdAt: Date;
1255
+ updatedAt: Date;
1256
+ creatorIpHash: string | null;
1257
+ }
1258
+
1259
+ declare const MemberActivityType: {
1260
+ readonly JOINED: "joined";
1261
+ readonly LEFT: "left";
1262
+ readonly CHANGED_ROLE: "changed_role";
1263
+ };
1264
+ type MemberActivityType = (typeof MemberActivityType)[keyof typeof MemberActivityType];
1265
+
1266
+ interface MemberActivity {
1267
+ groupId: number;
1268
+ playerId: number;
1269
+ type: MemberActivityType;
1270
+ role: GroupRole | null;
1271
+ previousRole: GroupRole | null;
1272
+ createdAt: Date;
1273
+ }
1274
+
1275
+ interface Membership {
1276
+ playerId: number;
1277
+ groupId: number;
1278
+ role: GroupRole;
1279
+ createdAt: Date;
1280
+ updatedAt: Date;
1281
+ }
1282
+
1283
+ interface MetricDelta {
1284
+ start: number;
1285
+ end: number;
1286
+ gained: number;
1287
+ }
1288
+
1289
+ declare enum MetricType {
1290
+ SKILL = "skill",
1291
+ BOSS = "boss",
1292
+ ACTIVITY = "activity",
1293
+ COMPUTED = "computed"
1294
+ }
1295
+
1296
+ type NameChangeDenyContext = {
1297
+ reason: 'manual_review';
1298
+ } | {
1299
+ reason: 'old_stats_cannot_be_found';
1300
+ } | {
1301
+ reason: 'new_name_not_on_the_hiscores';
1302
+ } | {
1303
+ reason: 'negative_gains';
1304
+ negativeGains: Record<Metric, number>;
1305
+ };
1306
+ type NameChangeSkipContext = {
1307
+ reason: 'transition_period_too_long';
1308
+ maxHoursDiff: number;
1309
+ hoursDiff: number;
1310
+ } | {
1311
+ reason: 'excessive_gains';
1312
+ ehpDiff: number;
1313
+ ehbDiff: number;
1314
+ hoursDiff: number;
1315
+ } | {
1316
+ reason: 'total_level_too_low';
1317
+ minTotalLevel: number;
1318
+ totalLevel: number;
1319
+ };
1320
+ type NameChangeReviewContext = NameChangeSkipContext | NameChangeDenyContext;
1321
+
1322
+ declare const NameChangeStatus: {
1323
+ readonly PENDING: "pending";
1324
+ readonly DENIED: "denied";
1325
+ readonly APPROVED: "approved";
1326
+ };
1327
+ type NameChangeStatus = (typeof NameChangeStatus)[keyof typeof NameChangeStatus];
1328
+
1329
+ interface NameChange {
1330
+ id: number;
1331
+ playerId: number;
1332
+ oldName: string;
1333
+ newName: string;
1334
+ status: NameChangeStatus;
1335
+ reviewContext: NameChangeReviewContext | null;
1336
+ resolvedAt: Date | null;
1337
+ createdAt: Date;
1338
+ updatedAt: Date;
1339
+ }
1340
+
1341
+ interface Participation {
1342
+ playerId: number;
1343
+ competitionId: number;
1344
+ startSnapshotId: number | null;
1345
+ endSnapshotId: number | null;
1346
+ teamName: string | null;
1347
+ createdAt: Date;
1348
+ updatedAt: Date;
1349
+ }
1350
+
1351
+ interface Patron {
1352
+ id: string;
1812
1353
  name: string;
1813
- }>;
1814
- declare const PLAYER_TYPES: ("unknown" | "regular" | "ironman" | "hardcore" | "ultimate")[];
1815
- declare const PLAYER_BUILDS: ("main" | "f2p" | "f2p_lvl3" | "lvl3" | "zerker" | "def1" | "hp10")[];
1816
- declare const PLAYER_STATUSES: ("active" | "unranked" | "flagged" | "archived" | "banned")[];
1817
- declare function isPlayerType(typeString: string): typeString is PlayerType;
1818
- declare function isPlayerBuild(buildString: string): buildString is PlayerBuild;
1819
- declare function isPlayerStatus(statusString: string): statusString is PlayerStatus;
1820
- declare function findPlayerType(typeName: string): PlayerType | null;
1821
- declare function findPlayerBuild(buildName: string): PlayerBuild | null;
1354
+ email: string;
1355
+ discordId: string | null;
1356
+ groupId: number | null;
1357
+ playerId: number | null;
1358
+ tier: number;
1359
+ createdAt: Date;
1360
+ }
1361
+
1362
+ declare const PlayerAnnotationType: {
1363
+ readonly OPT_OUT: "opt_out";
1364
+ readonly OPT_OUT_GROUPS: "opt_out_groups";
1365
+ readonly OPT_OUT_COMPETITIONS: "opt_out_competitions";
1366
+ readonly BLOCKED: "blocked";
1367
+ readonly FAKE_F2P: "fake_f2p";
1368
+ };
1369
+ type PlayerAnnotationType = (typeof PlayerAnnotationType)[keyof typeof PlayerAnnotationType];
1370
+
1371
+ interface PlayerAnnotation {
1372
+ playerId: number;
1373
+ type: PlayerAnnotationType;
1374
+ createdAt: Date;
1375
+ }
1376
+
1377
+ interface PlayerArchive {
1378
+ playerId: number;
1379
+ previousUsername: string;
1380
+ archiveUsername: string;
1381
+ restoredUsername: string | null;
1382
+ createdAt: Date;
1383
+ restoredAt: Date | null;
1384
+ }
1385
+
1386
+ declare const PlayerBuild: {
1387
+ readonly MAIN: "main";
1388
+ readonly F2P: "f2p";
1389
+ readonly F2P_LVL3: "f2p_lvl3";
1390
+ readonly LVL3: "lvl3";
1391
+ readonly ZERKER: "zerker";
1392
+ readonly DEF1: "def1";
1393
+ readonly HP10: "hp10";
1394
+ };
1395
+ type PlayerBuild = (typeof PlayerBuild)[keyof typeof PlayerBuild];
1396
+ declare const PLAYER_BUILDS: PlayerBuild[];
1397
+
1398
+ declare const PlayerStatus: {
1399
+ readonly ACTIVE: "active";
1400
+ readonly UNRANKED: "unranked";
1401
+ readonly FLAGGED: "flagged";
1402
+ readonly ARCHIVED: "archived";
1403
+ readonly BANNED: "banned";
1404
+ };
1405
+ type PlayerStatus = (typeof PlayerStatus)[keyof typeof PlayerStatus];
1406
+ declare const PLAYER_STATUSES: PlayerStatus[];
1407
+
1408
+ declare const PlayerType: {
1409
+ readonly UNKNOWN: "unknown";
1410
+ readonly REGULAR: "regular";
1411
+ readonly IRONMAN: "ironman";
1412
+ readonly HARDCORE: "hardcore";
1413
+ readonly ULTIMATE: "ultimate";
1414
+ };
1415
+ type PlayerType = (typeof PlayerType)[keyof typeof PlayerType];
1416
+ declare const PLAYER_TYPES: PlayerType[];
1417
+
1418
+ interface Player {
1419
+ id: number;
1420
+ username: string;
1421
+ displayName: string;
1422
+ type: PlayerType;
1423
+ build: PlayerBuild;
1424
+ status: PlayerStatus;
1425
+ country: Country | null;
1426
+ patron: boolean;
1427
+ exp: number;
1428
+ ehp: number;
1429
+ ehb: number;
1430
+ ttm: number;
1431
+ tt200m: number;
1432
+ registeredAt: Date;
1433
+ updatedAt: Date | null;
1434
+ lastChangedAt: Date | null;
1435
+ lastImportedAt: Date | null;
1436
+ latestSnapshotId: number | null;
1437
+ }
1438
+
1439
+ interface Record$1 {
1440
+ playerId: number;
1441
+ period: Period;
1442
+ metric: Metric;
1443
+ value: number;
1444
+ updatedAt: Date;
1445
+ }
1446
+
1447
+ interface SkillMetaBonus {
1448
+ originSkill: Skill;
1449
+ bonusSkill: Skill;
1450
+ startExp: number;
1451
+ endExp: number;
1452
+ maxBonus?: number;
1453
+ end: boolean;
1454
+ ratio: number;
1455
+ }
1456
+
1457
+ interface SkillMetaMethod {
1458
+ rate: number;
1459
+ realRate?: number;
1460
+ startExp: number;
1461
+ description: string;
1462
+ }
1463
+
1464
+ interface SkillMetaConfig {
1465
+ skill: Skill;
1466
+ methods: Array<SkillMetaMethod>;
1467
+ bonuses: SkillMetaBonus[];
1468
+ }
1469
+
1470
+ /**
1471
+ * Response types are used to format the data returned by the API.
1472
+ *
1473
+ * Although sometimes very similar to our database models,
1474
+ * they often include transformations, additional properties or sensitive field omissions.
1475
+ */
1476
+
1477
+ interface AchievementResponse extends Achievement {
1478
+ measure: AchievementMeasure;
1479
+ }
1480
+
1481
+ /**
1482
+ * Response types are used to format the data returned by the API.
1483
+ *
1484
+ * Although sometimes very similar to our database models,
1485
+ * they often include transformations, additional properties or sensitive field omissions.
1486
+ */
1487
+
1488
+ interface AchievementProgressResponse extends Omit<AchievementResponse, 'createdAt'> {
1489
+ createdAt: Date | null;
1490
+ currentValue: number;
1491
+ absoluteProgress: number;
1492
+ relativeProgress: number;
1493
+ }
1494
+
1495
+ /**
1496
+ * Response types are used to format the data returned by the API.
1497
+ *
1498
+ * Although sometimes very similar to our database models,
1499
+ * they often include transformations, additional properties or sensitive field omissions.
1500
+ */
1501
+
1502
+ interface GroupResponse extends Omit<Group, 'verificationHash' | 'creatorIpHash'> {
1503
+ memberCount: number;
1504
+ }
1505
+
1506
+ /**
1507
+ * Response types are used to format the data returned by the API.
1508
+ *
1509
+ * Although sometimes very similar to our database models,
1510
+ * they often include transformations, additional properties or sensitive field omissions.
1511
+ */
1512
+
1513
+ interface CompetitionResponse extends Omit<Competition, 'verificationHash' | 'creatorIpHash'> {
1514
+ participantCount: number;
1515
+ group?: GroupResponse;
1516
+ }
1517
+
1518
+ /**
1519
+ * Response types are used to format the data returned by the API.
1520
+ *
1521
+ * Although sometimes very similar to our database models,
1522
+ * they often include transformations, additional properties or sensitive field omissions.
1523
+ */
1524
+
1525
+ type ParticipationResponse = Omit<Participation, 'startSnapshotId' | 'endSnapshotId'>;
1526
+
1527
+ /**
1528
+ * Response types are used to format the data returned by the API.
1529
+ *
1530
+ * Although sometimes very similar to our database models,
1531
+ * they often include transformations, additional properties or sensitive field omissions.
1532
+ */
1533
+
1534
+ type PlayerResponse = Omit<Player, 'latestSnapshotId'>;
1535
+
1536
+ /**
1537
+ * Response types are used to format the data returned by the API.
1538
+ *
1539
+ * Although sometimes very similar to our database models,
1540
+ * they often include transformations, additional properties or sensitive field omissions.
1541
+ */
1542
+
1543
+ interface CompetitionDetailsResponse extends CompetitionResponse {
1544
+ participations: Array<ParticipationResponse & {
1545
+ player: PlayerResponse;
1546
+ progress: MetricDelta;
1547
+ levels: MetricDelta;
1548
+ }>;
1549
+ }
1550
+
1551
+ /**
1552
+ * Response types are used to format the data returned by the API.
1553
+ *
1554
+ * Although sometimes very similar to our database models,
1555
+ * they often include transformations, additional properties or sensitive field omissions.
1556
+ */
1557
+
1558
+ interface SkillData {
1559
+ metric: Skill;
1560
+ rank: number;
1561
+ level: number;
1562
+ experience: number;
1563
+ ehp: number;
1564
+ }
1565
+ interface BossData {
1566
+ metric: Boss;
1567
+ rank: number;
1568
+ kills: number;
1569
+ ehb: number;
1570
+ }
1571
+ interface ActivityData {
1572
+ metric: Activity;
1573
+ rank: number;
1574
+ score: number;
1575
+ }
1576
+ interface ComputeMetricData {
1577
+ metric: ComputedMetric;
1578
+ rank: number;
1579
+ value: number;
1580
+ }
1581
+ interface SnapshotResponse {
1582
+ id: number;
1583
+ playerId: number;
1584
+ createdAt: Date;
1585
+ importedAt: Date | null;
1586
+ data: {
1587
+ skills: Record<Skill, SkillData>;
1588
+ bosses: Record<Boss, BossData>;
1589
+ activities: Record<Activity, ActivityData>;
1590
+ computed: Record<ComputedMetric, ComputeMetricData>;
1591
+ };
1592
+ }
1593
+
1594
+ /**
1595
+ * Response types are used to format the data returned by the API.
1596
+ *
1597
+ * Although sometimes very similar to our database models,
1598
+ * they often include transformations, additional properties or sensitive field omissions.
1599
+ */
1600
+
1601
+ type GroupRoleOrderResponse = GroupRoleOrder;
1602
+
1603
+ /**
1604
+ * Response types are used to format the data returned by the API.
1605
+ *
1606
+ * Although sometimes very similar to our database models,
1607
+ * they often include transformations, additional properties or sensitive field omissions.
1608
+ */
1609
+
1610
+ type GroupSocialLinksResponse = Pick<GroupSocialLinks, 'website' | 'discord' | 'twitter' | 'youtube' | 'twitch'>;
1611
+
1612
+ /**
1613
+ * Response types are used to format the data returned by the API.
1614
+ *
1615
+ * Although sometimes very similar to our database models,
1616
+ * they often include transformations, additional properties or sensitive field omissions.
1617
+ */
1618
+
1619
+ type MembershipResponse = Membership;
1620
+
1621
+ /**
1622
+ * Response types are used to format the data returned by the API.
1623
+ *
1624
+ * Although sometimes very similar to our database models,
1625
+ * they often include transformations, additional properties or sensitive field omissions.
1626
+ */
1627
+
1628
+ interface GroupDetailsResponse extends GroupResponse {
1629
+ socialLinks: GroupSocialLinksResponse;
1630
+ roleOrders: Array<GroupRoleOrderResponse>;
1631
+ memberships: Array<MembershipResponse & {
1632
+ player: PlayerResponse;
1633
+ }>;
1634
+ }
1635
+
1636
+ /**
1637
+ * Response types are used to format the data returned by the API.
1638
+ *
1639
+ * Although sometimes very similar to our database models,
1640
+ * they often include transformations, additional properties or sensitive field omissions.
1641
+ */
1642
+ interface GroupHiscoresEntryResponse {
1643
+ player: PlayerResponse;
1644
+ data: GroupHiscoresSkillData | GroupHiscoresBossData | GroupHiscoresActivityData | GroupHiscoresComputedMetricData;
1645
+ }
1646
+ interface GroupHiscoresSkillData {
1647
+ type: 'skill';
1648
+ rank: number;
1649
+ level: number;
1650
+ experience: number;
1651
+ }
1652
+ interface GroupHiscoresBossData {
1653
+ type: 'boss';
1654
+ rank: number;
1655
+ kills: number;
1656
+ }
1657
+ interface GroupHiscoresActivityData {
1658
+ type: 'activity';
1659
+ rank: number;
1660
+ score: number;
1661
+ }
1662
+ interface GroupHiscoresComputedMetricData {
1663
+ type: 'computed';
1664
+ rank: number;
1665
+ value: number;
1666
+ }
1667
+
1668
+ /**
1669
+ * Response types are used to format the data returned by the API.
1670
+ *
1671
+ * Although sometimes very similar to our database models,
1672
+ * they often include transformations, additional properties or sensitive field omissions.
1673
+ */
1674
+
1675
+ interface GroupMetricLeadersResponse {
1676
+ skills: Record<Skill, {
1677
+ player: PlayerResponse | null;
1678
+ metric: Skill;
1679
+ rank: number;
1680
+ level: number;
1681
+ experience: number;
1682
+ }>;
1683
+ bosses: Record<Boss, {
1684
+ player: PlayerResponse | null;
1685
+ metric: Boss;
1686
+ rank: number;
1687
+ kills: number;
1688
+ }>;
1689
+ activities: Record<Activity, {
1690
+ player: PlayerResponse | null;
1691
+ metric: Activity;
1692
+ rank: number;
1693
+ score: number;
1694
+ }>;
1695
+ computed: Record<ComputedMetric, {
1696
+ player: PlayerResponse | null;
1697
+ metric: ComputedMetric;
1698
+ rank: number;
1699
+ value: number;
1700
+ }>;
1701
+ }
1702
+
1703
+ /**
1704
+ * Response types are used to format the data returned by the API.
1705
+ *
1706
+ * Although sometimes very similar to our database models,
1707
+ * they often include transformations, additional properties or sensitive field omissions.
1708
+ */
1709
+
1710
+ interface GroupStatisticsResponse {
1711
+ maxedCombatCount: number;
1712
+ maxedTotalCount: number;
1713
+ maxed200msCount: number;
1714
+ averageStats: SnapshotResponse;
1715
+ metricLeaders: GroupMetricLeadersResponse;
1716
+ }
1717
+
1718
+ /**
1719
+ * Response types are used to format the data returned by the API.
1720
+ *
1721
+ * Although sometimes very similar to our database models,
1722
+ * they often include transformations, additional properties or sensitive field omissions.
1723
+ */
1724
+
1725
+ type MemberActivityResponse = MemberActivity;
1726
+
1727
+ /**
1728
+ * Response types are used to format the data returned by the API.
1729
+ *
1730
+ * Although sometimes very similar to our database models,
1731
+ * they often include transformations, additional properties or sensitive field omissions.
1732
+ */
1733
+
1734
+ type NameChangeResponse = NameChange;
1735
+
1736
+ /**
1737
+ * Response types are used to format the data returned by the API.
1738
+ *
1739
+ * Although sometimes very similar to our database models,
1740
+ * they often include transformations, additional properties or sensitive field omissions.
1741
+ */
1742
+
1743
+ interface ParticipantHistoryResponse {
1744
+ player: PlayerResponse;
1745
+ history: Array<{
1746
+ value: number;
1747
+ date: Date;
1748
+ }>;
1749
+ }
1750
+
1751
+ /**
1752
+ * Response types are used to format the data returned by the API.
1753
+ *
1754
+ * Although sometimes very similar to our database models,
1755
+ * they often include transformations, additional properties or sensitive field omissions.
1756
+ */
1757
+
1758
+ type PlayerAnnotationResponse = PlayerAnnotation;
1759
+
1760
+ /**
1761
+ * Response types are used to format the data returned by the API.
1762
+ *
1763
+ * Although sometimes very similar to our database models,
1764
+ * they often include transformations, additional properties or sensitive field omissions.
1765
+ */
1766
+
1767
+ type PlayerArchiveResponse = PlayerArchive;
1768
+
1769
+ type PlayerCompetitionStandingResponse = ParticipationResponse & {
1770
+ competition: CompetitionResponse;
1771
+ progress: MetricDelta;
1772
+ levels: MetricDelta;
1773
+ rank: number;
1774
+ };
1775
+
1776
+ interface PlayerDeltasMapResponse {
1777
+ skills: Record<Skill, {
1778
+ metric: Skill;
1779
+ ehp: MetricDelta;
1780
+ rank: MetricDelta;
1781
+ level: MetricDelta;
1782
+ experience: MetricDelta;
1783
+ }>;
1784
+ bosses: Record<Boss, {
1785
+ metric: Boss;
1786
+ ehb: MetricDelta;
1787
+ rank: MetricDelta;
1788
+ kills: MetricDelta;
1789
+ }>;
1790
+ activities: Record<Activity, {
1791
+ metric: Activity;
1792
+ rank: MetricDelta;
1793
+ score: MetricDelta;
1794
+ }>;
1795
+ computed: Record<ComputedMetric, {
1796
+ metric: ComputedMetric;
1797
+ rank: MetricDelta;
1798
+ value: MetricDelta;
1799
+ }>;
1800
+ }
1801
+
1802
+ /**
1803
+ * Response types are used to format the data returned by the API.
1804
+ *
1805
+ * Although sometimes very similar to our database models,
1806
+ * they often include transformations, additional properties or sensitive field omissions.
1807
+ */
1808
+
1809
+ interface PlayerDetailsResponse extends PlayerResponse {
1810
+ combatLevel: number;
1811
+ archive: PlayerArchiveResponse | null;
1812
+ annotations: Array<PlayerAnnotationResponse> | null;
1813
+ latestSnapshot: SnapshotResponse | null;
1814
+ }
1815
+
1816
+ /**
1817
+ * Response types are used to format the data returned by the API.
1818
+ *
1819
+ * Although sometimes very similar to our database models,
1820
+ * they often include transformations, additional properties or sensitive field omissions.
1821
+ */
1822
1822
 
1823
- declare function formatNumber(num: number, withLetters?: boolean, decimalPrecision?: number): string | -1;
1824
- declare function padNumber(value: number): string;
1825
- declare function round(num: number, cases: number): number;
1823
+ type RecordResponse = Record$1;
1826
1824
 
1827
1825
  interface GenericCountMessageResponse {
1828
1826
  count: number;
@@ -1837,56 +1835,30 @@ type TimeRangeFilter = {
1837
1835
  startDate: Date;
1838
1836
  endDate: Date;
1839
1837
  };
1840
- interface BasePlayerFilter {
1841
- country?: Country;
1842
- playerType?: PlayerType;
1843
- playerBuild?: PlayerBuild;
1844
- }
1845
- /**
1846
- * Groups Client Types
1847
- */
1848
- interface GroupMemberFragment {
1849
- username: string;
1850
- role?: GroupRole;
1851
- }
1852
1838
  interface CreateGroupPayload {
1853
1839
  name: string;
1854
1840
  clanChat?: string;
1855
1841
  homeworld?: number;
1856
1842
  description?: string;
1857
- members: Array<GroupMemberFragment>;
1843
+ members: Array<{
1844
+ username: string;
1845
+ role?: GroupRole;
1846
+ }>;
1858
1847
  }
1859
1848
  type EditGroupPayload = Partial<CreateGroupPayload> & {
1860
1849
  bannerImage?: string;
1861
1850
  profileImage?: string;
1862
- socialLinks?: Partial<GroupSocialLinks>;
1863
- roleOrders?: Array<GroupRoleOrder>;
1864
- };
1865
- interface CreateGroupResponse {
1866
- group: GroupDetails;
1867
- verificationCode: string;
1868
- }
1869
- type ChangeMemberRolePayload = Required<GroupMemberFragment>;
1870
- type GetGroupGainsFilter = {
1871
- metric: Metric;
1872
- } & TimeRangeFilter;
1873
- interface GroupRecordsFilter {
1874
- metric: Metric;
1875
- period: Period;
1876
- }
1877
- /**
1878
- * Competitions Client Types
1879
- */
1880
- interface CompetitionsSearchFilter {
1881
- title?: string;
1882
- metric?: Metric;
1883
- type?: CompetitionType;
1884
- status?: CompetitionStatus;
1885
- }
1886
- type CompetitionDetailsCSVParams = {
1887
- previewMetric?: Metric;
1888
- teamName?: string;
1889
- table?: CompetitionCSVTableType;
1851
+ socialLinks?: Partial<{
1852
+ website?: string | null;
1853
+ discord?: string | null;
1854
+ twitter?: string | null;
1855
+ twitch?: string | null;
1856
+ youtube?: string | null;
1857
+ }>;
1858
+ roleOrders?: Array<{
1859
+ role: GroupRole;
1860
+ index: number;
1861
+ }>;
1890
1862
  };
1891
1863
  type CreateCompetitionPayload = {
1892
1864
  title: string;
@@ -1898,7 +1870,7 @@ type CreateCompetitionPayload = {
1898
1870
  } & ({
1899
1871
  participants: string[];
1900
1872
  } | {
1901
- teams: Team[];
1873
+ teams: CompetitionTeam[];
1902
1874
  });
1903
1875
  type EditCompetitionPayload = {
1904
1876
  title?: string;
@@ -1906,76 +1878,88 @@ type EditCompetitionPayload = {
1906
1878
  startsAt?: Date;
1907
1879
  endsAt?: Date;
1908
1880
  participants?: string[];
1909
- teams?: Team[];
1910
- };
1911
- type CreateCompetitionResponse = {
1912
- competition: CompetitionWithParticipations;
1913
- verificationCode: string;
1914
- };
1915
- /**
1916
- * Name Changes Client Types
1917
- */
1918
- type NameChangesSearchFilter = {
1919
- username?: string;
1920
- status?: NameChangeStatus;
1881
+ teams?: CompetitionTeam[];
1921
1882
  };
1922
- /**
1923
- * Record Client Types
1924
- */
1925
- interface RecordLeaderboardFilter extends BasePlayerFilter {
1926
- metric: Metric;
1927
- period: Period;
1928
- }
1929
- /**
1930
- * Player Client Types
1931
- */
1932
- interface PlayerCompetitionsFilter {
1933
- status?: CompetitionStatus;
1934
- }
1935
- interface PlayerCompetitionStandingsFilter {
1936
- status: Exclude<CompetitionStatus, CompetitionStatus.UPCOMING>;
1937
- }
1938
- interface PlayerRecordsFilter {
1939
- period: Period | string;
1940
- metric: Metric;
1941
- }
1942
- interface AssertPlayerTypeResponse {
1943
- player: Player;
1944
- changed: boolean;
1945
- }
1946
- interface GetPlayerGainsResponse {
1947
- startsAt: Date;
1948
- endsAt: Date;
1949
- data: PlayerDeltasMap;
1950
- }
1951
- /**
1952
- * Efficiency Client Types
1953
- */
1954
- type EfficiencyAlgorithmTypeUnion = `${EfficiencyAlgorithmType}`;
1955
- interface EfficiencyLeaderboardsFilter extends BasePlayerFilter {
1956
- metric: typeof Metric.EHP | typeof Metric.EHB | 'ehp+ehb';
1957
- }
1958
- /**
1959
- * Delta Client Types
1960
- */
1961
- interface DeltaLeaderboardFilter extends BasePlayerFilter {
1962
- metric: Metric;
1963
- period: Period | string;
1883
+
1884
+ interface PaginationOptions {
1885
+ limit?: number;
1886
+ offset?: number;
1964
1887
  }
1965
1888
 
1966
- declare class BaseAPIClient {
1967
- private headers;
1968
- private baseUrl;
1969
- constructor(headers: object, baseUrl: string);
1970
- private buildParams;
1971
- private fetch;
1972
- private request;
1973
- private requestText;
1974
- postRequest<T>(path: string, body?: unknown): Promise<T>;
1975
- putRequest<T>(path: string, body?: unknown): Promise<T>;
1976
- deleteRequest<T>(path: string, body?: unknown): Promise<T>;
1977
- getRequest<T>(path: string, params?: unknown): Promise<T>;
1978
- getText(path: string, params?: unknown): Promise<string>;
1889
+ declare class CompetitionsClient extends BaseAPIClient {
1890
+ /**
1891
+ * Searches for competitions that match a title, type, metric and status filter.
1892
+ * @returns A list of competitions.
1893
+ */
1894
+ searchCompetitions(filter: {
1895
+ title?: string;
1896
+ metric?: Metric;
1897
+ type?: CompetitionType;
1898
+ status?: CompetitionStatus;
1899
+ }, pagination?: PaginationOptions): Promise<CompetitionResponse[]>;
1900
+ /**
1901
+ * Fetches the competition's full details, including all the participants and their progress.
1902
+ * @returns A competition with a list of participants.
1903
+ */
1904
+ getCompetitionDetails(id: number, previewMetric?: Metric): Promise<CompetitionDetailsResponse>;
1905
+ /**
1906
+ * Fetches the competition's participant list in CSV format.
1907
+ * @returns A string containing the CSV content.
1908
+ */
1909
+ getCompetitionDetailsCSV(id: number, params?: {
1910
+ previewMetric?: Metric;
1911
+ teamName?: string;
1912
+ table?: CompetitionCSVTableType;
1913
+ }): Promise<string>;
1914
+ /**
1915
+ * Fetches all the values (exp, kc, etc) in chronological order within the bounds
1916
+ * of the competition, for the top 5 participants.
1917
+ * @returns A list of competition progress objects, including the player and their value history over time.
1918
+ */
1919
+ getCompetitionTopHistory(id: number, previewMetric?: Metric): Promise<ParticipantHistoryResponse[]>;
1920
+ /**
1921
+ * Creates a new competition.
1922
+ * @returns The newly created competition, and the verification code that authorizes future changes to it.
1923
+ */
1924
+ createCompetition(payload: CreateCompetitionPayload): Promise<{
1925
+ competition: CompetitionDetailsResponse;
1926
+ verificationCode: string;
1927
+ }>;
1928
+ /**
1929
+ * Edits an existing competition.
1930
+ * @returns The updated competition.
1931
+ */
1932
+ editCompetition(id: number, payload: EditCompetitionPayload, verificationCode: string): Promise<CompetitionDetailsResponse>;
1933
+ /**
1934
+ * Deletes an existing competition.
1935
+ * @returns A confirmation message.
1936
+ */
1937
+ deleteCompetition(id: number, verificationCode: string): Promise<GenericMessageResponse>;
1938
+ /**
1939
+ * Adds all (valid) given participants to a competition, ignoring duplicates.
1940
+ * @returns The number of participants added and a confirmation message.
1941
+ */
1942
+ addParticipants(id: number, participants: string[], verificationCode: string): Promise<GenericCountMessageResponse>;
1943
+ /**
1944
+ * Remove all given usernames from a competition, ignoring usernames that aren't competing.
1945
+ * @returns The number of participants removed and a confirmation message.
1946
+ */
1947
+ removeParticipants(id: number, participants: string[], verificationCode: string): Promise<GenericCountMessageResponse>;
1948
+ /**
1949
+ * Adds all (valid) given teams to a team competition, ignoring duplicates.
1950
+ * @returns The number of participants added and a confirmation message.
1951
+ */
1952
+ addTeams(id: number, teams: CompetitionTeam[], verificationCode: string): Promise<GenericCountMessageResponse>;
1953
+ /**
1954
+ * Remove all given team names from a competition, ignoring names that don't exist.
1955
+ * @returns The number of participants removed and a confirmation message.
1956
+ */
1957
+ removeTeams(id: number, teamNames: string[], verificationCode: string): Promise<GenericCountMessageResponse>;
1958
+ /**
1959
+ * Adds an "update" request to the queue, for each outdated competition participant.
1960
+ * @returns The number of players to be updated and a confirmation message.
1961
+ */
1962
+ updateAll(id: number, verificationCode: string): Promise<GenericCountMessageResponse>;
1979
1963
  }
1980
1964
 
1981
1965
  declare class DeltasClient extends BaseAPIClient {
@@ -1983,12 +1967,41 @@ declare class DeltasClient extends BaseAPIClient {
1983
1967
  * Fetches the current top leaderboard for a specific metric, period, playerType, playerBuild and country.
1984
1968
  * @returns A list of deltas, with their respective players, values and dates included.
1985
1969
  */
1986
- getDeltaLeaderboard(filter: DeltaLeaderboardFilter): Promise<DeltaLeaderboardEntry[]>;
1970
+ getDeltaLeaderboard(filter: {
1971
+ country?: Country;
1972
+ playerType?: PlayerType;
1973
+ playerBuild?: PlayerBuild;
1974
+ metric: Metric;
1975
+ period: Period | string;
1976
+ }): Promise<{
1977
+ player: PlayerResponse;
1978
+ startDate: Date;
1979
+ endDate: Date;
1980
+ gained: number;
1981
+ }[]>;
1987
1982
  }
1988
1983
 
1989
- interface PaginationOptions {
1990
- limit?: number;
1991
- offset?: number;
1984
+ declare class EfficiencyClient extends BaseAPIClient {
1985
+ /**
1986
+ * Fetches the current efficiency leaderboard for a specific efficiency metric, playerType, playerBuild and country.
1987
+ * @returns A list of players.
1988
+ */
1989
+ getEfficiencyLeaderboards(filter: {
1990
+ country?: Country;
1991
+ playerType?: PlayerType;
1992
+ playerBuild?: PlayerBuild;
1993
+ metric: typeof Metric.EHP | typeof Metric.EHB | 'ehp+ehb';
1994
+ }, pagination?: PaginationOptions): Promise<PlayerResponse[]>;
1995
+ /**
1996
+ * Fetches the top EHP (Efficient Hours Played) rates.
1997
+ * @returns A list of skilling methods and their bonus exp ratios.
1998
+ */
1999
+ getEHPRates(algorithmType: `${EfficiencyAlgorithmType}`): Promise<SkillMetaConfig[]>;
2000
+ /**
2001
+ * Fetches the top EHB (Efficient Hours Bossed) rates.
2002
+ * @returns A list of bosses and their respective "per-hour" kill rates.
2003
+ */
2004
+ getEHBRates(algorithmType: `${EfficiencyAlgorithmType}`): Promise<BossMetaConfig[]>;
1992
2005
  }
1993
2006
 
1994
2007
  declare class GroupsClient extends BaseAPIClient {
@@ -1996,22 +2009,25 @@ declare class GroupsClient extends BaseAPIClient {
1996
2009
  * Searches for groups that match a partial name.
1997
2010
  * @returns A list of groups.
1998
2011
  */
1999
- searchGroups(name: string, pagination?: PaginationOptions): Promise<GroupListItem[]>;
2012
+ searchGroups(name: string, pagination?: PaginationOptions): Promise<GroupResponse[]>;
2000
2013
  /**
2001
2014
  * Fetches a group's details, including a list of membership objects.
2002
2015
  * @returns A group details object.
2003
2016
  */
2004
- getGroupDetails(id: number): Promise<GroupDetails>;
2017
+ getGroupDetails(id: number): Promise<GroupDetailsResponse>;
2005
2018
  /**
2006
2019
  * Creates a new group.
2007
2020
  * @returns The newly created group, and the verification code that authorizes future changes to it.
2008
2021
  */
2009
- createGroup(payload: CreateGroupPayload): Promise<CreateGroupResponse>;
2022
+ createGroup(payload: CreateGroupPayload): Promise<{
2023
+ group: GroupDetailsResponse;
2024
+ verificationCode: string;
2025
+ }>;
2010
2026
  /**
2011
2027
  * Edits an existing group.
2012
2028
  * @returns The updated group.
2013
2029
  */
2014
- editGroup(id: number, payload: EditGroupPayload, verificationCode: string): Promise<GroupDetails>;
2030
+ editGroup(id: number, payload: EditGroupPayload, verificationCode: string): Promise<GroupDetailsResponse>;
2015
2031
  /**
2016
2032
  * Deletes an existing group.
2017
2033
  * @returns A confirmation message.
@@ -2021,7 +2037,10 @@ declare class GroupsClient extends BaseAPIClient {
2021
2037
  * Adds all (valid) given usernames (and roles) to a group, ignoring duplicates.
2022
2038
  * @returns The number of members added and a confirmation message.
2023
2039
  */
2024
- addMembers(id: number, members: GroupMemberFragment[], verificationCode: string): Promise<GenericCountMessageResponse>;
2040
+ addMembers(id: number, members: Array<{
2041
+ username: string;
2042
+ role?: GroupRole;
2043
+ }>, verificationCode: string): Promise<GenericCountMessageResponse>;
2025
2044
  /**
2026
2045
  * Remove all given usernames from a group, ignoring usernames that aren't members.
2027
2046
  * @returns The number of members removed and a confirmation message.
@@ -2031,7 +2050,12 @@ declare class GroupsClient extends BaseAPIClient {
2031
2050
  * Changes a player's role in a given group.
2032
2051
  * @returns The updated membership, with player included.
2033
2052
  */
2034
- changeRole(id: number, payload: ChangeMemberRolePayload, verificationCode: string): Promise<MembershipWithPlayer>;
2053
+ changeRole(id: number, payload: {
2054
+ username: string;
2055
+ role: GroupRole;
2056
+ }, verificationCode: string): Promise<Membership & {
2057
+ player: PlayerResponse;
2058
+ }>;
2035
2059
  /**
2036
2060
  * Adds an "update" request to the queue, for each outdated group member.
2037
2061
  * @returns The number of players to be updated and a confirmation message.
@@ -2041,38 +2065,56 @@ declare class GroupsClient extends BaseAPIClient {
2041
2065
  * Fetches all of the groups's competitions
2042
2066
  * @returns A list of competitions.
2043
2067
  */
2044
- getGroupCompetitions(id: number, pagination?: PaginationOptions): Promise<CompetitionListItem[]>;
2045
- getGroupGains(id: number, filter: GetGroupGainsFilter, pagination?: PaginationOptions): Promise<DeltaGroupLeaderboardEntry[]>;
2068
+ getGroupCompetitions(id: number, pagination?: PaginationOptions): Promise<CompetitionResponse[]>;
2069
+ getGroupGains(id: number, filter: TimeRangeFilter & {
2070
+ metric: Metric;
2071
+ }, pagination?: PaginationOptions): Promise<{
2072
+ player: PlayerResponse;
2073
+ startDate: Date;
2074
+ endDate: Date;
2075
+ data: MetricDelta;
2076
+ }[]>;
2046
2077
  /**
2047
2078
  * Fetches a group members' latest achievements.
2048
2079
  * @returns A list of achievements.
2049
2080
  */
2050
- getGroupAchievements(id: number, pagination?: PaginationOptions): Promise<ExtendedAchievementWithPlayer[]>;
2081
+ getGroupAchievements(id: number, pagination?: PaginationOptions): Promise<(AchievementResponse & {
2082
+ player: PlayerResponse;
2083
+ })[]>;
2051
2084
  /**
2052
2085
  * Fetches a group's record leaderboard for a specific metric and period.
2053
2086
  * @returns A list of records, including their respective players.
2054
2087
  */
2055
- getGroupRecords(id: number, filter: GroupRecordsFilter, pagination?: PaginationOptions): Promise<RecordLeaderboardEntry[]>;
2088
+ getGroupRecords(id: number, filter: {
2089
+ metric: Metric;
2090
+ period: Period;
2091
+ }, pagination?: PaginationOptions): Promise<(Record$1 & {
2092
+ player: PlayerResponse;
2093
+ })[]>;
2056
2094
  /**
2057
2095
  * Fetches a group's hiscores for a specific metric.
2058
2096
  * @returns A list of hiscores entries (value, rank), including their respective players.
2059
2097
  */
2060
- getGroupHiscores(id: number, metric: Metric, pagination?: PaginationOptions): Promise<GroupHiscoresEntry[]>;
2098
+ getGroupHiscores(id: number, metric: Metric, pagination?: PaginationOptions): Promise<GroupHiscoresEntryResponse[]>;
2061
2099
  /**
2062
2100
  * Fetches a group members' latest name changes.
2063
2101
  * @returns A list of name change (approved) requests.
2064
2102
  */
2065
- getGroupNameChanges(id: number, pagination?: PaginationOptions): Promise<NameChangeWithPlayer[]>;
2103
+ getGroupNameChanges(id: number, pagination?: PaginationOptions): Promise<NameChange & {
2104
+ player: PlayerResponse;
2105
+ }>;
2066
2106
  /**
2067
2107
  * Fetches a group's general statistics.
2068
2108
  * @returns An object with a few statistic values and an average stats snapshot.
2069
2109
  */
2070
- getGroupStatistics(id: number): Promise<GroupStatistics>;
2110
+ getGroupStatistics(id: number): Promise<GroupStatisticsResponse>;
2071
2111
  /**
2072
2112
  * Fetches a group's activity.
2073
2113
  * @returns A list of a group's (join, leave and role changed) activity.
2074
2114
  */
2075
- getGroupActivity(id: number, pagination?: PaginationOptions): Promise<MemberActivityWithPlayer[]>;
2115
+ getGroupActivity(id: number, pagination?: PaginationOptions): Promise<(MemberActivity & {
2116
+ player: PlayerResponse;
2117
+ })[]>;
2076
2118
  /**
2077
2119
  * Fetches the groups's member list in CSV format.
2078
2120
  * @returns A string containing the CSV content.
@@ -2080,72 +2122,106 @@ declare class GroupsClient extends BaseAPIClient {
2080
2122
  getMembersCSV(id: number): Promise<string>;
2081
2123
  }
2082
2124
 
2125
+ declare class NameChangesClient extends BaseAPIClient {
2126
+ /**
2127
+ * Searches for name changes that match a name and/or status filter.
2128
+ * @returns A list of name changes.
2129
+ */
2130
+ searchNameChanges(filter: {
2131
+ username?: string;
2132
+ status?: NameChangeStatus;
2133
+ }, pagination?: PaginationOptions): Promise<NameChange[]>;
2134
+ /**
2135
+ * Submits a name change request between two usernames (old and new).
2136
+ * @returns A pending name change request, to be reviewed and resolved at a later date.
2137
+ */
2138
+ submitNameChange(oldName: string, newName: string): Promise<NameChange>;
2139
+ }
2140
+
2083
2141
  declare class PlayersClient extends BaseAPIClient {
2084
2142
  /**
2085
2143
  * Searches players by partial username.
2086
2144
  * @returns A list of players.
2087
2145
  */
2088
- searchPlayers(partialUsername: string, pagination?: PaginationOptions): Promise<Player[]>;
2146
+ searchPlayers(partialUsername: string, pagination?: PaginationOptions): Promise<PlayerResponse[]>;
2089
2147
  /**
2090
2148
  * Updates/tracks a player.
2091
2149
  * @returns The player's new details, including the latest snapshot.
2092
2150
  */
2093
- updatePlayer(username: string): Promise<PlayerDetails>;
2151
+ updatePlayer(username: string): Promise<PlayerDetailsResponse>;
2094
2152
  /**
2095
2153
  * Asserts (and attempts to fix, if necessary) a player's game-mode type.
2096
2154
  * @returns The updated player, and an indication of whether the type was changed.
2097
2155
  */
2098
- assertPlayerType(username: string): Promise<AssertPlayerTypeResponse>;
2156
+ assertPlayerType(username: string): Promise<{
2157
+ player: PlayerResponse;
2158
+ changed: boolean;
2159
+ }>;
2099
2160
  /**
2100
2161
  * Fetches a player's details.
2101
2162
  * @returns The player's details, including the latest snapshot.
2102
2163
  */
2103
- getPlayerDetails(username: string): Promise<PlayerDetails>;
2164
+ getPlayerDetails(username: string): Promise<PlayerDetailsResponse>;
2104
2165
  /**
2105
2166
  * Fetches a player's details by ID.
2106
2167
  * @returns The player's details, including the latest snapshot.
2107
2168
  */
2108
- getPlayerDetailsById(id: number): Promise<PlayerDetails>;
2169
+ getPlayerDetailsById(id: number): Promise<PlayerDetailsResponse>;
2109
2170
  /**
2110
2171
  * Fetches a player's current achievements.
2111
2172
  * @returns A list of achievements.
2112
2173
  */
2113
- getPlayerAchievements(username: string): Promise<ExtendedAchievement[]>;
2174
+ getPlayerAchievements(username: string): Promise<AchievementResponse[]>;
2114
2175
  /**
2115
2176
  * Fetches a player's current achievement progress.
2116
2177
  * @returns A list of achievements (completed or otherwise), with their respective relative/absolute progress percentage.
2117
2178
  */
2118
- getPlayerAchievementProgress(username: string): Promise<AchievementProgress[]>;
2179
+ getPlayerAchievementProgress(username: string): Promise<AchievementProgressResponse[]>;
2119
2180
  /**
2120
2181
  * Fetches all of the player's competition participations.
2121
2182
  * @returns A list of participations, with the respective competition included.
2122
2183
  */
2123
- getPlayerCompetitions(username: string, filter?: PlayerCompetitionsFilter, pagination?: PaginationOptions): Promise<ParticipationWithCompetition[]>;
2184
+ getPlayerCompetitions(username: string, filter?: {
2185
+ status?: CompetitionStatus;
2186
+ }, pagination?: PaginationOptions): Promise<(ParticipationResponse & {
2187
+ competition: CompetitionResponse;
2188
+ })[]>;
2124
2189
  /**
2125
2190
  * Fetches all of the player's competition participations' standings.
2126
2191
  * @returns A list of participations, with the respective competition, rank and progress included.
2127
2192
  */
2128
- getPlayerCompetitionStandings(username: string, filter: PlayerCompetitionsFilter): Promise<ParticipationWithCompetitionAndStandings[]>;
2193
+ getPlayerCompetitionStandings(username: string, filter: {
2194
+ status?: CompetitionStatus;
2195
+ }): Promise<PlayerCompetitionStandingResponse[]>;
2129
2196
  /**
2130
2197
  * Fetches all of the player's group memberships.
2131
2198
  * @returns A list of memberships, with the respective group included.
2132
2199
  */
2133
- getPlayerGroups(username: string, pagination?: PaginationOptions): Promise<MembershipWithGroup[]>;
2200
+ getPlayerGroups(username: string, pagination?: PaginationOptions): Promise<(Membership & {
2201
+ player: PlayerResponse;
2202
+ })[]>;
2134
2203
  /**
2135
2204
  * Fetches a player's gains, for a specific period or time range, as a [metric: data] map.
2136
2205
  * @returns A map of each metric's gained data.
2137
2206
  */
2138
- getPlayerGains(username: string, options: TimeRangeFilter): Promise<GetPlayerGainsResponse>;
2207
+ getPlayerGains(username: string, options: TimeRangeFilter): Promise<{
2208
+ startsAt: Date | null;
2209
+ endsAt: Date | null;
2210
+ data: PlayerDeltasMapResponse;
2211
+ }>;
2139
2212
  /**
2140
2213
  * Fetches all of the player's records.
2141
2214
  * @returns A list of records.
2142
2215
  */
2143
- getPlayerRecords(username: string, options?: PlayerRecordsFilter): Promise<Record[]>;
2216
+ getPlayerRecords(username: string, options?: {
2217
+ period: Period | string;
2218
+ metric: Metric;
2219
+ }): Promise<Record$1[]>;
2144
2220
  /**
2145
2221
  * Fetches all of the player's past snapshots.
2146
2222
  * @returns A list of snapshots.
2147
2223
  */
2148
- getPlayerSnapshots(username: string, filter: TimeRangeFilter, pagination?: PaginationOptions): Promise<FormattedSnapshot[]>;
2224
+ getPlayerSnapshots(username: string, filter: TimeRangeFilter, pagination?: PaginationOptions): Promise<SnapshotResponse[]>;
2149
2225
  /**
2150
2226
  * Fetches all of the player's past snapshots' timeline.
2151
2227
  * @returns A list of timeseries data (value, rank, date)
@@ -2164,7 +2240,9 @@ declare class PlayersClient extends BaseAPIClient {
2164
2240
  * Fetches all of archived players that previously held this username.
2165
2241
  * @returns A list of player archives.
2166
2242
  */
2167
- getPlayerArchives(username: string): Promise<PlayerArchiveWithPlayer[]>;
2243
+ getPlayerArchives(username: string): Promise<(PlayerArchive & {
2244
+ player: PlayerResponse;
2245
+ })[]>;
2168
2246
  }
2169
2247
 
2170
2248
  declare class RecordsClient extends BaseAPIClient {
@@ -2172,118 +2250,1682 @@ declare class RecordsClient extends BaseAPIClient {
2172
2250
  * Fetches the current records leaderboard for a specific metric, period, playerType, playerBuild and country.
2173
2251
  * @returns A list of records, with their respective players, dates and values included.
2174
2252
  */
2175
- getRecordLeaderboard(filter: RecordLeaderboardFilter): Promise<RecordLeaderboardEntry[]>;
2253
+ getRecordLeaderboard(filter: {
2254
+ country?: Country;
2255
+ playerType?: PlayerType;
2256
+ playerBuild?: PlayerBuild;
2257
+ metric: Metric;
2258
+ period: Period;
2259
+ }): Promise<(Record$1 & {
2260
+ player: PlayerResponse;
2261
+ })[]>;
2262
+ }
2263
+
2264
+ interface WOMClientOptions {
2265
+ apiKey?: string;
2266
+ userAgent?: string;
2267
+ baseAPIUrl?: string;
2268
+ }
2269
+ declare class WOMClient extends BaseAPIClient {
2270
+ deltas: DeltasClient;
2271
+ groups: GroupsClient;
2272
+ players: PlayersClient;
2273
+ records: RecordsClient;
2274
+ efficiency: EfficiencyClient;
2275
+ nameChanges: NameChangesClient;
2276
+ competitions: CompetitionsClient;
2277
+ constructor(options?: WOMClientOptions);
2176
2278
  }
2177
2279
 
2178
- declare class EfficiencyClient extends BaseAPIClient {
2179
- /**
2180
- * Fetches the current efficiency leaderboard for a specific efficiency metric, playerType, playerBuild and country.
2181
- * @returns A list of players.
2182
- */
2183
- getEfficiencyLeaderboards(filter: EfficiencyLeaderboardsFilter, pagination?: PaginationOptions): Promise<Player[]>;
2184
- /**
2185
- * Fetches the top EHP (Efficient Hours Played) rates.
2186
- * @returns A list of skilling methods and their bonus exp ratios.
2187
- */
2188
- getEHPRates(algorithmType: EfficiencyAlgorithmTypeUnion): Promise<SkillMetaConfig[]>;
2189
- /**
2190
- * Fetches the top EHB (Efficient Hours Bossed) rates.
2191
- * @returns A list of bosses and their respective "per-hour" kill rates.
2192
- */
2193
- getEHBRates(algorithmType: EfficiencyAlgorithmTypeUnion): Promise<BossMetaConfig[]>;
2194
- }
2280
+ declare const CompetitionStatusProps: Record<CompetitionStatus, {
2281
+ name: string;
2282
+ }>;
2283
+
2284
+ declare const CompetitionTypeProps: Record<CompetitionType, {
2285
+ name: string;
2286
+ }>;
2287
+
2288
+ declare const CountryProps: Record<Country, {
2289
+ code: Country;
2290
+ name: string;
2291
+ }>;
2292
+ declare function isCountry(countryCodeString: string): countryCodeString is Country;
2293
+ declare function findCountry(countryIdentifier: string): {
2294
+ code: Country;
2295
+ name: string;
2296
+ };
2297
+ declare function findCountryByName(countryName: string): {
2298
+ code: Country;
2299
+ name: string;
2300
+ };
2301
+ declare function findCountryByCode(countryCode: string): {
2302
+ code: Country;
2303
+ name: string;
2304
+ };
2305
+
2306
+ declare const MAX_LEVEL = 99;
2307
+ declare const MAX_VIRTUAL_LEVEL = 126;
2308
+ declare const MAX_SKILL_EXP = 200000000;
2309
+ declare const SKILL_EXP_AT_99 = 13034431;
2310
+ declare const CAPPED_MAX_TOTAL_XP: number;
2311
+ declare function getExpForLevel(level: number): number;
2312
+ declare function getLevel(exp: number, virtual?: boolean): number;
2313
+ declare function getCombatLevel(attack: number, strength: number, defence: number, ranged: number, magic: number, hitpoints: number, prayer: number): number;
2314
+
2315
+ declare const GroupRoleProps: {
2316
+ achiever: {
2317
+ name: string;
2318
+ };
2319
+ adamant: {
2320
+ name: string;
2321
+ };
2322
+ adept: {
2323
+ name: string;
2324
+ };
2325
+ administrator: {
2326
+ name: string;
2327
+ };
2328
+ admiral: {
2329
+ name: string;
2330
+ };
2331
+ adventurer: {
2332
+ name: string;
2333
+ };
2334
+ air: {
2335
+ name: string;
2336
+ };
2337
+ anchor: {
2338
+ name: string;
2339
+ };
2340
+ apothecary: {
2341
+ name: string;
2342
+ };
2343
+ archer: {
2344
+ name: string;
2345
+ };
2346
+ armadylean: {
2347
+ name: string;
2348
+ };
2349
+ artillery: {
2350
+ name: string;
2351
+ };
2352
+ artisan: {
2353
+ name: string;
2354
+ };
2355
+ asgarnian: {
2356
+ name: string;
2357
+ };
2358
+ assassin: {
2359
+ name: string;
2360
+ };
2361
+ assistant: {
2362
+ name: string;
2363
+ };
2364
+ astral: {
2365
+ name: string;
2366
+ };
2367
+ athlete: {
2368
+ name: string;
2369
+ };
2370
+ attacker: {
2371
+ name: string;
2372
+ };
2373
+ bandit: {
2374
+ name: string;
2375
+ };
2376
+ bandosian: {
2377
+ name: string;
2378
+ };
2379
+ barbarian: {
2380
+ name: string;
2381
+ };
2382
+ battlemage: {
2383
+ name: string;
2384
+ };
2385
+ beast: {
2386
+ name: string;
2387
+ };
2388
+ berserker: {
2389
+ name: string;
2390
+ };
2391
+ blisterwood: {
2392
+ name: string;
2393
+ };
2394
+ blood: {
2395
+ name: string;
2396
+ };
2397
+ blue: {
2398
+ name: string;
2399
+ };
2400
+ bob: {
2401
+ name: string;
2402
+ };
2403
+ body: {
2404
+ name: string;
2405
+ };
2406
+ brassican: {
2407
+ name: string;
2408
+ };
2409
+ brawler: {
2410
+ name: string;
2411
+ };
2412
+ brigadier: {
2413
+ name: string;
2414
+ };
2415
+ brigand: {
2416
+ name: string;
2417
+ };
2418
+ bronze: {
2419
+ name: string;
2420
+ };
2421
+ bruiser: {
2422
+ name: string;
2423
+ };
2424
+ bulwark: {
2425
+ name: string;
2426
+ };
2427
+ burglar: {
2428
+ name: string;
2429
+ };
2430
+ burnt: {
2431
+ name: string;
2432
+ };
2433
+ cadet: {
2434
+ name: string;
2435
+ };
2436
+ captain: {
2437
+ name: string;
2438
+ };
2439
+ carry: {
2440
+ name: string;
2441
+ };
2442
+ champion: {
2443
+ name: string;
2444
+ };
2445
+ chaos: {
2446
+ name: string;
2447
+ };
2448
+ cleric: {
2449
+ name: string;
2450
+ };
2451
+ collector: {
2452
+ name: string;
2453
+ };
2454
+ colonel: {
2455
+ name: string;
2456
+ };
2457
+ commander: {
2458
+ name: string;
2459
+ };
2460
+ competitor: {
2461
+ name: string;
2462
+ };
2463
+ completionist: {
2464
+ name: string;
2465
+ };
2466
+ constructor: {
2467
+ name: string;
2468
+ };
2469
+ cook: {
2470
+ name: string;
2471
+ };
2472
+ coordinator: {
2473
+ name: string;
2474
+ };
2475
+ corporal: {
2476
+ name: string;
2477
+ };
2478
+ cosmic: {
2479
+ name: string;
2480
+ };
2481
+ councillor: {
2482
+ name: string;
2483
+ };
2484
+ crafter: {
2485
+ name: string;
2486
+ };
2487
+ crew: {
2488
+ name: string;
2489
+ };
2490
+ crusader: {
2491
+ name: string;
2492
+ };
2493
+ cutpurse: {
2494
+ name: string;
2495
+ };
2496
+ death: {
2497
+ name: string;
2498
+ };
2499
+ defender: {
2500
+ name: string;
2501
+ };
2502
+ defiler: {
2503
+ name: string;
2504
+ };
2505
+ deputy_owner: {
2506
+ name: string;
2507
+ };
2508
+ destroyer: {
2509
+ name: string;
2510
+ };
2511
+ diamond: {
2512
+ name: string;
2513
+ };
2514
+ diseased: {
2515
+ name: string;
2516
+ };
2517
+ doctor: {
2518
+ name: string;
2519
+ };
2520
+ dogsbody: {
2521
+ name: string;
2522
+ };
2523
+ dragon: {
2524
+ name: string;
2525
+ };
2526
+ dragonstone: {
2527
+ name: string;
2528
+ };
2529
+ druid: {
2530
+ name: string;
2531
+ };
2532
+ duellist: {
2533
+ name: string;
2534
+ };
2535
+ earth: {
2536
+ name: string;
2537
+ };
2538
+ elite: {
2539
+ name: string;
2540
+ };
2541
+ emerald: {
2542
+ name: string;
2543
+ };
2544
+ enforcer: {
2545
+ name: string;
2546
+ };
2547
+ epic: {
2548
+ name: string;
2549
+ };
2550
+ executive: {
2551
+ name: string;
2552
+ };
2553
+ expert: {
2554
+ name: string;
2555
+ };
2556
+ explorer: {
2557
+ name: string;
2558
+ };
2559
+ farmer: {
2560
+ name: string;
2561
+ };
2562
+ feeder: {
2563
+ name: string;
2564
+ };
2565
+ fighter: {
2566
+ name: string;
2567
+ };
2568
+ fire: {
2569
+ name: string;
2570
+ };
2571
+ firemaker: {
2572
+ name: string;
2573
+ };
2574
+ firestarter: {
2575
+ name: string;
2576
+ };
2577
+ fisher: {
2578
+ name: string;
2579
+ };
2580
+ fletcher: {
2581
+ name: string;
2582
+ };
2583
+ forager: {
2584
+ name: string;
2585
+ };
2586
+ fremennik: {
2587
+ name: string;
2588
+ };
2589
+ gamer: {
2590
+ name: string;
2591
+ };
2592
+ gatherer: {
2593
+ name: string;
2594
+ };
2595
+ general: {
2596
+ name: string;
2597
+ };
2598
+ gnome_child: {
2599
+ name: string;
2600
+ };
2601
+ gnome_elder: {
2602
+ name: string;
2603
+ };
2604
+ goblin: {
2605
+ name: string;
2606
+ };
2607
+ gold: {
2608
+ name: string;
2609
+ };
2610
+ goon: {
2611
+ name: string;
2612
+ };
2613
+ green: {
2614
+ name: string;
2615
+ };
2616
+ grey: {
2617
+ name: string;
2618
+ };
2619
+ guardian: {
2620
+ name: string;
2621
+ };
2622
+ guthixian: {
2623
+ name: string;
2624
+ };
2625
+ harpoon: {
2626
+ name: string;
2627
+ };
2628
+ healer: {
2629
+ name: string;
2630
+ };
2631
+ hellcat: {
2632
+ name: string;
2633
+ };
2634
+ helper: {
2635
+ name: string;
2636
+ };
2637
+ herbologist: {
2638
+ name: string;
2639
+ };
2640
+ hero: {
2641
+ name: string;
2642
+ };
2643
+ holy: {
2644
+ name: string;
2645
+ };
2646
+ hoarder: {
2647
+ name: string;
2648
+ };
2649
+ hunter: {
2650
+ name: string;
2651
+ };
2652
+ ignitor: {
2653
+ name: string;
2654
+ };
2655
+ illusionist: {
2656
+ name: string;
2657
+ };
2658
+ imp: {
2659
+ name: string;
2660
+ };
2661
+ infantry: {
2662
+ name: string;
2663
+ };
2664
+ inquisitor: {
2665
+ name: string;
2666
+ };
2667
+ iron: {
2668
+ name: string;
2669
+ };
2670
+ jade: {
2671
+ name: string;
2672
+ };
2673
+ justiciar: {
2674
+ name: string;
2675
+ };
2676
+ kandarin: {
2677
+ name: string;
2678
+ };
2679
+ karamjan: {
2680
+ name: string;
2681
+ };
2682
+ kharidian: {
2683
+ name: string;
2684
+ };
2685
+ kitten: {
2686
+ name: string;
2687
+ };
2688
+ knight: {
2689
+ name: string;
2690
+ };
2691
+ labourer: {
2692
+ name: string;
2693
+ };
2694
+ law: {
2695
+ name: string;
2696
+ };
2697
+ leader: {
2698
+ name: string;
2699
+ };
2700
+ learner: {
2701
+ name: string;
2702
+ };
2703
+ legacy: {
2704
+ name: string;
2705
+ };
2706
+ legend: {
2707
+ name: string;
2708
+ };
2709
+ legionnaire: {
2710
+ name: string;
2711
+ };
2712
+ lieutenant: {
2713
+ name: string;
2714
+ };
2715
+ looter: {
2716
+ name: string;
2717
+ };
2718
+ lumberjack: {
2719
+ name: string;
2720
+ };
2721
+ magic: {
2722
+ name: string;
2723
+ };
2724
+ magician: {
2725
+ name: string;
2726
+ };
2727
+ major: {
2728
+ name: string;
2729
+ };
2730
+ maple: {
2731
+ name: string;
2732
+ };
2733
+ marshal: {
2734
+ name: string;
2735
+ };
2736
+ master: {
2737
+ name: string;
2738
+ };
2739
+ maxed: {
2740
+ name: string;
2741
+ };
2742
+ mediator: {
2743
+ name: string;
2744
+ };
2745
+ medic: {
2746
+ name: string;
2747
+ };
2748
+ mentor: {
2749
+ name: string;
2750
+ };
2751
+ member: {
2752
+ name: string;
2753
+ };
2754
+ merchant: {
2755
+ name: string;
2756
+ };
2757
+ mind: {
2758
+ name: string;
2759
+ };
2760
+ miner: {
2761
+ name: string;
2762
+ };
2763
+ minion: {
2764
+ name: string;
2765
+ };
2766
+ misthalinian: {
2767
+ name: string;
2768
+ };
2769
+ mithril: {
2770
+ name: string;
2771
+ };
2772
+ moderator: {
2773
+ name: string;
2774
+ };
2775
+ monarch: {
2776
+ name: string;
2777
+ };
2778
+ morytanian: {
2779
+ name: string;
2780
+ };
2781
+ mystic: {
2782
+ name: string;
2783
+ };
2784
+ myth: {
2785
+ name: string;
2786
+ };
2787
+ natural: {
2788
+ name: string;
2789
+ };
2790
+ nature: {
2791
+ name: string;
2792
+ };
2793
+ necromancer: {
2794
+ name: string;
2795
+ };
2796
+ ninja: {
2797
+ name: string;
2798
+ };
2799
+ noble: {
2800
+ name: string;
2801
+ };
2802
+ novice: {
2803
+ name: string;
2804
+ };
2805
+ nurse: {
2806
+ name: string;
2807
+ };
2808
+ oak: {
2809
+ name: string;
2810
+ };
2811
+ officer: {
2812
+ name: string;
2813
+ };
2814
+ onyx: {
2815
+ name: string;
2816
+ };
2817
+ opal: {
2818
+ name: string;
2819
+ };
2820
+ oracle: {
2821
+ name: string;
2822
+ };
2823
+ orange: {
2824
+ name: string;
2825
+ };
2826
+ owner: {
2827
+ name: string;
2828
+ };
2829
+ page: {
2830
+ name: string;
2831
+ };
2832
+ paladin: {
2833
+ name: string;
2834
+ };
2835
+ pawn: {
2836
+ name: string;
2837
+ };
2838
+ pilgrim: {
2839
+ name: string;
2840
+ };
2841
+ pine: {
2842
+ name: string;
2843
+ };
2844
+ pink: {
2845
+ name: string;
2846
+ };
2847
+ prefect: {
2848
+ name: string;
2849
+ };
2850
+ priest: {
2851
+ name: string;
2852
+ };
2853
+ private: {
2854
+ name: string;
2855
+ };
2856
+ prodigy: {
2857
+ name: string;
2858
+ };
2859
+ proselyte: {
2860
+ name: string;
2861
+ };
2862
+ prospector: {
2863
+ name: string;
2864
+ };
2865
+ protector: {
2866
+ name: string;
2867
+ };
2868
+ pure: {
2869
+ name: string;
2870
+ };
2871
+ purple: {
2872
+ name: string;
2873
+ };
2874
+ pyromancer: {
2875
+ name: string;
2876
+ };
2877
+ quester: {
2878
+ name: string;
2879
+ };
2880
+ racer: {
2881
+ name: string;
2882
+ };
2883
+ raider: {
2884
+ name: string;
2885
+ };
2886
+ ranger: {
2887
+ name: string;
2888
+ };
2889
+ record_chaser: {
2890
+ name: string;
2891
+ };
2892
+ recruit: {
2893
+ name: string;
2894
+ };
2895
+ recruiter: {
2896
+ name: string;
2897
+ };
2898
+ red_topaz: {
2899
+ name: string;
2900
+ };
2901
+ red: {
2902
+ name: string;
2903
+ };
2904
+ rogue: {
2905
+ name: string;
2906
+ };
2907
+ ruby: {
2908
+ name: string;
2909
+ };
2910
+ rune: {
2911
+ name: string;
2912
+ };
2913
+ runecrafter: {
2914
+ name: string;
2915
+ };
2916
+ sage: {
2917
+ name: string;
2918
+ };
2919
+ sapphire: {
2920
+ name: string;
2921
+ };
2922
+ saradominist: {
2923
+ name: string;
2924
+ };
2925
+ saviour: {
2926
+ name: string;
2927
+ };
2928
+ scavenger: {
2929
+ name: string;
2930
+ };
2931
+ scholar: {
2932
+ name: string;
2933
+ };
2934
+ scourge: {
2935
+ name: string;
2936
+ };
2937
+ scout: {
2938
+ name: string;
2939
+ };
2940
+ scribe: {
2941
+ name: string;
2942
+ };
2943
+ seer: {
2944
+ name: string;
2945
+ };
2946
+ senator: {
2947
+ name: string;
2948
+ };
2949
+ sentry: {
2950
+ name: string;
2951
+ };
2952
+ serenist: {
2953
+ name: string;
2954
+ };
2955
+ sergeant: {
2956
+ name: string;
2957
+ };
2958
+ shaman: {
2959
+ name: string;
2960
+ };
2961
+ sheriff: {
2962
+ name: string;
2963
+ };
2964
+ short_green_guy: {
2965
+ name: string;
2966
+ };
2967
+ skiller: {
2968
+ name: string;
2969
+ };
2970
+ skulled: {
2971
+ name: string;
2972
+ };
2973
+ slayer: {
2974
+ name: string;
2975
+ };
2976
+ smiter: {
2977
+ name: string;
2978
+ };
2979
+ smith: {
2980
+ name: string;
2981
+ };
2982
+ smuggler: {
2983
+ name: string;
2984
+ };
2985
+ sniper: {
2986
+ name: string;
2987
+ };
2988
+ soul: {
2989
+ name: string;
2990
+ };
2991
+ specialist: {
2992
+ name: string;
2993
+ };
2994
+ speed_runner: {
2995
+ name: string;
2996
+ };
2997
+ spellcaster: {
2998
+ name: string;
2999
+ };
3000
+ squire: {
3001
+ name: string;
3002
+ };
3003
+ staff: {
3004
+ name: string;
3005
+ };
3006
+ steel: {
3007
+ name: string;
3008
+ };
3009
+ strider: {
3010
+ name: string;
3011
+ };
3012
+ striker: {
3013
+ name: string;
3014
+ };
3015
+ summoner: {
3016
+ name: string;
3017
+ };
3018
+ superior: {
3019
+ name: string;
3020
+ };
3021
+ supervisor: {
3022
+ name: string;
3023
+ };
3024
+ teacher: {
3025
+ name: string;
3026
+ };
3027
+ templar: {
3028
+ name: string;
3029
+ };
3030
+ therapist: {
3031
+ name: string;
3032
+ };
3033
+ thief: {
3034
+ name: string;
3035
+ };
3036
+ tirannian: {
3037
+ name: string;
3038
+ };
3039
+ trialist: {
3040
+ name: string;
3041
+ };
3042
+ trickster: {
3043
+ name: string;
3044
+ };
3045
+ tzkal: {
3046
+ name: string;
3047
+ };
3048
+ tztok: {
3049
+ name: string;
3050
+ };
3051
+ unholy: {
3052
+ name: string;
3053
+ };
3054
+ vagrant: {
3055
+ name: string;
3056
+ };
3057
+ vanguard: {
3058
+ name: string;
3059
+ };
3060
+ walker: {
3061
+ name: string;
3062
+ };
3063
+ wanderer: {
3064
+ name: string;
3065
+ };
3066
+ warden: {
3067
+ name: string;
3068
+ };
3069
+ warlock: {
3070
+ name: string;
3071
+ };
3072
+ warrior: {
3073
+ name: string;
3074
+ };
3075
+ water: {
3076
+ name: string;
3077
+ };
3078
+ wild: {
3079
+ name: string;
3080
+ };
3081
+ willow: {
3082
+ name: string;
3083
+ };
3084
+ wily: {
3085
+ name: string;
3086
+ };
3087
+ wintumber: {
3088
+ name: string;
3089
+ };
3090
+ witch: {
3091
+ name: string;
3092
+ };
3093
+ wizard: {
3094
+ name: string;
3095
+ };
3096
+ worker: {
3097
+ name: string;
3098
+ };
3099
+ wrath: {
3100
+ name: string;
3101
+ };
3102
+ xerician: {
3103
+ name: string;
3104
+ };
3105
+ yellow: {
3106
+ name: string;
3107
+ };
3108
+ yew: {
3109
+ name: string;
3110
+ };
3111
+ zamorakian: {
3112
+ name: string;
3113
+ };
3114
+ zarosian: {
3115
+ name: string;
3116
+ };
3117
+ zealot: {
3118
+ name: string;
3119
+ };
3120
+ zenyte: {
3121
+ name: string;
3122
+ };
3123
+ };
3124
+ declare function isGroupRole(roleString: string): roleString is GroupRole;
3125
+ declare const PRIVILEGED_GROUP_ROLES: readonly ["administrator", "owner", "leader", "deputy_owner", "moderator"];
3126
+
3127
+ declare const SkillProps: Record<Skill, {
3128
+ name: string;
3129
+ isCombat: boolean;
3130
+ isMembers: boolean;
3131
+ type: MetricType;
3132
+ measure: MetricMeasure;
3133
+ }>;
3134
+ declare const BossProps: Record<Boss, {
3135
+ name: string;
3136
+ minimumValue: number;
3137
+ isMembers: boolean;
3138
+ type: MetricType;
3139
+ measure: MetricMeasure;
3140
+ }>;
3141
+ declare const ActivityProps: Record<Activity, {
3142
+ name: string;
3143
+ minimumValue: number;
3144
+ type: MetricType;
3145
+ measure: MetricMeasure;
3146
+ }>;
3147
+ declare const ComputedMetricProps: Record<ComputedMetric, {
3148
+ name: string;
3149
+ type: MetricType;
3150
+ measure: MetricMeasure;
3151
+ }>;
3152
+ declare const MetricProps: {
3153
+ readonly ehp: {
3154
+ name: string;
3155
+ type: MetricType;
3156
+ measure: MetricMeasure;
3157
+ };
3158
+ readonly ehb: {
3159
+ name: string;
3160
+ type: MetricType;
3161
+ measure: MetricMeasure;
3162
+ };
3163
+ readonly league_points: {
3164
+ name: string;
3165
+ minimumValue: number;
3166
+ type: MetricType;
3167
+ measure: MetricMeasure;
3168
+ };
3169
+ readonly bounty_hunter_hunter: {
3170
+ name: string;
3171
+ minimumValue: number;
3172
+ type: MetricType;
3173
+ measure: MetricMeasure;
3174
+ };
3175
+ readonly bounty_hunter_rogue: {
3176
+ name: string;
3177
+ minimumValue: number;
3178
+ type: MetricType;
3179
+ measure: MetricMeasure;
3180
+ };
3181
+ readonly clue_scrolls_all: {
3182
+ name: string;
3183
+ minimumValue: number;
3184
+ type: MetricType;
3185
+ measure: MetricMeasure;
3186
+ };
3187
+ readonly clue_scrolls_beginner: {
3188
+ name: string;
3189
+ minimumValue: number;
3190
+ type: MetricType;
3191
+ measure: MetricMeasure;
3192
+ };
3193
+ readonly clue_scrolls_easy: {
3194
+ name: string;
3195
+ minimumValue: number;
3196
+ type: MetricType;
3197
+ measure: MetricMeasure;
3198
+ };
3199
+ readonly clue_scrolls_medium: {
3200
+ name: string;
3201
+ minimumValue: number;
3202
+ type: MetricType;
3203
+ measure: MetricMeasure;
3204
+ };
3205
+ readonly clue_scrolls_hard: {
3206
+ name: string;
3207
+ minimumValue: number;
3208
+ type: MetricType;
3209
+ measure: MetricMeasure;
3210
+ };
3211
+ readonly clue_scrolls_elite: {
3212
+ name: string;
3213
+ minimumValue: number;
3214
+ type: MetricType;
3215
+ measure: MetricMeasure;
3216
+ };
3217
+ readonly clue_scrolls_master: {
3218
+ name: string;
3219
+ minimumValue: number;
3220
+ type: MetricType;
3221
+ measure: MetricMeasure;
3222
+ };
3223
+ readonly last_man_standing: {
3224
+ name: string;
3225
+ minimumValue: number;
3226
+ type: MetricType;
3227
+ measure: MetricMeasure;
3228
+ };
3229
+ readonly pvp_arena: {
3230
+ name: string;
3231
+ minimumValue: number;
3232
+ type: MetricType;
3233
+ measure: MetricMeasure;
3234
+ };
3235
+ readonly soul_wars_zeal: {
3236
+ name: string;
3237
+ minimumValue: number;
3238
+ type: MetricType;
3239
+ measure: MetricMeasure;
3240
+ };
3241
+ readonly guardians_of_the_rift: {
3242
+ name: string;
3243
+ minimumValue: number;
3244
+ type: MetricType;
3245
+ measure: MetricMeasure;
3246
+ };
3247
+ readonly colosseum_glory: {
3248
+ name: string;
3249
+ minimumValue: number;
3250
+ type: MetricType;
3251
+ measure: MetricMeasure;
3252
+ };
3253
+ readonly collections_logged: {
3254
+ name: string;
3255
+ minimumValue: number;
3256
+ type: MetricType;
3257
+ measure: MetricMeasure;
3258
+ };
3259
+ readonly abyssal_sire: {
3260
+ name: string;
3261
+ minimumValue: number;
3262
+ isMembers: boolean;
3263
+ type: MetricType;
3264
+ measure: MetricMeasure;
3265
+ };
3266
+ readonly alchemical_hydra: {
3267
+ name: string;
3268
+ minimumValue: number;
3269
+ isMembers: boolean;
3270
+ type: MetricType;
3271
+ measure: MetricMeasure;
3272
+ };
3273
+ readonly amoxliatl: {
3274
+ name: string;
3275
+ minimumValue: number;
3276
+ isMembers: boolean;
3277
+ type: MetricType;
3278
+ measure: MetricMeasure;
3279
+ };
3280
+ readonly araxxor: {
3281
+ name: string;
3282
+ minimumValue: number;
3283
+ isMembers: boolean;
3284
+ type: MetricType;
3285
+ measure: MetricMeasure;
3286
+ };
3287
+ readonly artio: {
3288
+ name: string;
3289
+ minimumValue: number;
3290
+ isMembers: boolean;
3291
+ type: MetricType;
3292
+ measure: MetricMeasure;
3293
+ };
3294
+ readonly barrows_chests: {
3295
+ name: string;
3296
+ minimumValue: number;
3297
+ isMembers: boolean;
3298
+ type: MetricType;
3299
+ measure: MetricMeasure;
3300
+ };
3301
+ readonly bryophyta: {
3302
+ name: string;
3303
+ minimumValue: number;
3304
+ isMembers: boolean;
3305
+ type: MetricType;
3306
+ measure: MetricMeasure;
3307
+ };
3308
+ readonly callisto: {
3309
+ name: string;
3310
+ minimumValue: number;
3311
+ isMembers: boolean;
3312
+ type: MetricType;
3313
+ measure: MetricMeasure;
3314
+ };
3315
+ readonly calvarion: {
3316
+ name: string;
3317
+ minimumValue: number;
3318
+ isMembers: boolean;
3319
+ type: MetricType;
3320
+ measure: MetricMeasure;
3321
+ };
3322
+ readonly cerberus: {
3323
+ name: string;
3324
+ minimumValue: number;
3325
+ isMembers: boolean;
3326
+ type: MetricType;
3327
+ measure: MetricMeasure;
3328
+ };
3329
+ readonly chambers_of_xeric: {
3330
+ name: string;
3331
+ minimumValue: number;
3332
+ isMembers: boolean;
3333
+ type: MetricType;
3334
+ measure: MetricMeasure;
3335
+ };
3336
+ readonly chambers_of_xeric_challenge_mode: {
3337
+ name: string;
3338
+ minimumValue: number;
3339
+ isMembers: boolean;
3340
+ type: MetricType;
3341
+ measure: MetricMeasure;
3342
+ };
3343
+ readonly chaos_elemental: {
3344
+ name: string;
3345
+ minimumValue: number;
3346
+ isMembers: boolean;
3347
+ type: MetricType;
3348
+ measure: MetricMeasure;
3349
+ };
3350
+ readonly chaos_fanatic: {
3351
+ name: string;
3352
+ minimumValue: number;
3353
+ isMembers: boolean;
3354
+ type: MetricType;
3355
+ measure: MetricMeasure;
3356
+ };
3357
+ readonly commander_zilyana: {
3358
+ name: string;
3359
+ minimumValue: number;
3360
+ isMembers: boolean;
3361
+ type: MetricType;
3362
+ measure: MetricMeasure;
3363
+ };
3364
+ readonly corporeal_beast: {
3365
+ name: string;
3366
+ minimumValue: number;
3367
+ isMembers: boolean;
3368
+ type: MetricType;
3369
+ measure: MetricMeasure;
3370
+ };
3371
+ readonly crazy_archaeologist: {
3372
+ name: string;
3373
+ minimumValue: number;
3374
+ isMembers: boolean;
3375
+ type: MetricType;
3376
+ measure: MetricMeasure;
3377
+ };
3378
+ readonly dagannoth_prime: {
3379
+ name: string;
3380
+ minimumValue: number;
3381
+ isMembers: boolean;
3382
+ type: MetricType;
3383
+ measure: MetricMeasure;
3384
+ };
3385
+ readonly dagannoth_rex: {
3386
+ name: string;
3387
+ minimumValue: number;
3388
+ isMembers: boolean;
3389
+ type: MetricType;
3390
+ measure: MetricMeasure;
3391
+ };
3392
+ readonly dagannoth_supreme: {
3393
+ name: string;
3394
+ minimumValue: number;
3395
+ isMembers: boolean;
3396
+ type: MetricType;
3397
+ measure: MetricMeasure;
3398
+ };
3399
+ readonly deranged_archaeologist: {
3400
+ name: string;
3401
+ minimumValue: number;
3402
+ isMembers: boolean;
3403
+ type: MetricType;
3404
+ measure: MetricMeasure;
3405
+ };
3406
+ readonly doom_of_mokhaiotl: {
3407
+ name: string;
3408
+ minimumValue: number;
3409
+ isMembers: boolean;
3410
+ type: MetricType;
3411
+ measure: MetricMeasure;
3412
+ };
3413
+ readonly duke_sucellus: {
3414
+ name: string;
3415
+ minimumValue: number;
3416
+ isMembers: boolean;
3417
+ type: MetricType;
3418
+ measure: MetricMeasure;
3419
+ };
3420
+ readonly general_graardor: {
3421
+ name: string;
3422
+ minimumValue: number;
3423
+ isMembers: boolean;
3424
+ type: MetricType;
3425
+ measure: MetricMeasure;
3426
+ };
3427
+ readonly giant_mole: {
3428
+ name: string;
3429
+ minimumValue: number;
3430
+ isMembers: boolean;
3431
+ type: MetricType;
3432
+ measure: MetricMeasure;
3433
+ };
3434
+ readonly grotesque_guardians: {
3435
+ name: string;
3436
+ minimumValue: number;
3437
+ isMembers: boolean;
3438
+ type: MetricType;
3439
+ measure: MetricMeasure;
3440
+ };
3441
+ readonly hespori: {
3442
+ name: string;
3443
+ minimumValue: number;
3444
+ isMembers: boolean;
3445
+ type: MetricType;
3446
+ measure: MetricMeasure;
3447
+ };
3448
+ readonly kalphite_queen: {
3449
+ name: string;
3450
+ minimumValue: number;
3451
+ isMembers: boolean;
3452
+ type: MetricType;
3453
+ measure: MetricMeasure;
3454
+ };
3455
+ readonly king_black_dragon: {
3456
+ name: string;
3457
+ minimumValue: number;
3458
+ isMembers: boolean;
3459
+ type: MetricType;
3460
+ measure: MetricMeasure;
3461
+ };
3462
+ readonly kraken: {
3463
+ name: string;
3464
+ minimumValue: number;
3465
+ isMembers: boolean;
3466
+ type: MetricType;
3467
+ measure: MetricMeasure;
3468
+ };
3469
+ readonly kreearra: {
3470
+ name: string;
3471
+ minimumValue: number;
3472
+ isMembers: boolean;
3473
+ type: MetricType;
3474
+ measure: MetricMeasure;
3475
+ };
3476
+ readonly kril_tsutsaroth: {
3477
+ name: string;
3478
+ minimumValue: number;
3479
+ isMembers: boolean;
3480
+ type: MetricType;
3481
+ measure: MetricMeasure;
3482
+ };
3483
+ readonly lunar_chests: {
3484
+ name: string;
3485
+ minimumValue: number;
3486
+ isMembers: boolean;
3487
+ type: MetricType;
3488
+ measure: MetricMeasure;
3489
+ };
3490
+ readonly mimic: {
3491
+ name: string;
3492
+ minimumValue: number;
3493
+ isMembers: boolean;
3494
+ type: MetricType;
3495
+ measure: MetricMeasure;
3496
+ };
3497
+ readonly nex: {
3498
+ name: string;
3499
+ minimumValue: number;
3500
+ isMembers: boolean;
3501
+ type: MetricType;
3502
+ measure: MetricMeasure;
3503
+ };
3504
+ readonly nightmare: {
3505
+ name: string;
3506
+ minimumValue: number;
3507
+ isMembers: boolean;
3508
+ type: MetricType;
3509
+ measure: MetricMeasure;
3510
+ };
3511
+ readonly phosanis_nightmare: {
3512
+ name: string;
3513
+ minimumValue: number;
3514
+ isMembers: boolean;
3515
+ type: MetricType;
3516
+ measure: MetricMeasure;
3517
+ };
3518
+ readonly obor: {
3519
+ name: string;
3520
+ minimumValue: number;
3521
+ isMembers: boolean;
3522
+ type: MetricType;
3523
+ measure: MetricMeasure;
3524
+ };
3525
+ readonly phantom_muspah: {
3526
+ name: string;
3527
+ minimumValue: number;
3528
+ isMembers: boolean;
3529
+ type: MetricType;
3530
+ measure: MetricMeasure;
3531
+ };
3532
+ readonly sarachnis: {
3533
+ name: string;
3534
+ minimumValue: number;
3535
+ isMembers: boolean;
3536
+ type: MetricType;
3537
+ measure: MetricMeasure;
3538
+ };
3539
+ readonly scorpia: {
3540
+ name: string;
3541
+ minimumValue: number;
3542
+ isMembers: boolean;
3543
+ type: MetricType;
3544
+ measure: MetricMeasure;
3545
+ };
3546
+ readonly scurrius: {
3547
+ name: string;
3548
+ minimumValue: number;
3549
+ isMembers: boolean;
3550
+ type: MetricType;
3551
+ measure: MetricMeasure;
3552
+ };
3553
+ readonly skotizo: {
3554
+ name: string;
3555
+ minimumValue: number;
3556
+ isMembers: boolean;
3557
+ type: MetricType;
3558
+ measure: MetricMeasure;
3559
+ };
3560
+ readonly sol_heredit: {
3561
+ name: string;
3562
+ minimumValue: number;
3563
+ isMembers: boolean;
3564
+ type: MetricType;
3565
+ measure: MetricMeasure;
3566
+ };
3567
+ readonly spindel: {
3568
+ name: string;
3569
+ minimumValue: number;
3570
+ isMembers: boolean;
3571
+ type: MetricType;
3572
+ measure: MetricMeasure;
3573
+ };
3574
+ readonly tempoross: {
3575
+ name: string;
3576
+ minimumValue: number;
3577
+ isMembers: boolean;
3578
+ type: MetricType;
3579
+ measure: MetricMeasure;
3580
+ };
3581
+ readonly the_gauntlet: {
3582
+ name: string;
3583
+ minimumValue: number;
3584
+ isMembers: boolean;
3585
+ type: MetricType;
3586
+ measure: MetricMeasure;
3587
+ };
3588
+ readonly the_corrupted_gauntlet: {
3589
+ name: string;
3590
+ minimumValue: number;
3591
+ isMembers: boolean;
3592
+ type: MetricType;
3593
+ measure: MetricMeasure;
3594
+ };
3595
+ readonly the_hueycoatl: {
3596
+ name: string;
3597
+ minimumValue: number;
3598
+ isMembers: boolean;
3599
+ type: MetricType;
3600
+ measure: MetricMeasure;
3601
+ };
3602
+ readonly the_leviathan: {
3603
+ name: string;
3604
+ minimumValue: number;
3605
+ isMembers: boolean;
3606
+ type: MetricType;
3607
+ measure: MetricMeasure;
3608
+ };
3609
+ readonly the_royal_titans: {
3610
+ name: string;
3611
+ minimumValue: number;
3612
+ isMembers: boolean;
3613
+ type: MetricType;
3614
+ measure: MetricMeasure;
3615
+ };
3616
+ readonly the_whisperer: {
3617
+ name: string;
3618
+ minimumValue: number;
3619
+ isMembers: boolean;
3620
+ type: MetricType;
3621
+ measure: MetricMeasure;
3622
+ };
3623
+ readonly theatre_of_blood: {
3624
+ name: string;
3625
+ minimumValue: number;
3626
+ isMembers: boolean;
3627
+ type: MetricType;
3628
+ measure: MetricMeasure;
3629
+ };
3630
+ readonly theatre_of_blood_hard_mode: {
3631
+ name: string;
3632
+ minimumValue: number;
3633
+ isMembers: boolean;
3634
+ type: MetricType;
3635
+ measure: MetricMeasure;
3636
+ };
3637
+ readonly thermonuclear_smoke_devil: {
3638
+ name: string;
3639
+ minimumValue: number;
3640
+ isMembers: boolean;
3641
+ type: MetricType;
3642
+ measure: MetricMeasure;
3643
+ };
3644
+ readonly tombs_of_amascut: {
3645
+ name: string;
3646
+ minimumValue: number;
3647
+ isMembers: boolean;
3648
+ type: MetricType;
3649
+ measure: MetricMeasure;
3650
+ };
3651
+ readonly tombs_of_amascut_expert: {
3652
+ name: string;
3653
+ minimumValue: number;
3654
+ isMembers: boolean;
3655
+ type: MetricType;
3656
+ measure: MetricMeasure;
3657
+ };
3658
+ readonly tzkal_zuk: {
3659
+ name: string;
3660
+ minimumValue: number;
3661
+ isMembers: boolean;
3662
+ type: MetricType;
3663
+ measure: MetricMeasure;
3664
+ };
3665
+ readonly tztok_jad: {
3666
+ name: string;
3667
+ minimumValue: number;
3668
+ isMembers: boolean;
3669
+ type: MetricType;
3670
+ measure: MetricMeasure;
3671
+ };
3672
+ readonly vardorvis: {
3673
+ name: string;
3674
+ minimumValue: number;
3675
+ isMembers: boolean;
3676
+ type: MetricType;
3677
+ measure: MetricMeasure;
3678
+ };
3679
+ readonly venenatis: {
3680
+ name: string;
3681
+ minimumValue: number;
3682
+ isMembers: boolean;
3683
+ type: MetricType;
3684
+ measure: MetricMeasure;
3685
+ };
3686
+ readonly vetion: {
3687
+ name: string;
3688
+ minimumValue: number;
3689
+ isMembers: boolean;
3690
+ type: MetricType;
3691
+ measure: MetricMeasure;
3692
+ };
3693
+ readonly vorkath: {
3694
+ name: string;
3695
+ minimumValue: number;
3696
+ isMembers: boolean;
3697
+ type: MetricType;
3698
+ measure: MetricMeasure;
3699
+ };
3700
+ readonly wintertodt: {
3701
+ name: string;
3702
+ minimumValue: number;
3703
+ isMembers: boolean;
3704
+ type: MetricType;
3705
+ measure: MetricMeasure;
3706
+ };
3707
+ readonly yama: {
3708
+ name: string;
3709
+ minimumValue: number;
3710
+ isMembers: boolean;
3711
+ type: MetricType;
3712
+ measure: MetricMeasure;
3713
+ };
3714
+ readonly zalcano: {
3715
+ name: string;
3716
+ minimumValue: number;
3717
+ isMembers: boolean;
3718
+ type: MetricType;
3719
+ measure: MetricMeasure;
3720
+ };
3721
+ readonly zulrah: {
3722
+ name: string;
3723
+ minimumValue: number;
3724
+ isMembers: boolean;
3725
+ type: MetricType;
3726
+ measure: MetricMeasure;
3727
+ };
3728
+ readonly overall: {
3729
+ name: string;
3730
+ isCombat: boolean;
3731
+ isMembers: boolean;
3732
+ type: MetricType;
3733
+ measure: MetricMeasure;
3734
+ };
3735
+ readonly attack: {
3736
+ name: string;
3737
+ isCombat: boolean;
3738
+ isMembers: boolean;
3739
+ type: MetricType;
3740
+ measure: MetricMeasure;
3741
+ };
3742
+ readonly defence: {
3743
+ name: string;
3744
+ isCombat: boolean;
3745
+ isMembers: boolean;
3746
+ type: MetricType;
3747
+ measure: MetricMeasure;
3748
+ };
3749
+ readonly strength: {
3750
+ name: string;
3751
+ isCombat: boolean;
3752
+ isMembers: boolean;
3753
+ type: MetricType;
3754
+ measure: MetricMeasure;
3755
+ };
3756
+ readonly hitpoints: {
3757
+ name: string;
3758
+ isCombat: boolean;
3759
+ isMembers: boolean;
3760
+ type: MetricType;
3761
+ measure: MetricMeasure;
3762
+ };
3763
+ readonly ranged: {
3764
+ name: string;
3765
+ isCombat: boolean;
3766
+ isMembers: boolean;
3767
+ type: MetricType;
3768
+ measure: MetricMeasure;
3769
+ };
3770
+ readonly prayer: {
3771
+ name: string;
3772
+ isCombat: boolean;
3773
+ isMembers: boolean;
3774
+ type: MetricType;
3775
+ measure: MetricMeasure;
3776
+ };
3777
+ readonly magic: {
3778
+ name: string;
3779
+ isCombat: boolean;
3780
+ isMembers: boolean;
3781
+ type: MetricType;
3782
+ measure: MetricMeasure;
3783
+ };
3784
+ readonly cooking: {
3785
+ name: string;
3786
+ isCombat: boolean;
3787
+ isMembers: boolean;
3788
+ type: MetricType;
3789
+ measure: MetricMeasure;
3790
+ };
3791
+ readonly woodcutting: {
3792
+ name: string;
3793
+ isCombat: boolean;
3794
+ isMembers: boolean;
3795
+ type: MetricType;
3796
+ measure: MetricMeasure;
3797
+ };
3798
+ readonly fletching: {
3799
+ name: string;
3800
+ isCombat: boolean;
3801
+ isMembers: boolean;
3802
+ type: MetricType;
3803
+ measure: MetricMeasure;
3804
+ };
3805
+ readonly fishing: {
3806
+ name: string;
3807
+ isCombat: boolean;
3808
+ isMembers: boolean;
3809
+ type: MetricType;
3810
+ measure: MetricMeasure;
3811
+ };
3812
+ readonly firemaking: {
3813
+ name: string;
3814
+ isCombat: boolean;
3815
+ isMembers: boolean;
3816
+ type: MetricType;
3817
+ measure: MetricMeasure;
3818
+ };
3819
+ readonly crafting: {
3820
+ name: string;
3821
+ isCombat: boolean;
3822
+ isMembers: boolean;
3823
+ type: MetricType;
3824
+ measure: MetricMeasure;
3825
+ };
3826
+ readonly smithing: {
3827
+ name: string;
3828
+ isCombat: boolean;
3829
+ isMembers: boolean;
3830
+ type: MetricType;
3831
+ measure: MetricMeasure;
3832
+ };
3833
+ readonly mining: {
3834
+ name: string;
3835
+ isCombat: boolean;
3836
+ isMembers: boolean;
3837
+ type: MetricType;
3838
+ measure: MetricMeasure;
3839
+ };
3840
+ readonly herblore: {
3841
+ name: string;
3842
+ isCombat: boolean;
3843
+ isMembers: boolean;
3844
+ type: MetricType;
3845
+ measure: MetricMeasure;
3846
+ };
3847
+ readonly agility: {
3848
+ name: string;
3849
+ isCombat: boolean;
3850
+ isMembers: boolean;
3851
+ type: MetricType;
3852
+ measure: MetricMeasure;
3853
+ };
3854
+ readonly thieving: {
3855
+ name: string;
3856
+ isCombat: boolean;
3857
+ isMembers: boolean;
3858
+ type: MetricType;
3859
+ measure: MetricMeasure;
3860
+ };
3861
+ readonly slayer: {
3862
+ name: string;
3863
+ isCombat: boolean;
3864
+ isMembers: boolean;
3865
+ type: MetricType;
3866
+ measure: MetricMeasure;
3867
+ };
3868
+ readonly farming: {
3869
+ name: string;
3870
+ isCombat: boolean;
3871
+ isMembers: boolean;
3872
+ type: MetricType;
3873
+ measure: MetricMeasure;
3874
+ };
3875
+ readonly runecrafting: {
3876
+ name: string;
3877
+ isCombat: boolean;
3878
+ isMembers: boolean;
3879
+ type: MetricType;
3880
+ measure: MetricMeasure;
3881
+ };
3882
+ readonly hunter: {
3883
+ name: string;
3884
+ isCombat: boolean;
3885
+ isMembers: boolean;
3886
+ type: MetricType;
3887
+ measure: MetricMeasure;
3888
+ };
3889
+ readonly construction: {
3890
+ name: string;
3891
+ isCombat: boolean;
3892
+ isMembers: boolean;
3893
+ type: MetricType;
3894
+ measure: MetricMeasure;
3895
+ };
3896
+ };
3897
+ declare const REAL_SKILLS: Skill[];
3898
+ declare const F2P_BOSSES: Boss[];
3899
+ declare const MEMBER_SKILLS: Skill[];
3900
+ declare const COMBAT_SKILLS: Skill[];
3901
+ declare const REAL_METRICS: (Skill | Activity | Boss)[];
3902
+ declare function isMetric(metric: Metric | string): metric is Metric;
3903
+ declare function isSkill(metric: Metric | string): metric is Skill;
3904
+ declare function isActivity(metric: Metric | string): metric is Activity;
3905
+ declare function isBoss(metric: Metric | string): metric is Boss;
3906
+ declare function isComputedMetric(metric: Metric | string): metric is ComputedMetric;
3907
+ declare function getMinimumValue(metric: Metric): number;
3908
+ declare function getParentEfficiencyMetric(metric: Metric): "ehp" | "ehb";
2195
3909
 
2196
- declare class NameChangesClient extends BaseAPIClient {
2197
- /**
2198
- * Searches for name changes that match a name and/or status filter.
2199
- * @returns A list of name changes.
2200
- */
2201
- searchNameChanges(filter: NameChangesSearchFilter, pagination?: PaginationOptions): Promise<NameChange[]>;
2202
- /**
2203
- * Submits a name change request between two usernames (old and new).
2204
- * @returns A pending name change request, to be reviewed and resolved at a later date.
2205
- */
2206
- submitNameChange(oldName: string, newName: string): Promise<NameChange>;
2207
- }
3910
+ declare const PeriodProps: Record<Period, {
3911
+ name: string;
3912
+ milliseconds: number;
3913
+ }>;
3914
+ declare function isPeriod(periodString: string): periodString is Period;
2208
3915
 
2209
- declare class CompetitionsClient extends BaseAPIClient {
2210
- /**
2211
- * Searches for competitions that match a title, type, metric and status filter.
2212
- * @returns A list of competitions.
2213
- */
2214
- searchCompetitions(filter: CompetitionsSearchFilter, pagination?: PaginationOptions): Promise<CompetitionListItem[]>;
2215
- /**
2216
- * Fetches the competition's full details, including all the participants and their progress.
2217
- * @returns A competition with a list of participants.
2218
- */
2219
- getCompetitionDetails(id: number, previewMetric?: Metric): Promise<CompetitionDetails>;
2220
- /**
2221
- * Fetches the competition's participant list in CSV format.
2222
- * @returns A string containing the CSV content.
2223
- */
2224
- getCompetitionDetailsCSV(id: number, params?: CompetitionDetailsCSVParams): Promise<string>;
2225
- /**
2226
- * Fetches all the values (exp, kc, etc) in chronological order within the bounds
2227
- * of the competition, for the top 5 participants.
2228
- * @returns A list of competition progress objects, including the player and their value history over time.
2229
- */
2230
- getCompetitionTopHistory(id: number, previewMetric?: Metric): Promise<Top5ProgressResult>;
2231
- /**
2232
- * Creates a new competition.
2233
- * @returns The newly created competition, and the verification code that authorizes future changes to it.
2234
- */
2235
- createCompetition(payload: CreateCompetitionPayload): Promise<CreateCompetitionResponse>;
2236
- /**
2237
- * Edits an existing competition.
2238
- * @returns The updated competition.
2239
- */
2240
- editCompetition(id: number, payload: EditCompetitionPayload, verificationCode: string): Promise<CompetitionWithParticipations>;
2241
- /**
2242
- * Deletes an existing competition.
2243
- * @returns A confirmation message.
2244
- */
2245
- deleteCompetition(id: number, verificationCode: string): Promise<GenericMessageResponse>;
2246
- /**
2247
- * Adds all (valid) given participants to a competition, ignoring duplicates.
2248
- * @returns The number of participants added and a confirmation message.
2249
- */
2250
- addParticipants(id: number, participants: string[], verificationCode: string): Promise<GenericCountMessageResponse>;
2251
- /**
2252
- * Remove all given usernames from a competition, ignoring usernames that aren't competing.
2253
- * @returns The number of participants removed and a confirmation message.
2254
- */
2255
- removeParticipants(id: number, participants: string[], verificationCode: string): Promise<GenericCountMessageResponse>;
2256
- /**
2257
- * Adds all (valid) given teams to a team competition, ignoring duplicates.
2258
- * @returns The number of participants added and a confirmation message.
2259
- */
2260
- addTeams(id: number, teams: Team[], verificationCode: string): Promise<GenericCountMessageResponse>;
2261
- /**
2262
- * Remove all given team names from a competition, ignoring names that don't exist.
2263
- * @returns The number of participants removed and a confirmation message.
2264
- */
2265
- removeTeams(id: number, teamNames: string[], verificationCode: string): Promise<GenericCountMessageResponse>;
2266
- /**
2267
- * Adds an "update" request to the queue, for each outdated competition participant.
2268
- * @returns The number of players to be updated and a confirmation message.
2269
- */
2270
- updateAll(id: number, verificationCode: string): Promise<GenericCountMessageResponse>;
2271
- }
3916
+ declare const PlayerBuildProps: Record<PlayerBuild, {
3917
+ name: string;
3918
+ }>;
3919
+ declare function isPlayerBuild(buildString: string): buildString is PlayerBuild;
2272
3920
 
2273
- interface WOMClientOptions {
2274
- apiKey?: string;
2275
- userAgent?: string;
2276
- baseAPIUrl?: string;
2277
- }
2278
- declare class WOMClient extends BaseAPIClient {
2279
- deltas: DeltasClient;
2280
- groups: GroupsClient;
2281
- players: PlayersClient;
2282
- records: RecordsClient;
2283
- efficiency: EfficiencyClient;
2284
- nameChanges: NameChangesClient;
2285
- competitions: CompetitionsClient;
2286
- constructor(options?: WOMClientOptions);
2287
- }
3921
+ declare const PlayerStatusProps: Record<PlayerStatus, {
3922
+ name: string;
3923
+ }>;
3924
+ declare function isPlayerStatus(statusString: string): statusString is PlayerStatus;
3925
+
3926
+ declare const PlayerTypeProps: Record<PlayerType, {
3927
+ name: string;
3928
+ }>;
3929
+ declare function isPlayerType(typeString: string): typeString is PlayerType;
2288
3930
 
2289
- export { ACTIVITIES, type Achievement, type AchievementDefinition, type AchievementProgress, type AchievementTemplate, Activity, type ActivityDelta, ActivityType, type ActivityValue, type AssertPlayerTypeResponse, BOSSES, type Bonus, Boss, type BossDelta, type BossMetaConfig, type BossValue, CAPPED_MAX_TOTAL_XP, COMBAT_SKILLS, COMPETITION_STATUSES, COMPETITION_TYPES, COMPUTED_METRICS, COUNTRY_CODES, type ChangeMemberRolePayload, CompetitionCSVTableType, type CompetitionDetails, type CompetitionDetailsCSVParams, type CompetitionListItem, CompetitionStatus, CompetitionStatusProps, CompetitionType, CompetitionTypeProps, type CompetitionWithParticipations, type CompetitionsSearchFilter, ComputedMetric, type ComputedMetricDelta, type ComputedMetricValue, Country, type CountryDetails, CountryProps, type CreateCompetitionPayload, type CreateCompetitionResponse, type CreateGroupPayload, type CreateGroupResponse, type DeltaGroupLeaderboardEntry, type DeltaLeaderboardEntry, type DeltaLeaderboardFilter, type DenyContext, type EditCompetitionPayload, type EditGroupPayload, EfficiencyAlgorithmType, type EfficiencyAlgorithmTypeUnion, type EfficiencyLeaderboardsFilter, type ExtendedAchievement, type ExtendedAchievementWithPlayer, F2P_BOSSES, type FlaggedPlayerReviewContext, type FormattedSnapshot, GROUP_ROLES, type GenericCountMessageResponse, type GenericMessageResponse, type GetGroupGainsFilter, type GetPlayerGainsResponse, type Group, type GroupDetails, type GroupHiscoresActivityItem, type GroupHiscoresBossItem, type GroupHiscoresComputedMetricItem, type GroupHiscoresEntry, type GroupHiscoresSkillItem, type GroupListItem, type GroupMemberFragment, type GroupRecordsFilter, GroupRole, GroupRoleProps, type GroupStatistics, MAX_LEVEL, MAX_SKILL_EXP, MAX_VIRTUAL_LEVEL, MEMBER_SKILLS, METRICS, type MapOf, type MeasuredDeltaProgress, type MemberActivityWithPlayer, type MemberInput, type MembershipWithGroup, type MembershipWithPlayer, Metric, type MetricLeaders, MetricMeasure, MetricProps, MetricType, type MetricValueKey, type NameChange, type NameChangeDetails, NameChangeStatus, type NameChangeWithPlayer, type NameChangesSearchFilter, PERIODS, PLAYER_BUILDS, PLAYER_STATUSES, PLAYER_TYPES, PRIVELEGED_GROUP_ROLES, type ParticipationWithCompetition, type ParticipationWithCompetitionAndStandings, type ParticipationWithPlayer, type ParticipationWithPlayerAndProgress, Period, PeriodProps, type Player, PlayerAnnotationType, type PlayerArchiveWithPlayer, PlayerBuild, PlayerBuildProps, type PlayerCompetitionStandingsFilter, type PlayerCompetitionsFilter, type PlayerDeltasMap, type PlayerDetails, type PlayerRecordsFilter, PlayerStatus, PlayerStatusProps, PlayerType, PlayerTypeProps, REAL_METRICS, REAL_SKILLS, type Record, type RecordLeaderboardEntry, type RecordLeaderboardFilter, SKILLS, SKILL_EXP_AT_99, Skill, type SkillDelta, type SkillMetaConfig, type SkillMetaMethod, type SkillValue, type SkipContext, type Snapshot, type SnapshotFragment, type Team, type TimeRangeFilter, type Top5ProgressResult, WOMClient, findCountry, findCountryByCode, findCountryByName, findGroupRole, findMetric, findPeriod, findPlayerBuild, findPlayerType, formatNumber, getCombatLevel, getExpForLevel, getLevel, getMetricMeasure, getMetricName, getMetricRankKey, getMetricValueKey, getMinimumValue, getParentEfficiencyMetric, isActivity, isBoss, isCompetitionStatus, isCompetitionType, isComputedMetric, isCountry, isGroupRole, isMetric, isPeriod, isPlayerBuild, isPlayerStatus, isPlayerType, isSkill, padNumber, parsePeriodExpression, round };
3931
+ export { ACTIVITIES, type Achievement, type AchievementDefinition, type AchievementMeasure, type AchievementProgressResponse, type AchievementResponse, Activity, ActivityProps, BOSSES, Boss, type BossMetaConfig, BossProps, CAPPED_MAX_TOTAL_XP, COMBAT_SKILLS, COMPETITION_STATUSES, COMPETITION_TYPES, COMPUTED_METRICS, COUNTRY_CODES, type Competition, CompetitionCSVTableType, type CompetitionDetailsResponse, type CompetitionResponse, CompetitionStatus, CompetitionStatusProps, type CompetitionTeam, CompetitionType, CompetitionTypeProps, ComputedMetric, ComputedMetricProps, Country, CountryProps, type CreateCompetitionPayload, type CreateGroupPayload, type Delta, type EditCompetitionPayload, type EditGroupPayload, EfficiencyAlgorithmType, F2P_BOSSES, GROUP_ROLES, type GenericCountMessageResponse, type GenericMessageResponse, type Group, type GroupDetailsResponse, type GroupHiscoresEntryResponse, type GroupResponse, GroupRole, type GroupRoleOrder, GroupRoleProps, type GroupSocialLinks, type GroupStatisticsResponse, MAX_LEVEL, MAX_SKILL_EXP, MAX_VIRTUAL_LEVEL, MEMBER_SKILLS, METRICS, type MemberActivity, type MemberActivityResponse, MemberActivityType, type Membership, type MembershipResponse, Metric, type MetricDelta, MetricMeasure, MetricProps, MetricType, type NameChange, type NameChangeDenyContext, type NameChangeResponse, type NameChangeReviewContext, type NameChangeSkipContext, NameChangeStatus, PERIODS, PLAYER_BUILDS, PLAYER_STATUSES, PLAYER_TYPES, PRIVILEGED_GROUP_ROLES, type ParticipantHistoryResponse, type Participation, type ParticipationResponse, type Patron, Period, PeriodProps, type Player, type PlayerAnnotation, PlayerAnnotationType, type PlayerArchive, type PlayerArchiveResponse, PlayerBuild, PlayerBuildProps, type PlayerCompetitionStandingResponse, type PlayerDeltasMapResponse, type PlayerDetailsResponse, type PlayerResponse, PlayerStatus, PlayerStatusProps, PlayerType, PlayerTypeProps, REAL_METRICS, REAL_SKILLS, type Record$1 as Record, type RecordResponse, SKILLS, SKILL_EXP_AT_99, Skill, type SkillMetaBonus, type SkillMetaConfig, type SkillMetaMethod, SkillProps, type Snapshot, type SnapshotResponse, type TimeRangeFilter, WOMClient, findCountry, findCountryByCode, findCountryByName, getCombatLevel, getExpForLevel, getLevel, getMinimumValue, getParentEfficiencyMetric, isActivity, isBoss, isComputedMetric, isCountry, isGroupRole, isMetric, isPeriod, isPlayerBuild, isPlayerStatus, isPlayerType, isSkill };