@wise-old-man/utils
Version:
A JavaScript/TypeScript client that interfaces and consumes the Wise Old Man API, an API that tracks and measures players' progress in Old School Runescape.
1,609 lines (1,578 loc) • 81.9 kB
TypeScript
/**
* Hardcode Prisma Types into this file, to avoid having to import the whole Prisma Client
*/
type Prisma_Base_Achievement = {
playerId: number;
name: string;
metric: Metric;
threshold: bigint;
accuracy: bigint | null;
createdAt: Date;
};
export type MemberActivity = {
groupId: number;
playerId: number;
type: ActivityType;
role: GroupRole | null;
previousRole: GroupRole | null;
createdAt: Date;
};
export type PlayerAnnotation = {
playerId: number;
type: PlayerAnnotationType;
createdAt: Date;
};
export type PlayerArchive = {
playerId: number;
previousUsername: string;
archiveUsername: string;
restoredUsername: string | null;
createdAt: Date;
restoredAt: Date | null;
};
type Prisma_Base_GroupSocialLinks = {
id: number;
groupId: number;
website: string | null;
discord: string | null;
twitter: string | null;
youtube: string | null;
twitch: string | null;
updatedAt: Date;
createdAt: Date;
};
export type Membership = {
playerId: number;
groupId: number;
role: GroupRole;
createdAt: Date;
updatedAt: Date;
};
export type Prisma_Base_Group = {
id: number;
name: string;
clanChat: string | null;
description: string | null;
homeworld: number | null;
verified: boolean;
patron: boolean;
visible: boolean;
profileImage: string | null;
bannerImage: string | null;
score: number;
verificationHash: string;
createdAt: Date;
updatedAt: Date;
creatorIpHash: string | null;
};
export type GroupRoleOrder = {
role: GroupRole;
index: number;
};
type Participation = {
playerId: number;
competitionId: number;
startSnapshotId: number | null;
endSnapshotId: number | null;
teamName: string | null;
createdAt: Date;
updatedAt: Date;
};
type Prisma_Base_Competition = {
id: number;
title: string;
metric: Metric;
type: CompetitionType;
startsAt: Date;
endsAt: Date;
groupId: number | null;
score: number;
visible: boolean;
verificationHash: string;
createdAt: Date | null;
updatedAt: Date | null;
creatorIpHash: string | null;
};
type Prisma_Base_NameChange = {
id: number;
playerId: number;
oldName: string;
newName: string;
status: NameChangeStatus;
reviewContext: unknown | null;
resolvedAt: Date | null;
updatedAt: Date;
createdAt: Date;
};
type Prisma_Base_Player = {
id: number;
username: string;
displayName: string;
type: PlayerType;
build: PlayerBuild;
status: PlayerStatus;
country: Country | null;
patron: boolean;
exp: bigint;
ehp: number;
ehb: number;
ttm: number;
tt200m: number;
registeredAt: Date;
updatedAt: Date | null;
lastChangedAt: Date | null;
lastImportedAt: Date | null;
latestSnapshotId: number | null;
};
type Prisma_Base_Record = {
id: number;
playerId: number;
period: Period;
metric: Metric;
value: bigint;
updatedAt: Date;
};
type Prisma_Base_Snapshot = {
id: number;
playerId: number;
importedAt: Date | null;
createdAt: Date;
overallRank: number;
overallExperience: bigint;
attackRank: number;
attackExperience: number;
defenceRank: number;
defenceExperience: number;
strengthRank: number;
strengthExperience: number;
hitpointsRank: number;
hitpointsExperience: number;
rangedRank: number;
rangedExperience: number;
prayerRank: number;
prayerExperience: number;
magicRank: number;
magicExperience: number;
cookingRank: number;
cookingExperience: number;
woodcuttingRank: number;
woodcuttingExperience: number;
fletchingRank: number;
fletchingExperience: number;
fishingRank: number;
fishingExperience: number;
firemakingRank: number;
firemakingExperience: number;
craftingRank: number;
craftingExperience: number;
smithingRank: number;
smithingExperience: number;
miningRank: number;
miningExperience: number;
herbloreRank: number;
herbloreExperience: number;
agilityRank: number;
agilityExperience: number;
thievingRank: number;
thievingExperience: number;
slayerRank: number;
slayerExperience: number;
farmingRank: number;
farmingExperience: number;
runecraftingRank: number;
runecraftingExperience: number;
hunterRank: number;
hunterExperience: number;
constructionRank: number;
constructionExperience: number;
league_pointsRank: number;
league_pointsScore: number;
bounty_hunter_hunterRank: number;
bounty_hunter_hunterScore: number;
bounty_hunter_rogueScore: number;
clue_scrolls_allRank: number;
bounty_hunter_rogueRank: number;
clue_scrolls_allScore: number;
clue_scrolls_beginnerRank: number;
clue_scrolls_easyRank: number;
clue_scrolls_beginnerScore: number;
clue_scrolls_easyScore: number;
clue_scrolls_mediumRank: number;
clue_scrolls_mediumScore: number;
clue_scrolls_hardRank: number;
clue_scrolls_hardScore: number;
clue_scrolls_eliteRank: number;
clue_scrolls_eliteScore: number;
clue_scrolls_masterRank: number;
clue_scrolls_masterScore: number;
last_man_standingRank: number;
last_man_standingScore: number;
pvp_arenaRank: number;
pvp_arenaScore: number;
abyssal_sireRank: number;
abyssal_sireKills: number;
alchemical_hydraRank: number;
alchemical_hydraKills: number;
amoxliatlRank: number;
amoxliatlKills: number;
artioRank: number;
artioKills: number;
barrows_chestsRank: number;
barrows_chestsKills: number;
bryophytaKills: number;
bryophytaRank: number;
cerberusKills: number;
chambers_of_xericRank: number;
cerberusRank: number;
callistoRank: number;
callistoKills: number;
calvarionRank: number;
calvarionKills: number;
chambers_of_xericKills: number;
chambers_of_xeric_challenge_modeRank: number;
chambers_of_xeric_challenge_modeKills: number;
chaos_elementalKills: number;
chaos_fanaticKills: number;
chaos_fanaticRank: number;
commander_zilyanaRank: number;
chaos_elementalRank: number;
commander_zilyanaKills: number;
corporeal_beastRank: number;
corporeal_beastKills: number;
crazy_archaeologistRank: number;
crazy_archaeologistKills: number;
dagannoth_primeRank: number;
dagannoth_primeKills: number;
dagannoth_rexRank: number;
dagannoth_rexKills: number;
dagannoth_supremeRank: number;
dagannoth_supremeKills: number;
deranged_archaeologistRank: number;
deranged_archaeologistKills: number;
general_graardorRank: number;
general_graardorKills: number;
giant_moleRank: number;
giant_moleKills: number;
grotesque_guardiansRank: number;
grotesque_guardiansKills: number;
hesporiRank: number;
hesporiKills: number;
kalphite_queenKills: number;
kalphite_queenRank: number;
king_black_dragonRank: number;
king_black_dragonKills: number;
krakenRank: number;
krakenKills: number;
kreearraRank: number;
kreearraKills: number;
kril_tsutsarothRank: number;
kril_tsutsarothKills: number;
mimicRank: number;
mimicKills: number;
nightmareRank: number;
nightmareKills: number;
oborRank: number;
oborKills: number;
phantom_muspahRank: number;
phantom_muspahKills: number;
sarachnisRank: number;
sarachnisKills: number;
scorpiaRank: number;
scorpiaKills: number;
skotizoRank: number;
skotizoKills: number;
spindelRank: number;
spindelKills: number;
the_gauntletRank: number;
the_gauntletKills: number;
the_corrupted_gauntletKills: number;
the_corrupted_gauntletRank: number;
the_hueycoatlRank: number;
the_hueycoatlKills: number;
theatre_of_bloodRank: number;
theatre_of_bloodKills: number;
thermonuclear_smoke_devilRank: number;
thermonuclear_smoke_devilKills: number;
tombs_of_amascutRank: number;
tombs_of_amascutKills: number;
tombs_of_amascut_expertRank: number;
tombs_of_amascut_expertKills: number;
tzkal_zukRank: number;
tzkal_zukKills: number;
tztok_jadRank: number;
tztok_jadKills: number;
venenatisRank: number;
venenatisKills: number;
vetionRank: number;
vetionKills: number;
vorkathRank: number;
vorkathKills: number;
wintertodtRank: number;
zalcanoRank: number;
wintertodtKills: number;
zalcanoKills: number;
zulrahRank: number;
zulrahKills: number;
ehpValue: number;
ehbValue: number;
ehbRank: number;
ehpRank: number;
soul_wars_zealScore: number;
soul_wars_zealRank: number;
temporossKills: number;
temporossRank: number;
theatre_of_blood_hard_modeKills: number;
theatre_of_blood_hard_modeRank: number;
phosanis_nightmareKills: number;
phosanis_nightmareRank: number;
nexKills: number;
nexRank: number;
guardians_of_the_riftScore: number;
guardians_of_the_riftRank: number;
};
/**
* Prisma currently seems to ignore the @map() in enum declarations.
*
* So by declaring this enum in the schema file:
*
* enum NameChangeStatus {
* PENDING @map('pending')
* DENIED @map('denied')
* APPROVED @map('approved')
* }
*
* you would expect the prisma client to then generate the following object:
*
* const NameChangeStatus = {
* PENDING: 'pending',
* DENIED: 'denied',
* APPROVED: 'approved',
* }
*
* but unfortunately, the mapping is only used for queries, and the actual esulting object is this:
*
* const NameChangeStatus = {
* PENDING: 'PENDING',
* DENIED: 'DENIED',
* APPROVED: 'APPROVED',
* }
*
* And because I'd hate having to call enum values in lowercase, like:
* NameChangeStatus.pending
* Metric.king_black_dragon
* Period.day
*
* I'd rather do some mapping to ensure I have the best of both worlds,
* lowercase database values, but with uppercase in code.
* With the mappings below, we can now use prisma enums by calling them with uppercase, like:
*
* NameChangeStatus.PENDING
* Metric.KING_BLACK_DRAGON
* Period.DAY
*
*/
declare const Skill: {
readonly OVERALL: "overall";
readonly ATTACK: "attack";
readonly DEFENCE: "defence";
readonly STRENGTH: "strength";
readonly HITPOINTS: "hitpoints";
readonly RANGED: "ranged";
readonly PRAYER: "prayer";
readonly MAGIC: "magic";
readonly COOKING: "cooking";
readonly WOODCUTTING: "woodcutting";
readonly FLETCHING: "fletching";
readonly FISHING: "fishing";
readonly FIREMAKING: "firemaking";
readonly CRAFTING: "crafting";
readonly SMITHING: "smithing";
readonly MINING: "mining";
readonly HERBLORE: "herblore";
readonly AGILITY: "agility";
readonly THIEVING: "thieving";
readonly SLAYER: "slayer";
readonly FARMING: "farming";
readonly RUNECRAFTING: "runecrafting";
readonly HUNTER: "hunter";
readonly CONSTRUCTION: "construction";
};
type Skill = (typeof Skill)[keyof typeof Skill];
declare const Activity: {
readonly LEAGUE_POINTS: "league_points";
readonly BOUNTY_HUNTER_HUNTER: "bounty_hunter_hunter";
readonly BOUNTY_HUNTER_ROGUE: "bounty_hunter_rogue";
readonly CLUE_SCROLLS_ALL: "clue_scrolls_all";
readonly CLUE_SCROLLS_BEGINNER: "clue_scrolls_beginner";
readonly CLUE_SCROLLS_EASY: "clue_scrolls_easy";
readonly CLUE_SCROLLS_MEDIUM: "clue_scrolls_medium";
readonly CLUE_SCROLLS_HARD: "clue_scrolls_hard";
readonly CLUE_SCROLLS_ELITE: "clue_scrolls_elite";
readonly CLUE_SCROLLS_MASTER: "clue_scrolls_master";
readonly LAST_MAN_STANDING: "last_man_standing";
readonly PVP_ARENA: "pvp_arena";
readonly SOUL_WARS_ZEAL: "soul_wars_zeal";
readonly GUARDIANS_OF_THE_RIFT: "guardians_of_the_rift";
readonly COLOSSEUM_GLORY: "colosseum_glory";
readonly COLLECTIONS_LOGGED: "collections_logged";
};
type Activity = (typeof Activity)[keyof typeof Activity];
declare const Boss: {
readonly ABYSSAL_SIRE: "abyssal_sire";
readonly ALCHEMICAL_HYDRA: "alchemical_hydra";
readonly AMOXLIATL: "amoxliatl";
readonly ARAXXOR: "araxxor";
readonly ARTIO: "artio";
readonly BARROWS_CHESTS: "barrows_chests";
readonly BRYOPHYTA: "bryophyta";
readonly CALLISTO: "callisto";
readonly CALVARION: "calvarion";
readonly CERBERUS: "cerberus";
readonly CHAMBERS_OF_XERIC: "chambers_of_xeric";
readonly CHAMBERS_OF_XERIC_CM: "chambers_of_xeric_challenge_mode";
readonly CHAOS_ELEMENTAL: "chaos_elemental";
readonly CHAOS_FANATIC: "chaos_fanatic";
readonly COMMANDER_ZILYANA: "commander_zilyana";
readonly CORPOREAL_BEAST: "corporeal_beast";
readonly CRAZY_ARCHAEOLOGIST: "crazy_archaeologist";
readonly DAGANNOTH_PRIME: "dagannoth_prime";
readonly DAGANNOTH_REX: "dagannoth_rex";
readonly DAGANNOTH_SUPREME: "dagannoth_supreme";
readonly DERANGED_ARCHAEOLOGIST: "deranged_archaeologist";
readonly DUKE_SUCELLUS: "duke_sucellus";
readonly GENERAL_GRAARDOR: "general_graardor";
readonly GIANT_MOLE: "giant_mole";
readonly GROTESQUE_GUARDIANS: "grotesque_guardians";
readonly HESPORI: "hespori";
readonly KALPHITE_QUEEN: "kalphite_queen";
readonly KING_BLACK_DRAGON: "king_black_dragon";
readonly KRAKEN: "kraken";
readonly KREEARRA: "kreearra";
readonly KRIL_TSUTSAROTH: "kril_tsutsaroth";
readonly LUNAR_CHESTS: "lunar_chests";
readonly MIMIC: "mimic";
readonly NEX: "nex";
readonly NIGHTMARE: "nightmare";
readonly PHOSANIS_NIGHTMARE: "phosanis_nightmare";
readonly OBOR: "obor";
readonly PHANTOM_MUSPAH: "phantom_muspah";
readonly SARACHNIS: "sarachnis";
readonly SCORPIA: "scorpia";
readonly SCURRIUS: "scurrius";
readonly SKOTIZO: "skotizo";
readonly SOL_HEREDIT: "sol_heredit";
readonly SPINDEL: "spindel";
readonly TEMPOROSS: "tempoross";
readonly THE_GAUNTLET: "the_gauntlet";
readonly THE_CORRUPTED_GAUNTLET: "the_corrupted_gauntlet";
readonly THE_HUEYCOATL: "the_hueycoatl";
readonly THE_LEVIATHAN: "the_leviathan";
readonly THE_ROYAL_TITANS: "the_royal_titans";
readonly THE_WHISPERER: "the_whisperer";
readonly THEATRE_OF_BLOOD: "theatre_of_blood";
readonly THEATRE_OF_BLOOD_HARD_MODE: "theatre_of_blood_hard_mode";
readonly THERMONUCLEAR_SMOKE_DEVIL: "thermonuclear_smoke_devil";
readonly TOMBS_OF_AMASCUT: "tombs_of_amascut";
readonly TOMBS_OF_AMASCUT_EXPERT: "tombs_of_amascut_expert";
readonly TZKAL_ZUK: "tzkal_zuk";
readonly TZTOK_JAD: "tztok_jad";
readonly VARDORVIS: "vardorvis";
readonly VENENATIS: "venenatis";
readonly VETION: "vetion";
readonly VORKATH: "vorkath";
readonly WINTERTODT: "wintertodt";
readonly YAMA: "yama";
readonly ZALCANO: "zalcano";
readonly ZULRAH: "zulrah";
};
type Boss = (typeof Boss)[keyof typeof Boss];
declare const ComputedMetric: {
readonly EHP: "ehp";
readonly EHB: "ehb";
};
type ComputedMetric = (typeof ComputedMetric)[keyof typeof ComputedMetric];
declare const Metric: {
readonly EHP: "ehp";
readonly EHB: "ehb";
readonly ABYSSAL_SIRE: "abyssal_sire";
readonly ALCHEMICAL_HYDRA: "alchemical_hydra";
readonly AMOXLIATL: "amoxliatl";
readonly ARAXXOR: "araxxor";
readonly ARTIO: "artio";
readonly BARROWS_CHESTS: "barrows_chests";
readonly BRYOPHYTA: "bryophyta";
readonly CALLISTO: "callisto";
readonly CALVARION: "calvarion";
readonly CERBERUS: "cerberus";
readonly CHAMBERS_OF_XERIC: "chambers_of_xeric";
readonly CHAMBERS_OF_XERIC_CM: "chambers_of_xeric_challenge_mode";
readonly CHAOS_ELEMENTAL: "chaos_elemental";
readonly CHAOS_FANATIC: "chaos_fanatic";
readonly COMMANDER_ZILYANA: "commander_zilyana";
readonly CORPOREAL_BEAST: "corporeal_beast";
readonly CRAZY_ARCHAEOLOGIST: "crazy_archaeologist";
readonly DAGANNOTH_PRIME: "dagannoth_prime";
readonly DAGANNOTH_REX: "dagannoth_rex";
readonly DAGANNOTH_SUPREME: "dagannoth_supreme";
readonly DERANGED_ARCHAEOLOGIST: "deranged_archaeologist";
readonly DUKE_SUCELLUS: "duke_sucellus";
readonly GENERAL_GRAARDOR: "general_graardor";
readonly GIANT_MOLE: "giant_mole";
readonly GROTESQUE_GUARDIANS: "grotesque_guardians";
readonly HESPORI: "hespori";
readonly KALPHITE_QUEEN: "kalphite_queen";
readonly KING_BLACK_DRAGON: "king_black_dragon";
readonly KRAKEN: "kraken";
readonly KREEARRA: "kreearra";
readonly KRIL_TSUTSAROTH: "kril_tsutsaroth";
readonly LUNAR_CHESTS: "lunar_chests";
readonly MIMIC: "mimic";
readonly NEX: "nex";
readonly NIGHTMARE: "nightmare";
readonly PHOSANIS_NIGHTMARE: "phosanis_nightmare";
readonly OBOR: "obor";
readonly PHANTOM_MUSPAH: "phantom_muspah";
readonly SARACHNIS: "sarachnis";
readonly SCORPIA: "scorpia";
readonly SCURRIUS: "scurrius";
readonly SKOTIZO: "skotizo";
readonly SOL_HEREDIT: "sol_heredit";
readonly SPINDEL: "spindel";
readonly TEMPOROSS: "tempoross";
readonly THE_GAUNTLET: "the_gauntlet";
readonly THE_CORRUPTED_GAUNTLET: "the_corrupted_gauntlet";
readonly THE_HUEYCOATL: "the_hueycoatl";
readonly THE_LEVIATHAN: "the_leviathan";
readonly THE_ROYAL_TITANS: "the_royal_titans";
readonly THE_WHISPERER: "the_whisperer";
readonly THEATRE_OF_BLOOD: "theatre_of_blood";
readonly THEATRE_OF_BLOOD_HARD_MODE: "theatre_of_blood_hard_mode";
readonly THERMONUCLEAR_SMOKE_DEVIL: "thermonuclear_smoke_devil";
readonly TOMBS_OF_AMASCUT: "tombs_of_amascut";
readonly TOMBS_OF_AMASCUT_EXPERT: "tombs_of_amascut_expert";
readonly TZKAL_ZUK: "tzkal_zuk";
readonly TZTOK_JAD: "tztok_jad";
readonly VARDORVIS: "vardorvis";
readonly VENENATIS: "venenatis";
readonly VETION: "vetion";
readonly VORKATH: "vorkath";
readonly WINTERTODT: "wintertodt";
readonly YAMA: "yama";
readonly ZALCANO: "zalcano";
readonly ZULRAH: "zulrah";
readonly LEAGUE_POINTS: "league_points";
readonly BOUNTY_HUNTER_HUNTER: "bounty_hunter_hunter";
readonly BOUNTY_HUNTER_ROGUE: "bounty_hunter_rogue";
readonly CLUE_SCROLLS_ALL: "clue_scrolls_all";
readonly CLUE_SCROLLS_BEGINNER: "clue_scrolls_beginner";
readonly CLUE_SCROLLS_EASY: "clue_scrolls_easy";
readonly CLUE_SCROLLS_MEDIUM: "clue_scrolls_medium";
readonly CLUE_SCROLLS_HARD: "clue_scrolls_hard";
readonly CLUE_SCROLLS_ELITE: "clue_scrolls_elite";
readonly CLUE_SCROLLS_MASTER: "clue_scrolls_master";
readonly LAST_MAN_STANDING: "last_man_standing";
readonly PVP_ARENA: "pvp_arena";
readonly SOUL_WARS_ZEAL: "soul_wars_zeal";
readonly GUARDIANS_OF_THE_RIFT: "guardians_of_the_rift";
readonly COLOSSEUM_GLORY: "colosseum_glory";
readonly COLLECTIONS_LOGGED: "collections_logged";
readonly OVERALL: "overall";
readonly ATTACK: "attack";
readonly DEFENCE: "defence";
readonly STRENGTH: "strength";
readonly HITPOINTS: "hitpoints";
readonly RANGED: "ranged";
readonly PRAYER: "prayer";
readonly MAGIC: "magic";
readonly COOKING: "cooking";
readonly WOODCUTTING: "woodcutting";
readonly FLETCHING: "fletching";
readonly FISHING: "fishing";
readonly FIREMAKING: "firemaking";
readonly CRAFTING: "crafting";
readonly SMITHING: "smithing";
readonly MINING: "mining";
readonly HERBLORE: "herblore";
readonly AGILITY: "agility";
readonly THIEVING: "thieving";
readonly SLAYER: "slayer";
readonly FARMING: "farming";
readonly RUNECRAFTING: "runecrafting";
readonly HUNTER: "hunter";
readonly CONSTRUCTION: "construction";
};
type Metric = (typeof Metric)[keyof typeof Metric];
declare const NameChangeStatus: {
readonly PENDING: "pending";
readonly DENIED: "denied";
readonly APPROVED: "approved";
};
type NameChangeStatus = (typeof NameChangeStatus)[keyof typeof NameChangeStatus];
declare const Period: {
readonly FIVE_MIN: "five_min";
readonly DAY: "day";
readonly WEEK: "week";
readonly MONTH: "month";
readonly YEAR: "year";
};
type Period = (typeof Period)[keyof typeof Period];
declare const PlayerType: {
readonly UNKNOWN: "unknown";
readonly REGULAR: "regular";
readonly IRONMAN: "ironman";
readonly HARDCORE: "hardcore";
readonly ULTIMATE: "ultimate";
};
type PlayerType = (typeof PlayerType)[keyof typeof PlayerType];
declare const PlayerAnnotationType: {
readonly OPT_OUT: "opt_out";
readonly BLOCKED: "blocked";
readonly FAKE_F2P: "fake_f2p";
};
type PlayerAnnotationType = (typeof PlayerAnnotationType)[keyof typeof PlayerAnnotationType];
declare const PlayerBuild: {
readonly MAIN: "main";
readonly F2P: "f2p";
readonly F2P_LVL3: "f2p_lvl3";
readonly LVL3: "lvl3";
readonly ZERKER: "zerker";
readonly DEF1: "def1";
readonly HP10: "hp10";
};
type PlayerBuild = (typeof PlayerBuild)[keyof typeof PlayerBuild];
declare const PlayerStatus: {
readonly ACTIVE: "active";
readonly UNRANKED: "unranked";
readonly FLAGGED: "flagged";
readonly ARCHIVED: "archived";
readonly BANNED: "banned";
};
type PlayerStatus = (typeof PlayerStatus)[keyof typeof PlayerStatus];
declare const CompetitionType: {
readonly CLASSIC: "classic";
readonly TEAM: "team";
};
type CompetitionType = (typeof CompetitionType)[keyof typeof CompetitionType];
declare const GroupRole: {
readonly ACHIEVER: "achiever";
readonly ADAMANT: "adamant";
readonly ADEPT: "adept";
readonly ADMINISTRATOR: "administrator";
readonly ADMIRAL: "admiral";
readonly ADVENTURER: "adventurer";
readonly AIR: "air";
readonly ANCHOR: "anchor";
readonly APOTHECARY: "apothecary";
readonly ARCHER: "archer";
readonly ARMADYLEAN: "armadylean";
readonly ARTILLERY: "artillery";
readonly ARTISAN: "artisan";
readonly ASGARNIAN: "asgarnian";
readonly ASSASSIN: "assassin";
readonly ASSISTANT: "assistant";
readonly ASTRAL: "astral";
readonly ATHLETE: "athlete";
readonly ATTACKER: "attacker";
readonly BANDIT: "bandit";
readonly BANDOSIAN: "bandosian";
readonly BARBARIAN: "barbarian";
readonly BATTLEMAGE: "battlemage";
readonly BEAST: "beast";
readonly BERSERKER: "berserker";
readonly BLISTERWOOD: "blisterwood";
readonly BLOOD: "blood";
readonly BLUE: "blue";
readonly BOB: "bob";
readonly BODY: "body";
readonly BRASSICAN: "brassican";
readonly BRAWLER: "brawler";
readonly BRIGADIER: "brigadier";
readonly BRIGAND: "brigand";
readonly BRONZE: "bronze";
readonly BRUISER: "bruiser";
readonly BULWARK: "bulwark";
readonly BURGLAR: "burglar";
readonly BURNT: "burnt";
readonly CADET: "cadet";
readonly CAPTAIN: "captain";
readonly CARRY: "carry";
readonly CHAMPION: "champion";
readonly CHAOS: "chaos";
readonly CLERIC: "cleric";
readonly COLLECTOR: "collector";
readonly COLONEL: "colonel";
readonly COMMANDER: "commander";
readonly COMPETITOR: "competitor";
readonly COMPLETIONIST: "completionist";
readonly CONSTRUCTOR: "constructor";
readonly COOK: "cook";
readonly COORDINATOR: "coordinator";
readonly CORPORAL: "corporal";
readonly COSMIC: "cosmic";
readonly COUNCILLOR: "councillor";
readonly CRAFTER: "crafter";
readonly CREW: "crew";
readonly CRUSADER: "crusader";
readonly CUTPURSE: "cutpurse";
readonly DEATH: "death";
readonly DEFENDER: "defender";
readonly DEFILER: "defiler";
readonly DEPUTY_OWNER: "deputy_owner";
readonly DESTROYER: "destroyer";
readonly DIAMOND: "diamond";
readonly DISEASED: "diseased";
readonly DOCTOR: "doctor";
readonly DOGSBODY: "dogsbody";
readonly DRAGON: "dragon";
readonly DRAGONSTONE: "dragonstone";
readonly DRUID: "druid";
readonly DUELLIST: "duellist";
readonly EARTH: "earth";
readonly ELITE: "elite";
readonly EMERALD: "emerald";
readonly ENFORCER: "enforcer";
readonly EPIC: "epic";
readonly EXECUTIVE: "executive";
readonly EXPERT: "expert";
readonly EXPLORER: "explorer";
readonly FARMER: "farmer";
readonly FEEDER: "feeder";
readonly FIGHTER: "fighter";
readonly FIRE: "fire";
readonly FIREMAKER: "firemaker";
readonly FIRESTARTER: "firestarter";
readonly FISHER: "fisher";
readonly FLETCHER: "fletcher";
readonly FORAGER: "forager";
readonly FREMENNIK: "fremennik";
readonly GAMER: "gamer";
readonly GATHERER: "gatherer";
readonly GENERAL: "general";
readonly GNOME_CHILD: "gnome_child";
readonly GNOME_ELDER: "gnome_elder";
readonly GOBLIN: "goblin";
readonly GOLD: "gold";
readonly GOON: "goon";
readonly GREEN: "green";
readonly GREY: "grey";
readonly GUARDIAN: "guardian";
readonly GUTHIXIAN: "guthixian";
readonly HARPOON: "harpoon";
readonly HEALER: "healer";
readonly HELLCAT: "hellcat";
readonly HELPER: "helper";
readonly HERBOLOGIST: "herbologist";
readonly HERO: "hero";
readonly HOLY: "holy";
readonly HOARDER: "hoarder";
readonly HUNTER: "hunter";
readonly IGNITOR: "ignitor";
readonly ILLUSIONIST: "illusionist";
readonly IMP: "imp";
readonly INFANTRY: "infantry";
readonly INQUISITOR: "inquisitor";
readonly IRON: "iron";
readonly JADE: "jade";
readonly JUSTICIAR: "justiciar";
readonly KANDARIN: "kandarin";
readonly KARAMJAN: "karamjan";
readonly KHARIDIAN: "kharidian";
readonly KITTEN: "kitten";
readonly KNIGHT: "knight";
readonly LABOURER: "labourer";
readonly LAW: "law";
readonly LEADER: "leader";
readonly LEARNER: "learner";
readonly LEGACY: "legacy";
readonly LEGEND: "legend";
readonly LEGIONNAIRE: "legionnaire";
readonly LIEUTENANT: "lieutenant";
readonly LOOTER: "looter";
readonly LUMBERJACK: "lumberjack";
readonly MAGIC: "magic";
readonly MAGICIAN: "magician";
readonly MAJOR: "major";
readonly MAPLE: "maple";
readonly MARSHAL: "marshal";
readonly MASTER: "master";
readonly MAXED: "maxed";
readonly MEDIATOR: "mediator";
readonly MEDIC: "medic";
readonly MENTOR: "mentor";
readonly MEMBER: "member";
readonly MERCHANT: "merchant";
readonly MIND: "mind";
readonly MINER: "miner";
readonly MINION: "minion";
readonly MISTHALINIAN: "misthalinian";
readonly MITHRIL: "mithril";
readonly MODERATOR: "moderator";
readonly MONARCH: "monarch";
readonly MORYTANIAN: "morytanian";
readonly MYSTIC: "mystic";
readonly MYTH: "myth";
readonly NATURAL: "natural";
readonly NATURE: "nature";
readonly NECROMANCER: "necromancer";
readonly NINJA: "ninja";
readonly NOBLE: "noble";
readonly NOVICE: "novice";
readonly NURSE: "nurse";
readonly OAK: "oak";
readonly OFFICER: "officer";
readonly ONYX: "onyx";
readonly OPAL: "opal";
readonly ORACLE: "oracle";
readonly ORANGE: "orange";
readonly OWNER: "owner";
readonly PAGE: "page";
readonly PALADIN: "paladin";
readonly PAWN: "pawn";
readonly PILGRIM: "pilgrim";
readonly PINE: "pine";
readonly PINK: "pink";
readonly PREFECT: "prefect";
readonly PRIEST: "priest";
readonly PRIVATE: "private";
readonly PRODIGY: "prodigy";
readonly PROSELYTE: "proselyte";
readonly PROSPECTOR: "prospector";
readonly PROTECTOR: "protector";
readonly PURE: "pure";
readonly PURPLE: "purple";
readonly PYROMANCER: "pyromancer";
readonly QUESTER: "quester";
readonly RACER: "racer";
readonly RAIDER: "raider";
readonly RANGER: "ranger";
readonly RECORD_CHASER: "record_chaser";
readonly RECRUIT: "recruit";
readonly RECRUITER: "recruiter";
readonly RED_TOPAZ: "red_topaz";
readonly RED: "red";
readonly ROGUE: "rogue";
readonly RUBY: "ruby";
readonly RUNE: "rune";
readonly RUNECRAFTER: "runecrafter";
readonly SAGE: "sage";
readonly SAPPHIRE: "sapphire";
readonly SARADOMINIST: "saradominist";
readonly SAVIOUR: "saviour";
readonly SCAVENGER: "scavenger";
readonly SCHOLAR: "scholar";
readonly SCOURGE: "scourge";
readonly SCOUT: "scout";
readonly SCRIBE: "scribe";
readonly SEER: "seer";
readonly SENATOR: "senator";
readonly SENTRY: "sentry";
readonly SERENIST: "serenist";
readonly SERGEANT: "sergeant";
readonly SHAMAN: "shaman";
readonly SHERIFF: "sheriff";
readonly SHORT_GREEN_GUY: "short_green_guy";
readonly SKILLER: "skiller";
readonly SKULLED: "skulled";
readonly SLAYER: "slayer";
readonly SMITER: "smiter";
readonly SMITH: "smith";
readonly SMUGGLER: "smuggler";
readonly SNIPER: "sniper";
readonly SOUL: "soul";
readonly SPECIALIST: "specialist";
readonly SPEED_RUNNER: "speed_runner";
readonly SPELLCASTER: "spellcaster";
readonly SQUIRE: "squire";
readonly STAFF: "staff";
readonly STEEL: "steel";
readonly STRIDER: "strider";
readonly STRIKER: "striker";
readonly SUMMONER: "summoner";
readonly SUPERIOR: "superior";
readonly SUPERVISOR: "supervisor";
readonly TEACHER: "teacher";
readonly TEMPLAR: "templar";
readonly THERAPIST: "therapist";
readonly THIEF: "thief";
readonly TIRANNIAN: "tirannian";
readonly TRIALIST: "trialist";
readonly TRICKSTER: "trickster";
readonly TZKAL: "tzkal";
readonly TZTOK: "tztok";
readonly UNHOLY: "unholy";
readonly VAGRANT: "vagrant";
readonly VANGUARD: "vanguard";
readonly WALKER: "walker";
readonly WANDERER: "wanderer";
readonly WARDEN: "warden";
readonly WARLOCK: "warlock";
readonly WARRIOR: "warrior";
readonly WATER: "water";
readonly WILD: "wild";
readonly WILLOW: "willow";
readonly WILY: "wily";
readonly WINTUMBER: "wintumber";
readonly WITCH: "witch";
readonly WIZARD: "wizard";
readonly WORKER: "worker";
readonly WRATH: "wrath";
readonly XERICIAN: "xerician";
readonly YELLOW: "yellow";
readonly YEW: "yew";
readonly ZAMORAKIAN: "zamorakian";
readonly ZAROSIAN: "zarosian";
readonly ZEALOT: "zealot";
readonly ZENYTE: "zenyte";
};
type GroupRole = (typeof GroupRole)[keyof typeof GroupRole];
declare const Country: {
readonly AD: "AD";
readonly AE: "AE";
readonly AF: "AF";
readonly AG: "AG";
readonly AI: "AI";
readonly AL: "AL";
readonly AM: "AM";
readonly AO: "AO";
readonly AQ: "AQ";
readonly AR: "AR";
readonly AS: "AS";
readonly AT: "AT";
readonly AU: "AU";
readonly AW: "AW";
readonly AX: "AX";
readonly AZ: "AZ";
readonly BA: "BA";
readonly BB: "BB";
readonly BD: "BD";
readonly BE: "BE";
readonly BF: "BF";
readonly BG: "BG";
readonly BH: "BH";
readonly BI: "BI";
readonly BJ: "BJ";
readonly BL: "BL";
readonly BM: "BM";
readonly BN: "BN";
readonly BO: "BO";
readonly BQ: "BQ";
readonly BR: "BR";
readonly BS: "BS";
readonly BT: "BT";
readonly BV: "BV";
readonly BW: "BW";
readonly BY: "BY";
readonly BZ: "BZ";
readonly CA: "CA";
readonly CC: "CC";
readonly CD: "CD";
readonly CF: "CF";
readonly CG: "CG";
readonly CH: "CH";
readonly CI: "CI";
readonly CK: "CK";
readonly CL: "CL";
readonly CM: "CM";
readonly CN: "CN";
readonly CO: "CO";
readonly CR: "CR";
readonly CU: "CU";
readonly CV: "CV";
readonly CW: "CW";
readonly CX: "CX";
readonly CY: "CY";
readonly CZ: "CZ";
readonly DE: "DE";
readonly DJ: "DJ";
readonly DK: "DK";
readonly DM: "DM";
readonly DO: "DO";
readonly DZ: "DZ";
readonly EC: "EC";
readonly EE: "EE";
readonly EG: "EG";
readonly EH: "EH";
readonly ER: "ER";
readonly ES: "ES";
readonly ET: "ET";
readonly FI: "FI";
readonly FJ: "FJ";
readonly FK: "FK";
readonly FM: "FM";
readonly FO: "FO";
readonly FR: "FR";
readonly GA: "GA";
readonly GB: "GB";
readonly GB_NIR: "GB_NIR";
readonly GB_SCT: "GB_SCT";
readonly GB_WLS: "GB_WLS";
readonly GD: "GD";
readonly GE: "GE";
readonly GF: "GF";
readonly GG: "GG";
readonly GH: "GH";
readonly GI: "GI";
readonly GL: "GL";
readonly GM: "GM";
readonly GN: "GN";
readonly GP: "GP";
readonly GQ: "GQ";
readonly GR: "GR";
readonly GS: "GS";
readonly GT: "GT";
readonly GU: "GU";
readonly GW: "GW";
readonly GY: "GY";
readonly HK: "HK";
readonly HM: "HM";
readonly HN: "HN";
readonly HR: "HR";
readonly HT: "HT";
readonly HU: "HU";
readonly ID: "ID";
readonly IE: "IE";
readonly IL: "IL";
readonly IM: "IM";
readonly IN: "IN";
readonly IO: "IO";
readonly IQ: "IQ";
readonly IR: "IR";
readonly IS: "IS";
readonly IT: "IT";
readonly JE: "JE";
readonly JM: "JM";
readonly JO: "JO";
readonly JP: "JP";
readonly KE: "KE";
readonly KG: "KG";
readonly KH: "KH";
readonly KI: "KI";
readonly KM: "KM";
readonly KN: "KN";
readonly KP: "KP";
readonly KR: "KR";
readonly KW: "KW";
readonly KY: "KY";
readonly KZ: "KZ";
readonly LA: "LA";
readonly LB: "LB";
readonly LC: "LC";
readonly LI: "LI";
readonly LK: "LK";
readonly LR: "LR";
readonly LS: "LS";
readonly LT: "LT";
readonly LU: "LU";
readonly LV: "LV";
readonly LY: "LY";
readonly MA: "MA";
readonly MC: "MC";
readonly MD: "MD";
readonly ME: "ME";
readonly MF: "MF";
readonly MG: "MG";
readonly MH: "MH";
readonly MK: "MK";
readonly ML: "ML";
readonly MM: "MM";
readonly MN: "MN";
readonly MO: "MO";
readonly MP: "MP";
readonly MQ: "MQ";
readonly MR: "MR";
readonly MS: "MS";
readonly MT: "MT";
readonly MU: "MU";
readonly MV: "MV";
readonly MW: "MW";
readonly MX: "MX";
readonly MY: "MY";
readonly MZ: "MZ";
readonly NA: "NA";
readonly NC: "NC";
readonly NE: "NE";
readonly NF: "NF";
readonly NG: "NG";
readonly NI: "NI";
readonly NL: "NL";
readonly NO: "NO";
readonly NP: "NP";
readonly NR: "NR";
readonly NU: "NU";
readonly NZ: "NZ";
readonly OM: "OM";
readonly PA: "PA";
readonly PE: "PE";
readonly PF: "PF";
readonly PG: "PG";
readonly PH: "PH";
readonly PK: "PK";
readonly PL: "PL";
readonly PM: "PM";
readonly PN: "PN";
readonly PR: "PR";
readonly PS: "PS";
readonly PT: "PT";
readonly PW: "PW";
readonly PY: "PY";
readonly QA: "QA";
readonly RE: "RE";
readonly RO: "RO";
readonly RS: "RS";
readonly RU: "RU";
readonly RW: "RW";
readonly SA: "SA";
readonly SB: "SB";
readonly SC: "SC";
readonly SD: "SD";
readonly SE: "SE";
readonly SG: "SG";
readonly SH: "SH";
readonly SI: "SI";
readonly SJ: "SJ";
readonly SK: "SK";
readonly SL: "SL";
readonly SM: "SM";
readonly SN: "SN";
readonly SO: "SO";
readonly SR: "SR";
readonly SS: "SS";
readonly ST: "ST";
readonly SV: "SV";
readonly SX: "SX";
readonly SY: "SY";
readonly SZ: "SZ";
readonly TC: "TC";
readonly TD: "TD";
readonly TF: "TF";
readonly TG: "TG";
readonly TH: "TH";
readonly TJ: "TJ";
readonly TK: "TK";
readonly TL: "TL";
readonly TM: "TM";
readonly TN: "TN";
readonly TO: "TO";
readonly TR: "TR";
readonly TT: "TT";
readonly TV: "TV";
readonly TW: "TW";
readonly TZ: "TZ";
readonly UA: "UA";
readonly UG: "UG";
readonly UM: "UM";
readonly US: "US";
readonly UY: "UY";
readonly UZ: "UZ";
readonly VA: "VA";
readonly VC: "VC";
readonly VE: "VE";
readonly VG: "VG";
readonly VI: "VI";
readonly VN: "VN";
readonly VU: "VU";
readonly WF: "WF";
readonly WS: "WS";
readonly YE: "YE";
readonly YT: "YT";
readonly ZA: "ZA";
readonly ZM: "ZM";
readonly ZW: "ZW";
};
type Country = (typeof Country)[keyof typeof Country];
declare const ActivityType: {
readonly JOINED: "joined";
readonly LEFT: "left";
readonly CHANGED_ROLE: "changed_role";
};
type ActivityType = (typeof ActivityType)[keyof typeof ActivityType];
type Achievement = Omit<Prisma_Base_Achievement, 'threshold' | 'accuracy'> & {
threshold: number;
accuracy: number | null;
};
type Record = Omit<Prisma_Base_Record, 'value'> & {
value: number;
};
type Snapshot = Omit<Prisma_Base_Snapshot, 'overallExperience'> & {
overallExperience: number;
};
type Player = Omit<Prisma_Base_Player, 'exp' | 'latestSnapshotId'> & {
exp: number;
};
type Group = Omit<Prisma_Base_Group, 'creatorIpHash'>;
type Competition = Omit<Prisma_Base_Competition, 'creatorIpHash'>;
type NameChange = Omit<Prisma_Base_NameChange, 'reviewContext'> & {
reviewContext: SkipContext | DenyContext | null;
};
type GroupSocialLinks = Omit<Prisma_Base_GroupSocialLinks, 'id' | 'groupId' | 'createdAt' | 'updatedAt'>;
interface AchievementTemplate {
name: string;
metric: Metric;
measure?: string;
thresholds: number[];
getCurrentValue?: (snapshot: Snapshot, threshold: number) => number;
}
interface AchievementDefinition {
name: string;
metric: Metric;
measure: string;
threshold: number;
validate: (snapshot: Snapshot) => boolean;
getCurrentValue: (snapshot: Snapshot) => number;
}
interface ExtendedAchievement extends Achievement {
measure: string;
}
interface ExtendedAchievementWithPlayer extends ExtendedAchievement {
player: Player;
}
interface AchievementProgress extends Omit<ExtendedAchievement, 'createdAt'> {
createdAt: Date | null;
currentValue: number;
absoluteProgress: number;
relativeProgress: number;
}
interface MeasuredDeltaProgress {
start: number;
end: number;
gained: number;
}
interface SkillDelta {
metric: Skill;
ehp: MeasuredDeltaProgress;
rank: MeasuredDeltaProgress;
level: MeasuredDeltaProgress;
experience: MeasuredDeltaProgress;
}
interface BossDelta {
metric: Boss;
ehb: MeasuredDeltaProgress;
rank: MeasuredDeltaProgress;
kills: MeasuredDeltaProgress;
}
interface ActivityDelta {
metric: Activity;
rank: MeasuredDeltaProgress;
score: MeasuredDeltaProgress;
}
interface ComputedMetricDelta {
metric: ComputedMetric;
rank: MeasuredDeltaProgress;
value: MeasuredDeltaProgress;
}
interface PlayerDeltasMap {
skills: MapOf<Skill, SkillDelta>;
bosses: MapOf<Boss, BossDelta>;
activities: MapOf<Activity, ActivityDelta>;
computed: MapOf<ComputedMetric, ComputedMetricDelta>;
}
interface DeltaLeaderboardEntry {
player: Player;
playerId: number;
startDate: Date;
endDate: Date;
gained: number;
}
interface DeltaGroupLeaderboardEntry {
player: Player;
startDate: Date;
endDate: Date;
data: {
start: number;
end: number;
gained: number;
};
}
type SnapshotFragment = Omit<Snapshot, 'id'>;
interface SkillValue {
metric: Skill;
rank: number;
level: number;
experience: number;
ehp: number;
}
interface BossValue {
metric: Boss;
rank: number;
kills: number;
ehb: number;
}
interface ActivityValue {
metric: Activity;
rank: number;
score: number;
}
interface ComputedMetricValue {
metric: ComputedMetric;
rank: number;
value: number;
}
interface MetricLeaders {
skills: MapOf<Skill, Omit<SkillValue, 'ehp'> & {
player: Player | null;
}>;
bosses: MapOf<Boss, Omit<BossValue, 'ehb'> & {
player: Player | null;
}>;
activities: MapOf<Activity, ActivityValue & {
player: Player | null;
}>;
computed: MapOf<ComputedMetric, ComputedMetricValue & {
player: Player | null;
}>;
}
interface FormattedSnapshot {
id: number;
playerId: number;
createdAt: Date;
importedAt: Date | null;
data: {
skills: MapOf<Skill, SkillValue>;
bosses: MapOf<Boss, BossValue>;
activities: MapOf<Activity, ActivityValue>;
computed: MapOf<ComputedMetric, ComputedMetricValue>;
};
}
interface GroupListItem extends Omit<Group, 'verificationHash'> {
memberCount: number;
}
interface GroupDetails extends GroupListItem {
socialLinks: GroupSocialLinks;
memberships: MembershipWithPlayer[];
roleOrders: GroupRoleOrder[];
}
interface MembershipWithGroup extends Membership {
group: GroupListItem;
}
interface MembershipWithPlayer extends Membership {
player: Player;
}
interface MemberInput {
username: string;
role: string | GroupRole;
}
interface GroupHiscoresSkillItem {
type: 'skill';
rank: number;
level: number;
experience: number;
}
interface GroupHiscoresBossItem {
type: 'boss';
rank: number;
kills: number;
}
interface GroupHiscoresActivityItem {
type: 'activity';
rank: number;
score: number;
}
interface GroupHiscoresComputedMetricItem {
type: 'computed';
rank: number;
value: number;
}
interface GroupHiscoresEntry {
player: Player;
data: GroupHiscoresSkillItem | GroupHiscoresBossItem | GroupHiscoresActivityItem | GroupHiscoresComputedMetricItem;
}
interface GroupStatistics {
maxedCombatCount: number;
maxedTotalCount: number;
maxed200msCount: number;
averageStats: FormattedSnapshot;
metricLeaders: MetricLeaders;
}
type MemberRoleChangeEvent = Omit<MemberActivity, 'createdAt'>;
type MemberJoinedEvent = Omit<MemberActivity, 'createdAt' | 'previousRole'>;
type MemberLeftEvent = Omit<MemberActivity, 'createdAt' | 'previousRole'>;
type MemberActivityWithPlayer = MemberActivity & {
player: Player;
};
type CleanCompetition = Omit<Competition, 'verificationHash'>;
type CleanParticipation = Omit<Participation, 'startSnapshotId' | 'endSnapshotId'>;
interface CompetitionListItem extends CleanCompetition {
group?: GroupListItem;
participantCount: number;
}
interface CompetitionDetails extends CompetitionListItem {
participations: ParticipationWithPlayerAndProgress[];
}
interface CompetitionWithParticipations extends CompetitionListItem {
participations: ParticipationWithPlayer[];
}
interface ParticipationWithCompetition extends CleanParticipation {
competition: CompetitionListItem;
}
interface ParticipationWithPlayer extends CleanParticipation {
player: Player;
}
interface ParticipationWithPlayerAndProgress extends ParticipationWithPlayer {
progress: MeasuredDeltaProgress;
levels: MeasuredDeltaProgress;
}
interface ParticipationWithCompetitionAndStandings extends ParticipationWithCompetition {
progress: MeasuredDeltaProgress;
levels: MeasuredDeltaProgress;
rank: number;
}
interface Team {
name: string;
participants: string[];
}
type Top5ProgressResult = Array<{
player: Player;
history: Array<{
value: number;
date: Date;
}>;
}>;
declare enum EfficiencyAlgorithmType {
MAIN = "main",
IRONMAN = "ironman",
ULTIMATE = "ultimate",
LVL3 = "lvl3",
F2P = "f2p",
F2P_LVL3 = "f2p_lvl3",
F2P_IRONMAN = "f2p_ironman",
F2P_LVL3_IRONMAN = "f2p_lvl3_ironman",
DEF1 = "def1"
}
interface SkillMetaMethod {
rate: number;
realRate?: number;
startExp: number;
description: string;
}
interface SkillMetaConfig {
skill: Skill;
methods: Array<SkillMetaMethod>;
bonuses: Bonus[];
}
interface BossMetaConfig {
boss: Boss;
rate: number;
}
interface Bonus {
originSkill: Skill;
bonusSkill: Skill;
startExp: number;
endExp: number;
maxBonus?: number;
end: boolean;
ratio: number;
}
type DenyContext = {
reason: 'manual_review';
} | {
reason: 'old_stats_cannot_be_found';
} | {
reason: 'new_name_not_on_the_hiscores';
} | {
reason: 'negative_gains';
negativeGains: MapOf<Metric, number>;
};
type SkipContext = {
reason: 'transition_period_too_long';
maxHoursDiff: number;
hoursDiff: number;
} | {
reason: 'excessive_gains';
ehpDiff: number;
ehbDiff: number;
hoursDiff: number;
} | {
reason: 'total_level_too_low';
minTotalLevel: number;
totalLevel: number;
};
type NameChangeDetails = {
nameChange: NameChange;
data?: {
isNewOnHiscores: boolean;
isOldOnHiscores: boolean;
isNewTracked: boolean;
hasNegativeGains: boolean;
negativeGains: MapOf<Metric, number> | null;
timeDiff: number;
hoursDiff: number;
ehpDiff: number;
ehbDiff: number;
oldStats: FormattedSnapshot;
newStats: FormattedSnapshot | null;
};
};
type NameChangeWithPlayer = NameChange & {
player: Player;
};
interface PlayerDetails extends Player {
combatLevel: number;
archive: PlayerArchive | null;
latestSnapshot: FormattedSnapshot | null;
annotations: PlayerAnnotation[];
}
interface FlaggedPlayerReviewContext {
previous: FormattedSnapshot;
rejected: FormattedSnapshot;
negativeGains: boolean;
excessiveGains: boolean;
possibleRollback: boolean;
excessiveGainsReversed: boolean;
data: {
stackableGainedRatio: number;
previousEHP: number;
previousEHB: number;
previousRank: number;
rejectedEHP: number;
rejectedEHB: number;
rejectedRank: number;
};
}
type PlayerArchiveWithPlayer = PlayerArchive & {
player: Player;
};
type RecordLeaderboardEntry = Record & {
player: Player;
};
type MapOf<K extends keyof any, T> = {
[P in K]: T;
};
declare enum CompetitionStatus {
UPCOMING = "upcoming",
ONGOING = "ongoing",
FINISHED = "finished"
}
declare enum CompetitionCSVTableType {
TEAM = "team",
TEAMS = "teams",
PARTICIPANTS = "participants"
}
declare const CompetitionTypeProps: MapOf<CompetitionType, {
name: string;
}>;
declare const CompetitionStatusProps: MapOf<CompetitionStatus, {
name: string;
}>;
declare const COMPETITION_TYPES: ("classic" | "team")[];
declare const COMPETITION_STATUSES: CompetitionStatus[];
declare function isCompetitionType(typeString: string): typeString is CompetitionType;
declare function isCompetitionStatus(statusString: string): statusString is CompetitionStatus;
interface CountryDetails {
code: Country;
name: string;
}
declare const CountryProps: MapOf<Country, CountryDetails>;
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")[];
declare function isCountry(countryCodeString: string): countryCodeString is Country;
declare function findCountry(countryIdentifier: string): CountryDetails | undefined;
declare function findCountryByName(countryName: string): CountryDetails | undefined;
declare function findCountryByCode(countryCode: string): CountryDetails | undefined;
declare const MAX_LEVEL = 99;
declare const MAX_VIRTUAL_LEVEL = 126;
declare const MAX_SKILL_EXP = 200000000;
declare const SKILL_EXP_AT_99 = 13034431;
declare const CAPPED_MAX_TOTAL_XP: number;
declare function getExpForLevel(level: number): number;
declare function getLevel(exp: number, virtual?: boolean): number;
declare function getCombatLevel(attack: number, strength: number, defence: number, ranged: number, magic: number, hitpoints: number, prayer: number): number;
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" | "g