Files
STARTLINER/src/types.ts
2025-03-17 01:58:09 +00:00

99 lines
1.9 KiB
TypeScript

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;
}