import { Color, FindColorByMode, Mode } from "./common.js"; import { Rgb } from "./rgb/types.js"; type Channel = string; export type MapFn = ( v: number, ch: string, conv_color: M extends Mode ? FindColorByMode : Color, mode: M, ) => number; interface ColorToRgbMapper { (color: Color): Rgb; (color: string): Rgb | undefined; } export interface ColorToSameColorMapper { (color: FindColorByMode): FindColorByMode; (color: string): Color | undefined; } interface ColorToPredefinedColorMapper { (color: Color): FindColorByMode; (color: string): FindColorByMode | undefined; } declare function mapper(fn: MapFn<"rgb">, mode?: undefined, preserve_mode?: false): ColorToRgbMapper; declare function mapper(fn: MapFn<"rgb">, mode: undefined, preserve_mode: true): ColorToSameColorMapper; declare function mapper(fn: MapFn, mode: M, preserve_mode?: false): ColorToPredefinedColorMapper; declare function mapper(fn: MapFn, mode: M, preserve_mode: true): ColorToSameColorMapper; declare function mapper(fn: MapFn, mode: null, preserve_mode?: false): ColorToSameColorMapper; declare function mapAlphaMultiply(v: number, ch: Channel, c: Color): number; declare function mapAlphaDivide(v: number, ch: Channel, c: Color): number; declare function mapTransferLinear(slope?: number, intercept?: number): (v: number, ch: Channel) => number; declare function mapTransferGamma( amplitude?: number, exponent?: number, offset?: number, ): (v: number, ch: Channel) => number; export { mapAlphaDivide, mapAlphaMultiply, mapper, mapTransferGamma, mapTransferLinear };