import { 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";
/**
 * Resolver for "push-existing" overlap behavior.
 * When overlap is detected, the EXISTING (overlapped) regions move to a track below.
 * Incoming regions stay where they were placed.
 */
export declare class RegionPushExistingResolver {
    #private;
    /**
     * For selection-based operations (move, resize).
     * Returns:
     * - postProcess: function to call AFTER changes are applied
     * - trackResolver: Identity (incoming regions stay where placed)
     */
    static fromSelection(tracks: ReadonlyArray<TrackBoxAdapter>, adapters: ReadonlyArray<AnyRegionBoxAdapter>, strategy: RegionModifyStrategies, deltaIndex: int, projectApi: ProjectApi, boxAdapters: BoxAdapters): {
        postProcess: Exec;
        trackResolver: TrackResolver;
    };
    /**
     * For range-based operations (drop, duplicate).
     * Returns a function that should be called AFTER the region is created.
     */
    static fromRange(track: TrackBoxAdapter, position: ppqn, complete: ppqn, projectApi: ProjectApi, boxAdapters: BoxAdapters): Exec;
    private constructor();
}
//# sourceMappingURL=RegionPushExistingResolver.d.ts.map