import type { _AVAssetTrack } from "./AVAssetTrack.js";
import type { _AVVideoCompositionLayerInstruction } from "./AVVideoCompositionLayerInstruction.js";
import type { CGAffineTransform } from "../structs/CGAffineTransform.js";
import type { CGRect } from "../structs/CGRect.js";
import type { CMTime } from "../structs/CMTime.js";
import type { CMTimeRange } from "../structs/CMTimeRange.js";
export declare class _AVMutableVideoCompositionLayerInstruction extends _AVVideoCompositionLayerInstruction {
    static alloc(): _AVMutableVideoCompositionLayerInstruction;
    static new(): _AVMutableVideoCompositionLayerInstruction;
    init(): _AVMutableVideoCompositionLayerInstruction;
    /**
     * Returns a new instance of AVMutableVideoCompositionLayerInstruction with no transform or opacity ramps and a trackID set to the specified track's trackID. - Parameter track: A reference to an AVAssetTrack.
     */
    static videoCompositionLayerInstructionWithAssetTrack$(track: _AVAssetTrack): _AVMutableVideoCompositionLayerInstruction;
    /**
     * Returns a new instance of AVMutableVideoCompositionLayerInstruction with no transform or opacity ramps and a trackID initialized to kCMPersistentTrackID_Invalid.
     */
    static videoCompositionLayerInstruction(): _AVMutableVideoCompositionLayerInstruction;
    /**
     * Sets a transform ramp to apply during the specified timerange. For purposes of spatial positioning of video frames, the origin is in the top-left corner, so (a) positive translation values in an affine transform move a video frame right and down; and (b) with an identity transform a video frame is positioned with its top-left corner in the top-left corner of the composited frame. Video frames shall be interpreted at their display sizes (as described by CVImageBufferGetDisplaySize, ie, taking pixel aspect ratio attachments into account) before any affine transform is applied. During a transform ramp, the affine transform is interpolated between the values set at the ramp's start time and end time. Before the first specified time for which a transform is set, the affine transform is held constant at the value of CGAffineTransformIdentity; after the last time for which a transform is set, the affine transform is held constant at that last value; This method throws an exception if the time range overlaps the time range of an existing transform ramp or if the time range of a does not have a numeric start time and duration. - Parameter startTransform: The transform to be applied at the starting time of the timeRange. See the discussion below of how transforms are applied to video frames. - Parameter endTransform: The transform to be applied at the end time of the timeRange. - Parameter timeRange: The timeRange over which the value of the transform will be interpolated between startTransform and endTransform.
     */
    setTransformRampFromStartTransform$toEndTransform$timeRange$(startTransform: CGAffineTransform, endTransform: CGAffineTransform, timeRange: CMTimeRange): void;
    /**
     * Sets a value of the transform at a time within the timeRange of the instruction. For purposes of spatial positioning of video frames, the origin is in the top-left corner, so (a) positive translation values in an affine transform move a video frame right and down; and (b) with an identity transform a video frame is positioned with its top-left corner in the top-left corner of the composited frame. Video frames shall be interpreted at their display sizes (as described by CVImageBufferGetDisplaySize, ie, taking pixel aspect ratio attachments into account) before any affine transform is applied. Sets a fixed transform to apply from the specified time until the next time at which a transform is set; this is the same as setting a flat ramp for that time range. Before the first specified time for which a transform is set, the affine transform is held constant at the value of CGAffineTransformIdentity; after the last time for which a transform is set, the affine transform is held constant at that last value; This method throws an exception if time is not numeric. - Parameter transform: The transform to be applied at the specified time. See the discussion below of how transforms are applied to video frames. - Parameter time: A time value within the timeRange of the composition instruction.
     */
    setTransform$atTime$(transform: CGAffineTransform, time: CMTime): void;
    /**
     * Sets an opacity ramp to apply during the specified timerange. During an opacity ramp, opacity is computed using a linear interpolation. Before the first time for which an opacity is set, the opacity is held constant at 1.0; after the last specified time, the opacity is held constant at the last value This method throws an exception if the time range of a does not have a numeric start time and duration. - Parameter startOpacity: The opacity to be applied at the starting time of the timeRange. The value must be between 0.0 and 1.0. - Parameter endOpacity: The opacity to be applied at the end time of the timeRange. The value must be between 0.0 and 1.0. - Parameter timeRange: The timeRange over which the value of the opacity will be interpolated between startOpacity and endOpacity.
     */
    setOpacityRampFromStartOpacity$toEndOpacity$timeRange$(startOpacity: number, endOpacity: number, timeRange: CMTimeRange): void;
    /**
     * Sets a value of the opacity at a time within the timeRange of the instruction. Sets a fixed opacity to apply from the specified time until the next time at which an opacity is set; this is the same as setting a flat ramp for that time range. Before the first time for which an opacity is set, the opacity is held constant at 1.0; after the last specified time, the opacity is held constant at the last value. This method throws an exception if time is not numeric. - Parameter opacity: The opacity to be applied at the specified time. The value must be between 0.0 and 1.0. - Parameter time: A time value within the timeRange of the composition instruction.
     */
    setOpacity$atTime$(opacity: number, time: CMTime): void;
    /**
     * Sets an crop rectangle ramp to apply during the specified timerange. The origin of the crop rectangle is the top-left corner of the buffer clean aperture rectangle. The crop rectangle is defined in square pixel space, i.e. without taking the pixel aspect ratio into account. Crop rectangles extending outside of the clean aperture, are cropped to the clean aperture. During a crop rectangle ramp, the rectangle is interpolated between the values set at the ramp's start time and end time. When the starting or ending rectangle is empty, interpolations take into account the origin and size of the empty rectangle. Before the first specified time for which a crop rectangle is set, the crop rectangle is held constant to CGRectInfinite after the last time for which a crop rectangle is set, the crop rectangle is held constant at that last value. This method throws an exception if the time range overlaps the time range of an existing crop rectangle ramp, or if the time range does not have a numeric start time and duration. - Parameter startCropRectangle: The crop rectangle to be applied at the starting time of the timeRange. See the discussion below of how crop rectangles are applied to video frames. - Parameter endCropRectangle: The crop rectangle to be applied at the end time of the timeRange. - Parameter timeRange: The timeRange over which the value of the opacity will be interpolated between startCropRectangle and endCropRectangle.
     */
    setCropRectangleRampFromStartCropRectangle$toEndCropRectangle$timeRange$(startCropRectangle: CGRect, endCropRectangle: CGRect, timeRange: CMTimeRange): void;
    /**
     * Sets a value of the crop rectangle at a time within the timeRange of the instruction. The origin of the crop rectangle is the top-left corner of the buffer clean aperture rectangle. The crop rectangle is defined in square pixel space, i.e. without taking the pixel aspect ratio into account. Crop rectangles extending outside of the clean aperture, are cropped to the clean aperture. Sets a fixed crop rectangle to apply from the specified time until the next time at which a crop rectangle is set; this is the same as setting a flat ramp for that time range. Before the first specified time for which a crop rectangle is set, the crop rectangle is held constant to CGRectInfinite after the last time for which a crop rectangle is set, the crop rectangle is held constant at that last value. This method throws an exception if time is not numeric. - Parameter cropRectangle: The crop rectangle to be applied at the specified time. See the discussion below of how crop rectangles are applied to video frames. - Parameter time: A time value within the timeRange of the composition instruction.
     */
    setCropRectangle$atTime$(cropRectangle: CGRect, time: CMTime): void;
    /**
     * Indicates the trackID of the source track to which the compositor will apply the instruction.
     */
    trackID(): number;
    setTrackID$(value: number): void;
}
