declare namespace LILY { interface Utils { remove_hook: undefined | (() => void) true(callback: () => unknown): true // stops elsint from complainting about constant bool expressions with(value: V, callback: (v: V) => R): R // A silly helper to kinda curry values send(callback: () => boolean): boolean // updates the player if the function succeeds } interface Box { enable(item: Item | undefined): boolean disable(item: Item | undefined): boolean on(): boolean off(): boolean get item(): Item | undefined get enabled(): boolean } interface Eyes { zones: AssetGroupName[] craft: CraftingItem rgb: string[] timeout: NodeJS.Timeout | undefined set_rgb(item: Item, index: number): boolean next_rgb(): boolean | undefined roll_rgb(): void start(): boolean stop(): boolean dim(): boolean clear(): boolean check(zone: AssetGroupName): Item | undefined get item(): Item | undefined } type CommandCB = (...arguments: string[]) => unknown type Command = Record interface Commands extends Command {} interface Belt { admins: number[] users: number[] cli: Commands is_cb(subject: Commands | CommandCB): subject is CommandCB run(tokens: string[]): string receive(data: ServerChatRoomMessage): undefined } }