interface ServerChatRoomMessage { MBCHC_ID?: number } declare namespace MBCHC { type WGT = Window & typeof globalThis interface Root extends WGT { MBCHC?: any bcModSdk?: import('bondage-club-mod-sdk').ModSDKGlobalAPI bce_ActivityTriggers?: any bce_EventExpressions?: any } namespace Settings { type V0 = PlayerOnlineSettings & {MBCHC: {timezones?: Record}} // V0 is the whole onlinesettings interface V1 { // V1 is specifically MBCHC inside extensionsettings TZ: Record } interface Methods { migrate_0_1(v0: V0): true save(cb?: (v1: V1) => unknown): true replace(new_v1: V1): true 'purge!'(): true get v1(): V1 } } interface Interval { proxy: object // eslint-disable-line @typescript-eslint/ban-types min: number max: number mini: boolean maxi: boolean upd(min: number, max: number, min_inclusive?: boolean, max_inclusive?: boolean): undefined has(_: unknown, x: string): boolean } interface Utils { interval: Interval cid(character: Character): number | undefined dn(character: Character): string current(): string with(value: V, cb: (value: V) => R): R // A silly helper to kinda curry values true unknown>(cb: F): true // Useful for type-safe chaining mutate(value: T, cb: (v: T) => unknown): T // A silly helper for chaining rm(object: T, property: keyof T): T mrg>(target: T, ...source: T[]): T // Shorter, also less confusing with types style(query: string, cb: (s: CSSStyleDeclaration) => T): T | undefined range(min: number, max: number, min_inclusive?: boolean, max_inclusive?: boolean): Proxy assert(error: string, value: T, cb?: (value: T) => boolean): T | never each>(object: T, cb: (key: string, value: unknown) => unknown): true } interface TZ_Cache { map: Map RE: RegExp for(character: Character): number | undefined memo(member_number: number, description?: string | undefined): number | undefined parse(description: string | undefined): number | undefined } }