import { Editing, Exec, int } from "@opendaw/lib-std";
import { ppqn } from "@opendaw/lib-dsp";
import { AnyRegionBoxAdapter, BoxAdapters, TrackBoxAdapter } from "@opendaw/studio-adapters";
import { RegionModifyStrategies } from "./RegionModifyStrategies";
import { ProjectApi } from "../../project";
import { TrackResolver } from "./TrackResolver";
export declare class RegionOverlapResolver {
    #private;
    constructor(editing: Editing, projectApi: ProjectApi, boxAdapters: BoxAdapters);
    static warnOverlaps(label: string, tracks: ReadonlyArray<TrackBoxAdapter>): void;
    apply(tracks: ReadonlyArray<TrackBoxAdapter>, adapters: ReadonlyArray<AnyRegionBoxAdapter>, strategy: RegionModifyStrategies, deltaIndex: int, changes: (trackResolver: TrackResolver) => void): void;
    /**
     * For range-based operations (drop, duplicate).
     * Returns the target track to use (may differ from input track for keep-existing mode).
     */
    resolveTargetTrack(track: TrackBoxAdapter, position: ppqn, complete: ppqn): TrackBoxAdapter;
    /**
     * Creates a resolver function for range-based operations (to be called inside an existing transaction).
     * Call this BEFORE creating the region to capture the "before" state.
     * Then call the returned function AFTER creating the region.
     */
    fromRange(track: TrackBoxAdapter, position: ppqn, complete: ppqn): Exec;
}
//# sourceMappingURL=RegionOverlapResolver.d.ts.map