import type { TrophyCountFields } from './common.js'; import type { PsnpEntityData } from './psnpEntity.js'; import type { TrophyGroup } from './trophy.interface.js'; import type { MakeOptional } from '../util/util.js'; /** Maps abbreviated PSNProfiles stack labels to their display names. */ export declare const STACK_LOOKUP: { readonly NA: "North American"; readonly EU: "European"; readonly WW: "Worldwide"; readonly HK: "Hong Kong"; readonly AS: "Asian"; readonly JP: "Japanese"; readonly CN: "Chinese"; readonly KR: "Korean"; readonly GER: "German"; readonly AU: "Australian"; readonly RU: "Russian"; readonly WE: "Western"; readonly UK: "United Kingdom"; readonly FR: "French"; readonly ES: "Spanish"; readonly SA: "Saudi Arabian"; readonly DG: "Digital"; readonly PH: "Physical"; readonly RR: "Rereleased"; readonly OR: "Original"; readonly BO: "Bonus/Bundle"; }; export type StackAbbr = keyof typeof STACK_LOOKUP; export type StackFull = (typeof STACK_LOOKUP)[StackAbbr]; export declare const PLATFORM_TAGS: readonly ["Vita", "VR", "PS3", "PS4", "PS5"]; export type PlatformTag = (typeof PLATFORM_TAGS)[number]; export type CompletionStatus = 'platinum' | 'completed'; interface Platforms { platforms: PlatformTag[]; } interface Rarity { /** First displayed rarity; de facto platinum rarity for games with a platinum. */ rarityBase: number; /** Second displayed rarity; de facto DLC rarity when present. */ rarityDlc?: number | undefined; } export interface MetadataFields { developer?: string | undefined; publisher?: string | undefined; genres?: string[] | undefined; themes?: string[] | undefined; modes?: string[] | undefined; otherNames?: string[] | undefined; } export interface HeaderStats { gameOwners: number; recentPlayers: number; numPlatted: number | undefined; avgCompletion: number; trophiesEarned: number; num100Percented: number; } interface UserProgress { /** Completion percent, or `undefined` when PSNProfiles does not render a progress bar. */ percent?: number | undefined; completionStatus?: CompletionStatus | undefined; /** Completion speed in milliseconds, or `undefined` if incomplete. */ completionSpeed?: number | undefined; completionRank?: string | undefined; /** UTC timestamp in milliseconds. */ latestTrophy?: number | undefined; } interface StackLabel { stackLabel: StackAbbr | null; } interface GamePageData { forumId: number | null; trophyGroups: TrophyGroup[]; stacks: GameStackEntry[]; stackIds?: number[] | undefined; headerStats: HeaderStats; metadata: MetadataFields; seriesIds?: number[] | undefined; } export interface GameStack extends Platforms, StackLabel { /** Label that distinguishes stacks using platform and/or region details. */ stack?: string; platformString?: string; stackLabels?: string[]; } interface GameIdentity extends PsnpEntityData, Platforms { } export interface GameBase extends GameIdentity, Partial { } export interface GameStackEntry extends GameIdentity, StackLabel { } export interface GameHomeListing extends GameIdentity, TrophyCountFields { } interface FullGameBase extends GameStackEntry, GameHomeListing { } export interface GameListing extends FullGameBase { numOwners: number; } export interface PlayableGame extends FullGameBase, Rarity, UserProgress { } export interface GamePage extends MakeOptional, Rarity, GamePageData { } export interface GameDlc extends GameIdentity, TrophyCountFields, Omit { dlcName: string; } export {};