Files
hydra/src/types/level.types.ts

139 lines
3.7 KiB
TypeScript

import type { Downloader } from "@shared";
import type {
GameShop,
SteamAchievement,
UnlockedAchievement,
} from "./game.types";
import type { DownloadStatus } from "./download.types";
export type SubscriptionStatus = "active" | "pending" | "cancelled";
export interface Subscription {
id: string;
status: SubscriptionStatus;
plan: { id: string; name: string };
expiresAt: string | null;
paymentMethod: "pix" | "paypal";
}
export interface Auth {
accessToken: string;
refreshToken: string;
tokenExpirationTimestamp: number;
featurebaseJwt: string;
workwondersJwt: string;
}
export interface User {
id: string;
displayName: string;
profileImageUrl: string | null;
backgroundImageUrl: string | null;
subscription: Subscription | null;
}
export interface Game {
title: string;
iconUrl: string | null;
libraryHeroImageUrl: string | null;
logoImageUrl: string | null;
customIconUrl?: string | null;
customLogoImageUrl?: string | null;
customHeroImageUrl?: string | null;
originalIconPath?: string | null;
originalLogoPath?: string | null;
originalHeroPath?: string | null;
customOriginalIconPath?: string | null;
customOriginalLogoPath?: string | null;
customOriginalHeroPath?: string | null;
playTimeInMilliseconds: number;
unsyncedDeltaPlayTimeInMilliseconds?: number;
lastTimePlayed: Date | null;
objectId: string;
shop: GameShop;
remoteId: string | null;
isDeleted: boolean;
winePrefixPath?: string | null;
executablePath?: string | null;
launchOptions?: string | null;
favorite?: boolean;
isPinned?: boolean;
achievementCount?: number;
unlockedAchievementCount?: number;
pinnedDate?: Date | null;
automaticCloudSync?: boolean;
hasManuallyUpdatedPlaytime?: boolean;
newDownloadOptionsCount?: number;
}
export interface Download {
shop: GameShop;
objectId: string;
uri: string;
folderName: string | null;
downloadPath: string;
progress: number;
downloader: Downloader;
bytesDownloaded: number;
fileSize: number | null;
shouldSeed: boolean;
status: DownloadStatus | null;
queued: boolean;
timestamp: number;
extracting: boolean;
automaticallyExtract: boolean;
extractionProgress: number;
}
export interface GameAchievement {
achievements: SteamAchievement[];
unlockedAchievements: UnlockedAchievement[];
updatedAt: number | undefined;
language: string | undefined;
}
export type AchievementCustomNotificationPosition =
| "top-left"
| "top-center"
| "top-right"
| "bottom-left"
| "bottom-center"
| "bottom-right";
export interface UserPreferences {
downloadsPath?: string | null;
ggDealsApiKey?: string | null;
language?: string;
realDebridApiToken?: string | null;
torBoxApiToken?: string | null;
preferQuitInsteadOfHiding?: boolean;
runAtStartup?: boolean;
startMinimized?: boolean;
disableNsfwAlert?: boolean;
enableAutoInstall?: boolean;
seedAfterDownloadComplete?: boolean;
showHiddenAchievementsDescription?: boolean;
showDownloadSpeedInMegabits?: boolean;
downloadNotificationsEnabled?: boolean;
repackUpdatesNotificationsEnabled?: boolean;
achievementNotificationsEnabled?: boolean;
achievementCustomNotificationsEnabled?: boolean;
achievementCustomNotificationPosition?: AchievementCustomNotificationPosition;
achievementSoundVolume?: number;
friendRequestNotificationsEnabled?: boolean;
friendStartGameNotificationsEnabled?: boolean;
showDownloadSpeedInMegabytes?: boolean;
extractFilesByDefault?: boolean;
enableSteamAchievements?: boolean;
autoplayGameTrailers?: boolean;
hideToTrayOnGameStart?: boolean;
}
export interface ScreenState {
x?: number;
y?: number;
height: number;
width: number;
isMaximized: boolean;
}