import { WriteOptions, LoggerClient } from '@navy.gif/logger'; import { ClientOptions } from './Client.ts'; export type CommandOption = { [key: string]: unknown } export type Command = { name: string, options: { [key: string]: CommandOption } } export type CommandsDef = { type: 'global' | 'guild', commands: Command[], guilds: string[], clientId: string } export type IPCMessage = { id?: string, _start?: ClientOptions, _ready?: boolean, _disconnect?: boolean, _reconnecting?: boolean, _fetchProp?: string, _sFetchProp?: string, _sFetchPropShard?: number, _sEval?: string, _sEvalShard?: number, _eval?: string, _result?: unknown, _error?: Error, _sRespawnAll?: { shardDelay: number, respawnDelay: number, timeout: number }, _mEval?: string, _mEvalResult?: boolean _logger?: boolean, _api?: boolean, _commands?: CommandsDef, _shutdown?: boolean, _fatal?: boolean, success?: boolean script?: string, debug?: boolean, type?: string, data?: unknown, shards?: number[] } export type PlainError = { name: string; message: string; stack?: string; } export type EnvObject = { [key: string]: unknown, SHARDING_MANAGER: boolean SHARD_ID: number SHARD_COUNT: number DISCORD_TOKEN: string | null } export type Loggable = { createLogger: (comp: object, options?: WriteOptions) => LoggerClient } & T; export type Hookable = { ready: boolean } & T