/**
 * "Even Out Levels" — the first of the adaptive scripts.
 *
 * A preset cannot fix inconsistent loudness, because the right correction
 * depends on the recording. So this measures the track and writes an automation
 * lane that lifts the quiet passages toward the loud ones, exactly as the carve
 * measures a voice and writes its bands.
 *
 * It is NOT loudness normalisation. Platform targets (-14 LUFS and friends) are
 * ITU-R BS.1770 — K-weighted and gated — and this is plain windowed RMS, so
 * calling it LUFS would be a claim the measurement does not support. It is
 * named for what it does: evening out.
 *
 * ## Why the lane rides a `gain` node
 *
 * The obvious home is the track's volume lane, and that cannot work: volume is
 * 0..1 and `normaliseEnvelope` clamps every keyframe into it, so a volume lane
 * can only ever attenuate. Lifting a quiet passage needs a `gain` node, which
 * spans -60..+12 dB — which is what the audio skill means when it calls `gain`
 * "what an automation lane rides when a track has to move".
 */
import { type HfAutomation, type HfAutomationPoint } from "./audioAutomation.js";
import { type HfAudioFxChain } from "./audioFx.js";
export interface HfLevellerSettings {
    /** 0 = leave it alone, 1 = as even as this can make it. */
    strength: number;
}
export declare const DEFAULT_LEVELLER: HfLevellerSettings;
export interface HfLevellerProfile {
    /** How much of the measured difference to correct. */
    correction: number;
}
/**
 * One knob to a profile, the shape `carveProfile` established.
 *
 * At full strength this still corrects only most of the difference: driving a
 * track to a flat line removes the performance along with the inconsistency.
 */
export declare function levellerProfile(strength: number): HfLevellerProfile;
/**
 * Measure a track and return the gain moves that even it out, in dB against
 * clip-local seconds. Empty when there is nothing worth correcting.
 */
export declare function analyseLevelling(samples: Float32Array, sampleRate: number, strength?: number): HfAutomationPoint[];
/**
 * The chain and lane for "Even Out Levels".
 *
 * Returns nothing when the track needs no correcting — a script that always
 * writes something teaches an author that it is doing nothing.
 */
export declare function levellingResult(chain: HfAudioFxChain, samples: Float32Array, sampleRate: number, strength?: number): {
    chain: HfAudioFxChain;
    automation: HfAutomation;
} | null;
/** Drop the leveller and say which lane went with it. */
export declare function removeLevelling(chain: HfAudioFxChain): {
    chain: HfAudioFxChain;
    removedTarget: string | null;
};
/** What the module says when it is closed. */
export declare function levellingSummary(points: readonly HfAutomationPoint[]): string;
//# sourceMappingURL=audioLeveller.d.ts.map