/**
 * @file Core randomization logic for preset generation.
 * Provides functions to generate fully random presets, randomize existing presets,
 * and merge multiple presets with statistical weighting.
 */
import { type ParamsModel } from './analyzer.js';
import type { Config } from './config.js';
import type { Preset } from './parser.js';
import type { PresetLibrary } from './presetLibrary.js';
/**
 * Generates fully randomized presets based on statistical distributions from the preset library.
 */
export declare function generateFullyRandomPresets(presetLibrary: PresetLibrary, paramModel: ParamsModel, config: Config): PresetLibrary;
/**
 * Randomize a given preset, with specific randomization ratio
 */
export declare function generateRandomizedPresets(presetLibrary: PresetLibrary, paramModel: ParamsModel, config: Config): PresetLibrary;
/**
 * Merge multiple presets together, with randomization amount
 */
export declare function generateMergedPresets(presetLibrary: PresetLibrary, paramModel: ParamsModel, config: Config): PresetLibrary;
export declare function getRandomArrayItem<T>(list: T[]): T | undefined;
/**
 * Validates that presets are compatible for merging by checking parameter structure
 * @param presets Array of presets to validate for merge compatibility
 * @throws Error if presets are incompatible
 */
export declare function validateMergeCompatibility(presets: Preset[]): void;
/**
 * Get a random value from the parameter model, with optional frequency weighting
 * @param paramModelEntry The parameter model entry containing values and frequencies
 * @param useFrequencyWeighting If true, values that appear more often in presets are more likely to be selected
 * @returns A random value, or undefined if no values available
 */
export declare function getRandomValue(paramModelEntry: ParamsModel[string], useFrequencyWeighting: boolean): string | number | undefined;
export declare function calculateRandomMergeRatios(amount: number): number[];
export declare function randomizePreset(basePreset: Preset, paramModel: ParamsModel, config: Config): Preset;
export declare function getPresetDescriptionSuffix(config: Config): string;
