import type { EventedMixin } from "../../core/Evented.js";
import type { ResourceHandle } from "../../core/Handles.js";

/**
 * @param color
 * @experimental
 * @internal
 */
export function toRGB(color: any): any;

/**
 * @param color
 * @experimental
 * @internal
 */
export function toHSV(color: any): any;

/**
 * @param target
 * @param eventName
 * @param callback
 * @experimental
 * @internal
 */
export function once(target: EventedMixin | EventTarget, eventName: string, callback: (event: any) => void): ResourceHandle;

/**
 * @param target
 * @param eventName
 * @param callback
 * @experimental
 * @internal
 */
export function on(target: EventedMixin | EventTarget, eventName: string | string[], callback: (event: any) => void): ResourceHandle;

/**
 * @param target
 * @param type
 * @param listener
 * @experimental
 * @internal
 */
export function pausable(target: EventedMixin | EventTarget, type: string | string[], listener: (event: any) => void): ResourceHandle & {
    pause(): void;
    resume(): void;
};

/**
 * @param name
 * @experimental
 * @internal
 */
export function has(name: string): any;

/**
 * @param value
 * @param options
 * @experimental
 * @internal
 */
export function format(value: number, options?: Record<string, unknown>): string | null;

/**
 * @param expression
 * @param options
 * @experimental
 * @internal
 */
export function parse(expression: string, options?: Record<string, unknown>): number;