import { type MapFunction } from '../value/map'; import { type Maybe } from '../value/maybe.type'; import { type BoundNumberFunctionConfig } from './bound'; import { type NumberPrecision, type RoundNumberToStepFunctionInput } from './round'; export type TransformNumberFunctionConfig = { /** * (Optional) transform function for the input. It is processed first. */ transform?: TransformNumberFunction; /** * (Optional) step rounding. */ roundToStep?: RoundNumberToStepFunctionInput; /** * (Optional) decimal precision to retain */ precision?: NumberPrecision; /** * (Optional bounds to apply to the value) */ bounds?: BoundNumberFunctionConfig; }; export interface TransformNumberFunctionConfigRef { transform: TransformNumberFunctionConfig; } export type TransformNumberFunction = MapFunction; export type TransformNumberFunctionConfigInput = TransformNumberFunctionConfig | TransformNumberFunction; /** * Normalizes a {@link TransformNumberFunctionConfigInput} to a {@link TransformNumberFunctionConfig}. * * If a function is provided, wraps it as the `transform` field. Returns undefined for undefined input. * * @param config - A config object, a transform function, or undefined * @returns The normalized config, or undefined */ export declare function transformNumberFunctionConfig(config?: TransformNumberFunctionConfigInput): Maybe>; /** * Creates a composite number transform function from a {@link TransformNumberFunctionConfig}. * * Chains the configured operations in order: custom transform, step rounding, precision cut, then bounds clamping. * * @param config - Configuration with optional transform, roundToStep, precision, and bounds * @returns A single function that applies all configured transformations in sequence */ export declare function transformNumberFunction(config: TransformNumberFunctionConfig): TransformNumberFunction;