/**
 * @file Synth configuration types and global rules.
 */
import type { SynthNames } from '../utils/detector.js';
export interface SpecialParameterHandling {
    /** Parameter ID pattern to match (uses string.includes() for matching) */
    id: string;
    /** 'always' = never randomize, 'stable-mode' = only keep stable when stable mode is enabled */
    keepStable: 'always' | 'stable-mode';
}
export interface SynthConfig {
    /** Synth name this config applies to */
    synthName: SynthNames;
    /** Special parameter handling rules for this synth */
    specialParameters: SpecialParameterHandling[];
    /** Default configuration values for this synth */
    defaults?: {
        binary?: boolean;
        binaryTemplate?: boolean;
    };
}
/**
 * Global special parameter handling that applies to all synths
 *
 * keepStable options:
 * - 'always': Parameter is NEVER randomized. Used for critical parameters like
 *             binary pointers or internal flags that would break the preset if changed.
 * - 'stable-mode': Parameter is kept stable ONLY when 'Stable' randomization mode is selected.
 *                  In 'Balanced' or 'Creative' modes, these will be randomized.
 *                  Used for tuning, volume, or other sensitive but creative parameters.
 *
 * Note: Global rules are safely ignored for synths that don't have the matching parameters.
 */
export declare const globalSpecialParameters: SpecialParameterHandling[];
