/**
 * Named jobs: the range IS the module.
 *
 * "Shape One Range" has three controls — where, how much, how wide — and no
 * honest way to nominate one of them as the knob that matters. Nominating *how
 * much* is incoherent, because boosting an unspecified frequency means nothing:
 * the range is the first decision, not the second.
 *
 * So the menu offers the decision instead of the machine. Each job is a peaking
 * filter with its frequency already chosen — Reduce Mud, Add Clarity, Soften
 * Harshness — and picking the module IS picking the range, which makes one knob
 * honest rather than a simplification hiding the real choice. It also dissolves
 * the duplicate-name problem at the root: a preset that cuts mud and then lifts
 * clarity used to read "Shape One Range" twice with nothing to tell them apart.
 *
 * Every job here is one the preset catalogue already ships, at the settings it
 * ships them with, so this names the vocabulary the presets were written in
 * rather than inventing a second one. Reasoning in
 * `plans/audio-fx-ux/README.md` §"The hole in the single-knob rule".
 *
 * The frequency is a starting point, not a cage — it is an ordinary peaking node
 * underneath, and Details opens on the same three controls it always had.
 */
import { type HfAudioFxChain, type HfAudioFxNode, type HfAudioFxParamValues } from "./audioFx.js";
export interface HfAudioFxJob {
    id: string;
    /** What the rack calls the node this makes. */
    label: string;
    /** The complaint that leads here, in the author's words. */
    does: string;
    /** The registry effect underneath. */
    type: string;
    /** Where it acts, and how hard — the decision the author is spared. */
    params: HfAudioFxParamValues;
}
/**
 * Ordered low to high, which is the order an author hears them in: weight and
 * mud at the bottom, clarity and harshness at the top.
 */
export declare const HF_AUDIO_FX_JOBS: readonly HfAudioFxJob[];
export declare function getAudioFxJob(id: string): HfAudioFxJob | undefined;
/** Effect ids the job list covers, which the add menu offers as jobs instead. */
export declare const HF_AUDIO_FX_JOB_TYPES: ReadonlySet<string>;
/**
 * The node a job adds: an ordinary effect carrying the job's name.
 *
 * `label` is the field a preset already uses to name a node for the work it
 * does, so a job needs nothing new — and a job node and a preset node are
 * indistinguishable afterwards, which is right. They are the same idea.
 */
export declare function audioFxJobNode(job: HfAudioFxJob, chain: HfAudioFxChain): HfAudioFxNode;
//# sourceMappingURL=audioFxJobs.d.ts.map