export interface Package { namespace: string; name: string; description: string; loc: { version: string; path: string; dependencies: string[]; status: Status; icon: string; } | null; rmt: { version: string; package_url: string; download_url: string; deprecated: boolean; nsfw: boolean; categories: string[]; icon: string; } | null; js: { busy: boolean; }; } export enum Feature { Mod = 1 << 0, Aime = 1 << 1, AMNet = 1 << 2, Mu3Hook = 1 << 3, Mu3IO = 1 << 4, ChusanHook = 1 << 5, } export type Status = | 'Unchecked' | 'Unsupported' | { OK: Feature; }; export type Game = 'ongeki' | 'chunithm'; export interface ProfileMeta { game: Game; name: string; } export interface ProfileData { mods: string[]; sgt: SegatoolsConfig; display: DisplayConfig; network: NetworkConfig; bepinex: BepInExConfig; } export interface SegatoolsConfig { target: string; hook: string | null; io: string | null; amfs: string; option: string; appdata: string; aime: { AMNet: string } | { Other: string } | 'BuiltIn' | 'Disabled'; intel: boolean; amnet: { name: string; addr: string; physical: boolean; }; } export interface DisplayConfig { target: String; rez: [number, number]; mode: 'Window' | 'Borderless' | 'Fullscreen'; rotation: number; frequency: number; borderless_fullscreen: boolean; } export interface NetworkConfig { network_type: 'Remote' | 'Artemis'; local_path: string; local_console: boolean; remote_address: string; keychip: string; subnet: string; suffix: number | null; } export interface BepInExConfig { console: boolean; } export interface Profile { meta: ProfileMeta; data: ProfileData; } export type Module = 'sgt' | 'display' | 'network'; export interface Dirs { config_dir: string; data_dir: string; cache_dir: string; }