export interface Package { namespace: string; name: string; description: string; icon: string; loc: { version: string; path: string; dependencies: string[]; status: Status; } | null; rmt: { version: string; package_url: string; download_url: string; deprecated: boolean; nsfw: boolean; categories: string[]; } | null; js: { busy: boolean; }; } export enum Feature { Hook = 0b00001, GameIO = 0b00010, Aime = 0b00100, AMNet = 0b01000, } export type Status = | 'Unchecked' | 'Unsupported' | { OK: Feature; }; export type Game = 'ongeki' | 'chunithm'; export interface ProfileMeta { game: Game; name: string; } export interface SegatoolsConfig { target: string; hook: string | null; io: string | null; amfs: string; option: string; appdata: string; aime: { AMNet: string } | { Other: string } | null; 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 extends ProfileMeta { mods: string[]; sgt: SegatoolsConfig; display: DisplayConfig; network: NetworkConfig; bepinex: BepInExConfig; } export type Module = 'sgt' | 'display' | 'network'; export interface Dirs { config_dir: string; data_dir: string; cache_dir: string; }