import { Exec, int } from "@opendaw/lib-std";
import { Event, ppqn } from "@opendaw/lib-dsp";
import { AnyRegionBoxAdapter, TrackBoxAdapter } from "@opendaw/studio-adapters";
import { RegionModifyStrategies } from "./RegionModifyStrategies";
import { TrackResolver } from "./TrackResolver";
export type ClipTask = {
    type: "delete";
    region: AnyRegionBoxAdapter;
} | {
    type: "separate";
    region: AnyRegionBoxAdapter;
    begin: ppqn;
    end: ppqn;
} | {
    type: "start";
    region: AnyRegionBoxAdapter;
    position: ppqn;
} | {
    type: "complete";
    region: AnyRegionBoxAdapter;
    position: ppqn;
};
export interface Mask extends Event {
    complete: ppqn;
}
export declare class RegionClipResolver {
    #private;
    static fromSelection(tracks: ReadonlyArray<TrackBoxAdapter>, adapters: ReadonlyArray<AnyRegionBoxAdapter>, strategy: RegionModifyStrategies, deltaIndex?: int): {
        postProcess: Exec;
        trackResolver: TrackResolver;
    };
    static fromRange(track: TrackBoxAdapter, position: ppqn, complete: ppqn): Exec;
    static validateTracks(tracks: ReadonlyArray<TrackBoxAdapter>): void;
    static validateTrack(track: TrackBoxAdapter): void;
    static createTasksFromMasks(regionIterator: Iterable<AnyRegionBoxAdapter>, maxComplete: ppqn, masks: ReadonlyArray<Mask>, showOrigin: boolean): ReadonlyArray<ClipTask>;
    static sortAndJoinMasks(masks: ReadonlyArray<Mask>): ReadonlyArray<Mask>;
    constructor(strategy: RegionModifyStrategies, ground: TrackBoxAdapter);
    addMask(region: AnyRegionBoxAdapter): void;
    addMaskRange(position: ppqn, complete: ppqn): void;
}
//# sourceMappingURL=RegionClipResolver.d.ts.map