/**
 * Debug level logging.
 */
export type LoggingLevel = "debug" | "info" | "warn" | "error" | "silent";
export type DeepPartial<T> = {
    [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
};
export type DeskthingConfig = {
    development: DeskThingEmulatorConfig;
};
export type DeskThingEmulatorConfig = {
    /**
     * Logging configuration for the DeskThing server.
     */
    logging: {
        /**
         * The logging level of the server. This is what shows in the console window.
         *
         * @level debug - All logs, including verbose debug logs.
         * @level info - Info, warnings,and errors.
         * @level warn - Warnings and errors.
         * @level error - Only errors.
         * @level silent - No logs besides what your server logs.
         * @default "info"
         */
        level: LoggingLevel;
        /**
         * A prefix for log messages.
         * @default "[DeskThing Server]"
         */
        prefix: string;
    };
    /**
     * Configuration for the DeskThing client.
     */
    client: DeskThingClientConfig;
    /**
     * Configuration for the DeskThing server.
     */
    server: DeskThingServerConfig;
};
export type DeskThingServerConfig = {
    /**
     * The cooldown period in milliseconds before allowing edits.
     * @default 1000
     */
    editCooldownMs: number;
    /**
     * Mocked up data for the server to return to the client.
     * @example
     * mockData: {
     *  settings: {
     *    setting1: "value1",
     *    setting2: ["value1", "value2"],
     *  },
     *  input: {
     *    input1: "value1",
     *    input2: ["value1", "value2"],
     *  }
     *  task: {
     *    task1: "value1",
     *    task2: ["value1", "value2"],
     *  }
     * }
     */
    mockData?: {
        /**
         * Any mocked up setting data. Used for testing. When settings are defined, these will be returned to your server
         *
         * Settings are defined like `[settingId]: returnValue`
         * @example
         * ```ts
         * settings: {
         *  setting1: "value1",
         *  setting2: ["value1", "value2"],
         * }
         * ```
         */
        settings?: Record<string, any>;
        input?: Record<string, any>;
        task?: Record<string, any>;
    };
    /**
     * The interval in seconds at which to refresh the music data. 0 is disabled
     * @default 0
     */
    refreshInterval: number;
};
export type DeskThingClientConfig = {
    /**
     * The port the client will be running on
     * @default 3000
     */
    clientPort: number;
    /**
     * The port the emulator will be running on for the websocket connection
     * @default 8080
     */
    linkPort: number;
    /**
     * The base IP of the Vite development server.
     * @default "http://localhost"
     */
    viteLocation: string;
    /**
     * The port of the Vite development server.
     * @default 5173
     */
    vitePort: number;
    /**
     * Logging configuration for the client.
     */
    logging: {
        /**
         * The logging level of the server. This is what shows in the console window.
         *
         * @level debug - All logs, including verbose debug logs.
         * @level info - Info, warnings,and errors.
         * @level warn - Warnings and errors.
         * @level error - Only errors.
         * @level silent - No logs besides what your server logs.
         * @default "info"
         */
        level: LoggingLevel;
        /**
         * A prefix for log messages.
         * @default "[DeskThing Client]"
         */
        prefix: string;
        /**
         * Whether to enable remote logging. This will bubble client logs into the server logs
         * @warning Not implemented yet
         * @default true
         */
        enableRemoteLogging: boolean;
    };
};
