import type { Composition } from "../../composition.js";
/**
 * Move the clip `clipId` to the track `targetTrackId`, preserving its
 * `trackOffset` (timeline position) — the clip stays at the same horizontal
 * spot, just on a new lane. The target track MUST be the same `kind` as the
 * source track (a clip only belongs on a track of its own kind; the source
 * track kind is authoritative because the clip was validly placed there).
 *
 * Side-effect: removing the clip from the source track can orphan a transition
 * there in TWO ways, and BOTH must be pruned or the next CompositionSchema.parse()
 * (autosave 400 / save round-trip) fails the Track superRefine:
 *   (a) the moved clip was the transition anchor (`afterClipId === clipId`) — its
 *       afterClipId no longer matches any clip on the track; OR
 *   (b) the clip's departure makes a *different*, surviving clip the new LAST clip
 *       of the source track, and a transition is pinned to that now-last clip
 *       (`afterClipId === newLastClipId`). The superRefine rejects a transition
 *       pinned to the last clip because it has no successor to fade INTO.
 * We PRUNE both in place so the composition stays parseable (mirrors the store's
 * removeClip / commitDrag pruning, which share this same family bug).
 *
 * Throws `CompositionOpError{code:4}` when:
 *  - no clip matches `clipId`, or
 *  - no track matches `targetTrackId`, or
 *  - the target track is a different `kind` than the source track.
 *
 * A move to the SAME track the clip already lives on is a no-op (returns
 * without throwing) — there is nothing to relocate.
 */
export declare function moveClipToTrack(comp: Composition, p: {
    clipId: string;
    targetTrackId: string;
}): void;
//# sourceMappingURL=moveClipToTrack.d.ts.map