import { UserMessage } from './events.js'

export interface UserConfiguration {
    'message-stream'?: boolean,
    'message-style'?: boolean,
    'modify-capacity': number
}

export interface ServerConfiguration {
    'toggle-chat'?: boolean,
    'channel-toggle'?: boolean
}

/**
 * Parent Configuration interface
 * 
 * @see ServerConfiguration server settings per guild
 * @see UserConfiguration user configurations (only for the user for any server)
 */
export interface Configuration {
    readonly name: string
    options: UserConfiguration | ServerConfiguration
}

/**
 * User config to use outside of this file
 */
export interface UserConfig {
    readonly name: string
    options: UserConfiguration
}

export interface ServerConfig {
    readonly name: string
    options: ServerConfiguration
}

export interface Thread {
    readonly id: string
    readonly name: string
    messages: UserMessage[]
}

export interface Channel {
    readonly id: string
    readonly name: string
    readonly user: string
    messages: UserMessage[]
}

/**
 * Check if the configuration we are editing/taking from is a Server Config
 * @param key name of command we ran
 * @returns true if command is from Server Config, false otherwise
 */
export function isServerConfigurationKey(key: string): key is keyof ServerConfiguration {
    return ['toggle-chat', 'channel-toggle'].includes(key);
}