import type { Composition } from "../../composition.js";
/**
 * Add a transition pinned to the cut AFTER `afterClipId` on the video track
 * `trackId`. `durationSec` defaults to the preset's registry default and is
 * always clamped to the handle (half the smaller adjacent clip) so the cross-fade
 * never over-consumes a clip. Mints + returns the transition id.
 *
 * Throws `CompositionOpError{code:4}` when:
 *  - no track matches `trackId`, or the track is not a video track (Phase 1
 *    is video-only), or
 *  - `preset` is not in the shared registry (src/shared/transitions.ts), or
 *  - `afterClipId` matches no clip on the track, or matches the LAST clip (a
 *    transition pinned to the last clip has no successor to fade INTO — the
 *    same invariant the Track superRefine enforces at parse time).
 */
export declare function addTransition(comp: Composition, p: {
    trackId: string;
    afterClipId: string;
    preset: string;
    durationSec?: number;
}): {
    transitionId: string;
};
/**
 * Remove the transition `transitionId` from whichever track holds it, restoring a
 * hard cut at that point. We filter the offending entry out of the EXISTING
 * `transitions` array in place (array identity survives — decision #1).
 *
 * Throws `CompositionOpError{code:4}` when no transition matches `transitionId`
 * on any track.
 */
export declare function removeTransition(comp: Composition, p: {
    transitionId: string;
}): void;
//# sourceMappingURL=transition.d.ts.map