import {VideoSource} from "./source/sourceTypes/VideoSource.js";
import {ImageSource} from "./source/sourceTypes/ImageSource.js";
import {FetchSource} from "./source/sourceTypes/FetchSource.js";
/**
 * @description This namespace contains different sources that can be used when concatenating to a video
 * @memberOf Qualifiers
 * @namespace Concatenate
 * @see Visit {@link Actions.VideoEdit.concatenate|VideoEdit.concatenate} for an example
 */


/**
 * @summary qualifier
 * @description Returns an instance of an ImageSource
 * @memberOf Qualifiers.Concatenate
 * @param {string} publicID The publicID of the image to be used to concatenate
 * @return {Source.ImageSource}
 */
function imageSource(publicID: string): ImageSource {
  return new ImageSource(publicID);
}


/**
 * @summary qualifier
 * @description Returns an instance of a VideoSource
 * @memberOf Qualifiers.Concatenate
 * @param {string} publicID The publicID of the video to be used to concatenate
 * @return {Source.VideoSource}
 */
function videoSource(publicID: string): VideoSource {
  return new VideoSource(publicID);
}


/**
 * @summary qualifier
 * @description Returns an instance of a FetchSource
 * @memberOf Qualifiers.Concatenate
 * @param {string} remoteURL The URL of the remote asset to fetch as and to be used to concatenate
 * @return {Source.FetchSource}
 */
function fetchSource(remoteURL: string): FetchSource {
  return new FetchSource(remoteURL);
}


const Concatenate = {imageSource, videoSource, fetchSource};
export {Concatenate, imageSource, videoSource, fetchSource};